Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 121 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 23771833 | 129 days ago | IN | 0 ETH | 0.00000699 | ||||
| Approve | 22052046 | 369 days ago | IN | 0 ETH | 0.000043 | ||||
| Approve | 20846466 | 538 days ago | IN | 0 ETH | 0.00040967 | ||||
| Transfer | 20846465 | 538 days ago | IN | 0 ETH | 0.00044021 | ||||
| Approve | 20839816 | 539 days ago | IN | 0 ETH | 0.00060824 | ||||
| Approve | 20776931 | 547 days ago | IN | 0 ETH | 0.00030919 | ||||
| Approve | 20541130 | 580 days ago | IN | 0 ETH | 0.00009269 | ||||
| Approve | 20540165 | 580 days ago | IN | 0 ETH | 0.00009246 | ||||
| Approve | 20530141 | 582 days ago | IN | 0 ETH | 0.00010708 | ||||
| Approve | 20528879 | 582 days ago | IN | 0 ETH | 0.00028721 | ||||
| Approve | 20528835 | 582 days ago | IN | 0 ETH | 0.0003056 | ||||
| Approve | 20528835 | 582 days ago | IN | 0 ETH | 0.0003056 | ||||
| Approve | 20528834 | 582 days ago | IN | 0 ETH | 0.0003056 | ||||
| Approve | 20528834 | 582 days ago | IN | 0 ETH | 0.00020237 | ||||
| Approve | 20528828 | 582 days ago | IN | 0 ETH | 0.00035852 | ||||
| Approve | 20528802 | 582 days ago | IN | 0 ETH | 0.00025713 | ||||
| Approve | 20528777 | 582 days ago | IN | 0 ETH | 0.00032868 | ||||
| Approve | 20528773 | 582 days ago | IN | 0 ETH | 0.00031985 | ||||
| Approve | 20528767 | 582 days ago | IN | 0 ETH | 0.00045437 | ||||
| Approve | 20528756 | 582 days ago | IN | 0 ETH | 0.00023095 | ||||
| Approve | 20528756 | 582 days ago | IN | 0 ETH | 0.00046702 | ||||
| Approve | 20528756 | 582 days ago | IN | 0 ETH | 0.00046702 | ||||
| Approve | 20528755 | 582 days ago | IN | 0 ETH | 0.00035034 | ||||
| Approve | 20528754 | 582 days ago | IN | 0 ETH | 0.00035847 | ||||
| Approve | 20528754 | 582 days ago | IN | 0 ETH | 0.00035847 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 20528698 | 582 days ago | 0.01073144 ETH | ||||
| Transfer | 20528698 | 582 days ago | 0.01073144 ETH | ||||
| Transfer | 20528696 | 582 days ago | 0.07603505 ETH | ||||
| Transfer | 20528696 | 582 days ago | 0.07603505 ETH | ||||
| Transfer | 20528696 | 582 days ago | 0.09162166 ETH | ||||
| Transfer | 20528696 | 582 days ago | 0.09162166 ETH | ||||
| Transfer | 20528696 | 582 days ago | 0.10108506 ETH | ||||
| Transfer | 20528696 | 582 days ago | 0.10108506 ETH | ||||
| Transfer | 20528696 | 582 days ago | 0.11209539 ETH | ||||
| Transfer | 20528696 | 582 days ago | 0.11209539 ETH | ||||
| Transfer | 20528696 | 582 days ago | 0.12500933 ETH | ||||
| Transfer | 20528696 | 582 days ago | 0.12500933 ETH | ||||
| Transfer | 20528696 | 582 days ago | 0.14029271 ETH | ||||
| Transfer | 20528696 | 582 days ago | 0.14029271 ETH | ||||
| Transfer | 20528696 | 582 days ago | 0.15856314 ETH | ||||
| Transfer | 20528696 | 582 days ago | 0.15856314 ETH | ||||
| Transfer | 20528696 | 582 days ago | 0.18065352 ETH | ||||
| Transfer | 20528696 | 582 days ago | 0.18065352 ETH | ||||
| Transfer | 20528696 | 582 days ago | 0.20765475 ETH | ||||
| Transfer | 20528696 | 582 days ago | 0.20765475 ETH | ||||
| Transfer | 20528694 | 582 days ago | 0.22014699 ETH | ||||
| Transfer | 20528694 | 582 days ago | 0.22014699 ETH | ||||
| Transfer | 20528692 | 582 days ago | 0.24855449 ETH | ||||
| Transfer | 20528692 | 582 days ago | 0.24855449 ETH | ||||
| Transfer | 20528689 | 582 days ago | 0.27054349 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
TOUSAN
Compiler Version
v0.8.21+commit.d9974bed
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2024-08-14
*/
/*
https://t.me/TousanSatoETH
https://x.com/TousanETH
https://heysato.vip/
*/
// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.21;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
interface IUniswapV2Pair {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint value) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint);
function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
event Mint(address indexed sender, uint amount0, uint amount1);
event Swap(
address indexed sender,
uint amount0In,
uint amount1In,
uint amount0Out,
uint amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
function price0CumulativeLast() external view returns (uint);
function price1CumulativeLast() external view returns (uint);
function kLast() external view returns (uint);
function mint(address to) external returns (uint liquidity);
function burn(address to) external returns (uint amount0, uint amount1);
function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
function skim(address to) external;
function sync() external;
function initialize(address, address) external;
}
interface IUniswapV2Factory {
event PairCreated(address indexed token0, address indexed token1, address pair, uint);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function getPair(address tokenA, address tokenB) external view returns (address pair);
function allPairs(uint) external view returns (address pair);
function allPairsLength() external view returns (uint);
function createPair(address tokenA, address tokenB) external returns (address pair);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
}
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(
address sender,
address recipient,
uint256 amount
) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
interface IERC20Metadata is IERC20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
}
contract ERC20 is Context, IERC20, IERC20Metadata {
using SafeMath for uint256;
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);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
return true;
}
function _transfer(
address sender,
address recipient,
uint256 amount
) internal virtual {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(sender, recipient, amount);
_balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
}
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_totalSupply = _totalSupply.add(amount);
_balances[account] = _balances[account].add(amount);
emit Transfer(address(0), account, amount);
}
function _burn(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: burn from the zero address");
_beforeTokenTransfer(account, address(0), amount);
_balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
_totalSupply = _totalSupply.sub(amount);
emit Transfer(account, address(0), amount);
}
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);
}
function _beforeTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
}
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by 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;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by 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);
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
library SafeMathInt {
int256 private constant MIN_INT256 = int256(1) << 255;
int256 private constant MAX_INT256 = ~(int256(1) << 255);
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;
}
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;
}
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;
}
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;
}
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 TOUSAN is ERC20, Ownable {
string _name = unicode"Tousan Sato";
string _symbol = unicode"TOUSAN";
using SafeMath for uint256;
IUniswapV2Router02 public uniswapV2Router;
address public uniswapV2Pair;
bool private isSwppable;
uint256 public balance;
address private devWallet;
uint256 public maxTransaction;
uint256 public contractSellTreshold;
uint256 public maxWalletHolding;
bool public areLimitsOn = true;
bool public emptyContractFull = false;
uint256 public totalBuyTax;
uint256 public devBuyTax;
uint256 public liqBuyTax;
uint256 public totalSellTax;
uint256 public devSellTax;
uint256 public liqSellTax;
uint256 public tokensForLiquidity;
uint256 public tokensForDev;
// block number of opened trading
uint256 launchedAt;
/******************/
// exclude from fees and max transaction amount
mapping (address => bool) private _isExcludedFromFees;
mapping (address => bool) public _isExcludedMaxTransactionAmount;
// store addresses that a automatic market maker pairs. Any transfer *to* these addresses
// could be subject to a maximum transfer amount
mapping (address => bool) public automatedMarketMakerPairs;
event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
event ExcludeFromFees(address indexed account, bool isExcluded);
event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
event devWalletUpdated(address indexed newWallet, address indexed oldWallet);
event SwapAndLiquify(
uint256 tokensSwapped,
uint256 ethReceived,
uint256 tokensIntoLiquidity
);
event AutoNukeLP();
event ManualNukeLP();
constructor() ERC20(_name, _symbol) {
uint256 _devBuyTax = 23;
uint256 _liqBuyTax = 0;
uint256 _devSellTax = 23;
uint256 _liqSellTax = 0;
uint256 totalSupply = 10000000000 * 1e18;
maxTransaction = totalSupply * 20 / 1000; // 2%
maxWalletHolding = totalSupply * 20 / 1000; // 2%
contractSellTreshold = totalSupply * 1 / 1000; // 0.05%
devBuyTax = _devBuyTax;
liqBuyTax = _liqBuyTax;
totalBuyTax = devBuyTax + liqBuyTax;
devSellTax = _devSellTax;
liqSellTax = _liqSellTax;
totalSellTax = devSellTax + liqSellTax;
devWallet = address(msg.sender);
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
excludeFromMaxTransaction(address(_uniswapV2Router), true);
uniswapV2Router = _uniswapV2Router;
uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
excludeFromMaxTransaction(address(uniswapV2Pair), true);
_setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
// exclude from paying fees or having max transaction amount
excludeFromFees(owner(), true);
excludeFromFees(address(this), true);
excludeFromFees(address(0xdead), true);
excludeFromFees(address(devWallet), true);
excludeFromMaxTransaction(owner(), true);
excludeFromMaxTransaction(address(this), true);
excludeFromMaxTransaction(address(0xdead), true);
excludeFromMaxTransaction(address(devWallet), true);
/*
_mint is an internal function in ERC20.sol that is only called here,
and CANNOT be called ever again
*/
_mint(address(this), totalSupply * 92 / 100);
_mint(address(msg.sender), totalSupply * 8 / 100);
}
receive() external payable {
}
function go_Live() external onlyOwner{
uint256 ethAmount = address(this).balance;
uint256 tokenAmount = balanceOf(address(this)) * 86 / 100;
_approve(address(this), address(uniswapV2Router), tokenAmount);
uniswapV2Router.addLiquidityETH{value: ethAmount}(
address(this),
tokenAmount,
0, // slippage is unavoidable
0, // slippage is unavoidable
devWallet,
block.timestamp
);
}
function removeStuckETH() external onlyOwner {
uint256 ethBalance = address(this).balance;
require(ethBalance > 0, "ETH balance must be greater than 0");
(bool success,) = address(devWallet).call{value: ethBalance}("");
require(success, "Failed to clear ETH balance");
}
function removeStuckTokenBalance() external onlyOwner {
uint256 tokenBalance = balanceOf(address(this));
require(tokenBalance > 0, "Token balance must be greater than 0");
_transfer(address(this), devWallet, tokenBalance);
}
function removeLimits() external onlyOwner {
areLimitsOn = false;
}
function emptyCa(bool enabled) external onlyOwner{
emptyContractFull = enabled;
}
function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
_isExcludedMaxTransactionAmount[updAds] = isEx;
}
function changeFee(
uint256 _devBuy,
uint256 _devSell,
uint256 _liqBuy,
uint256 _liqSell
) external onlyOwner {
devBuyTax = _devBuy;
liqBuyTax = _liqBuy;
totalBuyTax = devBuyTax + liqBuyTax;
devSellTax = _devSell;
liqSellTax = _liqSell;
totalSellTax = devSellTax + liqSellTax;
require(totalBuyTax <= 30, "MAX 30% tax allowed");
require(totalSellTax <= 30, "MAX 30% tax allowed");
}
function excludeFromFees(address account, bool excluded) public onlyOwner {
_isExcludedFromFees[account] = excluded;
emit ExcludeFromFees(account, excluded);
}
function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
_setAutomatedMarketMakerPair(pair, value);
}
function _setAutomatedMarketMakerPair(address pair, bool value) private {
automatedMarketMakerPairs[pair] = value;
emit SetAutomatedMarketMakerPair(pair, value);
}
function updateDevWallet(address newDevWallet) external onlyOwner{
emit devWalletUpdated(newDevWallet, devWallet);
devWallet = newDevWallet;
}
function isExcludedFromFees(address account) public 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");
if(amount == 0) {
super._transfer(from, to, 0);
return;
}
if(areLimitsOn){
if (
from != owner() &&
to != owner() &&
to != address(0) &&
to != address(0xdead) &&
!isSwppable
){
//when buy
if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
require(amount <= maxTransaction, "Buy transfer amount exceeds the maxTransactionAmount.");
require(amount + balanceOf(to) <= maxWalletHolding, "Max wallet exceeded");
}
//when sell
else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
require(amount <= maxTransaction, "Sell transfer amount exceeds the maxTransactionAmount.");
}
else if(!_isExcludedMaxTransactionAmount[to]){
require(amount + balanceOf(to) <= maxWalletHolding, "Max wallet exceeded");
}
}
}
uint256 contractTokenBalance = balanceOf(address(this));
bool canSwap = contractTokenBalance >= contractSellTreshold;
if(
canSwap &&
!isSwppable &&
!automatedMarketMakerPairs[from] &&
!_isExcludedFromFees[from] &&
!_isExcludedFromFees[to]
) {
isSwppable = true;
swapBack();
isSwppable = false;
}
bool takeFee = !isSwppable;
// if any account belongs to _isExcludedFromFee account then remove the fee
if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
takeFee = false;
}
uint256 fees = 0;
// only take fees on buys/sells, do not take on wallet transfers
if(takeFee){
// on sell
if (automatedMarketMakerPairs[to] && totalSellTax > 0){
fees = amount.mul(totalSellTax).div(100);
tokensForLiquidity += fees * liqSellTax / totalSellTax;
tokensForDev += fees * devSellTax / totalSellTax;
}
// on buy
else if(automatedMarketMakerPairs[from] && totalBuyTax > 0) {
fees = amount.mul(totalBuyTax).div(100);
tokensForLiquidity += fees * liqBuyTax / totalBuyTax;
tokensForDev += fees * devBuyTax / totalBuyTax;
}
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(this),
block.timestamp
);
}
function swapBack() private {
uint256 contractBalance = balanceOf(address(this));
uint256 totalTokensToSwap = tokensForLiquidity + tokensForDev;
bool success;
if(contractBalance == 0 || totalTokensToSwap == 0) {return;}
if(emptyContractFull == false){
if(contractBalance > contractSellTreshold * 20){
contractBalance = contractSellTreshold * 20;
}
}else{
contractBalance = balanceOf(address(this));
}
// Halve the amount of liquidity tokens
uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
uint256 initialETHBalance = address(this).balance;
swapTokensForEth(amountToSwapForETH);
uint256 ethBalance = address(this).balance.sub(initialETHBalance);
uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);
uint256 ethForLiquidity = ethBalance - ethForDev;
tokensForLiquidity = 0;
tokensForDev = 0;
if(liquidityTokens > 0 && ethForLiquidity > 0){
addLiquidity(liquidityTokens, ethForLiquidity);
emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
}
(success,) = address(devWallet).call{value: address(this).balance}("");
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"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":[],"name":"areLimitsOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"balance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_devBuy","type":"uint256"},{"internalType":"uint256","name":"_devSell","type":"uint256"},{"internalType":"uint256","name":"_liqBuy","type":"uint256"},{"internalType":"uint256","name":"_liqSell","type":"uint256"}],"name":"changeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractSellTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"emptyCa","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emptyContractFull","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"name":"go_Live","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liqBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liqSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletHolding","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":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeStuckTokenBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newDevWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60806040526040518060400160405280600b81526020017f546f7573616e205361746f000000000000000000000000000000000000000000815250600690816200004a919062000f28565b506040518060400160405280600681526020017f544f5553414e00000000000000000000000000000000000000000000000000008152506007908162000091919062000f28565b506001600f5f6101000a81548160ff0219169083151502179055505f600f60016101000a81548160ff021916908315150217905550348015620000d2575f80fd5b5060068054620000e29062000d28565b80601f0160208091040260200160405190810160405280929190818152602001828054620001109062000d28565b80156200015f5780601f1062000135576101008083540402835291602001916200015f565b820191905f5260205f20905b8154815290600101906020018083116200014157829003601f168201915b505050505060078054620001739062000d28565b80601f0160208091040260200160405190810160405280929190818152602001828054620001a19062000d28565b8015620001f05780601f10620001c657610100808354040283529160200191620001f0565b820191905f5260205f20905b815481529060010190602001808311620001d257829003601f168201915b5050505050816003908162000206919062000f28565b50806004908162000218919062000f28565b5050505f6200022c620007b160201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f601790505f80601790505f806b204fce5e3e2502611000000090506103e8601482620002f7919062001039565b620003039190620010b0565b600c819055506103e86014826200031b919062001039565b620003279190620010b0565b600e819055506103e86001826200033f919062001039565b6200034b9190620010b0565b600d819055508460118190555083601281905550601254601154620003719190620010e7565b6010819055508260148190555081601581905550601554601454620003979190620010e7565b60138190555033600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f737a250d5630b4cf539739df2c5dacb4c659f2488d905062000408816001620007b860201b60201c565b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000492573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004b8919062001186565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200051e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000544919062001186565b6040518363ffffffff1660e01b815260040162000563929190620011c7565b6020604051808303815f875af115801562000580573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620005a6919062001186565b60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200061960095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620007b860201b60201c565b6200064d60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620008b160201b60201c565b6200066f620006616200094f60201b60201c565b60016200097760201b60201c565b620006823060016200097760201b60201c565b6200069761dead60016200097760201b60201c565b620006cb600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200097760201b60201c565b620006ed620006df6200094f60201b60201c565b6001620007b860201b60201c565b62000700306001620007b860201b60201c565b6200071561dead6001620007b860201b60201c565b62000749600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620007b860201b60201c565b62000777306064605c856200075f919062001039565b6200076b9190620010b0565b62000ac060201b60201c565b620007a53360646008856200078d919062001039565b620007999190620010b0565b62000ac060201b60201c565b505050505050620013af565b5f33905090565b620007c8620007b160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000859576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008509062001250565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b80601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000987620007b160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a0f9062001250565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000ab491906200128c565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000b31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b2890620012f5565b60405180910390fd5b62000b445f838362000c5d60201b60201c565b62000b5b8160025462000c6260201b90919060201c565b60028190555062000bb2815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205462000c6260201b90919060201c565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000c51919062001326565b60405180910390a35050565b505050565b5f80828462000c729190620010e7565b90508381101562000cba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cb1906200138f565b60405180910390fd5b8091505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000d4057607f821691505b60208210810362000d565762000d5562000cfb565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000dba7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000d7d565b62000dc6868362000d7d565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000e1062000e0a62000e048462000dde565b62000de7565b62000dde565b9050919050565b5f819050919050565b62000e2b8362000df0565b62000e4362000e3a8262000e17565b84845462000d89565b825550505050565b5f90565b62000e5962000e4b565b62000e6681848462000e20565b505050565b5b8181101562000e8d5762000e815f8262000e4f565b60018101905062000e6c565b5050565b601f82111562000edc5762000ea68162000d5c565b62000eb18462000d6e565b8101602085101562000ec1578190505b62000ed962000ed08562000d6e565b83018262000e6b565b50505b505050565b5f82821c905092915050565b5f62000efe5f198460080262000ee1565b1980831691505092915050565b5f62000f18838362000eed565b9150826002028217905092915050565b62000f338262000cc4565b67ffffffffffffffff81111562000f4f5762000f4e62000cce565b5b62000f5b825462000d28565b62000f6882828562000e91565b5f60209050601f83116001811462000f9e575f841562000f89578287015190505b62000f95858262000f0b565b86555062001004565b601f19841662000fae8662000d5c565b5f5b8281101562000fd75784890151825560018201915060208501945060208101905062000fb0565b8683101562000ff7578489015162000ff3601f89168262000eed565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620010458262000dde565b9150620010528362000dde565b9250828202620010628162000dde565b915082820484148315176200107c576200107b6200100c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620010bc8262000dde565b9150620010c98362000dde565b925082620010dc57620010db62001083565b5b828204905092915050565b5f620010f38262000dde565b9150620011008362000dde565b92508282019050808211156200111b576200111a6200100c565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620011508262001125565b9050919050565b620011628162001144565b81146200116d575f80fd5b50565b5f81519050620011808162001157565b92915050565b5f602082840312156200119e576200119d62001121565b5b5f620011ad8482850162001170565b91505092915050565b620011c18162001144565b82525050565b5f604082019050620011dc5f830185620011b6565b620011eb6020830184620011b6565b9392505050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62001238602083620011f2565b9150620012458262001202565b602082019050919050565b5f6020820190508181035f83015262001269816200122a565b9050919050565b5f8115159050919050565b620012868162001270565b82525050565b5f602082019050620012a15f8301846200127b565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f620012dd601f83620011f2565b9150620012ea82620012a7565b602082019050919050565b5f6020820190508181035f8301526200130e81620012cf565b9050919050565b620013208162000dde565b82525050565b5f6020820190506200133b5f83018462001315565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f62001377601b83620011f2565b9150620013848262001341565b602082019050919050565b5f6020820190508181035f830152620013a88162001369565b9050919050565b6144f380620013bd5f395ff3fe60806040526004361061025f575f3560e01c8063715018a611610143578063a457c2d7116100b5578063be85750411610079578063be857504146108b0578063c0246668146108da578063c3f70b5214610902578063dd62ed3e1461092c578063df6f93be14610968578063f2fde38b1461099257610266565b8063a457c2d7146107aa578063a9059cbb146107e6578063b1192e1814610822578063b62496f51461084a578063b69ef8a81461088657610266565b8063945674fe11610107578063945674fe146106c657806395d89b41146106f05780639a7a23d61461071a5780639ee2e924146107425780639fccce3214610758578063a04916941461078257610266565b8063715018a614610632578063751039fc146106485780637571336a1461065e5780638da5cb5b146106865780638ebb420d146106b057610266565b806322eb6631116101dc57806348d79155116101a057806348d791551461051257806349bd5a5e1461053c5780634fbee193146105665780635de0f2a0146105a25780636c7e15c9146105cc57806370a08231146105f657610266565b806322eb66311461041c57806323b872dd14610446578063313ce5671461048257806339509351146104ac57806346469afb146104e857610266565b80631694505e116102235780631694505e1461034c57806318160ddd146103765780631816467f146103a05780631a8145bb146103c85780631bff7898146103f257610266565b806306fdde031461026a578063095ea7b3146102945780630e947809146102d05780630f299cf1146102fa57806310d5de531461031057610266565b3661026657005b5f80fd5b348015610275575f80fd5b5061027e6109ba565b60405161028b9190613444565b60405180910390f35b34801561029f575f80fd5b506102ba60048036038101906102b591906134f5565b610a4a565b6040516102c7919061354d565b60405180910390f35b3480156102db575f80fd5b506102e4610a67565b6040516102f1919061354d565b60405180910390f35b348015610305575f80fd5b5061030e610a79565b005b34801561031b575f80fd5b5061033660048036038101906103319190613566565b610c22565b604051610343919061354d565b60405180910390f35b348015610357575f80fd5b50610360610c3f565b60405161036d91906135ec565b60405180910390f35b348015610381575f80fd5b5061038a610c64565b6040516103979190613614565b60405180910390f35b3480156103ab575f80fd5b506103c660048036038101906103c19190613566565b610c6d565b005b3480156103d3575f80fd5b506103dc610dc1565b6040516103e99190613614565b60405180910390f35b3480156103fd575f80fd5b50610406610dc7565b6040516104139190613614565b60405180910390f35b348015610427575f80fd5b50610430610dcd565b60405161043d9190613614565b60405180910390f35b348015610451575f80fd5b5061046c6004803603810190610467919061362d565b610dd3565b604051610479919061354d565b60405180910390f35b34801561048d575f80fd5b50610496610ea7565b6040516104a39190613698565b60405180910390f35b3480156104b7575f80fd5b506104d260048036038101906104cd91906134f5565b610eaf565b6040516104df919061354d565b60405180910390f35b3480156104f3575f80fd5b506104fc610f5d565b6040516105099190613614565b60405180910390f35b34801561051d575f80fd5b50610526610f63565b6040516105339190613614565b60405180910390f35b348015610547575f80fd5b50610550610f69565b60405161055d91906136c0565b60405180910390f35b348015610571575f80fd5b5061058c60048036038101906105879190613566565b610f8e565b604051610599919061354d565b60405180910390f35b3480156105ad575f80fd5b506105b6610fe0565b6040516105c39190613614565b60405180910390f35b3480156105d7575f80fd5b506105e0610fe6565b6040516105ed9190613614565b60405180910390f35b348015610601575f80fd5b5061061c60048036038101906106179190613566565b610fec565b6040516106299190613614565b60405180910390f35b34801561063d575f80fd5b50610646611031565b005b348015610653575f80fd5b5061065c611184565b005b348015610669575f80fd5b50610684600480360381019061067f9190613703565b611235565b005b348015610691575f80fd5b5061069a611323565b6040516106a791906136c0565b60405180910390f35b3480156106bb575f80fd5b506106c461134b565b005b3480156106d1575f80fd5b506106da611503565b6040516106e7919061354d565b60405180910390f35b3480156106fb575f80fd5b50610704611516565b6040516107119190613444565b60405180910390f35b348015610725575f80fd5b50610740600480360381019061073b9190613703565b6115a6565b005b34801561074d575f80fd5b506107566116d9565b005b348015610763575f80fd5b5061076c6117ec565b6040516107799190613614565b60405180910390f35b34801561078d575f80fd5b506107a860048036038101906107a39190613741565b6117f2565b005b3480156107b5575f80fd5b506107d060048036038101906107cb91906134f5565b6118a5565b6040516107dd919061354d565b60405180910390f35b3480156107f1575f80fd5b5061080c600480360381019061080791906134f5565b61196d565b604051610819919061354d565b60405180910390f35b34801561082d575f80fd5b506108486004803603810190610843919061376c565b61198a565b005b348015610855575f80fd5b50610870600480360381019061086b9190613566565b611afa565b60405161087d919061354d565b60405180910390f35b348015610891575f80fd5b5061089a611b17565b6040516108a79190613614565b60405180910390f35b3480156108bb575f80fd5b506108c4611b1d565b6040516108d19190613614565b60405180910390f35b3480156108e5575f80fd5b5061090060048036038101906108fb9190613703565b611b23565b005b34801561090d575f80fd5b50610916611c5f565b6040516109239190613614565b60405180910390f35b348015610937575f80fd5b50610952600480360381019061094d91906137d0565b611c65565b60405161095f9190613614565b60405180910390f35b348015610973575f80fd5b5061097c611ce7565b6040516109899190613614565b60405180910390f35b34801561099d575f80fd5b506109b860048036038101906109b39190613566565b611ced565b005b6060600380546109c99061383b565b80601f01602080910402602001604051908101604052809291908181526020018280546109f59061383b565b8015610a405780601f10610a1757610100808354040283529160200191610a40565b820191905f5260205f20905b815481529060010190602001808311610a2357829003601f168201915b5050505050905090565b5f610a5d610a56611e41565b8484611e48565b6001905092915050565b600f5f9054906101000a900460ff1681565b610a81611e41565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b06906138b5565b60405180910390fd5b5f4790505f8111610b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4c90613943565b60405180910390fd5b5f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610b9b9061398e565b5f6040518083038185875af1925050503d805f8114610bd5576040519150601f19603f3d011682016040523d82523d5f602084013e610bda565b606091505b5050905080610c1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c15906139ec565b60405180910390fd5b5050565b601a602052805f5260405f205f915054906101000a900460ff1681565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b610c75611e41565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfa906138b5565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b60135481565b60145481565b5f610ddf84848461200b565b610e9c84610deb611e41565b610e97856040518060600160405280602881526020016144716028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610e4e611e41565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129309092919063ffffffff16565b611e48565b600190509392505050565b5f6012905090565b5f610f53610ebb611e41565b84610f4e8560015f610ecb611e41565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461299290919063ffffffff16565b611e48565b6001905092915050565b60105481565b600e5481565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600d5481565b60115481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611039611e41565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110be906138b5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61118c611e41565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461121a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611211906138b5565b60405180910390fd5b5f600f5f6101000a81548160ff021916908315150217905550565b61123d611e41565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c2906138b5565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611353611e41565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d8906138b5565b60405180910390fd5b5f4790505f606460566113f330610fec565b6113fd9190613a37565b6114079190613aa5565b90506114353060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611e48565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198330845f80600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016114bb96959493929190613b0e565b60606040518083038185885af11580156114d7573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906114fc9190613b81565b5050505050565b600f60019054906101000a900460ff1681565b6060600480546115259061383b565b80601f01602080910402602001604051908101604052809291908181526020018280546115519061383b565b801561159c5780601f106115735761010080835404028352916020019161159c565b820191905f5260205f20905b81548152906001019060200180831161157f57829003601f168201915b5050505050905090565b6115ae611e41565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461163c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611633906138b5565b60405180910390fd5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c290613c41565b60405180910390fd5b6116d582826129ef565b5050565b6116e1611e41565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461176f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611766906138b5565b60405180910390fd5b5f61177930610fec565b90505f81116117bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b490613ccf565b60405180910390fd5b6117e930600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361200b565b50565b60175481565b6117fa611e41565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611888576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187f906138b5565b60405180910390fd5b80600f60016101000a81548160ff02191690831515021790555050565b5f6119636118b1611e41565b8461195e856040518060600160405280602581526020016144996025913960015f6118da611e41565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129309092919063ffffffff16565b611e48565b6001905092915050565b5f611980611979611e41565b848461200b565b6001905092915050565b611992611e41565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a17906138b5565b60405180910390fd5b8360118190555081601281905550601254601154611a3e9190613ced565b6010819055508260148190555080601581905550601554601454611a629190613ced565b601381905550601e6010541115611aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa590613d6a565b60405180910390fd5b601e6013541115611af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aeb90613d6a565b60405180910390fd5b50505050565b601b602052805f5260405f205f915054906101000a900460ff1681565b600a5481565b60155481565b611b2b611e41565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb0906138b5565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611c53919061354d565b60405180910390a25050565b600c5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60125481565b611cf5611e41565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7a906138b5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611eb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ead90613df8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1b90613e86565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ffe9190613614565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612079576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207090613f14565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120de90613fa2565b60405180910390fd5b5f81036120fe576120f983835f612a8d565b61292b565b600f5f9054906101000a900460ff16156124f35761211a611323565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121885750612158611323565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121c057505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121fa575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122135750600960149054906101000a900460ff16155b156124f257601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156122b55750601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561235c57600c548111156122ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f690614030565b60405180910390fd5b600e5461230b83610fec565b826123169190613ced565b1115612357576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234e90614098565b60405180910390fd5b6124f1565b601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156123f95750601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561244857600c54811115612443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243a90614126565b60405180910390fd5b6124f0565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166124ef57600e546124a283610fec565b826124ad9190613ced565b11156124ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e590614098565b60405180910390fd5b5b5b5b5b5b5f6124fd30610fec565b90505f600d5482101590508080156125225750600960149054906101000a900460ff16155b80156125755750601b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156125c8575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561261b575060195f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561265e576001600960146101000a81548160ff021916908315150217905550612643612d16565b5f600960146101000a81548160ff0219169083151502179055505b5f600960149054906101000a900460ff1615905060195f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061270d575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612716575f90505b5f811561291b57601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561277457505f601354115b1561280c576127a1606461279360135488612f3c90919063ffffffff16565b612fb390919063ffffffff16565b9050601354601554826127b49190613a37565b6127be9190613aa5565b60165f8282546127ce9190613ced565b92505081905550601354601454826127e69190613a37565b6127f09190613aa5565b60175f8282546128009190613ced565b925050819055506128f8565b601b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561286357505f601054115b156128f757612890606461288260105488612f3c90919063ffffffff16565b612fb390919063ffffffff16565b9050601054601254826128a39190613a37565b6128ad9190613aa5565b60165f8282546128bd9190613ced565b92505081905550601054601154826128d59190613a37565b6128df9190613aa5565b60175f8282546128ef9190613ced565b925050819055505b5b5f81111561290c5761290b873083612a8d565b5b80856129189190614144565b94505b612926878787612a8d565b505050505b505050565b5f838311158290612977576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296e9190613444565b60405180910390fd5b505f83856129859190614144565b9050809150509392505050565b5f8082846129a09190613ced565b9050838110156129e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129dc906141c1565b60405180910390fd5b8091505092915050565b80601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af290613f14565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6090613fa2565b60405180910390fd5b612b74838383612ffc565b612bdd8160405180606001604052806026815260200161444b602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129309092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612c6c815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461299290919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d099190613614565b60405180910390a3505050565b5f612d2030610fec565b90505f601754601654612d339190613ced565b90505f80831480612d4357505f82145b15612d5057505050612f3a565b5f1515600f60019054906101000a900460ff16151503612d97576014600d54612d799190613a37565b831115612d92576014600d54612d8f9190613a37565b92505b612da3565b612da030610fec565b92505b5f60028360165486612db59190613a37565b612dbf9190613aa5565b612dc99190613aa5565b90505f612ddf828661300190919063ffffffff16565b90505f479050612dee8261304a565b5f612e02824761300190919063ffffffff16565b90505f612e2c87612e1e60175485612f3c90919063ffffffff16565b612fb390919063ffffffff16565b90505f8183612e3b9190614144565b90505f6016819055505f6017819055505f86118015612e5957505f81115b15612ea657612e688682613280565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601654604051612e9d939291906141df565b60405180910390a15b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612eeb9061398e565b5f6040518083038185875af1925050503d805f8114612f25576040519150601f19603f3d011682016040523d82523d5f602084013e612f2a565b606091505b5050809750505050505050505050505b565b5f808303612f4c575f9050612fad565b5f8284612f599190613a37565b9050828482612f689190613aa5565b14612fa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9f90614284565b60405180910390fd5b809150505b92915050565b5f612ff483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613359565b905092915050565b505050565b5f61304283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612930565b905092915050565b5f600267ffffffffffffffff811115613066576130656142a2565b5b6040519080825280602002602001820160405280156130945781602001602082028036833780820191505090505b50905030815f815181106130ab576130aa6142cf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561314f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131739190614310565b81600181518110613187576131866142cf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506131ed3060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e48565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161324f9594939291906143f2565b5f604051808303815f87803b158015613266575f80fd5b505af1158015613278573d5f803e3d5ffd5b505050505050565b6132ac3060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e48565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b815260040161331196959493929190613b0e565b60606040518083038185885af115801561332d573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906133529190613b81565b5050505050565b5f808311829061339f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133969190613444565b60405180910390fd5b505f83856133ad9190613aa5565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156133f15780820151818401526020810190506133d6565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613416826133ba565b61342081856133c4565b93506134308185602086016133d4565b613439816133fc565b840191505092915050565b5f6020820190508181035f83015261345c818461340c565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61349182613468565b9050919050565b6134a181613487565b81146134ab575f80fd5b50565b5f813590506134bc81613498565b92915050565b5f819050919050565b6134d4816134c2565b81146134de575f80fd5b50565b5f813590506134ef816134cb565b92915050565b5f806040838503121561350b5761350a613464565b5b5f613518858286016134ae565b9250506020613529858286016134e1565b9150509250929050565b5f8115159050919050565b61354781613533565b82525050565b5f6020820190506135605f83018461353e565b92915050565b5f6020828403121561357b5761357a613464565b5b5f613588848285016134ae565b91505092915050565b5f819050919050565b5f6135b46135af6135aa84613468565b613591565b613468565b9050919050565b5f6135c58261359a565b9050919050565b5f6135d6826135bb565b9050919050565b6135e6816135cc565b82525050565b5f6020820190506135ff5f8301846135dd565b92915050565b61360e816134c2565b82525050565b5f6020820190506136275f830184613605565b92915050565b5f805f6060848603121561364457613643613464565b5b5f613651868287016134ae565b9350506020613662868287016134ae565b9250506040613673868287016134e1565b9150509250925092565b5f60ff82169050919050565b6136928161367d565b82525050565b5f6020820190506136ab5f830184613689565b92915050565b6136ba81613487565b82525050565b5f6020820190506136d35f8301846136b1565b92915050565b6136e281613533565b81146136ec575f80fd5b50565b5f813590506136fd816136d9565b92915050565b5f806040838503121561371957613718613464565b5b5f613726858286016134ae565b9250506020613737858286016136ef565b9150509250929050565b5f6020828403121561375657613755613464565b5b5f613763848285016136ef565b91505092915050565b5f805f806080858703121561378457613783613464565b5b5f613791878288016134e1565b94505060206137a2878288016134e1565b93505060406137b3878288016134e1565b92505060606137c4878288016134e1565b91505092959194509250565b5f80604083850312156137e6576137e5613464565b5b5f6137f3858286016134ae565b9250506020613804858286016134ae565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061385257607f821691505b6020821081036138655761386461380e565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61389f6020836133c4565b91506138aa8261386b565b602082019050919050565b5f6020820190508181035f8301526138cc81613893565b9050919050565b7f4554482062616c616e6365206d7573742062652067726561746572207468616e5f8201527f2030000000000000000000000000000000000000000000000000000000000000602082015250565b5f61392d6022836133c4565b9150613938826138d3565b604082019050919050565b5f6020820190508181035f83015261395a81613921565b9050919050565b5f81905092915050565b50565b5f6139795f83613961565b91506139848261396b565b5f82019050919050565b5f6139988261396e565b9150819050919050565b7f4661696c656420746f20636c656172204554482062616c616e636500000000005f82015250565b5f6139d6601b836133c4565b91506139e1826139a2565b602082019050919050565b5f6020820190508181035f830152613a03816139ca565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613a41826134c2565b9150613a4c836134c2565b9250828202613a5a816134c2565b91508282048414831517613a7157613a70613a0a565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613aaf826134c2565b9150613aba836134c2565b925082613aca57613ac9613a78565b5b828204905092915050565b5f819050919050565b5f613af8613af3613aee84613ad5565b613591565b6134c2565b9050919050565b613b0881613ade565b82525050565b5f60c082019050613b215f8301896136b1565b613b2e6020830188613605565b613b3b6040830187613aff565b613b486060830186613aff565b613b5560808301856136b1565b613b6260a0830184613605565b979650505050505050565b5f81519050613b7b816134cb565b92915050565b5f805f60608486031215613b9857613b97613464565b5b5f613ba586828701613b6d565b9350506020613bb686828701613b6d565b9250506040613bc786828701613b6d565b9150509250925092565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613c2b6039836133c4565b9150613c3682613bd1565b604082019050919050565b5f6020820190508181035f830152613c5881613c1f565b9050919050565b7f546f6b656e2062616c616e6365206d75737420626520677265617465722074685f8201527f616e203000000000000000000000000000000000000000000000000000000000602082015250565b5f613cb96024836133c4565b9150613cc482613c5f565b604082019050919050565b5f6020820190508181035f830152613ce681613cad565b9050919050565b5f613cf7826134c2565b9150613d02836134c2565b9250828201905080821115613d1a57613d19613a0a565b5b92915050565b7f4d4158203330252074617820616c6c6f776564000000000000000000000000005f82015250565b5f613d546013836133c4565b9150613d5f82613d20565b602082019050919050565b5f6020820190508181035f830152613d8181613d48565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613de26024836133c4565b9150613ded82613d88565b604082019050919050565b5f6020820190508181035f830152613e0f81613dd6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613e706022836133c4565b9150613e7b82613e16565b604082019050919050565b5f6020820190508181035f830152613e9d81613e64565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613efe6025836133c4565b9150613f0982613ea4565b604082019050919050565b5f6020820190508181035f830152613f2b81613ef2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613f8c6023836133c4565b9150613f9782613f32565b604082019050919050565b5f6020820190508181035f830152613fb981613f80565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f61401a6035836133c4565b915061402582613fc0565b604082019050919050565b5f6020820190508181035f8301526140478161400e565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6140826013836133c4565b915061408d8261404e565b602082019050919050565b5f6020820190508181035f8301526140af81614076565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f6141106036836133c4565b915061411b826140b6565b604082019050919050565b5f6020820190508181035f83015261413d81614104565b9050919050565b5f61414e826134c2565b9150614159836134c2565b925082820390508181111561417157614170613a0a565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6141ab601b836133c4565b91506141b682614177565b602082019050919050565b5f6020820190508181035f8301526141d88161419f565b9050919050565b5f6060820190506141f25f830186613605565b6141ff6020830185613605565b61420c6040830184613605565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61426e6021836133c4565b915061427982614214565b604082019050919050565b5f6020820190508181035f83015261429b81614262565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061430a81613498565b92915050565b5f6020828403121561432557614324613464565b5b5f614332848285016142fc565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61436d81613487565b82525050565b5f61437e8383614364565b60208301905092915050565b5f602082019050919050565b5f6143a08261433b565b6143aa8185614345565b93506143b583614355565b805f5b838110156143e55781516143cc8882614373565b97506143d78361438a565b9250506001810190506143b8565b5085935050505092915050565b5f60a0820190506144055f830188613605565b6144126020830187613aff565b81810360408301526144248186614396565b905061443360608301856136b1565b6144406080830184613605565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ba017436feb4a6b09cff5dc50b12f9e2af48401831438370f0be36e08e463d7464736f6c63430008150033
Deployed Bytecode
0x60806040526004361061025f575f3560e01c8063715018a611610143578063a457c2d7116100b5578063be85750411610079578063be857504146108b0578063c0246668146108da578063c3f70b5214610902578063dd62ed3e1461092c578063df6f93be14610968578063f2fde38b1461099257610266565b8063a457c2d7146107aa578063a9059cbb146107e6578063b1192e1814610822578063b62496f51461084a578063b69ef8a81461088657610266565b8063945674fe11610107578063945674fe146106c657806395d89b41146106f05780639a7a23d61461071a5780639ee2e924146107425780639fccce3214610758578063a04916941461078257610266565b8063715018a614610632578063751039fc146106485780637571336a1461065e5780638da5cb5b146106865780638ebb420d146106b057610266565b806322eb6631116101dc57806348d79155116101a057806348d791551461051257806349bd5a5e1461053c5780634fbee193146105665780635de0f2a0146105a25780636c7e15c9146105cc57806370a08231146105f657610266565b806322eb66311461041c57806323b872dd14610446578063313ce5671461048257806339509351146104ac57806346469afb146104e857610266565b80631694505e116102235780631694505e1461034c57806318160ddd146103765780631816467f146103a05780631a8145bb146103c85780631bff7898146103f257610266565b806306fdde031461026a578063095ea7b3146102945780630e947809146102d05780630f299cf1146102fa57806310d5de531461031057610266565b3661026657005b5f80fd5b348015610275575f80fd5b5061027e6109ba565b60405161028b9190613444565b60405180910390f35b34801561029f575f80fd5b506102ba60048036038101906102b591906134f5565b610a4a565b6040516102c7919061354d565b60405180910390f35b3480156102db575f80fd5b506102e4610a67565b6040516102f1919061354d565b60405180910390f35b348015610305575f80fd5b5061030e610a79565b005b34801561031b575f80fd5b5061033660048036038101906103319190613566565b610c22565b604051610343919061354d565b60405180910390f35b348015610357575f80fd5b50610360610c3f565b60405161036d91906135ec565b60405180910390f35b348015610381575f80fd5b5061038a610c64565b6040516103979190613614565b60405180910390f35b3480156103ab575f80fd5b506103c660048036038101906103c19190613566565b610c6d565b005b3480156103d3575f80fd5b506103dc610dc1565b6040516103e99190613614565b60405180910390f35b3480156103fd575f80fd5b50610406610dc7565b6040516104139190613614565b60405180910390f35b348015610427575f80fd5b50610430610dcd565b60405161043d9190613614565b60405180910390f35b348015610451575f80fd5b5061046c6004803603810190610467919061362d565b610dd3565b604051610479919061354d565b60405180910390f35b34801561048d575f80fd5b50610496610ea7565b6040516104a39190613698565b60405180910390f35b3480156104b7575f80fd5b506104d260048036038101906104cd91906134f5565b610eaf565b6040516104df919061354d565b60405180910390f35b3480156104f3575f80fd5b506104fc610f5d565b6040516105099190613614565b60405180910390f35b34801561051d575f80fd5b50610526610f63565b6040516105339190613614565b60405180910390f35b348015610547575f80fd5b50610550610f69565b60405161055d91906136c0565b60405180910390f35b348015610571575f80fd5b5061058c60048036038101906105879190613566565b610f8e565b604051610599919061354d565b60405180910390f35b3480156105ad575f80fd5b506105b6610fe0565b6040516105c39190613614565b60405180910390f35b3480156105d7575f80fd5b506105e0610fe6565b6040516105ed9190613614565b60405180910390f35b348015610601575f80fd5b5061061c60048036038101906106179190613566565b610fec565b6040516106299190613614565b60405180910390f35b34801561063d575f80fd5b50610646611031565b005b348015610653575f80fd5b5061065c611184565b005b348015610669575f80fd5b50610684600480360381019061067f9190613703565b611235565b005b348015610691575f80fd5b5061069a611323565b6040516106a791906136c0565b60405180910390f35b3480156106bb575f80fd5b506106c461134b565b005b3480156106d1575f80fd5b506106da611503565b6040516106e7919061354d565b60405180910390f35b3480156106fb575f80fd5b50610704611516565b6040516107119190613444565b60405180910390f35b348015610725575f80fd5b50610740600480360381019061073b9190613703565b6115a6565b005b34801561074d575f80fd5b506107566116d9565b005b348015610763575f80fd5b5061076c6117ec565b6040516107799190613614565b60405180910390f35b34801561078d575f80fd5b506107a860048036038101906107a39190613741565b6117f2565b005b3480156107b5575f80fd5b506107d060048036038101906107cb91906134f5565b6118a5565b6040516107dd919061354d565b60405180910390f35b3480156107f1575f80fd5b5061080c600480360381019061080791906134f5565b61196d565b604051610819919061354d565b60405180910390f35b34801561082d575f80fd5b506108486004803603810190610843919061376c565b61198a565b005b348015610855575f80fd5b50610870600480360381019061086b9190613566565b611afa565b60405161087d919061354d565b60405180910390f35b348015610891575f80fd5b5061089a611b17565b6040516108a79190613614565b60405180910390f35b3480156108bb575f80fd5b506108c4611b1d565b6040516108d19190613614565b60405180910390f35b3480156108e5575f80fd5b5061090060048036038101906108fb9190613703565b611b23565b005b34801561090d575f80fd5b50610916611c5f565b6040516109239190613614565b60405180910390f35b348015610937575f80fd5b50610952600480360381019061094d91906137d0565b611c65565b60405161095f9190613614565b60405180910390f35b348015610973575f80fd5b5061097c611ce7565b6040516109899190613614565b60405180910390f35b34801561099d575f80fd5b506109b860048036038101906109b39190613566565b611ced565b005b6060600380546109c99061383b565b80601f01602080910402602001604051908101604052809291908181526020018280546109f59061383b565b8015610a405780601f10610a1757610100808354040283529160200191610a40565b820191905f5260205f20905b815481529060010190602001808311610a2357829003601f168201915b5050505050905090565b5f610a5d610a56611e41565b8484611e48565b6001905092915050565b600f5f9054906101000a900460ff1681565b610a81611e41565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b06906138b5565b60405180910390fd5b5f4790505f8111610b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4c90613943565b60405180910390fd5b5f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610b9b9061398e565b5f6040518083038185875af1925050503d805f8114610bd5576040519150601f19603f3d011682016040523d82523d5f602084013e610bda565b606091505b5050905080610c1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c15906139ec565b60405180910390fd5b5050565b601a602052805f5260405f205f915054906101000a900460ff1681565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b610c75611e41565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfa906138b5565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b60135481565b60145481565b5f610ddf84848461200b565b610e9c84610deb611e41565b610e97856040518060600160405280602881526020016144716028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610e4e611e41565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129309092919063ffffffff16565b611e48565b600190509392505050565b5f6012905090565b5f610f53610ebb611e41565b84610f4e8560015f610ecb611e41565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461299290919063ffffffff16565b611e48565b6001905092915050565b60105481565b600e5481565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600d5481565b60115481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611039611e41565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110be906138b5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61118c611e41565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461121a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611211906138b5565b60405180910390fd5b5f600f5f6101000a81548160ff021916908315150217905550565b61123d611e41565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c2906138b5565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611353611e41565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d8906138b5565b60405180910390fd5b5f4790505f606460566113f330610fec565b6113fd9190613a37565b6114079190613aa5565b90506114353060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611e48565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198330845f80600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016114bb96959493929190613b0e565b60606040518083038185885af11580156114d7573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906114fc9190613b81565b5050505050565b600f60019054906101000a900460ff1681565b6060600480546115259061383b565b80601f01602080910402602001604051908101604052809291908181526020018280546115519061383b565b801561159c5780601f106115735761010080835404028352916020019161159c565b820191905f5260205f20905b81548152906001019060200180831161157f57829003601f168201915b5050505050905090565b6115ae611e41565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461163c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611633906138b5565b60405180910390fd5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c290613c41565b60405180910390fd5b6116d582826129ef565b5050565b6116e1611e41565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461176f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611766906138b5565b60405180910390fd5b5f61177930610fec565b90505f81116117bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b490613ccf565b60405180910390fd5b6117e930600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361200b565b50565b60175481565b6117fa611e41565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611888576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187f906138b5565b60405180910390fd5b80600f60016101000a81548160ff02191690831515021790555050565b5f6119636118b1611e41565b8461195e856040518060600160405280602581526020016144996025913960015f6118da611e41565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129309092919063ffffffff16565b611e48565b6001905092915050565b5f611980611979611e41565b848461200b565b6001905092915050565b611992611e41565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a17906138b5565b60405180910390fd5b8360118190555081601281905550601254601154611a3e9190613ced565b6010819055508260148190555080601581905550601554601454611a629190613ced565b601381905550601e6010541115611aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa590613d6a565b60405180910390fd5b601e6013541115611af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aeb90613d6a565b60405180910390fd5b50505050565b601b602052805f5260405f205f915054906101000a900460ff1681565b600a5481565b60155481565b611b2b611e41565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb0906138b5565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611c53919061354d565b60405180910390a25050565b600c5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60125481565b611cf5611e41565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7a906138b5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611eb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ead90613df8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1b90613e86565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ffe9190613614565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612079576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207090613f14565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120de90613fa2565b60405180910390fd5b5f81036120fe576120f983835f612a8d565b61292b565b600f5f9054906101000a900460ff16156124f35761211a611323565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121885750612158611323565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121c057505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121fa575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122135750600960149054906101000a900460ff16155b156124f257601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156122b55750601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561235c57600c548111156122ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f690614030565b60405180910390fd5b600e5461230b83610fec565b826123169190613ced565b1115612357576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234e90614098565b60405180910390fd5b6124f1565b601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156123f95750601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561244857600c54811115612443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243a90614126565b60405180910390fd5b6124f0565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166124ef57600e546124a283610fec565b826124ad9190613ced565b11156124ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e590614098565b60405180910390fd5b5b5b5b5b5b5f6124fd30610fec565b90505f600d5482101590508080156125225750600960149054906101000a900460ff16155b80156125755750601b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156125c8575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561261b575060195f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561265e576001600960146101000a81548160ff021916908315150217905550612643612d16565b5f600960146101000a81548160ff0219169083151502179055505b5f600960149054906101000a900460ff1615905060195f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061270d575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612716575f90505b5f811561291b57601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561277457505f601354115b1561280c576127a1606461279360135488612f3c90919063ffffffff16565b612fb390919063ffffffff16565b9050601354601554826127b49190613a37565b6127be9190613aa5565b60165f8282546127ce9190613ced565b92505081905550601354601454826127e69190613a37565b6127f09190613aa5565b60175f8282546128009190613ced565b925050819055506128f8565b601b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561286357505f601054115b156128f757612890606461288260105488612f3c90919063ffffffff16565b612fb390919063ffffffff16565b9050601054601254826128a39190613a37565b6128ad9190613aa5565b60165f8282546128bd9190613ced565b92505081905550601054601154826128d59190613a37565b6128df9190613aa5565b60175f8282546128ef9190613ced565b925050819055505b5b5f81111561290c5761290b873083612a8d565b5b80856129189190614144565b94505b612926878787612a8d565b505050505b505050565b5f838311158290612977576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296e9190613444565b60405180910390fd5b505f83856129859190614144565b9050809150509392505050565b5f8082846129a09190613ced565b9050838110156129e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129dc906141c1565b60405180910390fd5b8091505092915050565b80601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af290613f14565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6090613fa2565b60405180910390fd5b612b74838383612ffc565b612bdd8160405180606001604052806026815260200161444b602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129309092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612c6c815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461299290919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d099190613614565b60405180910390a3505050565b5f612d2030610fec565b90505f601754601654612d339190613ced565b90505f80831480612d4357505f82145b15612d5057505050612f3a565b5f1515600f60019054906101000a900460ff16151503612d97576014600d54612d799190613a37565b831115612d92576014600d54612d8f9190613a37565b92505b612da3565b612da030610fec565b92505b5f60028360165486612db59190613a37565b612dbf9190613aa5565b612dc99190613aa5565b90505f612ddf828661300190919063ffffffff16565b90505f479050612dee8261304a565b5f612e02824761300190919063ffffffff16565b90505f612e2c87612e1e60175485612f3c90919063ffffffff16565b612fb390919063ffffffff16565b90505f8183612e3b9190614144565b90505f6016819055505f6017819055505f86118015612e5957505f81115b15612ea657612e688682613280565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601654604051612e9d939291906141df565b60405180910390a15b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612eeb9061398e565b5f6040518083038185875af1925050503d805f8114612f25576040519150601f19603f3d011682016040523d82523d5f602084013e612f2a565b606091505b5050809750505050505050505050505b565b5f808303612f4c575f9050612fad565b5f8284612f599190613a37565b9050828482612f689190613aa5565b14612fa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9f90614284565b60405180910390fd5b809150505b92915050565b5f612ff483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613359565b905092915050565b505050565b5f61304283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612930565b905092915050565b5f600267ffffffffffffffff811115613066576130656142a2565b5b6040519080825280602002602001820160405280156130945781602001602082028036833780820191505090505b50905030815f815181106130ab576130aa6142cf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561314f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131739190614310565b81600181518110613187576131866142cf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506131ed3060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e48565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161324f9594939291906143f2565b5f604051808303815f87803b158015613266575f80fd5b505af1158015613278573d5f803e3d5ffd5b505050505050565b6132ac3060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e48565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b815260040161331196959493929190613b0e565b60606040518083038185885af115801561332d573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906133529190613b81565b5050505050565b5f808311829061339f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133969190613444565b60405180910390fd5b505f83856133ad9190613aa5565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156133f15780820151818401526020810190506133d6565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613416826133ba565b61342081856133c4565b93506134308185602086016133d4565b613439816133fc565b840191505092915050565b5f6020820190508181035f83015261345c818461340c565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61349182613468565b9050919050565b6134a181613487565b81146134ab575f80fd5b50565b5f813590506134bc81613498565b92915050565b5f819050919050565b6134d4816134c2565b81146134de575f80fd5b50565b5f813590506134ef816134cb565b92915050565b5f806040838503121561350b5761350a613464565b5b5f613518858286016134ae565b9250506020613529858286016134e1565b9150509250929050565b5f8115159050919050565b61354781613533565b82525050565b5f6020820190506135605f83018461353e565b92915050565b5f6020828403121561357b5761357a613464565b5b5f613588848285016134ae565b91505092915050565b5f819050919050565b5f6135b46135af6135aa84613468565b613591565b613468565b9050919050565b5f6135c58261359a565b9050919050565b5f6135d6826135bb565b9050919050565b6135e6816135cc565b82525050565b5f6020820190506135ff5f8301846135dd565b92915050565b61360e816134c2565b82525050565b5f6020820190506136275f830184613605565b92915050565b5f805f6060848603121561364457613643613464565b5b5f613651868287016134ae565b9350506020613662868287016134ae565b9250506040613673868287016134e1565b9150509250925092565b5f60ff82169050919050565b6136928161367d565b82525050565b5f6020820190506136ab5f830184613689565b92915050565b6136ba81613487565b82525050565b5f6020820190506136d35f8301846136b1565b92915050565b6136e281613533565b81146136ec575f80fd5b50565b5f813590506136fd816136d9565b92915050565b5f806040838503121561371957613718613464565b5b5f613726858286016134ae565b9250506020613737858286016136ef565b9150509250929050565b5f6020828403121561375657613755613464565b5b5f613763848285016136ef565b91505092915050565b5f805f806080858703121561378457613783613464565b5b5f613791878288016134e1565b94505060206137a2878288016134e1565b93505060406137b3878288016134e1565b92505060606137c4878288016134e1565b91505092959194509250565b5f80604083850312156137e6576137e5613464565b5b5f6137f3858286016134ae565b9250506020613804858286016134ae565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061385257607f821691505b6020821081036138655761386461380e565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61389f6020836133c4565b91506138aa8261386b565b602082019050919050565b5f6020820190508181035f8301526138cc81613893565b9050919050565b7f4554482062616c616e6365206d7573742062652067726561746572207468616e5f8201527f2030000000000000000000000000000000000000000000000000000000000000602082015250565b5f61392d6022836133c4565b9150613938826138d3565b604082019050919050565b5f6020820190508181035f83015261395a81613921565b9050919050565b5f81905092915050565b50565b5f6139795f83613961565b91506139848261396b565b5f82019050919050565b5f6139988261396e565b9150819050919050565b7f4661696c656420746f20636c656172204554482062616c616e636500000000005f82015250565b5f6139d6601b836133c4565b91506139e1826139a2565b602082019050919050565b5f6020820190508181035f830152613a03816139ca565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613a41826134c2565b9150613a4c836134c2565b9250828202613a5a816134c2565b91508282048414831517613a7157613a70613a0a565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613aaf826134c2565b9150613aba836134c2565b925082613aca57613ac9613a78565b5b828204905092915050565b5f819050919050565b5f613af8613af3613aee84613ad5565b613591565b6134c2565b9050919050565b613b0881613ade565b82525050565b5f60c082019050613b215f8301896136b1565b613b2e6020830188613605565b613b3b6040830187613aff565b613b486060830186613aff565b613b5560808301856136b1565b613b6260a0830184613605565b979650505050505050565b5f81519050613b7b816134cb565b92915050565b5f805f60608486031215613b9857613b97613464565b5b5f613ba586828701613b6d565b9350506020613bb686828701613b6d565b9250506040613bc786828701613b6d565b9150509250925092565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613c2b6039836133c4565b9150613c3682613bd1565b604082019050919050565b5f6020820190508181035f830152613c5881613c1f565b9050919050565b7f546f6b656e2062616c616e6365206d75737420626520677265617465722074685f8201527f616e203000000000000000000000000000000000000000000000000000000000602082015250565b5f613cb96024836133c4565b9150613cc482613c5f565b604082019050919050565b5f6020820190508181035f830152613ce681613cad565b9050919050565b5f613cf7826134c2565b9150613d02836134c2565b9250828201905080821115613d1a57613d19613a0a565b5b92915050565b7f4d4158203330252074617820616c6c6f776564000000000000000000000000005f82015250565b5f613d546013836133c4565b9150613d5f82613d20565b602082019050919050565b5f6020820190508181035f830152613d8181613d48565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613de26024836133c4565b9150613ded82613d88565b604082019050919050565b5f6020820190508181035f830152613e0f81613dd6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613e706022836133c4565b9150613e7b82613e16565b604082019050919050565b5f6020820190508181035f830152613e9d81613e64565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613efe6025836133c4565b9150613f0982613ea4565b604082019050919050565b5f6020820190508181035f830152613f2b81613ef2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613f8c6023836133c4565b9150613f9782613f32565b604082019050919050565b5f6020820190508181035f830152613fb981613f80565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f61401a6035836133c4565b915061402582613fc0565b604082019050919050565b5f6020820190508181035f8301526140478161400e565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6140826013836133c4565b915061408d8261404e565b602082019050919050565b5f6020820190508181035f8301526140af81614076565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f6141106036836133c4565b915061411b826140b6565b604082019050919050565b5f6020820190508181035f83015261413d81614104565b9050919050565b5f61414e826134c2565b9150614159836134c2565b925082820390508181111561417157614170613a0a565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6141ab601b836133c4565b91506141b682614177565b602082019050919050565b5f6020820190508181035f8301526141d88161419f565b9050919050565b5f6060820190506141f25f830186613605565b6141ff6020830185613605565b61420c6040830184613605565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61426e6021836133c4565b915061427982614214565b604082019050919050565b5f6020820190508181035f83015261429b81614262565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061430a81613498565b92915050565b5f6020828403121561432557614324613464565b5b5f614332848285016142fc565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61436d81613487565b82525050565b5f61437e8383614364565b60208301905092915050565b5f602082019050919050565b5f6143a08261433b565b6143aa8185614345565b93506143b583614355565b805f5b838110156143e55781516143cc8882614373565b97506143d78361438a565b9250506001810190506143b8565b5085935050505092915050565b5f60a0820190506144055f830188613605565b6144126020830187613aff565b81810360408301526144248186614396565b905061443360608301856136b1565b6144406080830184613605565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ba017436feb4a6b09cff5dc50b12f9e2af48401831438370f0be36e08e463d7464736f6c63430008150033
Deployed Bytecode Sourcemap
17578:12639:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5755:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18039:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22092:311;;;;;;;;;;;;;:::i;:::-;;18612:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17740:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5162:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24174:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18321:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18220:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18254:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5932:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5061:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6295:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18122:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17998:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17788:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24347:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17956:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18155:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5278:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10822:148;;;;;;;;;;;;;:::i;:::-;;22675:81;;;;;;;;;;;;;:::i;:::-;;22869:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10608:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21525:549;;;;;;;;;;;;;:::i;:::-;;18076:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4949:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23723:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22411:256;;;;;;;;;;;;;:::i;:::-;;18361:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22765:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6521:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5413:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23025:499;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18835:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17856:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18286:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23532:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17920:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5596:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18186:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10978:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4841:100;4895:13;4928:5;4921:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:100;:::o;5755:169::-;5838:4;5855:39;5864:12;:10;:12::i;:::-;5878:7;5887:6;5855:8;:39::i;:::-;5912:4;5905:11;;5755:169;;;;:::o;18039:30::-;;;;;;;;;;;;;:::o;22092:311::-;10745:12;:10;:12::i;:::-;10735:22;;:6;;;;;;;;;;;:22;;;10727:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22148:18:::1;22169:21;22148:42;;22222:1;22209:10;:14;22201:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;22274:12;22299:9;;;;;;;;;;;22291:23;;22322:10;22291:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22273:64;;;22356:7;22348:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;22137:266;;22092:311::o:0;18612:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;17740:41::-;;;;;;;;;;;;;:::o;5162:108::-;5223:7;5250:12;;5243:19;;5162:108;:::o;24174:165::-;10745:12;:10;:12::i;:::-;10735:22;;:6;;;;;;;;;;;:22;;;10727:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24286:9:::1;;;;;;;;;;;24255:41;;24272:12;24255:41;;;;;;;;;;;;24319:12;24307:9;;:24;;;;;;;;;;;;;;;;;;24174:165:::0;:::o;18321:33::-;;;;:::o;18220:27::-;;;;:::o;18254:25::-;;;;:::o;5932:355::-;6072:4;6089:36;6099:6;6107:9;6118:6;6089:9;:36::i;:::-;6136:121;6145:6;6153:12;:10;:12::i;:::-;6167:89;6205:6;6167:89;;;;;;;;;;;;;;;;;:11;:19;6179:6;6167:19;;;;;;;;;;;;;;;:33;6187:12;:10;:12::i;:::-;6167:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6136:8;:121::i;:::-;6275:4;6268:11;;5932:355;;;;;:::o;5061:93::-;5119:5;5144:2;5137:9;;5061:93;:::o;6295:218::-;6383:4;6400:83;6409:12;:10;:12::i;:::-;6423:7;6432:50;6471:10;6432:11;:25;6444:12;:10;:12::i;:::-;6432:25;;;;;;;;;;;;;;;:34;6458:7;6432:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;6400:8;:83::i;:::-;6501:4;6494:11;;6295:218;;;;:::o;18122:26::-;;;;:::o;17998:31::-;;;;:::o;17788:28::-;;;;;;;;;;;;;:::o;24347:125::-;24412:4;24436:19;:28;24456:7;24436:28;;;;;;;;;;;;;;;;;;;;;;;;;24429:35;;24347:125;;;:::o;17956:35::-;;;;:::o;18155:24::-;;;;:::o;5278:127::-;5352:7;5379:9;:18;5389:7;5379:18;;;;;;;;;;;;;;;;5372:25;;5278:127;;;:::o;10822:148::-;10745:12;:10;:12::i;:::-;10735:22;;:6;;;;;;;;;;;:22;;;10727:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10929:1:::1;10892:40;;10913:6;;;;;;;;;;;10892:40;;;;;;;;;;;;10960:1;10943:6;;:19;;;;;;;;;;;;;;;;;;10822:148::o:0;22675:81::-;10745:12;:10;:12::i;:::-;10735:22;;:6;;;;;;;;;;;:22;;;10727:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22743:5:::1;22729:11;;:19;;;;;;;;;;;;;;;;;;22675:81::o:0;22869:144::-;10745:12;:10;:12::i;:::-;10735:22;;:6;;;;;;;;;;;:22;;;10727:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23001:4:::1;22959:31;:39;22991:6;22959:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;22869:144:::0;;:::o;10608:79::-;10646:7;10673:6;;;;;;;;;;;10666:13;;10608:79;:::o;21525:549::-;10745:12;:10;:12::i;:::-;10735:22;;:6;;;;;;;;;;;:22;;;10727:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21589:17:::1;21609:21;21589:41;;21641:19;21695:3;21690:2;21663:24;21681:4;21663:9;:24::i;:::-;:29;;;;:::i;:::-;:35;;;;:::i;:::-;21641:57;;21729:62;21746:4;21761:15;;;;;;;;;;;21779:11;21729:8;:62::i;:::-;21804:15;;;;;;;;;;;:31;;;21843:9;21876:4;21896:11;21926:1;21973::::0;22016:9:::1;;;;;;;;;;;22040:15;21804:262;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21562:512;;21525:549::o:0;18076:37::-;;;;;;;;;;;;;:::o;4949:104::-;5005:13;5038:7;5031:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4949:104;:::o;23723:245::-;10745:12;:10;:12::i;:::-;10735:22;;:6;;;;;;;;;;;:22;;;10727:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23830:13:::1;;;;;;;;;;;23822:21;;:4;:21;;::::0;23814:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;23919:41;23948:4;23954:5;23919:28;:41::i;:::-;23723:245:::0;;:::o;22411:256::-;10745:12;:10;:12::i;:::-;10735:22;;:6;;;;;;;;;;;:22;;;10727:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22476:20:::1;22499:24;22517:4;22499:9;:24::i;:::-;22476:47;;22557:1;22542:12;:16;22534:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;22610:49;22628:4;22635:9;;;;;;;;;;;22646:12;22610:9;:49::i;:::-;22465:202;22411:256::o:0;18361:27::-;;;;:::o;22765:95::-;10745:12;:10;:12::i;:::-;10735:22;;:6;;;;;;;;;;;:22;;;10727:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22845:7:::1;22825:17;;:27;;;;;;;;;;;;;;;;;;22765:95:::0;:::o;6521:269::-;6614:4;6631:129;6640:12;:10;:12::i;:::-;6654:7;6663:96;6702:15;6663:96;;;;;;;;;;;;;;;;;:11;:25;6675:12;:10;:12::i;:::-;6663:25;;;;;;;;;;;;;;;:34;6689:7;6663:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6631:8;:129::i;:::-;6778:4;6771:11;;6521:269;;;;:::o;5413:175::-;5499:4;5516:42;5526:12;:10;:12::i;:::-;5540:9;5551:6;5516:9;:42::i;:::-;5576:4;5569:11;;5413:175;;;;:::o;23025:499::-;10745:12;:10;:12::i;:::-;10735:22;;:6;;;;;;;;;;;:22;;;10727:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23199:7:::1;23187:9;:19;;;;23229:7;23217:9;:19;;;;23273:9;;23261;;:21;;;;:::i;:::-;23247:11;:35;;;;23306:8;23293:10;:21;;;;23338:8;23325:10;:21;;;;23385:10;;23372;;:23;;;;:::i;:::-;23357:12;:38;;;;23429:2;23414:11;;:17;;23406:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;23490:2;23474:12;;:18;;23466:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;23025:499:::0;;;;:::o;18835:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;17856:22::-;;;;:::o;18286:25::-;;;;:::o;23532:182::-;10745:12;:10;:12::i;:::-;10735:22;;:6;;;;;;;;;;;:22;;;10727:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23648:8:::1;23617:19;:28;23637:7;23617:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23688:7;23672:34;;;23697:8;23672:34;;;;;;:::i;:::-;;;;;;;;23532:182:::0;;:::o;17920:29::-;;;;:::o;5596:151::-;5685:7;5712:11;:18;5724:5;5712:18;;;;;;;;;;;;;;;:27;5731:7;5712:27;;;;;;;;;;;;;;;;5705:34;;5596:151;;;;:::o;18186:24::-;;;;:::o;10978:169::-;10745:12;:10;:12::i;:::-;10735:22;;:6;;;;;;;;;;;:22;;;10727:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11102:8:::1;11073:38;;11094:6;;;;;;;;;;;11073:38;;;;;;;;;;;;11131:8;11122:6;;:17;;;;;;;;;;;;;;;;;;10978:169:::0;:::o;194:98::-;247:7;274:10;267:17;;194:98;:::o;8197:381::-;8350:1;8333:19;;:5;:19;;;8325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8431:1;8412:21;;:7;:21;;;8404:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8516:6;8486:11;:18;8498:5;8486:18;;;;;;;;;;;;;;;:27;8505:7;8486:27;;;;;;;;;;;;;;;:36;;;;8554:7;8538:32;;8547:5;8538:32;;;8563:6;8538:32;;;;;;:::i;:::-;;;;;;;;8197:381;;;:::o;24481:3112::-;24629:1;24613:18;;:4;:18;;;24605:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24706:1;24692:16;;:2;:16;;;24684:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24773:1;24763:6;:11;24760:92;;24791:28;24807:4;24813:2;24817:1;24791:15;:28::i;:::-;24834:7;;24760:92;24868:11;;;;;;;;;;;24865:1083;;;24925:7;:5;:7::i;:::-;24917:15;;:4;:15;;;;:49;;;;;24959:7;:5;:7::i;:::-;24953:13;;:2;:13;;;;24917:49;:86;;;;;25001:1;24987:16;;:2;:16;;;;24917:86;:128;;;;;25038:6;25024:21;;:2;:21;;;;24917:128;:160;;;;;25067:10;;;;;;;;;;;25066:11;24917:160;24895:1042;;;25161:25;:31;25187:4;25161:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;25197:31;:35;25229:2;25197:35;;;;;;;;;;;;;;;;;;;;;;;;;25196:36;25161:71;25157:765;;;25279:14;;25269:6;:24;;25261:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;25412:16;;25395:13;25405:2;25395:9;:13::i;:::-;25386:6;:22;;;;:::i;:::-;:42;;25378:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;25157:765;;;25531:25;:29;25557:2;25531:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;25565:31;:37;25597:4;25565:37;;;;;;;;;;;;;;;;;;;;;;;;;25564:38;25531:71;25527:395;;;25649:14;;25639:6;:24;;25631:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;25527:395;;;25769:31;:35;25801:2;25769:35;;;;;;;;;;;;;;;;;;;;;;;;;25765:157;;25862:16;;25845:13;25855:2;25845:9;:13::i;:::-;25836:6;:22;;;;:::i;:::-;:42;;25828:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;25765:157;25527:395;25157:765;24895:1042;24865:1083;25961:28;25992:24;26010:4;25992:9;:24::i;:::-;25961:55;;26030:12;26069:20;;26045;:44;;26030:59;;26121:7;:35;;;;;26146:10;;;;;;;;;;;26145:11;26121:35;:84;;;;;26174:25;:31;26200:4;26174:31;;;;;;;;;;;;;;;;;;;;;;;;;26173:32;26121:84;:127;;;;;26223:19;:25;26243:4;26223:25;;;;;;;;;;;;;;;;;;;;;;;;;26222:26;26121:127;:168;;;;;26266:19;:23;26286:2;26266:23;;;;;;;;;;;;;;;;;;;;;;;;;26265:24;26121:168;26103:306;;;26329:4;26316:10;;:17;;;;;;;;;;;;;;;;;;26351:10;:8;:10::i;:::-;26392:5;26379:10;;:18;;;;;;;;;;;;;;;;;;26103:306;26422:12;26438:10;;;;;;;;;;;26437:11;26422:26;;26550:19;:25;26570:4;26550:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;26579:19;:23;26599:2;26579:23;;;;;;;;;;;;;;;;;;;;;;;;;26550:52;26547:99;;;26629:5;26619:15;;26547:99;26659:12;26763:7;26760:779;;;26814:25;:29;26840:2;26814:29;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;;26862:1;26847:12;;:16;26814:49;26810:576;;;26890:33;26919:3;26890:24;26901:12;;26890:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;26883:40;;26984:12;;26971:10;;26964:4;:17;;;;:::i;:::-;:32;;;;:::i;:::-;26942:18;;:54;;;;;;;:::i;:::-;;;;;;;;27051:12;;27038:10;;27031:4;:17;;;;:::i;:::-;:32;;;;:::i;:::-;27015:12;;:48;;;;;;;:::i;:::-;;;;;;;;26810:576;;;27124:25;:31;27150:4;27124:31;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;27173:1;27159:11;;:15;27124:50;27121:265;;;27202:32;27230:3;27202:23;27213:11;;27202:6;:10;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;27195:39;;27294:11;;27282:9;;27275:4;:16;;;;:::i;:::-;:30;;;;:::i;:::-;27253:18;;:52;;;;;;;:::i;:::-;;;;;;;;27359:11;;27347:9;;27340:4;:16;;;;:::i;:::-;:30;;;;:::i;:::-;27324:12;;:46;;;;;;;:::i;:::-;;;;;;;;27121:265;26810:576;27413:1;27406:4;:8;27403:93;;;27438:42;27454:4;27468;27475;27438:15;:42::i;:::-;27403:93;27523:4;27513:14;;;;;:::i;:::-;;;26760:779;27552:33;27568:4;27574:2;27578:6;27552:15;:33::i;:::-;24594:2999;;;;24481:3112;;;;:::o;9085:193::-;9171:7;9204:1;9199;:6;;9207:12;9191:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9231:9;9247:1;9243;:5;;;;:::i;:::-;9231:17;;9269:1;9262:8;;;9085:193;;;;;:::o;8751:182::-;8809:7;8829:9;8845:1;8841;:5;;;;:::i;:::-;8829:17;;8870:1;8865;:6;;8857:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8924:1;8917:8;;;8751:182;;;;:::o;23977:189::-;24094:5;24060:25;:31;24086:4;24060:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24152:5;24118:40;;24146:4;24118:40;;;;;;;;;;;;23977:189;;:::o;6798:575::-;6956:1;6938:20;;:6;:20;;;6930:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7040:1;7019:23;;:9;:23;;;7011:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7096:47;7117:6;7125:9;7136:6;7096:20;:47::i;:::-;7177:71;7199:6;7177:71;;;;;;;;;;;;;;;;;:9;:17;7187:6;7177:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7157:9;:17;7167:6;7157:17;;;;;;;;;;;;;;;:91;;;;7282:32;7307:6;7282:9;:20;7292:9;7282:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7259:9;:20;7269:9;7259:20;;;;;;;;;;;;;;;:55;;;;7347:9;7330:35;;7339:6;7330:35;;;7358:6;7330:35;;;;;;:::i;:::-;;;;;;;;6798:575;;;:::o;28737:1477::-;28776:23;28802:24;28820:4;28802:9;:24::i;:::-;28776:50;;28837:25;28886:12;;28865:18;;:33;;;;:::i;:::-;28837:61;;28909:12;28957:1;28938:15;:20;:46;;;;28983:1;28962:17;:22;28938:46;28935:60;;;28987:7;;;;;28935:60;29032:5;29011:26;;:17;;;;;;;;;;;:26;;;29008:254;;29097:2;29074:20;;:25;;;;:::i;:::-;29056:15;:43;29053:125;;;29160:2;29137:20;;:25;;;;:::i;:::-;29119:43;;29053:125;29008:254;;;29226:24;29244:4;29226:9;:24::i;:::-;29208:42;;29008:254;29334:23;29419:1;29399:17;29378:18;;29360:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;29334:86;;29431:26;29460:36;29480:15;29460;:19;;:36;;;;:::i;:::-;29431:65;;29510:25;29538:21;29510:49;;29573:36;29590:18;29573:16;:36::i;:::-;29624:18;29645:44;29671:17;29645:21;:25;;:44;;;;:::i;:::-;29624:65;;29703:17;29723:51;29756:17;29723:28;29738:12;;29723:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;29703:71;;29785:23;29824:9;29811:10;:22;;;;:::i;:::-;29785:48;;29871:1;29850:18;:22;;;;29898:1;29883:12;:16;;;;29934:1;29916:15;:19;:42;;;;;29957:1;29939:15;:19;29916:42;29913:210;;;29974:46;29987:15;30004;29974:12;:46::i;:::-;30040:71;30055:18;30075:15;30092:18;;30040:71;;;;;;;;:::i;:::-;;;;;;;;29913:210;30157:9;;;;;;;;;;;30149:23;;30180:21;30149:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30136:70;;;;;28765:1449;;;;;;;;;28737:1477;:::o;9286:254::-;9344:7;9375:1;9370;:6;9366:47;;9400:1;9393:8;;;;9366:47;9426:9;9442:1;9438;:5;;;;:::i;:::-;9426:17;;9471:1;9466;9462;:5;;;;:::i;:::-;:10;9454:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9531:1;9524:8;;;9286:254;;;;;:::o;9548:132::-;9606:7;9633:39;9637:1;9640;9633:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;9626:46;;9548:132;;;;:::o;8586:125::-;;;;:::o;8941:136::-;8999:7;9026:43;9030:1;9033;9026:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;9019:50;;8941:136;;;;:::o;27602:597::-;27731:21;27769:1;27755:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27731:40;;27800:4;27782;27787:1;27782:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27826:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27816:4;27821:1;27816:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;27862:62;27879:4;27894:15;;;;;;;;;;;27912:11;27862:8;:62::i;:::-;27964:15;;;;;;;;;;;:66;;;28045:11;28071:1;28115:4;28142;28162:15;27964:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27657:542;27602:597;:::o;28208:520::-;28356:62;28373:4;28388:15;;;;;;;;;;;28406:11;28356:8;:62::i;:::-;28462:15;;;;;;;;;;;:31;;;28501:9;28534:4;28554:11;28580:1;28623;28674:4;28694:15;28462:258;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28208:520;;:::o;9688:279::-;9774:7;9806:1;9802;:5;9809:12;9794:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9833:9;9849:1;9845;:5;;;;:::i;:::-;9833:17;;9958:1;9951:8;;;9688:279;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:619::-;5188:6;5196;5204;5253:2;5241:9;5232:7;5228:23;5224:32;5221:119;;;5259:79;;:::i;:::-;5221:119;5379:1;5404:53;5449:7;5440:6;5429:9;5425:22;5404:53;:::i;:::-;5394:63;;5350:117;5506:2;5532:53;5577:7;5568:6;5557:9;5553:22;5532:53;:::i;:::-;5522:63;;5477:118;5634:2;5660:53;5705:7;5696:6;5685:9;5681:22;5660:53;:::i;:::-;5650:63;;5605:118;5111:619;;;;;:::o;5736:86::-;5771:7;5811:4;5804:5;5800:16;5789:27;;5736:86;;;:::o;5828:112::-;5911:22;5927:5;5911:22;:::i;:::-;5906:3;5899:35;5828:112;;:::o;5946:214::-;6035:4;6073:2;6062:9;6058:18;6050:26;;6086:67;6150:1;6139:9;6135:17;6126:6;6086:67;:::i;:::-;5946:214;;;;:::o;6166:118::-;6253:24;6271:5;6253:24;:::i;:::-;6248:3;6241:37;6166:118;;:::o;6290:222::-;6383:4;6421:2;6410:9;6406:18;6398:26;;6434:71;6502:1;6491:9;6487:17;6478:6;6434:71;:::i;:::-;6290:222;;;;:::o;6518:116::-;6588:21;6603:5;6588:21;:::i;:::-;6581:5;6578:32;6568:60;;6624:1;6621;6614:12;6568:60;6518:116;:::o;6640:133::-;6683:5;6721:6;6708:20;6699:29;;6737:30;6761:5;6737:30;:::i;:::-;6640:133;;;;:::o;6779:468::-;6844:6;6852;6901:2;6889:9;6880:7;6876:23;6872:32;6869:119;;;6907:79;;:::i;:::-;6869:119;7027:1;7052:53;7097:7;7088:6;7077:9;7073:22;7052:53;:::i;:::-;7042:63;;6998:117;7154:2;7180:50;7222:7;7213:6;7202:9;7198:22;7180:50;:::i;:::-;7170:60;;7125:115;6779:468;;;;;:::o;7253:323::-;7309:6;7358:2;7346:9;7337:7;7333:23;7329:32;7326:119;;;7364:79;;:::i;:::-;7326:119;7484:1;7509:50;7551:7;7542:6;7531:9;7527:22;7509:50;:::i;:::-;7499:60;;7455:114;7253:323;;;;:::o;7582:765::-;7668:6;7676;7684;7692;7741:3;7729:9;7720:7;7716:23;7712:33;7709:120;;;7748:79;;:::i;:::-;7709:120;7868:1;7893:53;7938:7;7929:6;7918:9;7914:22;7893:53;:::i;:::-;7883:63;;7839:117;7995:2;8021:53;8066:7;8057:6;8046:9;8042:22;8021:53;:::i;:::-;8011:63;;7966:118;8123:2;8149:53;8194:7;8185:6;8174:9;8170:22;8149:53;:::i;:::-;8139:63;;8094:118;8251:2;8277:53;8322:7;8313:6;8302:9;8298:22;8277:53;:::i;:::-;8267:63;;8222:118;7582:765;;;;;;;:::o;8353:474::-;8421:6;8429;8478:2;8466:9;8457:7;8453:23;8449:32;8446:119;;;8484:79;;:::i;:::-;8446:119;8604:1;8629:53;8674:7;8665:6;8654:9;8650:22;8629:53;:::i;:::-;8619:63;;8575:117;8731:2;8757:53;8802:7;8793:6;8782:9;8778:22;8757:53;:::i;:::-;8747:63;;8702:118;8353:474;;;;;:::o;8833:180::-;8881:77;8878:1;8871:88;8978:4;8975:1;8968:15;9002:4;8999:1;8992:15;9019:320;9063:6;9100:1;9094:4;9090:12;9080:22;;9147:1;9141:4;9137:12;9168:18;9158:81;;9224:4;9216:6;9212:17;9202:27;;9158:81;9286:2;9278:6;9275:14;9255:18;9252:38;9249:84;;9305:18;;:::i;:::-;9249:84;9070:269;9019:320;;;:::o;9345:182::-;9485:34;9481:1;9473:6;9469:14;9462:58;9345:182;:::o;9533:366::-;9675:3;9696:67;9760:2;9755:3;9696:67;:::i;:::-;9689:74;;9772:93;9861:3;9772:93;:::i;:::-;9890:2;9885:3;9881:12;9874:19;;9533:366;;;:::o;9905:419::-;10071:4;10109:2;10098:9;10094:18;10086:26;;10158:9;10152:4;10148:20;10144:1;10133:9;10129:17;10122:47;10186:131;10312:4;10186:131;:::i;:::-;10178:139;;9905:419;;;:::o;10330:221::-;10470:34;10466:1;10458:6;10454:14;10447:58;10539:4;10534:2;10526:6;10522:15;10515:29;10330:221;:::o;10557:366::-;10699:3;10720:67;10784:2;10779:3;10720:67;:::i;:::-;10713:74;;10796:93;10885:3;10796:93;:::i;:::-;10914:2;10909:3;10905:12;10898:19;;10557:366;;;:::o;10929:419::-;11095:4;11133:2;11122:9;11118:18;11110:26;;11182:9;11176:4;11172:20;11168:1;11157:9;11153:17;11146:47;11210:131;11336:4;11210:131;:::i;:::-;11202:139;;10929:419;;;:::o;11354:147::-;11455:11;11492:3;11477:18;;11354:147;;;;:::o;11507:114::-;;:::o;11627:398::-;11786:3;11807:83;11888:1;11883:3;11807:83;:::i;:::-;11800:90;;11899:93;11988:3;11899:93;:::i;:::-;12017:1;12012:3;12008:11;12001:18;;11627:398;;;:::o;12031:379::-;12215:3;12237:147;12380:3;12237:147;:::i;:::-;12230:154;;12401:3;12394:10;;12031:379;;;:::o;12416:177::-;12556:29;12552:1;12544:6;12540:14;12533:53;12416:177;:::o;12599:366::-;12741:3;12762:67;12826:2;12821:3;12762:67;:::i;:::-;12755:74;;12838:93;12927:3;12838:93;:::i;:::-;12956:2;12951:3;12947:12;12940:19;;12599:366;;;:::o;12971:419::-;13137:4;13175:2;13164:9;13160:18;13152:26;;13224:9;13218:4;13214:20;13210:1;13199:9;13195:17;13188:47;13252:131;13378:4;13252:131;:::i;:::-;13244:139;;12971:419;;;:::o;13396:180::-;13444:77;13441:1;13434:88;13541:4;13538:1;13531:15;13565:4;13562:1;13555:15;13582:410;13622:7;13645:20;13663:1;13645:20;:::i;:::-;13640:25;;13679:20;13697:1;13679:20;:::i;:::-;13674:25;;13734:1;13731;13727:9;13756:30;13774:11;13756:30;:::i;:::-;13745:41;;13935:1;13926:7;13922:15;13919:1;13916:22;13896:1;13889:9;13869:83;13846:139;;13965:18;;:::i;:::-;13846:139;13630:362;13582:410;;;;:::o;13998:180::-;14046:77;14043:1;14036:88;14143:4;14140:1;14133:15;14167:4;14164:1;14157:15;14184:185;14224:1;14241:20;14259:1;14241:20;:::i;:::-;14236:25;;14275:20;14293:1;14275:20;:::i;:::-;14270:25;;14314:1;14304:35;;14319:18;;:::i;:::-;14304:35;14361:1;14358;14354:9;14349:14;;14184:185;;;;:::o;14375:85::-;14420:7;14449:5;14438:16;;14375:85;;;:::o;14466:158::-;14524:9;14557:61;14575:42;14584:32;14610:5;14584:32;:::i;:::-;14575:42;:::i;:::-;14557:61;:::i;:::-;14544:74;;14466:158;;;:::o;14630:147::-;14725:45;14764:5;14725:45;:::i;:::-;14720:3;14713:58;14630:147;;:::o;14783:807::-;15032:4;15070:3;15059:9;15055:19;15047:27;;15084:71;15152:1;15141:9;15137:17;15128:6;15084:71;:::i;:::-;15165:72;15233:2;15222:9;15218:18;15209:6;15165:72;:::i;:::-;15247:80;15323:2;15312:9;15308:18;15299:6;15247:80;:::i;:::-;15337;15413:2;15402:9;15398:18;15389:6;15337:80;:::i;:::-;15427:73;15495:3;15484:9;15480:19;15471:6;15427:73;:::i;:::-;15510;15578:3;15567:9;15563:19;15554:6;15510:73;:::i;:::-;14783:807;;;;;;;;;:::o;15596:143::-;15653:5;15684:6;15678:13;15669:22;;15700:33;15727:5;15700:33;:::i;:::-;15596:143;;;;:::o;15745:663::-;15833:6;15841;15849;15898:2;15886:9;15877:7;15873:23;15869:32;15866:119;;;15904:79;;:::i;:::-;15866:119;16024:1;16049:64;16105:7;16096:6;16085:9;16081:22;16049:64;:::i;:::-;16039:74;;15995:128;16162:2;16188:64;16244:7;16235:6;16224:9;16220:22;16188:64;:::i;:::-;16178:74;;16133:129;16301:2;16327:64;16383:7;16374:6;16363:9;16359:22;16327:64;:::i;:::-;16317:74;;16272:129;15745:663;;;;;:::o;16414:244::-;16554:34;16550:1;16542:6;16538:14;16531:58;16623:27;16618:2;16610:6;16606:15;16599:52;16414:244;:::o;16664:366::-;16806:3;16827:67;16891:2;16886:3;16827:67;:::i;:::-;16820:74;;16903:93;16992:3;16903:93;:::i;:::-;17021:2;17016:3;17012:12;17005:19;;16664:366;;;:::o;17036:419::-;17202:4;17240:2;17229:9;17225:18;17217:26;;17289:9;17283:4;17279:20;17275:1;17264:9;17260:17;17253:47;17317:131;17443:4;17317:131;:::i;:::-;17309:139;;17036:419;;;:::o;17461:223::-;17601:34;17597:1;17589:6;17585:14;17578:58;17670:6;17665:2;17657:6;17653:15;17646:31;17461:223;:::o;17690:366::-;17832:3;17853:67;17917:2;17912:3;17853:67;:::i;:::-;17846:74;;17929:93;18018:3;17929:93;:::i;:::-;18047:2;18042:3;18038:12;18031:19;;17690:366;;;:::o;18062:419::-;18228:4;18266:2;18255:9;18251:18;18243:26;;18315:9;18309:4;18305:20;18301:1;18290:9;18286:17;18279:47;18343:131;18469:4;18343:131;:::i;:::-;18335:139;;18062:419;;;:::o;18487:191::-;18527:3;18546:20;18564:1;18546:20;:::i;:::-;18541:25;;18580:20;18598:1;18580:20;:::i;:::-;18575:25;;18623:1;18620;18616:9;18609:16;;18644:3;18641:1;18638:10;18635:36;;;18651:18;;:::i;:::-;18635:36;18487:191;;;;:::o;18684:169::-;18824:21;18820:1;18812:6;18808:14;18801:45;18684:169;:::o;18859:366::-;19001:3;19022:67;19086:2;19081:3;19022:67;:::i;:::-;19015:74;;19098:93;19187:3;19098:93;:::i;:::-;19216:2;19211:3;19207:12;19200:19;;18859:366;;;:::o;19231:419::-;19397:4;19435:2;19424:9;19420:18;19412:26;;19484:9;19478:4;19474:20;19470:1;19459:9;19455:17;19448:47;19512:131;19638:4;19512:131;:::i;:::-;19504:139;;19231:419;;;:::o;19656:223::-;19796:34;19792:1;19784:6;19780:14;19773:58;19865:6;19860:2;19852:6;19848:15;19841:31;19656:223;:::o;19885:366::-;20027:3;20048:67;20112:2;20107:3;20048:67;:::i;:::-;20041:74;;20124:93;20213:3;20124:93;:::i;:::-;20242:2;20237:3;20233:12;20226:19;;19885:366;;;:::o;20257:419::-;20423:4;20461:2;20450:9;20446:18;20438:26;;20510:9;20504:4;20500:20;20496:1;20485:9;20481:17;20474:47;20538:131;20664:4;20538:131;:::i;:::-;20530:139;;20257:419;;;:::o;20682:221::-;20822:34;20818:1;20810:6;20806:14;20799:58;20891:4;20886:2;20878:6;20874:15;20867:29;20682:221;:::o;20909:366::-;21051:3;21072:67;21136:2;21131:3;21072:67;:::i;:::-;21065:74;;21148:93;21237:3;21148:93;:::i;:::-;21266:2;21261:3;21257:12;21250:19;;20909:366;;;:::o;21281:419::-;21447:4;21485:2;21474:9;21470:18;21462:26;;21534:9;21528:4;21524:20;21520:1;21509:9;21505:17;21498:47;21562:131;21688:4;21562:131;:::i;:::-;21554:139;;21281:419;;;:::o;21706:224::-;21846:34;21842:1;21834:6;21830:14;21823:58;21915:7;21910:2;21902:6;21898:15;21891:32;21706:224;:::o;21936:366::-;22078:3;22099:67;22163:2;22158:3;22099:67;:::i;:::-;22092:74;;22175:93;22264:3;22175:93;:::i;:::-;22293:2;22288:3;22284:12;22277:19;;21936:366;;;:::o;22308:419::-;22474:4;22512:2;22501:9;22497:18;22489:26;;22561:9;22555:4;22551:20;22547:1;22536:9;22532:17;22525:47;22589:131;22715:4;22589:131;:::i;:::-;22581:139;;22308:419;;;:::o;22733:222::-;22873:34;22869:1;22861:6;22857:14;22850:58;22942:5;22937:2;22929:6;22925:15;22918:30;22733:222;:::o;22961:366::-;23103:3;23124:67;23188:2;23183:3;23124:67;:::i;:::-;23117:74;;23200:93;23289:3;23200:93;:::i;:::-;23318:2;23313:3;23309:12;23302:19;;22961:366;;;:::o;23333:419::-;23499:4;23537:2;23526:9;23522:18;23514:26;;23586:9;23580:4;23576:20;23572:1;23561:9;23557:17;23550:47;23614:131;23740:4;23614:131;:::i;:::-;23606:139;;23333:419;;;:::o;23758:240::-;23898:34;23894:1;23886:6;23882:14;23875:58;23967:23;23962:2;23954:6;23950:15;23943:48;23758:240;:::o;24004:366::-;24146:3;24167:67;24231:2;24226:3;24167:67;:::i;:::-;24160:74;;24243:93;24332:3;24243:93;:::i;:::-;24361:2;24356:3;24352:12;24345:19;;24004:366;;;:::o;24376:419::-;24542:4;24580:2;24569:9;24565:18;24557:26;;24629:9;24623:4;24619:20;24615:1;24604:9;24600:17;24593:47;24657:131;24783:4;24657:131;:::i;:::-;24649:139;;24376:419;;;:::o;24801:169::-;24941:21;24937:1;24929:6;24925:14;24918:45;24801:169;:::o;24976:366::-;25118:3;25139:67;25203:2;25198:3;25139:67;:::i;:::-;25132:74;;25215:93;25304:3;25215:93;:::i;:::-;25333:2;25328:3;25324:12;25317:19;;24976:366;;;:::o;25348:419::-;25514:4;25552:2;25541:9;25537:18;25529:26;;25601:9;25595:4;25591:20;25587:1;25576:9;25572:17;25565:47;25629:131;25755:4;25629:131;:::i;:::-;25621:139;;25348:419;;;:::o;25773:241::-;25913:34;25909:1;25901:6;25897:14;25890:58;25982:24;25977:2;25969:6;25965:15;25958:49;25773:241;:::o;26020:366::-;26162:3;26183:67;26247:2;26242:3;26183:67;:::i;:::-;26176:74;;26259:93;26348:3;26259:93;:::i;:::-;26377:2;26372:3;26368:12;26361:19;;26020:366;;;:::o;26392:419::-;26558:4;26596:2;26585:9;26581:18;26573:26;;26645:9;26639:4;26635:20;26631:1;26620:9;26616:17;26609:47;26673:131;26799:4;26673:131;:::i;:::-;26665:139;;26392:419;;;:::o;26817:194::-;26857:4;26877:20;26895:1;26877:20;:::i;:::-;26872:25;;26911:20;26929:1;26911:20;:::i;:::-;26906:25;;26955:1;26952;26948:9;26940:17;;26979:1;26973:4;26970:11;26967:37;;;26984:18;;:::i;:::-;26967:37;26817:194;;;;:::o;27017:177::-;27157:29;27153:1;27145:6;27141:14;27134:53;27017:177;:::o;27200:366::-;27342:3;27363:67;27427:2;27422:3;27363:67;:::i;:::-;27356:74;;27439:93;27528:3;27439:93;:::i;:::-;27557:2;27552:3;27548:12;27541:19;;27200:366;;;:::o;27572:419::-;27738:4;27776:2;27765:9;27761:18;27753:26;;27825:9;27819:4;27815:20;27811:1;27800:9;27796:17;27789:47;27853:131;27979:4;27853:131;:::i;:::-;27845:139;;27572:419;;;:::o;27997:442::-;28146:4;28184:2;28173:9;28169:18;28161:26;;28197:71;28265:1;28254:9;28250:17;28241:6;28197:71;:::i;:::-;28278:72;28346:2;28335:9;28331:18;28322:6;28278:72;:::i;:::-;28360;28428:2;28417:9;28413:18;28404:6;28360:72;:::i;:::-;27997:442;;;;;;:::o;28445:220::-;28585:34;28581:1;28573:6;28569:14;28562:58;28654:3;28649:2;28641:6;28637:15;28630:28;28445:220;:::o;28671:366::-;28813:3;28834:67;28898:2;28893:3;28834:67;:::i;:::-;28827:74;;28910:93;28999:3;28910:93;:::i;:::-;29028:2;29023:3;29019:12;29012:19;;28671:366;;;:::o;29043:419::-;29209:4;29247:2;29236:9;29232:18;29224:26;;29296:9;29290:4;29286:20;29282:1;29271:9;29267:17;29260:47;29324:131;29450:4;29324:131;:::i;:::-;29316:139;;29043:419;;;:::o;29468:180::-;29516:77;29513:1;29506:88;29613:4;29610:1;29603:15;29637:4;29634:1;29627:15;29654:180;29702:77;29699:1;29692:88;29799:4;29796:1;29789:15;29823:4;29820:1;29813:15;29840:143;29897:5;29928:6;29922:13;29913:22;;29944:33;29971:5;29944:33;:::i;:::-;29840:143;;;;:::o;29989:351::-;30059:6;30108:2;30096:9;30087:7;30083:23;30079:32;30076:119;;;30114:79;;:::i;:::-;30076:119;30234:1;30259:64;30315:7;30306:6;30295:9;30291:22;30259:64;:::i;:::-;30249:74;;30205:128;29989:351;;;;:::o;30346:114::-;30413:6;30447:5;30441:12;30431:22;;30346:114;;;:::o;30466:184::-;30565:11;30599:6;30594:3;30587:19;30639:4;30634:3;30630:14;30615:29;;30466:184;;;;:::o;30656:132::-;30723:4;30746:3;30738:11;;30776:4;30771:3;30767:14;30759:22;;30656:132;;;:::o;30794:108::-;30871:24;30889:5;30871:24;:::i;:::-;30866:3;30859:37;30794:108;;:::o;30908:179::-;30977:10;30998:46;31040:3;31032:6;30998:46;:::i;:::-;31076:4;31071:3;31067:14;31053:28;;30908:179;;;;:::o;31093:113::-;31163:4;31195;31190:3;31186:14;31178:22;;31093:113;;;:::o;31242:732::-;31361:3;31390:54;31438:5;31390:54;:::i;:::-;31460:86;31539:6;31534:3;31460:86;:::i;:::-;31453:93;;31570:56;31620:5;31570:56;:::i;:::-;31649:7;31680:1;31665:284;31690:6;31687:1;31684:13;31665:284;;;31766:6;31760:13;31793:63;31852:3;31837:13;31793:63;:::i;:::-;31786:70;;31879:60;31932:6;31879:60;:::i;:::-;31869:70;;31725:224;31712:1;31709;31705:9;31700:14;;31665:284;;;31669:14;31965:3;31958:10;;31366:608;;;31242:732;;;;:::o;31980:831::-;32243:4;32281:3;32270:9;32266:19;32258:27;;32295:71;32363:1;32352:9;32348:17;32339:6;32295:71;:::i;:::-;32376:80;32452:2;32441:9;32437:18;32428:6;32376:80;:::i;:::-;32503:9;32497:4;32493:20;32488:2;32477:9;32473:18;32466:48;32531:108;32634:4;32625:6;32531:108;:::i;:::-;32523:116;;32649:72;32717:2;32706:9;32702:18;32693:6;32649:72;:::i;:::-;32731:73;32799:3;32788:9;32784:19;32775:6;32731:73;:::i;:::-;31980:831;;;;;;;;:::o
Swarm Source
ipfs://ba017436feb4a6b09cff5dc50b12f9e2af48401831438370f0be36e08e463d74
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.