Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 992 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 23435313 | 132 days ago | IN | 0 ETH | 0.00001038 | ||||
| Transfer | 23418918 | 134 days ago | IN | 0 ETH | 0.00008346 | ||||
| Approve | 23387638 | 139 days ago | IN | 0 ETH | 0.00003126 | ||||
| Transfer | 23373539 | 141 days ago | IN | 0 ETH | 0.00008128 | ||||
| Rescue Tokens | 23373521 | 141 days ago | IN | 0 ETH | 0.00007188 | ||||
| Approve | 23360060 | 143 days ago | IN | 0 ETH | 0.00001072 | ||||
| Approve | 23330635 | 147 days ago | IN | 0 ETH | 0.00003031 | ||||
| Approve | 23184638 | 167 days ago | IN | 0 ETH | 0.00005058 | ||||
| Approve | 23155641 | 171 days ago | IN | 0 ETH | 0.00001058 | ||||
| Approve | 23155483 | 171 days ago | IN | 0 ETH | 0.00025027 | ||||
| Approve | 22017523 | 330 days ago | IN | 0 ETH | 0.00017903 | ||||
| Approve | 22017470 | 330 days ago | IN | 0 ETH | 0.00020153 | ||||
| Approve | 21862613 | 352 days ago | IN | 0 ETH | 0.0000335 | ||||
| Approve | 21797318 | 361 days ago | IN | 0 ETH | 0.00007364 | ||||
| Approve | 21797261 | 361 days ago | IN | 0 ETH | 0.00018418 | ||||
| Approve | 21650702 | 382 days ago | IN | 0 ETH | 0.0005506 | ||||
| Approve | 21548608 | 396 days ago | IN | 0 ETH | 0.00031127 | ||||
| Transfer | 21548584 | 396 days ago | IN | 0 ETH | 0.00038366 | ||||
| Approve | 21546272 | 396 days ago | IN | 0 ETH | 0.000919 | ||||
| Approve | 21384031 | 419 days ago | IN | 0 ETH | 0.00039093 | ||||
| Approve | 21352721 | 423 days ago | IN | 0 ETH | 0.00070464 | ||||
| Approve | 21030449 | 468 days ago | IN | 0 ETH | 0.00085461 | ||||
| Approve | 21013034 | 471 days ago | IN | 0 ETH | 0.00048418 | ||||
| Approve | 20968866 | 477 days ago | IN | 0 ETH | 0.00053537 | ||||
| Approve | 20921645 | 483 days ago | IN | 0 ETH | 0.00169616 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 23387639 | 139 days ago | 0.02019847 ETH | ||||
| Transfer | 23387639 | 139 days ago | 0.02019847 ETH | ||||
| Add Liquidity ET... | 23387639 | 139 days ago | 0.04659868 ETH | ||||
| Transfer | 23387639 | 139 days ago | 0.13979604 ETH | ||||
| Transfer | 23387639 | 139 days ago | 0.18639472 ETH | ||||
| Transfer | 20891935 | 487 days ago | 0.00434848 ETH | ||||
| Transfer | 20891935 | 487 days ago | 0.00434848 ETH | ||||
| Add Liquidity ET... | 20891935 | 487 days ago | 0.01016285 ETH | ||||
| Transfer | 20891935 | 487 days ago | 0.03048855 ETH | ||||
| Transfer | 20891935 | 487 days ago | 0.0406514 ETH | ||||
| Transfer | 19690848 | 655 days ago | 0.00558382 ETH | ||||
| Transfer | 19690848 | 655 days ago | 0.00558382 ETH | ||||
| Add Liquidity ET... | 19690848 | 655 days ago | 0.01305206 ETH | ||||
| Transfer | 19690848 | 655 days ago | 0.0391562 ETH | ||||
| Transfer | 19690848 | 655 days ago | 0.05220827 ETH | ||||
| Transfer | 19683022 | 656 days ago | 0.00774615 ETH | ||||
| Transfer | 19683022 | 656 days ago | 0.00774615 ETH | ||||
| Add Liquidity ET... | 19683022 | 656 days ago | 0.01809215 ETH | ||||
| Transfer | 19683022 | 656 days ago | 0.05427645 ETH | ||||
| Transfer | 19683022 | 656 days ago | 0.0723686 ETH | ||||
| Transfer | 19634591 | 663 days ago | 0.00785543 ETH | ||||
| Transfer | 19634591 | 663 days ago | 0.00785543 ETH | ||||
| Add Liquidity ET... | 19634591 | 663 days ago | 0.01835181 ETH | ||||
| Transfer | 19634591 | 663 days ago | 0.05505545 ETH | ||||
| Transfer | 19634591 | 663 days ago | 0.07340727 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
QWIKMINE
Compiler Version
v0.8.22+commit.4fc1097e
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
// www.qwikmine.com
pragma solidity ^0.8.0;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
interface 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;
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 {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
library SafeMathInt {
int256 private constant MIN_INT256 = int256(1) << 255;
int256 private constant MAX_INT256 = ~(int256(1) << 255);
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 QWIKMINE is Context, IERC20, IERC20Metadata, ERC20, Ownable {
using SafeMath for uint256;
IUniswapV2Router02 public immutable uniswapV2Router;
address public immutable uniswapV2Pair;
address public rescueAddress;
address private taxWallet;
bool private swapping;
bool private tradeInLimits = true;
bool private isTrading = false;
bool public swapAllowed = false;
bool public taxShortTermTraders = false;
mapping (address => uint256) private _traderFirstSwapTimestamp;
mapping (address => bool) private _isExcludedFromFees;
mapping (address => bool) public _isExcludedMaxTradeAmount;
mapping (address => bool) public automatedMarketMakerPairs;
uint256 private buyFeeTotal;
uint256 private buyProtocolFee;
uint256 private buyLiquidityFee;
uint256 private sellFeeTotal;
uint256 private sellProtocolFee;
uint256 private sellLiquidityFee;
uint256 private quickSellLiquidityFee;
uint256 private quickSellProtocolFee;
uint256 private tokensForProtocol;
uint256 private tokensForLiquidity;
uint256 private maxTradeAmount;
uint256 private whenToSwapToken;
uint256 private maxHolding;
uint256 launchedAt;
event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
event ExcludeFromFees(address indexed account, bool isExcluded);
event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
event SwapAndLiquify(
uint256 tokensSwapped,
uint256 ethReceived,
uint256 tokensIntoLiquidity
);
constructor(
string memory name,
string memory symbol,
address _rescueAddress,
address _taxWalletAddress,
uint256 totalSupply,
uint256 _buyProtocolFee,
uint256 _sellProtocolFee,
uint256 _quickSellProtocolFee,
uint256 _buyLiquidityFee,
uint256 _sellLiquidityFee,
uint256 _quickSellLiquidityFee
) ERC20(name, symbol) {
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
excludeFromMaxTrade(address(_uniswapV2Router), true);
uniswapV2Router = _uniswapV2Router;
uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
excludeFromMaxTrade(address(uniswapV2Pair), true);
_setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
rescueAddress = _rescueAddress;
taxWallet = _taxWalletAddress;
buyProtocolFee = _buyProtocolFee;
buyLiquidityFee = _buyLiquidityFee;
buyFeeTotal = buyProtocolFee + buyLiquidityFee;
sellProtocolFee = _sellProtocolFee;
sellLiquidityFee = _sellLiquidityFee;
sellFeeTotal = sellProtocolFee + sellLiquidityFee;
quickSellLiquidityFee = _quickSellLiquidityFee;
quickSellProtocolFee = _quickSellProtocolFee;
excludeFromFees(owner(), true);
excludeFromFees(address(this), true);
excludeFromMaxTrade(owner(), true);
excludeFromMaxTrade(address(this), true);
maxTradeAmount = totalSupply * 10 / 1000;
maxHolding = totalSupply * 10 / 1000;
whenToSwapToken = totalSupply * 10 / 10000;
_mint(msg.sender, totalSupply);
}
receive() external payable {}
function startTrading() external onlyOwner {
isTrading = true;
swapAllowed = true;
launchedAt = block.number;
}
function removeLimits() external onlyOwner returns (bool){
tradeInLimits = false;
return true;
}
function updateSwapAllowed(bool enabled) external onlyOwner(){
swapAllowed = enabled;
}
function setQuickSell(bool onoff) external onlyOwner {
taxShortTermTraders = onoff;
}
function excludeFromMaxTrade(address updAds, bool isEx) public onlyOwner {
_isExcludedMaxTradeAmount[updAds] = isEx;
}
function updateQuickBuyFees(uint256 _ProtocolFee, uint256 _liquidityFee) external onlyOwner {
buyProtocolFee = _ProtocolFee;
buyLiquidityFee = _liquidityFee;
buyFeeTotal = buyProtocolFee + buyLiquidityFee;
require(buyFeeTotal <= 40, "Cannot exceed 40% Buy fees");
}
function updateExitFee(uint256 _protocolFee, uint256 _liquidityFee, uint256 _quickSellLiquidityFee, uint256 _quickSellProtocolFee) external onlyOwner {
sellProtocolFee = _protocolFee;
sellLiquidityFee = _liquidityFee;
quickSellLiquidityFee = _quickSellLiquidityFee;
quickSellProtocolFee = _quickSellProtocolFee;
sellFeeTotal = sellProtocolFee + sellLiquidityFee;
require(sellFeeTotal <= 40, "Cannot exceed 40% Sell fees");
}
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 AMM Pairs");
_setAutomatedMarketMakerPair(pair, value);
}
function _setAutomatedMarketMakerPair(address pair, bool value) private {
automatedMarketMakerPairs[pair] = value;
emit SetAutomatedMarketMakerPair(pair, value);
}
function isExcludedFromFees(address account) public view returns(bool) {
return _isExcludedFromFees[account];
}
function rescueTokens(IERC20 token, uint256 amount) public {
require(address(token) != address(0), "Token address cannot be zero");
require(msg.sender == rescueAddress, "Only the rescue address can call this function");
token.transfer(msg.sender, amount);
}
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(tradeInLimits){
if (
from != owner() &&
to != owner() &&
to != address(0) &&
!swapping
){
if(!isTrading){
require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
}
if (automatedMarketMakerPairs[from] && !_isExcludedMaxTradeAmount[to]) {
require(amount <= maxTradeAmount, "Transfer amount exceeds the maxTradeAmount.");
require(amount + balanceOf(to) <= maxHolding, "Max Holding exceeded");
}
else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTradeAmount[from]) {
require(amount <= maxTradeAmount, "Transfer amount exceeds the maxTradeAmount.");
}
else if(!_isExcludedMaxTradeAmount[to]){
require(amount + balanceOf(to) <= maxHolding, "Max Holding exceeded");
}
}
}
bool isBuy = from == uniswapV2Pair;
if (!isBuy && taxShortTermTraders) {
if (_traderFirstSwapTimestamp[from] != 0 &&
(_traderFirstSwapTimestamp[from] + (730 hours) >= block.timestamp)) {
sellLiquidityFee = quickSellLiquidityFee;
sellProtocolFee = quickSellProtocolFee;
sellFeeTotal = sellProtocolFee + sellLiquidityFee;
} else {
sellLiquidityFee = 0;
sellProtocolFee = 0;
sellFeeTotal = sellProtocolFee + sellLiquidityFee;
}
} else {
if (_traderFirstSwapTimestamp[to] == 0) {
_traderFirstSwapTimestamp[to] = block.timestamp;
}
if (!taxShortTermTraders) {
sellLiquidityFee = 0;
sellProtocolFee = 0;
sellFeeTotal = sellProtocolFee + sellLiquidityFee;
}
}
uint256 contractTokenBalance = balanceOf(address(this));
bool canSwap = contractTokenBalance >= whenToSwapToken;
if(
canSwap &&
swapAllowed &&
!swapping &&
!automatedMarketMakerPairs[from] &&
!_isExcludedFromFees[from] &&
!_isExcludedFromFees[to]
) {
swapping = true;
swapBack();
swapping = false;
}
bool takeFee = !swapping;
if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
takeFee = false;
}
uint256 fees = 0;
if(takeFee){
if (automatedMarketMakerPairs[to] && sellFeeTotal > 0){
fees = amount.mul(sellFeeTotal).div(100);
tokensForLiquidity += fees * sellLiquidityFee / sellFeeTotal;
tokensForProtocol += fees * sellProtocolFee / sellFeeTotal;
}
else if(automatedMarketMakerPairs[from] && buyFeeTotal > 0) {
fees = amount.mul(buyFeeTotal).div(100);
tokensForLiquidity += fees * buyLiquidityFee / buyFeeTotal;
tokensForProtocol += fees * buyProtocolFee / buyFeeTotal;
}
if(fees > 0){
super._transfer(from, address(this), fees);
}
amount -= fees;
}
super._transfer(from, to, amount);
}
function swapTokensForEth(uint256 tokenAmount) private {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0,
path,
address(this),
block.timestamp
);
}
function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
_approve(address(this), address(uniswapV2Router), tokenAmount);
uniswapV2Router.addLiquidityETH{value: ethAmount}(
address(this),
tokenAmount,
0,
0,
address(this),
block.timestamp
);
}
function swapBack() private {
uint256 contractBalance = balanceOf(address(this));
uint256 totalTokensToSwap = tokensForLiquidity + tokensForProtocol;
bool success;
if(contractBalance == 0 || totalTokensToSwap == 0) {return;}
if(contractBalance > whenToSwapToken * 20){
contractBalance = whenToSwapToken * 20;
}
uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
uint256 initialETHBalance = address(this).balance;
swapTokensForEth(amountToSwapForETH);
uint256 ethBalance = address(this).balance.sub(initialETHBalance);
uint256 ethForProtocol = ethBalance.mul(tokensForProtocol).div(totalTokensToSwap);
uint256 ethForLiquidity = ethBalance - ethForProtocol;
tokensForLiquidity = 0;
tokensForProtocol = 0;
(success,) = address(taxWallet).call{value: ethForProtocol}("");
if(liquidityTokens > 0 && ethForLiquidity > 0){
addLiquidity(liquidityTokens, ethForLiquidity);
emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
}
(success,) = address(taxWallet).call{value: address(this).balance}("");
}
}{
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"address","name":"_rescueAddress","type":"address"},{"internalType":"address","name":"_taxWalletAddress","type":"address"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256","name":"_buyProtocolFee","type":"uint256"},{"internalType":"uint256","name":"_sellProtocolFee","type":"uint256"},{"internalType":"uint256","name":"_quickSellProtocolFee","type":"uint256"},{"internalType":"uint256","name":"_buyLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_sellLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_quickSellLiquidityFee","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTradeAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"excludeFromMaxTrade","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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setQuickSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxShortTermTraders","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"uint256","name":"_protocolFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_quickSellLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_quickSellProtocolFee","type":"uint256"}],"name":"updateExitFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_ProtocolFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateQuickBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapAllowed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60c06040526001600760156101000a81548160ff0219169083151502179055505f600760166101000a81548160ff0219169083151502179055505f600760176101000a81548160ff0219169083151502179055505f600760186101000a81548160ff02191690831515021790555034801562000079575f80fd5b5060405162005a4238038062005a4283398181016040528101906200009f919062000c94565b8a8a8160039081620000b2919062001006565b508060049081620000c4919062001006565b5050505f620000d86200056360201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001a08160016200056a60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200021e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002449190620010ea565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002aa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002d09190620010ea565b6040518363ffffffff1660e01b8152600401620002ef9291906200112b565b6020604051808303815f875af11580156200030c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003329190620010ea565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200037a60a05160016200056a60201b60201c565b6200038f60a05160016200066360201b60201c565b8960065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508860075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555086600d8190555083600e81905550600e54600d546200042f919062001183565b600c81905550856010819055508260118190555060115460105462000455919062001183565b600f8190555081601281905550846013819055506200048b6200047d6200070160201b60201c565b60016200072960201b60201c565b6200049e3060016200072960201b60201c565b620004c0620004b26200070160201b60201c565b60016200056a60201b60201c565b620004d33060016200056a60201b60201c565b6103e8600a89620004e59190620011bd565b620004f1919062001234565b6016819055506103e8600a89620005099190620011bd565b62000515919062001234565b601881905550612710600a896200052d9190620011bd565b62000539919062001234565b6017819055506200055133896200087260201b60201c565b50505050505050505050505062001428565b5f33905090565b6200057a6200056360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200060b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200060290620012c9565b60405180910390fd5b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620007396200056360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620007ca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007c190620012c9565b60405180910390fd5b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000866919062001305565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008e3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008da906200136e565b60405180910390fd5b620008f65f838362000a0f60201b60201c565b6200090d8160025462000a1460201b90919060201c565b60028190555062000964815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205462000a1460201b90919060201c565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a0391906200139f565b60405180910390a35050565b505050565b5f80828462000a24919062001183565b90508381101562000a6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a639062001408565b60405180910390fd5b8091505092915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b62000ad78262000a8f565b810181811067ffffffffffffffff8211171562000af95762000af862000a9f565b5b80604052505050565b5f62000b0d62000a76565b905062000b1b828262000acc565b919050565b5f67ffffffffffffffff82111562000b3d5762000b3c62000a9f565b5b62000b488262000a8f565b9050602081019050919050565b5f5b8381101562000b7457808201518184015260208101905062000b57565b5f8484015250505050565b5f62000b9562000b8f8462000b20565b62000b02565b90508281526020810184848401111562000bb45762000bb362000a8b565b5b62000bc184828562000b55565b509392505050565b5f82601f83011262000be05762000bdf62000a87565b5b815162000bf284826020860162000b7f565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000c268262000bfb565b9050919050565b62000c388162000c1a565b811462000c43575f80fd5b50565b5f8151905062000c568162000c2d565b92915050565b5f819050919050565b62000c708162000c5c565b811462000c7b575f80fd5b50565b5f8151905062000c8e8162000c65565b92915050565b5f805f805f805f805f805f6101608c8e03121562000cb75762000cb662000a7f565b5b5f8c015167ffffffffffffffff81111562000cd75762000cd662000a83565b5b62000ce58e828f0162000bc9565b9b505060208c015167ffffffffffffffff81111562000d095762000d0862000a83565b5b62000d178e828f0162000bc9565b9a5050604062000d2a8e828f0162000c46565b995050606062000d3d8e828f0162000c46565b985050608062000d508e828f0162000c7e565b97505060a062000d638e828f0162000c7e565b96505060c062000d768e828f0162000c7e565b95505060e062000d898e828f0162000c7e565b94505061010062000d9d8e828f0162000c7e565b93505061012062000db18e828f0162000c7e565b92505061014062000dc58e828f0162000c7e565b9150509295989b509295989b9093969950565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000e2757607f821691505b60208210810362000e3d5762000e3c62000de2565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000ea17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000e64565b62000ead868362000e64565b95508019841693508086168417925050509392505050565b5f819050919050565b5f62000eee62000ee862000ee28462000c5c565b62000ec5565b62000c5c565b9050919050565b5f819050919050565b62000f098362000ece565b62000f2162000f188262000ef5565b84845462000e70565b825550505050565b5f90565b62000f3762000f29565b62000f4481848462000efe565b505050565b5b8181101562000f6b5762000f5f5f8262000f2d565b60018101905062000f4a565b5050565b601f82111562000fba5762000f848162000e43565b62000f8f8462000e55565b8101602085101562000f9f578190505b62000fb762000fae8562000e55565b83018262000f49565b50505b505050565b5f82821c905092915050565b5f62000fdc5f198460080262000fbf565b1980831691505092915050565b5f62000ff6838362000fcb565b9150826002028217905092915050565b620010118262000dd8565b67ffffffffffffffff8111156200102d576200102c62000a9f565b5b62001039825462000e0f565b6200104682828562000f6f565b5f60209050601f8311600181146200107c575f841562001067578287015190505b62001073858262000fe9565b865550620010e2565b601f1984166200108c8662000e43565b5f5b82811015620010b5578489015182556001820191506020850194506020810190506200108e565b86831015620010d55784890151620010d1601f89168262000fcb565b8355505b6001600288020188555050505b505050505050565b5f6020828403121562001102576200110162000a7f565b5b5f620011118482850162000c46565b91505092915050565b620011258162000c1a565b82525050565b5f604082019050620011405f8301856200111a565b6200114f60208301846200111a565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200118f8262000c5c565b91506200119c8362000c5c565b9250828201905080821115620011b757620011b662001156565b5b92915050565b5f620011c98262000c5c565b9150620011d68362000c5c565b9250828202620011e68162000c5c565b915082820484148315176200120057620011ff62001156565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620012408262000c5c565b91506200124d8362000c5c565b92508262001260576200125f62001207565b5b828204905092915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f620012b16020836200126b565b9150620012be826200127b565b602082019050919050565b5f6020820190508181035f830152620012e281620012a3565b9050919050565b5f8115159050919050565b620012ff81620012e9565b82525050565b5f6020820190506200131a5f830184620012f4565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62001356601f836200126b565b9150620013638262001320565b602082019050919050565b5f6020820190508181035f830152620013878162001348565b9050919050565b620013998162000c5c565b82525050565b5f602082019050620013b45f8301846200138e565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f620013f0601b836200126b565b9150620013fd82620013ba565b602082019050919050565b5f6020820190508181035f8301526200142181620013e2565b9050919050565b60805160a0516145c76200147b5f395f8181610dc40152818161144a01526121d201525f818161095e015281816130610152818161314001528181613167015281816131fd015261322401526145c75ff3fe6080604052600436106101e6575f3560e01c80636e2e705c11610101578063a457c2d711610094578063c646c01911610063578063c646c019146106f5578063dd62ed3e1461071d578063e80c37cd14610759578063f2fde38b14610783576101ed565b8063a457c2d714610619578063a9059cbb14610655578063b62496f514610691578063c0246668146106cd576101ed565b8063779bf33c116100d0578063779bf33c146105615780638da5cb5b1461059d57806395d89b41146105c75780639a7a23d6146105f1576101ed565b80636e2e705c146104bd57806370a08231146104e5578063715018a614610521578063751039fc14610537576101ed565b8063293230b81161017957806349bd5a5e1161014857806349bd5a5e146104055780634fbee1931461042f578063525550ea1461046b5780635737619814610495576101ed565b8063293230b8146103615780632c1a5aa514610377578063313ce5671461039f57806339509351146103c9576101ed565b8063172869c4116101b5578063172869c4146102a957806318160ddd146102d35780631f9d1b3d146102fd57806323b872dd14610325576101ed565b806305b791f2146101f157806306fdde0314610219578063095ea7b3146102435780631694505e1461027f576101ed565b366101ed57005b5f80fd5b3480156101fc575f80fd5b5061021760048036038101906102129190613366565b6107ab565b005b348015610224575f80fd5b5061022d6108af565b60405161023a919061342e565b60405180910390f35b34801561024e575f80fd5b50610269600480360381019061026491906134a8565b61093f565b6040516102769190613500565b60405180910390f35b34801561028a575f80fd5b5061029361095c565b6040516102a09190613574565b60405180910390f35b3480156102b4575f80fd5b506102bd610980565b6040516102ca9190613500565b60405180910390f35b3480156102de575f80fd5b506102e7610993565b6040516102f4919061359c565b60405180910390f35b348015610308575f80fd5b50610323600480360381019061031e91906135df565b61099c565b005b348015610330575f80fd5b5061034b6004803603810190610346919061360a565b610a4f565b6040516103589190613500565b60405180910390f35b34801561036c575f80fd5b50610375610b23565b005b348015610382575f80fd5b5061039d6004803603810190610398919061365a565b610bf8565b005b3480156103aa575f80fd5b506103b3610d0c565b6040516103c091906136d9565b60405180910390f35b3480156103d4575f80fd5b506103ef60048036038101906103ea91906134a8565b610d14565b6040516103fc9190613500565b60405180910390f35b348015610410575f80fd5b50610419610dc2565b6040516104269190613701565b60405180910390f35b34801561043a575f80fd5b506104556004803603810190610450919061371a565b610de6565b6040516104629190613500565b60405180910390f35b348015610476575f80fd5b5061047f610e38565b60405161048c9190613701565b60405180910390f35b3480156104a0575f80fd5b506104bb60048036038101906104b69190613780565b610e5d565b005b3480156104c8575f80fd5b506104e360048036038101906104de91906135df565b610fda565b005b3480156104f0575f80fd5b5061050b6004803603810190610506919061371a565b61108d565b604051610518919061359c565b60405180910390f35b34801561052c575f80fd5b506105356110d2565b005b348015610542575f80fd5b5061054b611225565b6040516105589190613500565b60405180910390f35b34801561056c575f80fd5b506105876004803603810190610582919061371a565b6112dd565b6040516105949190613500565b60405180910390f35b3480156105a8575f80fd5b506105b16112fa565b6040516105be9190613701565b60405180910390f35b3480156105d2575f80fd5b506105db611322565b6040516105e8919061342e565b60405180910390f35b3480156105fc575f80fd5b50610617600480360381019061061291906137be565b6113b2565b005b348015610624575f80fd5b5061063f600480360381019061063a91906134a8565b6114e4565b60405161064c9190613500565b60405180910390f35b348015610660575f80fd5b5061067b600480360381019061067691906134a8565b6115ac565b6040516106889190613500565b60405180910390f35b34801561069c575f80fd5b506106b760048036038101906106b2919061371a565b6115c9565b6040516106c49190613500565b60405180910390f35b3480156106d8575f80fd5b506106f360048036038101906106ee91906137be565b6115e6565b005b348015610700575f80fd5b5061071b600480360381019061071691906137be565b611722565b005b348015610728575f80fd5b50610743600480360381019061073e91906137fc565b611810565b604051610750919061359c565b60405180910390f35b348015610764575f80fd5b5061076d611892565b60405161077a9190613500565b60405180910390f35b34801561078e575f80fd5b506107a960048036038101906107a4919061371a565b6118a5565b005b6107b3611a67565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083890613884565b60405180910390fd5b81600d8190555080600e81905550600e54600d5461085f91906138cf565b600c819055506028600c5411156108ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29061394c565b60405180910390fd5b5050565b6060600380546108be90613997565b80601f01602080910402602001604051908101604052809291908181526020018280546108ea90613997565b80156109355780601f1061090c57610100808354040283529160200191610935565b820191905f5260205f20905b81548152906001019060200180831161091857829003601f168201915b5050505050905090565b5f61095261094b611a67565b8484611a6e565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600760179054906101000a900460ff1681565b5f600254905090565b6109a4611a67565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2990613884565b60405180910390fd5b80600760176101000a81548160ff02191690831515021790555050565b5f610a5b848484611c31565b610b1884610a67611a67565b610b13856040518060600160405280602881526020016145456028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610aca611a67565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461284b9092919063ffffffff16565b611a6e565b600190509392505050565b610b2b611a67565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb090613884565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760176101000a81548160ff02191690831515021790555043601981905550565b610c00611a67565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8590613884565b60405180910390fd5b83601081905550826011819055508160128190555080601381905550601154601054610cba91906138cf565b600f819055506028600f541115610d06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfd90613a11565b60405180910390fd5b50505050565b5f6012905090565b5f610db8610d20611a67565b84610db38560015f610d30611a67565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128ad90919063ffffffff16565b611a6e565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec290613a79565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5190613b07565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610f95929190613b25565b6020604051808303815f875af1158015610fb1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fd59190613b60565b505050565b610fe2611a67565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106790613884565b60405180910390fd5b80600760186101000a81548160ff02191690831515021790555050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6110da611a67565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115f90613884565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f61122e611a67565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b390613884565b60405180910390fd5b5f600760156101000a81548160ff0219169083151502179055506001905090565b600a602052805f5260405f205f915054906101000a900460ff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461133190613997565b80601f016020809104026020016040519081016040528092919081815260200182805461135d90613997565b80156113a85780601f1061137f576101008083540402835291602001916113a8565b820191905f5260205f20905b81548152906001019060200180831161138b57829003601f168201915b5050505050905090565b6113ba611a67565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143f90613884565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cd90613bfb565b60405180910390fd5b6114e0828261290a565b5050565b5f6115a26114f0611a67565b8461159d8560405180606001604052806025815260200161456d6025913960015f611519611a67565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461284b9092919063ffffffff16565b611a6e565b6001905092915050565b5f6115bf6115b8611a67565b8484611c31565b6001905092915050565b600b602052805f5260405f205f915054906101000a900460ff1681565b6115ee611a67565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461167c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167390613884565b60405180910390fd5b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516117169190613500565b60405180910390a25050565b61172a611a67565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117af90613884565b60405180910390fd5b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600760189054906101000a900460ff1681565b6118ad611a67565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461193b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193290613884565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a090613c89565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad390613d17565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4190613da5565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c24919061359c565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9690613e33565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0490613ec1565b60405180910390fd5b5f8103611d2457611d1f83835f6129a8565b612846565b600760159054906101000a900460ff16156121cf57611d416112fa565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611daf5750611d7f6112fa565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611de757505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611e005750600760149054906101000a900460ff16155b156121ce57600760169054906101000a900460ff16611ef45760095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611eb4575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611ef3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eea90613f29565b60405180910390fd5b5b600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611f915750600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561203857601654811115611fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd290613fb7565b60405180910390fd5b601854611fe78361108d565b82611ff291906138cf565b1115612033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202a9061401f565b60405180910390fd5b6121cd565b600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156120d55750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156121245760165481111561211f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211690613fb7565b60405180910390fd5b6121cc565b600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166121cb5760185461217e8361108d565b8261218991906138cf565b11156121ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c19061401f565b60405180910390fd5b5b5b5b5b5b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490508015801561223b5750600760189054906101000a900460ff165b15612334575f60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054141580156122d8575042622819a060085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122d591906138cf565b10155b1561230a576012546011819055506013546010819055506011546010546122ff91906138cf565b600f8190555061232f565b5f6011819055505f60108190555060115460105461232891906138cf565b600f819055505b6123f5565b5f60085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054036123bb574260085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b600760189054906101000a900460ff166123f4575f6011819055505f6010819055506011546010546123ed91906138cf565b600f819055505b5b5f6123ff3061108d565b90505f60175482101590508080156124235750600760179054906101000a900460ff165b801561243c5750600760149054906101000a900460ff16155b801561248f5750600b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156124e2575060095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612535575060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612578576001600760146101000a81548160ff02191690831515021790555061255d612c31565b5f600760146101000a81548160ff0219169083151502179055505b5f600760149054906101000a900460ff1615905060095f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612627575060095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612630575f90505b5f811561283557600b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561268e57505f600f54115b15612726576126bb60646126ad600f5489612eb690919063ffffffff16565b612f2d90919063ffffffff16565b9050600f54601154826126ce919061403d565b6126d891906140ab565b60155f8282546126e891906138cf565b92505081905550600f5460105482612700919061403d565b61270a91906140ab565b60145f82825461271a91906138cf565b92505081905550612812565b600b5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561277d57505f600c54115b15612811576127aa606461279c600c5489612eb690919063ffffffff16565b612f2d90919063ffffffff16565b9050600c54600e54826127bd919061403d565b6127c791906140ab565b60155f8282546127d791906138cf565b92505081905550600c54600d54826127ef919061403d565b6127f991906140ab565b60145f82825461280991906138cf565b925050819055505b5b5f811115612826576128258830836129a8565b5b808661283291906140db565b95505b6128408888886129a8565b50505050505b505050565b5f838311158290612892576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612889919061342e565b60405180910390fd5b505f83856128a091906140db565b9050809150509392505050565b5f8082846128bb91906138cf565b905083811015612900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f790614158565b60405180910390fd5b8091505092915050565b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0d90613e33565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7b90613ec1565b60405180910390fd5b612a8f838383612f76565b612af88160405180606001604052806026815260200161451f602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461284b9092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612b87815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128ad90919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c24919061359c565b60405180910390a3505050565b5f612c3b3061108d565b90505f601454601554612c4e91906138cf565b90505f80831480612c5e57505f82145b15612c6b57505050612eb4565b6014601754612c7a919061403d565b831115612c93576014601754612c90919061403d565b92505b5f60028360155486612ca5919061403d565b612caf91906140ab565b612cb991906140ab565b90505f612ccf8286612f7b90919063ffffffff16565b90505f479050612cde82612fc4565b5f612cf28247612f7b90919063ffffffff16565b90505f612d1c87612d0e60145485612eb690919063ffffffff16565b612f2d90919063ffffffff16565b90505f8183612d2b91906140db565b90505f6015819055505f60148190555060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612d80906141a3565b5f6040518083038185875af1925050503d805f8114612dba576040519150601f19603f3d011682016040523d82523d5f602084013e612dbf565b606091505b5050809750505f86118015612dd357505f81115b15612e2057612de286826131f7565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601554604051612e17939291906141b7565b60405180910390a15b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612e65906141a3565b5f6040518083038185875af1925050503d805f8114612e9f576040519150601f19603f3d011682016040523d82523d5f602084013e612ea4565b606091505b5050809750505050505050505050505b565b5f808303612ec6575f9050612f27565b5f8284612ed3919061403d565b9050828482612ee291906140ab565b14612f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f199061425c565b60405180910390fd5b809150505b92915050565b5f612f6e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506132ce565b905092915050565b505050565b5f612fbc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061284b565b905092915050565b5f600267ffffffffffffffff811115612fe057612fdf61427a565b5b60405190808252806020026020018201604052801561300e5781602001602082028036833780820191505090505b50905030815f81518110613025576130246142a7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130ec91906142e8565b81600181518110613100576130ff6142a7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613165307f000000000000000000000000000000000000000000000000000000000000000084611a6e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016131c6959493929190614403565b5f604051808303815f87803b1580156131dd575f80fd5b505af11580156131ef573d5f803e3d5ffd5b505050505050565b613222307f000000000000000000000000000000000000000000000000000000000000000084611a6e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b81526004016132869695949392919061445b565b60606040518083038185885af11580156132a2573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906132c791906144ce565b5050505050565b5f8083118290613314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161330b919061342e565b60405180910390fd5b505f838561332291906140ab565b9050809150509392505050565b5f80fd5b5f819050919050565b61334581613333565b811461334f575f80fd5b50565b5f813590506133608161333c565b92915050565b5f806040838503121561337c5761337b61332f565b5b5f61338985828601613352565b925050602061339a85828601613352565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156133db5780820151818401526020810190506133c0565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613400826133a4565b61340a81856133ae565b935061341a8185602086016133be565b613423816133e6565b840191505092915050565b5f6020820190508181035f83015261344681846133f6565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6134778261344e565b9050919050565b6134878161346d565b8114613491575f80fd5b50565b5f813590506134a28161347e565b92915050565b5f80604083850312156134be576134bd61332f565b5b5f6134cb85828601613494565b92505060206134dc85828601613352565b9150509250929050565b5f8115159050919050565b6134fa816134e6565b82525050565b5f6020820190506135135f8301846134f1565b92915050565b5f819050919050565b5f61353c6135376135328461344e565b613519565b61344e565b9050919050565b5f61354d82613522565b9050919050565b5f61355e82613543565b9050919050565b61356e81613554565b82525050565b5f6020820190506135875f830184613565565b92915050565b61359681613333565b82525050565b5f6020820190506135af5f83018461358d565b92915050565b6135be816134e6565b81146135c8575f80fd5b50565b5f813590506135d9816135b5565b92915050565b5f602082840312156135f4576135f361332f565b5b5f613601848285016135cb565b91505092915050565b5f805f606084860312156136215761362061332f565b5b5f61362e86828701613494565b935050602061363f86828701613494565b925050604061365086828701613352565b9150509250925092565b5f805f80608085870312156136725761367161332f565b5b5f61367f87828801613352565b945050602061369087828801613352565b93505060406136a187828801613352565b92505060606136b287828801613352565b91505092959194509250565b5f60ff82169050919050565b6136d3816136be565b82525050565b5f6020820190506136ec5f8301846136ca565b92915050565b6136fb8161346d565b82525050565b5f6020820190506137145f8301846136f2565b92915050565b5f6020828403121561372f5761372e61332f565b5b5f61373c84828501613494565b91505092915050565b5f61374f8261346d565b9050919050565b61375f81613745565b8114613769575f80fd5b50565b5f8135905061377a81613756565b92915050565b5f80604083850312156137965761379561332f565b5b5f6137a38582860161376c565b92505060206137b485828601613352565b9150509250929050565b5f80604083850312156137d4576137d361332f565b5b5f6137e185828601613494565b92505060206137f2858286016135cb565b9150509250929050565b5f80604083850312156138125761381161332f565b5b5f61381f85828601613494565b925050602061383085828601613494565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61386e6020836133ae565b91506138798261383a565b602082019050919050565b5f6020820190508181035f83015261389b81613862565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6138d982613333565b91506138e483613333565b92508282019050808211156138fc576138fb6138a2565b5b92915050565b7f43616e6e6f7420657863656564203430252042757920666565730000000000005f82015250565b5f613936601a836133ae565b915061394182613902565b602082019050919050565b5f6020820190508181035f8301526139638161392a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806139ae57607f821691505b6020821081036139c1576139c061396a565b5b50919050565b7f43616e6e6f7420657863656564203430252053656c6c206665657300000000005f82015250565b5f6139fb601b836133ae565b9150613a06826139c7565b602082019050919050565b5f6020820190508181035f830152613a28816139ef565b9050919050565b7f546f6b656e20616464726573732063616e6e6f74206265207a65726f000000005f82015250565b5f613a63601c836133ae565b9150613a6e82613a2f565b602082019050919050565b5f6020820190508181035f830152613a9081613a57565b9050919050565b7f4f6e6c79207468652072657363756520616464726573732063616e2063616c6c5f8201527f20746869732066756e6374696f6e000000000000000000000000000000000000602082015250565b5f613af1602e836133ae565b9150613afc82613a97565b604082019050919050565b5f6020820190508181035f830152613b1e81613ae5565b9050919050565b5f604082019050613b385f8301856136f2565b613b45602083018461358d565b9392505050565b5f81519050613b5a816135b5565b92915050565b5f60208284031215613b7557613b7461332f565b5b5f613b8284828501613b4c565b91505092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f414d4d2050616972730000000000000000000000000000000000000000000000602082015250565b5f613be56029836133ae565b9150613bf082613b8b565b604082019050919050565b5f6020820190508181035f830152613c1281613bd9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613c736026836133ae565b9150613c7e82613c19565b604082019050919050565b5f6020820190508181035f830152613ca081613c67565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613d016024836133ae565b9150613d0c82613ca7565b604082019050919050565b5f6020820190508181035f830152613d2e81613cf5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613d8f6022836133ae565b9150613d9a82613d35565b604082019050919050565b5f6020820190508181035f830152613dbc81613d83565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613e1d6025836133ae565b9150613e2882613dc3565b604082019050919050565b5f6020820190508181035f830152613e4a81613e11565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613eab6023836133ae565b9150613eb682613e51565b604082019050919050565b5f6020820190508181035f830152613ed881613e9f565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f613f136016836133ae565b9150613f1e82613edf565b602082019050919050565b5f6020820190508181035f830152613f4081613f07565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d6178545f8201527f72616465416d6f756e742e000000000000000000000000000000000000000000602082015250565b5f613fa1602b836133ae565b9150613fac82613f47565b604082019050919050565b5f6020820190508181035f830152613fce81613f95565b9050919050565b7f4d617820486f6c64696e672065786365656465640000000000000000000000005f82015250565b5f6140096014836133ae565b915061401482613fd5565b602082019050919050565b5f6020820190508181035f83015261403681613ffd565b9050919050565b5f61404782613333565b915061405283613333565b925082820261406081613333565b91508282048414831517614077576140766138a2565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6140b582613333565b91506140c083613333565b9250826140d0576140cf61407e565b5b828204905092915050565b5f6140e582613333565b91506140f083613333565b9250828203905081811115614108576141076138a2565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614142601b836133ae565b915061414d8261410e565b602082019050919050565b5f6020820190508181035f83015261416f81614136565b9050919050565b5f81905092915050565b50565b5f61418e5f83614176565b915061419982614180565b5f82019050919050565b5f6141ad82614183565b9150819050919050565b5f6060820190506141ca5f83018661358d565b6141d7602083018561358d565b6141e4604083018461358d565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6142466021836133ae565b9150614251826141ec565b604082019050919050565b5f6020820190508181035f8301526142738161423a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506142e28161347e565b92915050565b5f602082840312156142fd576142fc61332f565b5b5f61430a848285016142d4565b91505092915050565b5f819050919050565b5f61433661433161432c84614313565b613519565b613333565b9050919050565b6143468161431c565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61437e8161346d565b82525050565b5f61438f8383614375565b60208301905092915050565b5f602082019050919050565b5f6143b18261434c565b6143bb8185614356565b93506143c683614366565b805f5b838110156143f65781516143dd8882614384565b97506143e88361439b565b9250506001810190506143c9565b5085935050505092915050565b5f60a0820190506144165f83018861358d565b614423602083018761433d565b818103604083015261443581866143a7565b905061444460608301856136f2565b614451608083018461358d565b9695505050505050565b5f60c08201905061446e5f8301896136f2565b61447b602083018861358d565b614488604083018761433d565b614495606083018661433d565b6144a260808301856136f2565b6144af60a083018461358d565b979650505050505050565b5f815190506144c88161333c565b92915050565b5f805f606084860312156144e5576144e461332f565b5b5f6144f2868287016144ba565b9350506020614503868287016144ba565b9250506040614514868287016144ba565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209618246e726a0e5fc2ef79b5dd98d5a03b98573a54174d919f5997e0f5440f2164736f6c63430008160033000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000a0512f6e3b435f728bd9ec1c83ad2b1cb57cf5dd000000000000000000000000973d61ea55257d7bc6a3d6c82c1f835a54182e7300000000000000000000000000000000000000000000d3c21bcecceda100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085157494b4d494e4500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045157494b00000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106101e6575f3560e01c80636e2e705c11610101578063a457c2d711610094578063c646c01911610063578063c646c019146106f5578063dd62ed3e1461071d578063e80c37cd14610759578063f2fde38b14610783576101ed565b8063a457c2d714610619578063a9059cbb14610655578063b62496f514610691578063c0246668146106cd576101ed565b8063779bf33c116100d0578063779bf33c146105615780638da5cb5b1461059d57806395d89b41146105c75780639a7a23d6146105f1576101ed565b80636e2e705c146104bd57806370a08231146104e5578063715018a614610521578063751039fc14610537576101ed565b8063293230b81161017957806349bd5a5e1161014857806349bd5a5e146104055780634fbee1931461042f578063525550ea1461046b5780635737619814610495576101ed565b8063293230b8146103615780632c1a5aa514610377578063313ce5671461039f57806339509351146103c9576101ed565b8063172869c4116101b5578063172869c4146102a957806318160ddd146102d35780631f9d1b3d146102fd57806323b872dd14610325576101ed565b806305b791f2146101f157806306fdde0314610219578063095ea7b3146102435780631694505e1461027f576101ed565b366101ed57005b5f80fd5b3480156101fc575f80fd5b5061021760048036038101906102129190613366565b6107ab565b005b348015610224575f80fd5b5061022d6108af565b60405161023a919061342e565b60405180910390f35b34801561024e575f80fd5b50610269600480360381019061026491906134a8565b61093f565b6040516102769190613500565b60405180910390f35b34801561028a575f80fd5b5061029361095c565b6040516102a09190613574565b60405180910390f35b3480156102b4575f80fd5b506102bd610980565b6040516102ca9190613500565b60405180910390f35b3480156102de575f80fd5b506102e7610993565b6040516102f4919061359c565b60405180910390f35b348015610308575f80fd5b50610323600480360381019061031e91906135df565b61099c565b005b348015610330575f80fd5b5061034b6004803603810190610346919061360a565b610a4f565b6040516103589190613500565b60405180910390f35b34801561036c575f80fd5b50610375610b23565b005b348015610382575f80fd5b5061039d6004803603810190610398919061365a565b610bf8565b005b3480156103aa575f80fd5b506103b3610d0c565b6040516103c091906136d9565b60405180910390f35b3480156103d4575f80fd5b506103ef60048036038101906103ea91906134a8565b610d14565b6040516103fc9190613500565b60405180910390f35b348015610410575f80fd5b50610419610dc2565b6040516104269190613701565b60405180910390f35b34801561043a575f80fd5b506104556004803603810190610450919061371a565b610de6565b6040516104629190613500565b60405180910390f35b348015610476575f80fd5b5061047f610e38565b60405161048c9190613701565b60405180910390f35b3480156104a0575f80fd5b506104bb60048036038101906104b69190613780565b610e5d565b005b3480156104c8575f80fd5b506104e360048036038101906104de91906135df565b610fda565b005b3480156104f0575f80fd5b5061050b6004803603810190610506919061371a565b61108d565b604051610518919061359c565b60405180910390f35b34801561052c575f80fd5b506105356110d2565b005b348015610542575f80fd5b5061054b611225565b6040516105589190613500565b60405180910390f35b34801561056c575f80fd5b506105876004803603810190610582919061371a565b6112dd565b6040516105949190613500565b60405180910390f35b3480156105a8575f80fd5b506105b16112fa565b6040516105be9190613701565b60405180910390f35b3480156105d2575f80fd5b506105db611322565b6040516105e8919061342e565b60405180910390f35b3480156105fc575f80fd5b50610617600480360381019061061291906137be565b6113b2565b005b348015610624575f80fd5b5061063f600480360381019061063a91906134a8565b6114e4565b60405161064c9190613500565b60405180910390f35b348015610660575f80fd5b5061067b600480360381019061067691906134a8565b6115ac565b6040516106889190613500565b60405180910390f35b34801561069c575f80fd5b506106b760048036038101906106b2919061371a565b6115c9565b6040516106c49190613500565b60405180910390f35b3480156106d8575f80fd5b506106f360048036038101906106ee91906137be565b6115e6565b005b348015610700575f80fd5b5061071b600480360381019061071691906137be565b611722565b005b348015610728575f80fd5b50610743600480360381019061073e91906137fc565b611810565b604051610750919061359c565b60405180910390f35b348015610764575f80fd5b5061076d611892565b60405161077a9190613500565b60405180910390f35b34801561078e575f80fd5b506107a960048036038101906107a4919061371a565b6118a5565b005b6107b3611a67565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083890613884565b60405180910390fd5b81600d8190555080600e81905550600e54600d5461085f91906138cf565b600c819055506028600c5411156108ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29061394c565b60405180910390fd5b5050565b6060600380546108be90613997565b80601f01602080910402602001604051908101604052809291908181526020018280546108ea90613997565b80156109355780601f1061090c57610100808354040283529160200191610935565b820191905f5260205f20905b81548152906001019060200180831161091857829003601f168201915b5050505050905090565b5f61095261094b611a67565b8484611a6e565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b600760179054906101000a900460ff1681565b5f600254905090565b6109a4611a67565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2990613884565b60405180910390fd5b80600760176101000a81548160ff02191690831515021790555050565b5f610a5b848484611c31565b610b1884610a67611a67565b610b13856040518060600160405280602881526020016145456028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610aca611a67565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461284b9092919063ffffffff16565b611a6e565b600190509392505050565b610b2b611a67565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb090613884565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760176101000a81548160ff02191690831515021790555043601981905550565b610c00611a67565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8590613884565b60405180910390fd5b83601081905550826011819055508160128190555080601381905550601154601054610cba91906138cf565b600f819055506028600f541115610d06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfd90613a11565b60405180910390fd5b50505050565b5f6012905090565b5f610db8610d20611a67565b84610db38560015f610d30611a67565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128ad90919063ffffffff16565b611a6e565b6001905092915050565b7f000000000000000000000000f1b0bcf0cfb8d5156bc394425cec79bcaf787e5581565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec290613a79565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5190613b07565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610f95929190613b25565b6020604051808303815f875af1158015610fb1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fd59190613b60565b505050565b610fe2611a67565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106790613884565b60405180910390fd5b80600760186101000a81548160ff02191690831515021790555050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6110da611a67565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115f90613884565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f61122e611a67565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b390613884565b60405180910390fd5b5f600760156101000a81548160ff0219169083151502179055506001905090565b600a602052805f5260405f205f915054906101000a900460ff1681565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461133190613997565b80601f016020809104026020016040519081016040528092919081815260200182805461135d90613997565b80156113a85780601f1061137f576101008083540402835291602001916113a8565b820191905f5260205f20905b81548152906001019060200180831161138b57829003601f168201915b5050505050905090565b6113ba611a67565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143f90613884565b60405180910390fd5b7f000000000000000000000000f1b0bcf0cfb8d5156bc394425cec79bcaf787e5573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cd90613bfb565b60405180910390fd5b6114e0828261290a565b5050565b5f6115a26114f0611a67565b8461159d8560405180606001604052806025815260200161456d6025913960015f611519611a67565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461284b9092919063ffffffff16565b611a6e565b6001905092915050565b5f6115bf6115b8611a67565b8484611c31565b6001905092915050565b600b602052805f5260405f205f915054906101000a900460ff1681565b6115ee611a67565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461167c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167390613884565b60405180910390fd5b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516117169190613500565b60405180910390a25050565b61172a611a67565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117af90613884565b60405180910390fd5b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600760189054906101000a900460ff1681565b6118ad611a67565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461193b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193290613884565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a090613c89565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad390613d17565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4190613da5565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c24919061359c565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9690613e33565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0490613ec1565b60405180910390fd5b5f8103611d2457611d1f83835f6129a8565b612846565b600760159054906101000a900460ff16156121cf57611d416112fa565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611daf5750611d7f6112fa565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611de757505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611e005750600760149054906101000a900460ff16155b156121ce57600760169054906101000a900460ff16611ef45760095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611eb4575060095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611ef3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eea90613f29565b60405180910390fd5b5b600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611f915750600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561203857601654811115611fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd290613fb7565b60405180910390fd5b601854611fe78361108d565b82611ff291906138cf565b1115612033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202a9061401f565b60405180910390fd5b6121cd565b600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156120d55750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156121245760165481111561211f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211690613fb7565b60405180910390fd5b6121cc565b600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166121cb5760185461217e8361108d565b8261218991906138cf565b11156121ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c19061401f565b60405180910390fd5b5b5b5b5b5b5f7f000000000000000000000000f1b0bcf0cfb8d5156bc394425cec79bcaf787e5573ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490508015801561223b5750600760189054906101000a900460ff165b15612334575f60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054141580156122d8575042622819a060085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122d591906138cf565b10155b1561230a576012546011819055506013546010819055506011546010546122ff91906138cf565b600f8190555061232f565b5f6011819055505f60108190555060115460105461232891906138cf565b600f819055505b6123f5565b5f60085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054036123bb574260085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b600760189054906101000a900460ff166123f4575f6011819055505f6010819055506011546010546123ed91906138cf565b600f819055505b5b5f6123ff3061108d565b90505f60175482101590508080156124235750600760179054906101000a900460ff165b801561243c5750600760149054906101000a900460ff16155b801561248f5750600b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156124e2575060095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612535575060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612578576001600760146101000a81548160ff02191690831515021790555061255d612c31565b5f600760146101000a81548160ff0219169083151502179055505b5f600760149054906101000a900460ff1615905060095f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612627575060095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612630575f90505b5f811561283557600b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561268e57505f600f54115b15612726576126bb60646126ad600f5489612eb690919063ffffffff16565b612f2d90919063ffffffff16565b9050600f54601154826126ce919061403d565b6126d891906140ab565b60155f8282546126e891906138cf565b92505081905550600f5460105482612700919061403d565b61270a91906140ab565b60145f82825461271a91906138cf565b92505081905550612812565b600b5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561277d57505f600c54115b15612811576127aa606461279c600c5489612eb690919063ffffffff16565b612f2d90919063ffffffff16565b9050600c54600e54826127bd919061403d565b6127c791906140ab565b60155f8282546127d791906138cf565b92505081905550600c54600d54826127ef919061403d565b6127f991906140ab565b60145f82825461280991906138cf565b925050819055505b5b5f811115612826576128258830836129a8565b5b808661283291906140db565b95505b6128408888886129a8565b50505050505b505050565b5f838311158290612892576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612889919061342e565b60405180910390fd5b505f83856128a091906140db565b9050809150509392505050565b5f8082846128bb91906138cf565b905083811015612900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f790614158565b60405180910390fd5b8091505092915050565b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0d90613e33565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7b90613ec1565b60405180910390fd5b612a8f838383612f76565b612af88160405180606001604052806026815260200161451f602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461284b9092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612b87815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128ad90919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c24919061359c565b60405180910390a3505050565b5f612c3b3061108d565b90505f601454601554612c4e91906138cf565b90505f80831480612c5e57505f82145b15612c6b57505050612eb4565b6014601754612c7a919061403d565b831115612c93576014601754612c90919061403d565b92505b5f60028360155486612ca5919061403d565b612caf91906140ab565b612cb991906140ab565b90505f612ccf8286612f7b90919063ffffffff16565b90505f479050612cde82612fc4565b5f612cf28247612f7b90919063ffffffff16565b90505f612d1c87612d0e60145485612eb690919063ffffffff16565b612f2d90919063ffffffff16565b90505f8183612d2b91906140db565b90505f6015819055505f60148190555060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612d80906141a3565b5f6040518083038185875af1925050503d805f8114612dba576040519150601f19603f3d011682016040523d82523d5f602084013e612dbf565b606091505b5050809750505f86118015612dd357505f81115b15612e2057612de286826131f7565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601554604051612e17939291906141b7565b60405180910390a15b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612e65906141a3565b5f6040518083038185875af1925050503d805f8114612e9f576040519150601f19603f3d011682016040523d82523d5f602084013e612ea4565b606091505b5050809750505050505050505050505b565b5f808303612ec6575f9050612f27565b5f8284612ed3919061403d565b9050828482612ee291906140ab565b14612f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f199061425c565b60405180910390fd5b809150505b92915050565b5f612f6e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506132ce565b905092915050565b505050565b5f612fbc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061284b565b905092915050565b5f600267ffffffffffffffff811115612fe057612fdf61427a565b5b60405190808252806020026020018201604052801561300e5781602001602082028036833780820191505090505b50905030815f81518110613025576130246142a7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130ec91906142e8565b81600181518110613100576130ff6142a7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613165307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611a6e565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016131c6959493929190614403565b5f604051808303815f87803b1580156131dd575f80fd5b505af11580156131ef573d5f803e3d5ffd5b505050505050565b613222307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611a6e565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b81526004016132869695949392919061445b565b60606040518083038185885af11580156132a2573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906132c791906144ce565b5050505050565b5f8083118290613314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161330b919061342e565b60405180910390fd5b505f838561332291906140ab565b9050809150509392505050565b5f80fd5b5f819050919050565b61334581613333565b811461334f575f80fd5b50565b5f813590506133608161333c565b92915050565b5f806040838503121561337c5761337b61332f565b5b5f61338985828601613352565b925050602061339a85828601613352565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156133db5780820151818401526020810190506133c0565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613400826133a4565b61340a81856133ae565b935061341a8185602086016133be565b613423816133e6565b840191505092915050565b5f6020820190508181035f83015261344681846133f6565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6134778261344e565b9050919050565b6134878161346d565b8114613491575f80fd5b50565b5f813590506134a28161347e565b92915050565b5f80604083850312156134be576134bd61332f565b5b5f6134cb85828601613494565b92505060206134dc85828601613352565b9150509250929050565b5f8115159050919050565b6134fa816134e6565b82525050565b5f6020820190506135135f8301846134f1565b92915050565b5f819050919050565b5f61353c6135376135328461344e565b613519565b61344e565b9050919050565b5f61354d82613522565b9050919050565b5f61355e82613543565b9050919050565b61356e81613554565b82525050565b5f6020820190506135875f830184613565565b92915050565b61359681613333565b82525050565b5f6020820190506135af5f83018461358d565b92915050565b6135be816134e6565b81146135c8575f80fd5b50565b5f813590506135d9816135b5565b92915050565b5f602082840312156135f4576135f361332f565b5b5f613601848285016135cb565b91505092915050565b5f805f606084860312156136215761362061332f565b5b5f61362e86828701613494565b935050602061363f86828701613494565b925050604061365086828701613352565b9150509250925092565b5f805f80608085870312156136725761367161332f565b5b5f61367f87828801613352565b945050602061369087828801613352565b93505060406136a187828801613352565b92505060606136b287828801613352565b91505092959194509250565b5f60ff82169050919050565b6136d3816136be565b82525050565b5f6020820190506136ec5f8301846136ca565b92915050565b6136fb8161346d565b82525050565b5f6020820190506137145f8301846136f2565b92915050565b5f6020828403121561372f5761372e61332f565b5b5f61373c84828501613494565b91505092915050565b5f61374f8261346d565b9050919050565b61375f81613745565b8114613769575f80fd5b50565b5f8135905061377a81613756565b92915050565b5f80604083850312156137965761379561332f565b5b5f6137a38582860161376c565b92505060206137b485828601613352565b9150509250929050565b5f80604083850312156137d4576137d361332f565b5b5f6137e185828601613494565b92505060206137f2858286016135cb565b9150509250929050565b5f80604083850312156138125761381161332f565b5b5f61381f85828601613494565b925050602061383085828601613494565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61386e6020836133ae565b91506138798261383a565b602082019050919050565b5f6020820190508181035f83015261389b81613862565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6138d982613333565b91506138e483613333565b92508282019050808211156138fc576138fb6138a2565b5b92915050565b7f43616e6e6f7420657863656564203430252042757920666565730000000000005f82015250565b5f613936601a836133ae565b915061394182613902565b602082019050919050565b5f6020820190508181035f8301526139638161392a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806139ae57607f821691505b6020821081036139c1576139c061396a565b5b50919050565b7f43616e6e6f7420657863656564203430252053656c6c206665657300000000005f82015250565b5f6139fb601b836133ae565b9150613a06826139c7565b602082019050919050565b5f6020820190508181035f830152613a28816139ef565b9050919050565b7f546f6b656e20616464726573732063616e6e6f74206265207a65726f000000005f82015250565b5f613a63601c836133ae565b9150613a6e82613a2f565b602082019050919050565b5f6020820190508181035f830152613a9081613a57565b9050919050565b7f4f6e6c79207468652072657363756520616464726573732063616e2063616c6c5f8201527f20746869732066756e6374696f6e000000000000000000000000000000000000602082015250565b5f613af1602e836133ae565b9150613afc82613a97565b604082019050919050565b5f6020820190508181035f830152613b1e81613ae5565b9050919050565b5f604082019050613b385f8301856136f2565b613b45602083018461358d565b9392505050565b5f81519050613b5a816135b5565b92915050565b5f60208284031215613b7557613b7461332f565b5b5f613b8284828501613b4c565b91505092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f414d4d2050616972730000000000000000000000000000000000000000000000602082015250565b5f613be56029836133ae565b9150613bf082613b8b565b604082019050919050565b5f6020820190508181035f830152613c1281613bd9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613c736026836133ae565b9150613c7e82613c19565b604082019050919050565b5f6020820190508181035f830152613ca081613c67565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613d016024836133ae565b9150613d0c82613ca7565b604082019050919050565b5f6020820190508181035f830152613d2e81613cf5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613d8f6022836133ae565b9150613d9a82613d35565b604082019050919050565b5f6020820190508181035f830152613dbc81613d83565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613e1d6025836133ae565b9150613e2882613dc3565b604082019050919050565b5f6020820190508181035f830152613e4a81613e11565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613eab6023836133ae565b9150613eb682613e51565b604082019050919050565b5f6020820190508181035f830152613ed881613e9f565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f613f136016836133ae565b9150613f1e82613edf565b602082019050919050565b5f6020820190508181035f830152613f4081613f07565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d6178545f8201527f72616465416d6f756e742e000000000000000000000000000000000000000000602082015250565b5f613fa1602b836133ae565b9150613fac82613f47565b604082019050919050565b5f6020820190508181035f830152613fce81613f95565b9050919050565b7f4d617820486f6c64696e672065786365656465640000000000000000000000005f82015250565b5f6140096014836133ae565b915061401482613fd5565b602082019050919050565b5f6020820190508181035f83015261403681613ffd565b9050919050565b5f61404782613333565b915061405283613333565b925082820261406081613333565b91508282048414831517614077576140766138a2565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6140b582613333565b91506140c083613333565b9250826140d0576140cf61407e565b5b828204905092915050565b5f6140e582613333565b91506140f083613333565b9250828203905081811115614108576141076138a2565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614142601b836133ae565b915061414d8261410e565b602082019050919050565b5f6020820190508181035f83015261416f81614136565b9050919050565b5f81905092915050565b50565b5f61418e5f83614176565b915061419982614180565b5f82019050919050565b5f6141ad82614183565b9150819050919050565b5f6060820190506141ca5f83018661358d565b6141d7602083018561358d565b6141e4604083018461358d565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6142466021836133ae565b9150614251826141ec565b604082019050919050565b5f6020820190508181035f8301526142738161423a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506142e28161347e565b92915050565b5f602082840312156142fd576142fc61332f565b5b5f61430a848285016142d4565b91505092915050565b5f819050919050565b5f61433661433161432c84614313565b613519565b613333565b9050919050565b6143468161431c565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61437e8161346d565b82525050565b5f61438f8383614375565b60208301905092915050565b5f602082019050919050565b5f6143b18261434c565b6143bb8185614356565b93506143c683614366565b805f5b838110156143f65781516143dd8882614384565b97506143e88361439b565b9250506001810190506143c9565b5085935050505092915050565b5f60a0820190506144165f83018861358d565b614423602083018761433d565b818103604083015261443581866143a7565b905061444460608301856136f2565b614451608083018461358d565b9695505050505050565b5f60c08201905061446e5f8301896136f2565b61447b602083018861358d565b614488604083018761433d565b614495606083018661433d565b6144a260808301856136f2565b6144af60a083018461358d565b979650505050505050565b5f815190506144c88161333c565b92915050565b5f805f606084860312156144e5576144e461332f565b5b5f6144f2868287016144ba565b9350506020614503868287016144ba565b9250506040614514868287016144ba565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209618246e726a0e5fc2ef79b5dd98d5a03b98573a54174d919f5997e0f5440f2164736f6c63430008160033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000a0512f6e3b435f728bd9ec1c83ad2b1cb57cf5dd000000000000000000000000973d61ea55257d7bc6a3d6c82c1f835a54182e7300000000000000000000000000000000000000000000d3c21bcecceda100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085157494b4d494e4500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045157494b00000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name (string): QWIKMINE
Arg [1] : symbol (string): QWIK
Arg [2] : _rescueAddress (address): 0xa0512f6e3B435f728BD9ec1c83aD2b1CB57Cf5Dd
Arg [3] : _taxWalletAddress (address): 0x973d61EA55257d7bc6a3d6C82C1F835a54182E73
Arg [4] : totalSupply (uint256): 1000000000000000000000000
Arg [5] : _buyProtocolFee (uint256): 0
Arg [6] : _sellProtocolFee (uint256): 0
Arg [7] : _quickSellProtocolFee (uint256): 0
Arg [8] : _buyLiquidityFee (uint256): 0
Arg [9] : _sellLiquidityFee (uint256): 0
Arg [10] : _quickSellLiquidityFee (uint256): 0
-----Encoded View---------------
15 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [1] : 00000000000000000000000000000000000000000000000000000000000001a0
Arg [2] : 000000000000000000000000a0512f6e3b435f728bd9ec1c83ad2b1cb57cf5dd
Arg [3] : 000000000000000000000000973d61ea55257d7bc6a3d6c82c1f835a54182e73
Arg [4] : 00000000000000000000000000000000000000000000d3c21bcecceda1000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [12] : 5157494b4d494e45000000000000000000000000000000000000000000000000
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [14] : 5157494b00000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 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.