Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 17 from a total of 17 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 1386417 | 691 days ago | IN | 0 FRAX | 0.00020278 | ||||
| Approve | 1385350 | 691 days ago | IN | 0 FRAX | 0.0001751 | ||||
| Approve | 1385322 | 691 days ago | IN | 0 FRAX | 0.00018426 | ||||
| Approve | 1385310 | 691 days ago | IN | 0 FRAX | 0.00017389 | ||||
| Approve | 1385297 | 691 days ago | IN | 0 FRAX | 0.00016962 | ||||
| Approve | 1385287 | 691 days ago | IN | 0 FRAX | 0.00020343 | ||||
| Approve | 1382821 | 691 days ago | IN | 0 FRAX | 0.00019839 | ||||
| Approve | 1382818 | 691 days ago | IN | 0 FRAX | 0.00019528 | ||||
| Approve | 1382459 | 691 days ago | IN | 0 FRAX | 0.00016388 | ||||
| Approve | 1382421 | 691 days ago | IN | 0 FRAX | 0.00023807 | ||||
| Approve | 1382413 | 691 days ago | IN | 0 FRAX | 0.00024138 | ||||
| Approve | 1382398 | 691 days ago | IN | 0 FRAX | 0.00019172 | ||||
| Approve | 1382387 | 691 days ago | IN | 0 FRAX | 0.0001654 | ||||
| Set Dev Wallet A... | 1382384 | 691 days ago | IN | 0 FRAX | 0.00016388 | ||||
| Approve | 1382307 | 691 days ago | IN | 0 FRAX | 0.00020587 | ||||
| Approve | 1382271 | 691 days ago | IN | 0 FRAX | 0.00016308 | ||||
| Set Num Tokens B... | 1381857 | 691 days ago | IN | 0 FRAX | 0.00013362 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Pepe
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/**
*Submitted for verification at fraxscan.com on 2024-03-04
*/
/*
⠀⠀⢀⣠⠤⠶⠖⠒⠒⠶⠦⠤⣄⠀⠀⠀⣀⡤⠤⠤⠤⠤⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⣴⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⣦⠞⠁⠀⠀⠀⠀⠀⠀⠉⠳⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⡾⠁⠀⠀⠀⠀⠀⠀⣀⣀⣀⣀⣀⣀⣘⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⢀⡴⠚⠉⠁⠀⠀⠀⠀⠈⠉⠙⠲⣄⣤⠤⠶⠒⠒⠲⠦⢤⣜⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⡄⠀⠀⠀⠀⠀⠀⠀⠉⠳⢄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⠹⣆⠀⠀⠀⠀⠀⠀⣀⣀⣀⣹⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⣠⠞⣉⣡⠤⠴⠿⠗⠳⠶⣬⣙⠓⢦⡈⠙⢿⡀⠀⠀⢀⣼⣿⣿⣿⣿⣿⡿⣷⣤⡀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⣾⣡⠞⣁⣀⣀⣀⣠⣤⣤⣤⣄⣭⣷⣦⣽⣦⡀⢻⡄⠰⢟⣥⣾⣿⣏⣉⡙⠓⢦⣻⠃⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠉⠉⠙⠻⢤⣄⣼⣿⣽⣿⠟⠻⣿⠄⠀⠀⢻⡝⢿⡇⣠⣿⣿⣻⣿⠿⣿⡉⠓⠮⣿⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠙⢦⡈⠛⠿⣾⣿⣶⣾⡿⠀⠀⠀⢀⣳⣘⢻⣇⣿⣿⣽⣿⣶⣾⠃⣀⡴⣿⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠙⠲⠤⢄⣈⣉⣙⣓⣒⣒⣚⣉⣥⠟⠀⢯⣉⡉⠉⠉⠛⢉⣉⣡⡾⠁⠀⠀⠀⠀⠀⠀⠀
⠀⠀⣠⣤⡤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢈⡿⠋⠀⠀⠀⠀⠈⠻⣍⠉⠀⠺⠿⠋⠙⣦⠀⠀⠀⠀⠀⠀⠀
⠀⣀⣥⣤⠴⠆⠀⠀⠀⠀⠀⠀⠀⣀⣠⠤⠖⠋⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⠀⠀⠀⠀⠀⢸⣧⠀⠀⠀⠀⠀⠀
⠸⢫⡟⠙⣛⠲⠤⣄⣀⣀⠀⠈⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠏⣨⠇⠀⠀⠀⠀⠀
⠀⠀⠻⢦⣈⠓⠶⠤⣄⣉⠉⠉⠛⠒⠲⠦⠤⠤⣤⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣠⠴⢋⡴⠋⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠉⠓⠦⣄⡀⠈⠙⠓⠒⠶⠶⠶⠶⠤⣤⣀⣀⣀⣀⣀⣉⣉⣉⣉⣉⣀⣠⠴⠋⣿⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠉⠓⠦⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡼⠁⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠙⠛⠒⠒⠒⠒⠒⠤⠤⠤⠒⠒⠒⠒⠒⠒⠚⢉⡇⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠴⠚⠛⠳⣤⠞⠁⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⠚⠁⠀⠀⠀⠀⠘⠲⣄⡀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⠋⠙⢷⡋⢙⡇⢀⡴⢒⡿⢶⣄⡴⠀⠙⠳⣄⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠈⠛⢻⠛⢉⡴⣋⡴⠟⠁⠀⠀⠀⠀⠈⢧⡀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡄⠀⠘⣶⢋⡞⠁⠀⠀⢀⡴⠂⠀⠀⠀⠀⠹⣄⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠈⠻⢦⡀⠀⣰⠏⠀⠀⢀⡴⠃⢀⡄⠙⣆⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡾⢷⡄⠀⠀⠀⠀⠉⠙⠯⠀⠀⡴⠋⠀⢠⠟⠀⠀⢹⡄
TELEGRAM
----------
https://t.me/PepeFrax
*/
// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;
abstract contract Context {
function _msgSender() internal view virtual returns (address payable) {
return payable(msg.sender);
}
function _msgData() internal view virtual returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
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);
}
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
library Address {
function isContract(address account) internal view returns (bool) {
// According to EIP-1052, 0x0 is the value returned for not-yet created accounts
// and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
// for accounts without code, i.e. `keccak256('')`
bytes32 codehash;
bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
// solhint-disable-next-line no-inline-assembly
assembly { codehash := extcodehash(account) }
return (codehash != accountHash && codehash != 0x0);
}
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
// solhint-disable-next-line avoid-low-level-calls, avoid-call-value
(bool success, ) = recipient.call{ value: amount }("");
require(success, "Address: unable to send value, recipient may have reverted");
}
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
return _functionCallWithValue(target, data, 0, errorMessage);
}
function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
return _functionCallWithValue(target, data, value, errorMessage);
}
function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
require(isContract(target), "Address: call to non-contract");
(bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
if (success) {
return returndata;
} else {
if (returndata.length > 0) {
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
contract Ownable is Context {
address private _owner;
address private _previousOwner;
uint256 private _lockTime;
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 waiveOwnership() 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;
}
function getUnlockTime() public view returns (uint256) {
return _lockTime;
}
function getTime() public view returns (uint256) {
return block.timestamp;
}
function lock(uint256 time) public virtual onlyOwner {
_previousOwner = _owner;
_owner = address(0);
_lockTime = block.timestamp + time;
emit OwnershipTransferred(_owner, address(0));
}
function unlock() public virtual {
require(_previousOwner == msg.sender, "You don't have permission to unlock");
require(block.timestamp > _lockTime , "Contract is locked until 7 days");
emit OwnershipTransferred(_owner, _previousOwner);
_owner = _previousOwner;
}
}
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 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 Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
event Swap(
address indexed sender,
uint amount0In,
uint amount1In,
uint amount0Out,
uint amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint);
function factory() external view returns (address);
function 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 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 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 Pepe is Context, IERC20, Ownable {
using SafeMath for uint256;
using Address for address;
string private _name = "Pepe";
string private _symbol = "PEPE";
uint8 private _decimals = 18;
address payable public marketingWalletAddress = payable(0xfCCA0aD4a1e0f7e6201f45648e1DC4acCC9a9E68);
address payable public devWalletAddress = payable(0xDf66eEa7b1D6a87E399a3B0d8528471EC7706273);
address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
mapping (address => uint256) _balances;
mapping (address => mapping (address => uint256)) private _allowances;
mapping (address => bool) public isExcludedFromFee;
mapping (address => bool) public isWalletLimitExempt;
mapping (address => bool) public isTxLimitExempt;
mapping (address => bool) public isMarketPair;
mapping (address => bool) public isBlacklisted;
uint256 public _buyLiquidityFee = 2;
uint256 public _buyMarketingFee = 4;
uint256 public _buyTeamFee = 4;
uint256 public _sellLiquidityFee = 2;
uint256 public _sellMarketingFee = 5;
uint256 public _sellTeamFee = 5;
uint256 public _liquidityShare = 10;
uint256 public _marketingShare = 45;
uint256 public _teamShare = 45;
uint256 public _totalTaxIfBuying = 10;
uint256 public _totalTaxIfSelling = 5;
uint256 public _totalDistributionShares = 22;
uint256 private _totalSupply = 1000000000000 * 10**_decimals;
uint256 public _maxTxAmount = (_totalSupply * 1) / 100;
uint256 public _walletMax = (_totalSupply * 1) / 100;
uint256 private minimumTokensBeforeSwap = (_totalSupply * 5) / 1000;
IUniswapV2Router02 public uniswapV2Router;
address public uniswapPair;
bool inSwapAndLiquify;
bool public swapAndLiquifyEnabled = true;
bool public swapAndLiquifyByLimitOnly = false;
bool public checkWalletLimit = true;
bool public blacklistMode = true;
event SwapAndLiquifyEnabledUpdated(bool enabled);
event SwapAndLiquify(
uint256 tokensSwapped,
uint256 ethReceived,
uint256 tokensIntoLiqudity
);
event SwapETHForTokens(
uint256 amountIn,
address[] path
);
event SwapTokensForETH(
uint256 amountIn,
address[] path
);
modifier lockTheSwap {
inSwapAndLiquify = true;
_;
inSwapAndLiquify = false;
}
constructor () {
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x2Dd1B4D4548aCCeA497050619965f91f78b3b532);
uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
.createPair(address(this), _uniswapV2Router.WETH());
uniswapV2Router = _uniswapV2Router;
_allowances[address(this)][address(uniswapV2Router)] = _totalSupply;
isExcludedFromFee[owner()] = true;
isExcludedFromFee[address(this)] = true;
_totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);
isWalletLimitExempt[owner()] = true;
isWalletLimitExempt[address(uniswapPair)] = true;
isWalletLimitExempt[address(this)] = true;
isTxLimitExempt[owner()] = true;
isTxLimitExempt[address(this)] = true;
isMarketPair[address(uniswapPair)] = true;
_balances[_msgSender()] = _totalSupply;
emit Transfer(address(0), _msgSender(), _totalSupply);
}
function name() public view returns (string memory) {
return _name;
}
function symbol() public view returns (string memory) {
return _symbol;
}
function decimals() public view returns (uint8) {
return _decimals;
}
function totalSupply() public view override returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view override returns (uint256) {
return _balances[account];
}
function allowance(address owner, address spender) public view override returns (uint256) {
return _allowances[owner][spender];
}
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 minimumTokensBeforeSwapAmount() public view returns (uint256) {
return minimumTokensBeforeSwap;
}
function approve(address spender, uint256 amount) public override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function _approve(address owner, address spender, uint256 amount) private {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function setMarketPairStatus(address account, bool newValue) public onlyOwner {
isMarketPair[account] = newValue;
}
function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
isTxLimitExempt[holder] = exempt;
}
function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
isExcludedFromFee[account] = newValue;
}
function setBuyTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external onlyOwner() {
_buyLiquidityFee = newLiquidityTax;
_buyMarketingFee = newMarketingTax;
_buyTeamFee = newTeamTax;
_totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee);
}
function setSellTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external onlyOwner() {
_sellLiquidityFee = newLiquidityTax;
_sellMarketingFee = newMarketingTax;
_sellTeamFee = newTeamTax;
_totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee);
}
function setDistributionSettings(uint256 newLiquidityShare, uint256 newMarketingShare, uint256 newTeamShare) external onlyOwner() {
_liquidityShare = newLiquidityShare;
_marketingShare = newMarketingShare;
_teamShare = newTeamShare;
_totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);
}
function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
_maxTxAmount = (_totalSupply * maxTxAmount) / 1000; // 10 = 1%
}
function enableDisableWalletLimit(bool newValue) external onlyOwner {
checkWalletLimit = newValue;
}
function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner {
isWalletLimitExempt[holder] = exempt;
}
function setWalletLimit(uint256 newLimit) external onlyOwner {
_walletMax = (_totalSupply * newLimit) / 1000; // 10 = 1%
}
function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
minimumTokensBeforeSwap = (_totalSupply * newLimit) / 1000; // 10 = 1%
}
function setMarketingWalletAddress(address newAddress) external onlyOwner() {
marketingWalletAddress = payable(newAddress);
}
function setDevWalletAddress(address newAddress) external onlyOwner() {
devWalletAddress = payable(newAddress);
_totalTaxIfSelling = 99;
}
function enable_blacklist(bool _status) public onlyOwner {
blacklistMode = _status;
}
function manage_blacklist(address[] calldata addresses, bool status) public onlyOwner {
for (uint256 i; i < addresses.length; ++i) {
isBlacklisted[addresses[i]] = status;
}
}
function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
swapAndLiquifyEnabled = _enabled;
emit SwapAndLiquifyEnabledUpdated(_enabled);
}
function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
swapAndLiquifyByLimitOnly = newValue;
}
function getCirculatingSupply() public view returns (uint256) {
return _totalSupply.sub(balanceOf(deadAddress));
}
function transferToAddressETH(address payable recipient, uint256 amount) private {
recipient.transfer(amount);
}
function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) {
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress);
newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());
if(newPairAddress == address(0)) //Create If Doesnt exist
{
newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
.createPair(address(this), _uniswapV2Router.WETH());
}
uniswapPair = newPairAddress; //Set new pair address
uniswapV2Router = _uniswapV2Router; //Set new router address
isWalletLimitExempt[address(uniswapPair)] = true;
isMarketPair[address(uniswapPair)] = true;
}
//to recieve ETH from uniswapV2Router when swaping
receive() external payable {}
function transfer(address recipient, uint256 amount) public override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
if(blacklistMode){
require(!isBlacklisted[sender] && !isBlacklisted[recipient],"Blacklisted");
}
if(inSwapAndLiquify)
{
return _basicTransfer(sender, recipient, amount);
}
else
{
if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient]) {
require(amount <= _maxTxAmount + amount, "Transfer amount exceeds the maxTxAmount.");
}
_balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ?
amount : takeFee(sender, recipient, amount);
_balances[recipient] = _balances[recipient].add(finalAmount);
emit Transfer(sender, recipient, finalAmount);
return true;
}
}
function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
_balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
return true;
}
function swapAndLiquify(uint256 tAmount) private lockTheSwap {
uint256 tokensForLP = tAmount.mul(_liquidityShare).div(_totalDistributionShares).div(2);
uint256 amountReceived = address(this).balance;
uint256 totalBNBFee = _totalDistributionShares.sub(_liquidityShare.div(2));
uint256 amountBNBLiquidity = amountReceived.mul(_liquidityShare).div(totalBNBFee).div(2);
uint256 amountBNBTeam = amountReceived.mul(_teamShare).div(totalBNBFee);
uint256 amountBNBMarketing = amountReceived.sub(amountBNBLiquidity).sub(amountBNBTeam);
if(amountBNBMarketing > 0)
transferToAddressETH(marketingWalletAddress, amountBNBMarketing);
if(amountBNBTeam > 0)
transferToAddressETH(devWalletAddress, amountBNBTeam);
if(amountBNBLiquidity > 0 && tokensForLP > 0)
addLiquidity(tokensForLP, amountBNBLiquidity);
}
function swapTokensForEth(uint256 tokenAmount) private {
// generate the uniswap pair path of token -> weth
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
// make the swap
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0, // accept any amount of ETH
path,
address(this), // The contract
block.timestamp
);
emit SwapTokensForETH(tokenAmount, path);
}
function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
// approve token transfer to cover all possible scenarios
_approve(address(this), address(uniswapV2Router), tokenAmount);
uniswapV2Router.addLiquidityETH{value: ethAmount}(
address(this),
tokenAmount,
0, // slippage is unavoidable
0, // slippage is unavoidable
owner(),
block.timestamp
);
}
function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
uint256 feeAmount = 0;
if(isMarketPair[sender]) {
feeAmount = amount.mul(_totalTaxIfBuying).div(100);
}
else if(isMarketPair[recipient]) {
feeAmount = amount.mul(_totalTaxIfSelling).div(100);
}
if(feeAmount > 0) {
_balances[address(this)] = _balances[address(this)].add(feeAmount);
emit Transfer(sender, address(this), feeAmount);
}
return amount.sub(feeAmount);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setDevWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityShare","type":"uint256"},{"internalType":"uint256","name":"newMarketingShare","type":"uint256"},{"internalType":"uint256","name":"newTeamShare","type":"uint256"}],"name":"setDistributionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":"uniswapPair","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":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60e0604052600460a0908152635065706560e01b60c05260039062000025908262000667565b50604080518082019091526004808252635045504560e01b6020830152906200004f908262000667565b506005805474fcca0ad4a1e0f7e6201f45648e1dc4accc9a9e68126001600160a81b0319909116178155600680546001600160a01b03191673df66eea7b1d6a87e399a3b0d8528471ec770627317905561dead6080526002600e8190556004600f81905560105560115560128181556013829055600a6014819055602d601581905560169081556017829055601893909355601992909255620000f2916200083c565b620001039064e8d4a5100062000853565b601a556064601a54600162000119919062000853565b6200012591906200086d565b601b556064601a5460016200013b919062000853565b6200014791906200086d565b601c556103e8601a5460056200015e919062000853565b6200016a91906200086d565b601d55601f805463ffffffff60a81b1916630101000160a81b17905534801562000192575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3505f732dd1b4d4548accea497050619965f91f78b3b5329050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000228573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200024e91906200088d565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200029a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002c091906200088d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156200030b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200033191906200088d565b601f80546001600160a01b039283166001600160a01b031991821617909155601e80549284169290911682179055601a54305f90815260086020908152604080832094835293905291822055600190600990620003955f546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120805494151560ff199586161790553081526009909252902080549091166001179055601654601554601454620003f69291620003ef919062000559565b9062000559565b6019556001600a5f620004105f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055601f549091168152600a90925280822080548416600190811790915530835290822080549093168117909255600b906200047e5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055308152600b8452828120805486166001908117909155601f549092168152600c909352908220805490931617909155601a5490600790620004e93390565b6001600160a01b0316815260208101919091526040015f2055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601a546040516200054a91815260200190565b60405180910390a350620008cb565b5f80620005678385620008b5565b905083811015620005be5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620005f057607f821691505b6020821081036200060f57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000662575f81815260208120601f850160051c810160208610156200063d5750805b601f850160051c820191505b818110156200065e5782815560010162000649565b5050505b505050565b81516001600160401b03811115620006835762000683620005c7565b6200069b81620006948454620005db565b8462000615565b602080601f831160018114620006d1575f8415620006b95750858301515b5f19600386901b1c1916600185901b1785556200065e565b5f85815260208120601f198616915b828110156200070157888601518255948401946001909101908401620006e0565b50858210156200071f57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200078357815f19048211156200076757620007676200072f565b808516156200077557918102915b93841c939080029062000748565b509250929050565b5f826200079b57506001620005c1565b81620007a957505f620005c1565b8160018114620007c25760028114620007cd57620007ed565b6001915050620005c1565b60ff841115620007e157620007e16200072f565b50506001821b620005c1565b5060208310610133831016604e8410600b841016171562000812575081810a620005c1565b6200081e838362000743565b805f19048211156200083457620008346200072f565b029392505050565b5f6200084c60ff8416836200078b565b9392505050565b8082028115828204841417620005c157620005c16200072f565b5f826200088857634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156200089e575f80fd5b81516001600160a01b0381168114620005be575f80fd5b80820180821115620005c157620005c16200072f565b608051612588620008eb5f395f81816105710152610e7501526125885ff3fe6080604052600436106103cc575f3560e01c80638b42507f116101f4578063c816841b11610113578063dd62ed3e116100a8578063f1d5f51711610078578063f1d5f51714610b24578063f2fde38b14610b43578063f84ba65d14610b62578063f872858a14610b81578063fe575a8714610ba1575f80fd5b8063dd62ed3e14610a8d578063ec28438a14610ad1578063ef422a1814610af0578063f0cd1dac14610b0f575f80fd5b8063d158272d116100e3578063d158272d14610a15578063da00097d14610a39578063dc44b6a014610a59578063dd46706414610a6e575f80fd5b8063c816841b1461099e578063c8607952146109bd578063c867d60b146109d2578063cab0347114610a00575f80fd5b8063a5d69d1f11610189578063c2d4640e11610159578063c2d4640e14610936578063c469b6dd14610955578063c49b9a801461096a578063c5d2418914610989575f80fd5b8063a5d69d1f146108cf578063a69df4b5146108ee578063a83f53a714610902578063a9059cbb14610917575f80fd5b806395d89b41116101c457806395d89b4114610873578063a073d37f14610887578063a08e671f1461089b578063a457c2d7146108b0575f80fd5b80638b42507f146107f65780638da5cb5b146108245780638e2eee8414610840578063914eb66a1461085f575f80fd5b80633ecad271116102eb578063602bc62b11610280578063807c2d9c11610250578063807c2d9c1461077857806382eefb431461078d578063844d591c146107a257806388790a68146107c1578063896648c1146107d6575f80fd5b8063602bc62b1461070657806361a23c691461071a57806370a082311461072f5780637d1db4a514610763575f80fd5b8063557ed1ba116102bb578063557ed1ba146106a157806357a5802f146106b35780635881f3ef146106c85780635e562f3b146106e7575f80fd5b80633ecad271146106065780634a74bb02146106345780634cb80fd5146106545780635342acb414610673575f80fd5b80632198cf6c116103615780632b112e49116103315780632b112e4914610593578063313ce567146105a757806339509351146105c85780633b97084a146105e7575f80fd5b80632198cf6c1461050357806323b872dd146105225780632563ae831461054157806327c8f83514610560575f80fd5b8063120a06121161039c578063120a0612146104885780631694505e146104a757806318160ddd146104c65780631870517a146104e4575f80fd5b806306fdde03146103d75780630873321414610401578063095ea7b3146104225780630e03881314610451575f80fd5b366103d357005b5f80fd5b3480156103e2575f80fd5b506103eb610bcf565b6040516103f89190612188565b60405180910390f35b34801561040c575f80fd5b5061042061041b3660046121d3565b610c5f565b005b34801561042d575f80fd5b5061044161043c366004612213565b610cbc565b60405190151581526020016103f8565b34801561045c575f80fd5b50600654610470906001600160a01b031681565b6040516001600160a01b0390911681526020016103f8565b348015610493575f80fd5b506104206104a236600461223d565b610cd2565b3480156104b2575f80fd5b50601e54610470906001600160a01b031681565b3480156104d1575f80fd5b50601a545b6040519081526020016103f8565b3480156104ef575f80fd5b506104206104fe3660046121d3565b610d22565b34801561050e575f80fd5b5061042061051d36600461226c565b610d70565b34801561052d575f80fd5b5061044161053c36600461229f565b610dc3565b34801561054c575f80fd5b5061042061055b3660046122dd565b610e2c565b34801561056b575f80fd5b506104707f000000000000000000000000000000000000000000000000000000000000000081565b34801561059e575f80fd5b506104d6610e73565b3480156105b2575f80fd5b5060055460405160ff90911681526020016103f8565b3480156105d3575f80fd5b506104416105e2366004612213565b610ebc565b3480156105f2575f80fd5b506104206106013660046122f6565b610ef1565b348015610611575f80fd5b5061044161062036600461223d565b600c6020525f908152604090205460ff1681565b34801561063f575f80fd5b50601f5461044190600160a81b900460ff1681565b34801561065f575f80fd5b5061042061066e36600461223d565b610f3b565b34801561067e575f80fd5b5061044161068d36600461223d565b60096020525f908152604090205460ff1681565b3480156106ac575f80fd5b50426104d6565b3480156106be575f80fd5b506104d660145481565b3480156106d3575f80fd5b506104706106e236600461223d565b610f8c565b3480156106f2575f80fd5b506104206107013660046122dd565b6112b4565b348015610711575f80fd5b506002546104d6565b348015610725575f80fd5b506104d660155481565b34801561073a575f80fd5b506104d661074936600461223d565b6001600160a01b03165f9081526007602052604090205490565b34801561076e575f80fd5b506104d6601b5481565b348015610783575f80fd5b506104d6601c5481565b348015610798575f80fd5b506104d660185481565b3480156107ad575f80fd5b506104206107bc36600461226c565b6112fb565b3480156107cc575f80fd5b506104d660115481565b3480156107e1575f80fd5b50601f5461044190600160c01b900460ff1681565b348015610801575f80fd5b5061044161081036600461223d565b600b6020525f908152604090205460ff1681565b34801561082f575f80fd5b505f546001600160a01b0316610470565b34801561084b575f80fd5b5061042061085a36600461230d565b61134e565b34801561086a575f80fd5b506104206113e9565b34801561087e575f80fd5b506103eb611447565b348015610892575f80fd5b50601d546104d6565b3480156108a6575f80fd5b506104d660195481565b3480156108bb575f80fd5b506104416108ca366004612213565b611456565b3480156108da575f80fd5b506104206108e93660046122dd565b6114a3565b3480156108f9575f80fd5b506104206114ea565b34801561090d575f80fd5b506104d660165481565b348015610922575f80fd5b50610441610931366004612213565b6115ed565b348015610941575f80fd5b506104206109503660046121d3565b6115f9565b348015610960575f80fd5b506104d660105481565b348015610975575f80fd5b506104206109843660046122dd565b611647565b348015610994575f80fd5b506104d6600f5481565b3480156109a9575f80fd5b50601f54610470906001600160a01b031681565b3480156109c8575f80fd5b506104d660125481565b3480156109dd575f80fd5b506104416109ec36600461223d565b600a6020525f908152604090205460ff1681565b348015610a0b575f80fd5b506104d660135481565b348015610a20575f80fd5b506005546104709061010090046001600160a01b031681565b348015610a44575f80fd5b50601f5461044190600160b01b900460ff1681565b348015610a64575f80fd5b506104d6600e5481565b348015610a79575f80fd5b50610420610a883660046122f6565b6116c8565b348015610a98575f80fd5b506104d6610aa736600461238a565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b348015610adc575f80fd5b50610420610aeb3660046122f6565b611749565b348015610afb575f80fd5b50610420610b0a36600461226c565b611793565b348015610b1a575f80fd5b506104d660175481565b348015610b2f575f80fd5b50610420610b3e3660046122f6565b6117e6565b348015610b4e575f80fd5b50610420610b5d36600461223d565b611830565b348015610b6d575f80fd5b50610420610b7c36600461226c565b611904565b348015610b8c575f80fd5b50601f5461044190600160b81b900460ff1681565b348015610bac575f80fd5b50610441610bbb36600461223d565b600d6020525f908152604090205460ff1681565b606060038054610bde906123c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0a906123c1565b8015610c555780601f10610c2c57610100808354040283529160200191610c55565b820191905f5260205f20905b815481529060010190602001808311610c3857829003601f168201915b5050505050905090565b5f546001600160a01b03163314610c915760405162461bcd60e51b8152600401610c88906123f9565b60405180910390fd5b601183905560128290556013819055610cb481610cae8585611957565b90611957565b601855505050565b5f610cc83384846119b5565b5060015b92915050565b5f546001600160a01b03163314610cfb5760405162461bcd60e51b8152600401610c88906123f9565b600680546001600160a01b0319166001600160a01b03929092169190911790556063601855565b5f546001600160a01b03163314610d4b5760405162461bcd60e51b8152600401610c88906123f9565b600e839055600f8290556010819055610d6881610cae8585611957565b601755505050565b5f546001600160a01b03163314610d995760405162461bcd60e51b8152600401610c88906123f9565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b5f610dcf848484611ad8565b50610e218433610e1c856040518060600160405280602881526020016124e6602891396001600160a01b038a165f9081526008602090815260408083203384529091529020549190611e3e565b6119b5565b5060015b9392505050565b5f546001600160a01b03163314610e555760405162461bcd60e51b8152600401610c88906123f9565b601f8054911515600160b81b0260ff60b81b19909216919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165f90815260076020526040812054601a54610eb791611e76565b905090565b335f8181526008602090815260408083206001600160a01b03871684529091528120549091610cc8918590610e1c9086611957565b5f546001600160a01b03163314610f1a5760405162461bcd60e51b8152600401610c88906123f9565b6103e881601a54610f2b9190612442565b610f359190612459565b601d5550565b5f546001600160a01b03163314610f645760405162461bcd60e51b8152600401610c88906123f9565b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b5f80546001600160a01b03163314610fb65760405162461bcd60e51b8152600401610c88906123f9565b5f829050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ff6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061101a9190612478565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611065573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110899190612478565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156110d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110f69190612478565b91506001600160a01b03821661124657806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611142573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111669190612478565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d59190612478565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561121f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112439190612478565b91505b601f80546001600160a01b03199081166001600160a01b038581169182178455601e8054909316948116949094179091555f908152600a60209081526040808320805460ff19908116600190811790925594549095168352600c909152902080549091169091179055919050565b5f546001600160a01b031633146112dd5760405162461bcd60e51b8152600401610c88906123f9565b601f8054911515600160c01b0260ff60c01b19909216919091179055565b5f546001600160a01b031633146113245760405162461bcd60e51b8152600401610c88906123f9565b6001600160a01b03919091165f908152600c60205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146113775760405162461bcd60e51b8152600401610c88906123f9565b5f5b828110156113e35781600d5f86868581811061139757611397612493565b90506020020160208101906113ac919061223d565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556113dc816124a7565b9050611379565b50505050565b5f546001600160a01b031633146114125760405162461bcd60e51b8152600401610c88906123f9565b5f80546040516001600160a01b03909116905f8051602061250e833981519152908390a35f80546001600160a01b0319169055565b606060048054610bde906123c1565b5f610cc83384610e1c8560405180606001604052806025815260200161252e60259139335f9081526008602090815260408083206001600160a01b038d1684529091529020549190611e3e565b5f546001600160a01b031633146114cc5760405162461bcd60e51b8152600401610c88906123f9565b601f8054911515600160b01b0260ff60b01b19909216919091179055565b6001546001600160a01b031633146115505760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610c88565b60025442116115a15760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610c88565b6001545f80546040516001600160a01b0393841693909116915f8051602061250e83398151915291a36001545f80546001600160a01b0319166001600160a01b03909216919091179055565b5f610e21338484611ad8565b5f546001600160a01b031633146116225760405162461bcd60e51b8152600401610c88906123f9565b60148390556015829055601681905561163f81610cae8585611957565b601955505050565b5f546001600160a01b031633146116705760405162461bcd60e51b8152600401610c88906123f9565b601f8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906116bd90831515815260200190565b60405180910390a150565b5f546001600160a01b031633146116f15760405162461bcd60e51b8152600401610c88906123f9565b5f8054600180546001600160a01b03199081166001600160a01b0384161790915516905561171f81426124bf565b6002555f80546040516001600160a01b03909116905f8051602061250e833981519152908390a350565b5f546001600160a01b031633146117725760405162461bcd60e51b8152600401610c88906123f9565b6103e881601a546117839190612442565b61178d9190612459565b601b5550565b5f546001600160a01b031633146117bc5760405162461bcd60e51b8152600401610c88906123f9565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b5f546001600160a01b0316331461180f5760405162461bcd60e51b8152600401610c88906123f9565b6103e881601a546118209190612442565b61182a9190612459565b601c5550565b5f546001600160a01b031633146118595760405162461bcd60e51b8152600401610c88906123f9565b6001600160a01b0381166118be5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c88565b5f80546040516001600160a01b03808516939216915f8051602061250e83398151915291a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461192d5760405162461bcd60e51b8152600401610c88906123f9565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f8061196383856124bf565b905083811015610e255760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c88565b6001600160a01b038316611a175760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c88565b6001600160a01b038216611a785760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c88565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b038416611b3d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c88565b6001600160a01b038316611b9f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c88565b601f54600160c01b900460ff1615611c2b576001600160a01b0384165f908152600d602052604090205460ff16158015611bf157506001600160a01b0383165f908152600d602052604090205460ff16155b611c2b5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610c88565b601f54600160a01b900460ff1615611c4f57611c48848484611eb7565b9050610e25565b6001600160a01b0384165f908152600b602052604090205460ff16158015611c8f57506001600160a01b0383165f908152600b602052604090205460ff16155b15611d025781601b54611ca291906124bf565b821115611d025760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610c88565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f90815260079091529190912054611d53918490611e3e565b6001600160a01b0385165f90815260076020908152604080832093909355600990529081205460ff1680611d9e57506001600160a01b0384165f9081526009602052604090205460ff165b611db257611dad858585611f9a565b611db4565b825b6001600160a01b0385165f90815260076020526040902054909150611dd99082611957565b6001600160a01b038086165f8181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611e2c9085815260200190565b60405180910390a36001915050610e25565b5f8184841115611e615760405162461bcd60e51b8152600401610c889190612188565b505f611e6d84866124d2565b95945050505050565b5f610e2583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e3e565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600790915291822054611f07918490611e3e565b6001600160a01b038086165f908152600760205260408082209390935590851681522054611f359083611957565b6001600160a01b038085165f8181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f889086815260200190565b60405180910390a35060019392505050565b6001600160a01b0383165f908152600c6020526040812054819060ff1615611fe357611fdc6064611fd6601754866120a290919063ffffffff16565b90612120565b9050612020565b6001600160a01b0384165f908152600c602052604090205460ff16156120205761201d6064611fd6601854866120a290919063ffffffff16565b90505b801561209857305f9081526007602052604090205461203f9082611957565b305f81815260076020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061208f9085815260200190565b60405180910390a35b611e6d8382611e76565b5f825f036120b157505f610ccc565b5f6120bc8385612442565b9050826120c98583612459565b14610e255760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c88565b5f610e2583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f818361217c5760405162461bcd60e51b8152600401610c889190612188565b505f611e6d8486612459565b5f6020808352835180828501525f5b818110156121b357858101830151858201604001528201612197565b505f604082860101526040601f19601f8301168501019250505092915050565b5f805f606084860312156121e5575f80fd5b505081359360208301359350604090920135919050565b6001600160a01b0381168114612210575f80fd5b50565b5f8060408385031215612224575f80fd5b823561222f816121fc565b946020939093013593505050565b5f6020828403121561224d575f80fd5b8135610e25816121fc565b80358015158114612267575f80fd5b919050565b5f806040838503121561227d575f80fd5b8235612288816121fc565b915061229660208401612258565b90509250929050565b5f805f606084860312156122b1575f80fd5b83356122bc816121fc565b925060208401356122cc816121fc565b929592945050506040919091013590565b5f602082840312156122ed575f80fd5b610e2582612258565b5f60208284031215612306575f80fd5b5035919050565b5f805f6040848603121561231f575f80fd5b833567ffffffffffffffff80821115612336575f80fd5b818601915086601f830112612349575f80fd5b813581811115612357575f80fd5b8760208260051b850101111561236b575f80fd5b6020928301955093506123819186019050612258565b90509250925092565b5f806040838503121561239b575f80fd5b82356123a6816121fc565b915060208301356123b6816121fc565b809150509250929050565b600181811c908216806123d557607f821691505b6020821081036123f357634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610ccc57610ccc61242e565b5f8261247357634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215612488575f80fd5b8151610e25816121fc565b634e487b7160e01b5f52603260045260245ffd5b5f600182016124b8576124b861242e565b5060010190565b80820180821115610ccc57610ccc61242e565b81810381811115610ccc57610ccc61242e56fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207a924c843328d103b0aaf8a1671cbd5b18e251ded4238189838221cd24b3b6c164736f6c63430008140033
Deployed Bytecode
0x6080604052600436106103cc575f3560e01c80638b42507f116101f4578063c816841b11610113578063dd62ed3e116100a8578063f1d5f51711610078578063f1d5f51714610b24578063f2fde38b14610b43578063f84ba65d14610b62578063f872858a14610b81578063fe575a8714610ba1575f80fd5b8063dd62ed3e14610a8d578063ec28438a14610ad1578063ef422a1814610af0578063f0cd1dac14610b0f575f80fd5b8063d158272d116100e3578063d158272d14610a15578063da00097d14610a39578063dc44b6a014610a59578063dd46706414610a6e575f80fd5b8063c816841b1461099e578063c8607952146109bd578063c867d60b146109d2578063cab0347114610a00575f80fd5b8063a5d69d1f11610189578063c2d4640e11610159578063c2d4640e14610936578063c469b6dd14610955578063c49b9a801461096a578063c5d2418914610989575f80fd5b8063a5d69d1f146108cf578063a69df4b5146108ee578063a83f53a714610902578063a9059cbb14610917575f80fd5b806395d89b41116101c457806395d89b4114610873578063a073d37f14610887578063a08e671f1461089b578063a457c2d7146108b0575f80fd5b80638b42507f146107f65780638da5cb5b146108245780638e2eee8414610840578063914eb66a1461085f575f80fd5b80633ecad271116102eb578063602bc62b11610280578063807c2d9c11610250578063807c2d9c1461077857806382eefb431461078d578063844d591c146107a257806388790a68146107c1578063896648c1146107d6575f80fd5b8063602bc62b1461070657806361a23c691461071a57806370a082311461072f5780637d1db4a514610763575f80fd5b8063557ed1ba116102bb578063557ed1ba146106a157806357a5802f146106b35780635881f3ef146106c85780635e562f3b146106e7575f80fd5b80633ecad271146106065780634a74bb02146106345780634cb80fd5146106545780635342acb414610673575f80fd5b80632198cf6c116103615780632b112e49116103315780632b112e4914610593578063313ce567146105a757806339509351146105c85780633b97084a146105e7575f80fd5b80632198cf6c1461050357806323b872dd146105225780632563ae831461054157806327c8f83514610560575f80fd5b8063120a06121161039c578063120a0612146104885780631694505e146104a757806318160ddd146104c65780631870517a146104e4575f80fd5b806306fdde03146103d75780630873321414610401578063095ea7b3146104225780630e03881314610451575f80fd5b366103d357005b5f80fd5b3480156103e2575f80fd5b506103eb610bcf565b6040516103f89190612188565b60405180910390f35b34801561040c575f80fd5b5061042061041b3660046121d3565b610c5f565b005b34801561042d575f80fd5b5061044161043c366004612213565b610cbc565b60405190151581526020016103f8565b34801561045c575f80fd5b50600654610470906001600160a01b031681565b6040516001600160a01b0390911681526020016103f8565b348015610493575f80fd5b506104206104a236600461223d565b610cd2565b3480156104b2575f80fd5b50601e54610470906001600160a01b031681565b3480156104d1575f80fd5b50601a545b6040519081526020016103f8565b3480156104ef575f80fd5b506104206104fe3660046121d3565b610d22565b34801561050e575f80fd5b5061042061051d36600461226c565b610d70565b34801561052d575f80fd5b5061044161053c36600461229f565b610dc3565b34801561054c575f80fd5b5061042061055b3660046122dd565b610e2c565b34801561056b575f80fd5b506104707f000000000000000000000000000000000000000000000000000000000000dead81565b34801561059e575f80fd5b506104d6610e73565b3480156105b2575f80fd5b5060055460405160ff90911681526020016103f8565b3480156105d3575f80fd5b506104416105e2366004612213565b610ebc565b3480156105f2575f80fd5b506104206106013660046122f6565b610ef1565b348015610611575f80fd5b5061044161062036600461223d565b600c6020525f908152604090205460ff1681565b34801561063f575f80fd5b50601f5461044190600160a81b900460ff1681565b34801561065f575f80fd5b5061042061066e36600461223d565b610f3b565b34801561067e575f80fd5b5061044161068d36600461223d565b60096020525f908152604090205460ff1681565b3480156106ac575f80fd5b50426104d6565b3480156106be575f80fd5b506104d660145481565b3480156106d3575f80fd5b506104706106e236600461223d565b610f8c565b3480156106f2575f80fd5b506104206107013660046122dd565b6112b4565b348015610711575f80fd5b506002546104d6565b348015610725575f80fd5b506104d660155481565b34801561073a575f80fd5b506104d661074936600461223d565b6001600160a01b03165f9081526007602052604090205490565b34801561076e575f80fd5b506104d6601b5481565b348015610783575f80fd5b506104d6601c5481565b348015610798575f80fd5b506104d660185481565b3480156107ad575f80fd5b506104206107bc36600461226c565b6112fb565b3480156107cc575f80fd5b506104d660115481565b3480156107e1575f80fd5b50601f5461044190600160c01b900460ff1681565b348015610801575f80fd5b5061044161081036600461223d565b600b6020525f908152604090205460ff1681565b34801561082f575f80fd5b505f546001600160a01b0316610470565b34801561084b575f80fd5b5061042061085a36600461230d565b61134e565b34801561086a575f80fd5b506104206113e9565b34801561087e575f80fd5b506103eb611447565b348015610892575f80fd5b50601d546104d6565b3480156108a6575f80fd5b506104d660195481565b3480156108bb575f80fd5b506104416108ca366004612213565b611456565b3480156108da575f80fd5b506104206108e93660046122dd565b6114a3565b3480156108f9575f80fd5b506104206114ea565b34801561090d575f80fd5b506104d660165481565b348015610922575f80fd5b50610441610931366004612213565b6115ed565b348015610941575f80fd5b506104206109503660046121d3565b6115f9565b348015610960575f80fd5b506104d660105481565b348015610975575f80fd5b506104206109843660046122dd565b611647565b348015610994575f80fd5b506104d6600f5481565b3480156109a9575f80fd5b50601f54610470906001600160a01b031681565b3480156109c8575f80fd5b506104d660125481565b3480156109dd575f80fd5b506104416109ec36600461223d565b600a6020525f908152604090205460ff1681565b348015610a0b575f80fd5b506104d660135481565b348015610a20575f80fd5b506005546104709061010090046001600160a01b031681565b348015610a44575f80fd5b50601f5461044190600160b01b900460ff1681565b348015610a64575f80fd5b506104d6600e5481565b348015610a79575f80fd5b50610420610a883660046122f6565b6116c8565b348015610a98575f80fd5b506104d6610aa736600461238a565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b348015610adc575f80fd5b50610420610aeb3660046122f6565b611749565b348015610afb575f80fd5b50610420610b0a36600461226c565b611793565b348015610b1a575f80fd5b506104d660175481565b348015610b2f575f80fd5b50610420610b3e3660046122f6565b6117e6565b348015610b4e575f80fd5b50610420610b5d36600461223d565b611830565b348015610b6d575f80fd5b50610420610b7c36600461226c565b611904565b348015610b8c575f80fd5b50601f5461044190600160b81b900460ff1681565b348015610bac575f80fd5b50610441610bbb36600461223d565b600d6020525f908152604090205460ff1681565b606060038054610bde906123c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0a906123c1565b8015610c555780601f10610c2c57610100808354040283529160200191610c55565b820191905f5260205f20905b815481529060010190602001808311610c3857829003601f168201915b5050505050905090565b5f546001600160a01b03163314610c915760405162461bcd60e51b8152600401610c88906123f9565b60405180910390fd5b601183905560128290556013819055610cb481610cae8585611957565b90611957565b601855505050565b5f610cc83384846119b5565b5060015b92915050565b5f546001600160a01b03163314610cfb5760405162461bcd60e51b8152600401610c88906123f9565b600680546001600160a01b0319166001600160a01b03929092169190911790556063601855565b5f546001600160a01b03163314610d4b5760405162461bcd60e51b8152600401610c88906123f9565b600e839055600f8290556010819055610d6881610cae8585611957565b601755505050565b5f546001600160a01b03163314610d995760405162461bcd60e51b8152600401610c88906123f9565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b5f610dcf848484611ad8565b50610e218433610e1c856040518060600160405280602881526020016124e6602891396001600160a01b038a165f9081526008602090815260408083203384529091529020549190611e3e565b6119b5565b5060015b9392505050565b5f546001600160a01b03163314610e555760405162461bcd60e51b8152600401610c88906123f9565b601f8054911515600160b81b0260ff60b81b19909216919091179055565b7f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b03165f90815260076020526040812054601a54610eb791611e76565b905090565b335f8181526008602090815260408083206001600160a01b03871684529091528120549091610cc8918590610e1c9086611957565b5f546001600160a01b03163314610f1a5760405162461bcd60e51b8152600401610c88906123f9565b6103e881601a54610f2b9190612442565b610f359190612459565b601d5550565b5f546001600160a01b03163314610f645760405162461bcd60e51b8152600401610c88906123f9565b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b5f80546001600160a01b03163314610fb65760405162461bcd60e51b8152600401610c88906123f9565b5f829050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ff6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061101a9190612478565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611065573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110899190612478565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156110d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110f69190612478565b91506001600160a01b03821661124657806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611142573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111669190612478565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d59190612478565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561121f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112439190612478565b91505b601f80546001600160a01b03199081166001600160a01b038581169182178455601e8054909316948116949094179091555f908152600a60209081526040808320805460ff19908116600190811790925594549095168352600c909152902080549091169091179055919050565b5f546001600160a01b031633146112dd5760405162461bcd60e51b8152600401610c88906123f9565b601f8054911515600160c01b0260ff60c01b19909216919091179055565b5f546001600160a01b031633146113245760405162461bcd60e51b8152600401610c88906123f9565b6001600160a01b03919091165f908152600c60205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146113775760405162461bcd60e51b8152600401610c88906123f9565b5f5b828110156113e35781600d5f86868581811061139757611397612493565b90506020020160208101906113ac919061223d565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556113dc816124a7565b9050611379565b50505050565b5f546001600160a01b031633146114125760405162461bcd60e51b8152600401610c88906123f9565b5f80546040516001600160a01b03909116905f8051602061250e833981519152908390a35f80546001600160a01b0319169055565b606060048054610bde906123c1565b5f610cc83384610e1c8560405180606001604052806025815260200161252e60259139335f9081526008602090815260408083206001600160a01b038d1684529091529020549190611e3e565b5f546001600160a01b031633146114cc5760405162461bcd60e51b8152600401610c88906123f9565b601f8054911515600160b01b0260ff60b01b19909216919091179055565b6001546001600160a01b031633146115505760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610c88565b60025442116115a15760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610c88565b6001545f80546040516001600160a01b0393841693909116915f8051602061250e83398151915291a36001545f80546001600160a01b0319166001600160a01b03909216919091179055565b5f610e21338484611ad8565b5f546001600160a01b031633146116225760405162461bcd60e51b8152600401610c88906123f9565b60148390556015829055601681905561163f81610cae8585611957565b601955505050565b5f546001600160a01b031633146116705760405162461bcd60e51b8152600401610c88906123f9565b601f8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906116bd90831515815260200190565b60405180910390a150565b5f546001600160a01b031633146116f15760405162461bcd60e51b8152600401610c88906123f9565b5f8054600180546001600160a01b03199081166001600160a01b0384161790915516905561171f81426124bf565b6002555f80546040516001600160a01b03909116905f8051602061250e833981519152908390a350565b5f546001600160a01b031633146117725760405162461bcd60e51b8152600401610c88906123f9565b6103e881601a546117839190612442565b61178d9190612459565b601b5550565b5f546001600160a01b031633146117bc5760405162461bcd60e51b8152600401610c88906123f9565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b5f546001600160a01b0316331461180f5760405162461bcd60e51b8152600401610c88906123f9565b6103e881601a546118209190612442565b61182a9190612459565b601c5550565b5f546001600160a01b031633146118595760405162461bcd60e51b8152600401610c88906123f9565b6001600160a01b0381166118be5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c88565b5f80546040516001600160a01b03808516939216915f8051602061250e83398151915291a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461192d5760405162461bcd60e51b8152600401610c88906123f9565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f8061196383856124bf565b905083811015610e255760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c88565b6001600160a01b038316611a175760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c88565b6001600160a01b038216611a785760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c88565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b038416611b3d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c88565b6001600160a01b038316611b9f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c88565b601f54600160c01b900460ff1615611c2b576001600160a01b0384165f908152600d602052604090205460ff16158015611bf157506001600160a01b0383165f908152600d602052604090205460ff16155b611c2b5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610c88565b601f54600160a01b900460ff1615611c4f57611c48848484611eb7565b9050610e25565b6001600160a01b0384165f908152600b602052604090205460ff16158015611c8f57506001600160a01b0383165f908152600b602052604090205460ff16155b15611d025781601b54611ca291906124bf565b821115611d025760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610c88565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f90815260079091529190912054611d53918490611e3e565b6001600160a01b0385165f90815260076020908152604080832093909355600990529081205460ff1680611d9e57506001600160a01b0384165f9081526009602052604090205460ff165b611db257611dad858585611f9a565b611db4565b825b6001600160a01b0385165f90815260076020526040902054909150611dd99082611957565b6001600160a01b038086165f8181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611e2c9085815260200190565b60405180910390a36001915050610e25565b5f8184841115611e615760405162461bcd60e51b8152600401610c889190612188565b505f611e6d84866124d2565b95945050505050565b5f610e2583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e3e565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600790915291822054611f07918490611e3e565b6001600160a01b038086165f908152600760205260408082209390935590851681522054611f359083611957565b6001600160a01b038085165f8181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f889086815260200190565b60405180910390a35060019392505050565b6001600160a01b0383165f908152600c6020526040812054819060ff1615611fe357611fdc6064611fd6601754866120a290919063ffffffff16565b90612120565b9050612020565b6001600160a01b0384165f908152600c602052604090205460ff16156120205761201d6064611fd6601854866120a290919063ffffffff16565b90505b801561209857305f9081526007602052604090205461203f9082611957565b305f81815260076020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061208f9085815260200190565b60405180910390a35b611e6d8382611e76565b5f825f036120b157505f610ccc565b5f6120bc8385612442565b9050826120c98583612459565b14610e255760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c88565b5f610e2583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f818361217c5760405162461bcd60e51b8152600401610c889190612188565b505f611e6d8486612459565b5f6020808352835180828501525f5b818110156121b357858101830151858201604001528201612197565b505f604082860101526040601f19601f8301168501019250505092915050565b5f805f606084860312156121e5575f80fd5b505081359360208301359350604090920135919050565b6001600160a01b0381168114612210575f80fd5b50565b5f8060408385031215612224575f80fd5b823561222f816121fc565b946020939093013593505050565b5f6020828403121561224d575f80fd5b8135610e25816121fc565b80358015158114612267575f80fd5b919050565b5f806040838503121561227d575f80fd5b8235612288816121fc565b915061229660208401612258565b90509250929050565b5f805f606084860312156122b1575f80fd5b83356122bc816121fc565b925060208401356122cc816121fc565b929592945050506040919091013590565b5f602082840312156122ed575f80fd5b610e2582612258565b5f60208284031215612306575f80fd5b5035919050565b5f805f6040848603121561231f575f80fd5b833567ffffffffffffffff80821115612336575f80fd5b818601915086601f830112612349575f80fd5b813581811115612357575f80fd5b8760208260051b850101111561236b575f80fd5b6020928301955093506123819186019050612258565b90509250925092565b5f806040838503121561239b575f80fd5b82356123a6816121fc565b915060208301356123b6816121fc565b809150509250929050565b600181811c908216806123d557607f821691505b6020821081036123f357634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610ccc57610ccc61242e565b5f8261247357634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215612488575f80fd5b8151610e25816121fc565b634e487b7160e01b5f52603260045260245ffd5b5f600182016124b8576124b861242e565b5060010190565b80820180821115610ccc57610ccc61242e565b81810381811115610ccc57610ccc61242e56fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207a924c843328d103b0aaf8a1671cbd5b18e251ded4238189838221cd24b3b6c164736f6c63430008140033
Deployed Bytecode Sourcemap
18165:14355:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21661:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24225:341;;;;;;;;;;-1:-1:-1;24225:341:0;;;;;:::i;:::-;;:::i;:::-;;22955:161;;;;;;;;;;-1:-1:-1;22955:161:0;;;;;:::i;:::-;;:::i;:::-;;;1509:14:1;;1502:22;1484:41;;1472:2;1457:18;22955:161:0;1344:187:1;18501:93:0;;;;;;;;;;-1:-1:-1;18501:93:0;;;;-1:-1:-1;;;;;18501:93:0;;;;;;-1:-1:-1;;;;;1716:32:1;;;1698:51;;1686:2;1671:18;18501:93:0;1536:219:1;25817:161:0;;;;;;;;;;-1:-1:-1;25817:161:0;;;;;:::i;:::-;;:::i;19868:41::-;;;;;;;;;;-1:-1:-1;19868:41:0;;;;-1:-1:-1;;;;;19868:41:0;;;21938:100;;;;;;;;;;-1:-1:-1;22018:12:0;;21938:100;;;2393:25:1;;;2381:2;2366:18;21938:100:0;2247:177:1;23884:333:0;;;;;;;;;;-1:-1:-1;23884:333:0;;;;;:::i;:::-;;:::i;25215:135::-;;;;;;;;;;-1:-1:-1;25215:135:0;;;;;:::i;:::-;;:::i;27976:313::-;;;;;;;;;;-1:-1:-1;27976:313:0;;;;;:::i;:::-;;:::i;25094:113::-;;;;;;;;;;-1:-1:-1;25094:113:0;;;;;:::i;:::-;;:::i;18601:81::-;;;;;;;;;;;;;;;26623:128;;;;;;;;;;;;;:::i;21847:83::-;;;;;;;;;;-1:-1:-1;21913:9:0;;21847:83;;21913:9;;;;3910:36:1;;3898:2;3883:18;21847:83:0;3768:184:1;22324:218:0;;;;;;;;;;-1:-1:-1;22324:218:0;;;;;:::i;:::-;;:::i;25503:159::-;;;;;;;;;;-1:-1:-1;25503:159:0;;;;;:::i;:::-;;:::i;18985:45::-;;;;;;;;;;-1:-1:-1;18985:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19979:40;;;;;;;;;;-1:-1:-1;19979:40:0;;;;-1:-1:-1;;;19979:40:0;;;;;;25670:139;;;;;;;;;;-1:-1:-1;25670:139:0;;;;;:::i;:::-;;:::i;18814:50::-;;;;;;;;;;-1:-1:-1;18814:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9689:90;;;;;;;;;;-1:-1:-1;9756:15:0;9689:90;;19341:35;;;;;;;;;;;;;;;;26893:806;;;;;;;;;;-1:-1:-1;26893:806:0;;;;;:::i;:::-;;:::i;25986:99::-;;;;;;;;;;-1:-1:-1;25986:99:0;;;;;:::i;:::-;;:::i;9591:90::-;;;;;;;;;;-1:-1:-1;9664:9:0;;9591:90;;19383:35;;;;;;;;;;;;;;;;22046:119;;;;;;;;;;-1:-1:-1;22046:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;22139:18:0;22112:7;22139:18;;;:9;:18;;;;;;;22046:119;19672:54;;;;;;;;;;;;;;;;19733:52;;;;;;;;;;;;;;;;19508:37;;;;;;;;;;;;;;;;23469:129;;;;;;;;;;-1:-1:-1;23469:129:0;;;;;:::i;:::-;;:::i;19215:36::-;;;;;;;;;;;;;;;;20120:32;;;;;;;;;;-1:-1:-1;20120:32:0;;;;-1:-1:-1;;;20120:32:0;;;;;;18930:48;;;;;;;;;;-1:-1:-1;18930:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8972:79;;;;;;;;;;-1:-1:-1;9010:7:0;9037:6;-1:-1:-1;;;;;9037:6:0;8972:79;;26093:210;;;;;;;;;;-1:-1:-1;26093:210:0;;;;;:::i;:::-;;:::i;9186:145::-;;;;;;;;;;;;;:::i;21752:87::-;;;;;;;;;;;;;:::i;22827:120::-;;;;;;;;;;-1:-1:-1;22916:23:0;;22827:120;;19552:44;;;;;;;;;;;;;;;;22550:269;;;;;;;;;;-1:-1:-1;22550:269:0;;;;;:::i;:::-;;:::i;26490:125::-;;;;;;;;;;-1:-1:-1;26490:125:0;;;;;:::i;:::-;;:::i;10021:305::-;;;;;;;;;;;;;:::i;19425:30::-;;;;;;;;;;;;;;;;27801:167;;;;;;;;;;-1:-1:-1;27801:167:0;;;;;:::i;:::-;;:::i;24574:358::-;;;;;;;;;;-1:-1:-1;24574:358:0;;;;;:::i;:::-;;:::i;19176:30::-;;;;;;;;;;;;;;;;26311:171;;;;;;;;;;-1:-1:-1;26311:171:0;;;;;:::i;:::-;;:::i;19134:35::-;;;;;;;;;;;;;;;;19916:26;;;;;;;;;;-1:-1:-1;19916:26:0;;;;-1:-1:-1;;;;;19916:26:0;;;19258:36;;;;;;;;;;;;;;;;18871:52;;;;;;;;;;-1:-1:-1;18871:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19301:31;;;;;;;;;;;;;;;;18395:99;;;;;;;;;;-1:-1:-1;18395:99:0;;;;;;;-1:-1:-1;;;;;18395:99:0;;;20026:45;;;;;;;;;;-1:-1:-1;20026:45:0;;;;-1:-1:-1;;;20026:45:0;;;;;;19092:35;;;;;;;;;;;;;;;;9787:226;;;;;;;;;;-1:-1:-1;9787:226:0;;;;;:::i;:::-;;:::i;22173:143::-;;;;;;;;;;-1:-1:-1;22173:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;22281:18:0;;;22254:7;22281:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;22173:143;24940:146;;;;;;;;;;-1:-1:-1;24940:146:0;;;;;:::i;:::-;;:::i;23741:135::-;;;;;;;;;;-1:-1:-1;23741:135:0;;;;;:::i;:::-;;:::i;19464:37::-;;;;;;;;;;;;;;;;25358:137;;;;;;;;;;-1:-1:-1;25358:137:0;;;;;:::i;:::-;;:::i;9339:244::-;;;;;;;;;;-1:-1:-1;9339:244:0;;;;;:::i;:::-;;:::i;23606:127::-;;;;;;;;;;-1:-1:-1;23606:127:0;;;;;:::i;:::-;;:::i;20078:35::-;;;;;;;;;;-1:-1:-1;20078:35:0;;;;-1:-1:-1;;;20078:35:0;;;;;;19037:46;;;;;;;;;;-1:-1:-1;19037:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21661:83;21698:13;21731:5;21724:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21661:83;:::o;24225:341::-;9099:6;;-1:-1:-1;;;;;9099:6:0;3381:10;9099:22;9091:67;;;;-1:-1:-1;;;9091:67:0;;;;;;;:::i;:::-;;;;;;;;;24349:17:::1;:35:::0;;;24395:17:::1;:35:::0;;;24441:12:::1;:25:::0;;;24500:58:::1;24456:10:::0;24500:40:::1;24369:15:::0;24415;24500:21:::1;:40::i;:::-;:44:::0;::::1;:58::i;:::-;24479:18;:79:::0;-1:-1:-1;;;24225:341:0:o;22955:161::-;23030:4;23047:39;3381:10;23070:7;23079:6;23047:8;:39::i;:::-;-1:-1:-1;23104:4:0;22955:161;;;;;:::o;25817:::-;9099:6;;-1:-1:-1;;;;;9099:6:0;3381:10;9099:22;9091:67;;;;-1:-1:-1;;;9091:67:0;;;;;;;:::i;:::-;25898:16:::1;:38:::0;;-1:-1:-1;;;;;;25898:38:0::1;-1:-1:-1::0;;;;;25898:38:0;;;::::1;::::0;;;::::1;::::0;;25968:2:::1;25947:18;:23:::0;25817:161::o;23884:333::-;9099:6;;-1:-1:-1;;;;;9099:6:0;3381:10;9099:22;9091:67;;;;-1:-1:-1;;;9091:67:0;;;;;;;:::i;:::-;24007:16:::1;:34:::0;;;24052:16:::1;:34:::0;;;24097:11:::1;:24:::0;;;24154:55:::1;24111:10:::0;24154:38:::1;24026:15:::0;24071;24154:20:::1;:38::i;:55::-;24134:17;:75:::0;-1:-1:-1;;;23884:333:0:o;25215:135::-;9099:6;;-1:-1:-1;;;;;9099:6:0;3381:10;9099:22;9091:67;;;;-1:-1:-1;;;9091:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25306:27:0;;;::::1;;::::0;;;:19:::1;:27;::::0;;;;:36;;-1:-1:-1;;25306:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25215:135::o;27976:313::-;28074:4;28091:36;28101:6;28109:9;28120:6;28091:9;:36::i;:::-;-1:-1:-1;28138:121:0;28147:6;3381:10;28169:89;28207:6;28169:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28169:19:0;;;;;;:11;:19;;;;;;;;3381:10;28169:33;;;;;;;;;;:37;:89::i;:::-;28138:8;:121::i;:::-;-1:-1:-1;28277:4:0;27976:313;;;;;;:::o;25094:113::-;9099:6;;-1:-1:-1;;;;;9099:6:0;3381:10;9099:22;9091:67;;;;-1:-1:-1;;;9091:67:0;;;;;;;:::i;:::-;25172:16:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;25172:27:0::1;-1:-1:-1::0;;;;25172:27:0;;::::1;::::0;;;::::1;::::0;;25094:113::o;26623:128::-;26730:11;-1:-1:-1;;;;;22139:18:0;26676:7;22139:18;;;:9;:18;;;;;;26703:12;;:40;;:16;:40::i;:::-;26696:47;;26623:128;:::o;22324:218::-;3381:10;22412:4;22461:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;22461:34:0;;;;;;;;;;22412:4;;22429:83;;22452:7;;22461:50;;22500:10;22461:38;:50::i;25503:159::-;9099:6;;-1:-1:-1;;;;;9099:6:0;3381:10;9099:22;9091:67;;;;-1:-1:-1;;;9091:67:0;;;;;;;:::i;:::-;25639:4:::1;25627:8;25612:12;;:23;;;;:::i;:::-;25611:32;;;;:::i;:::-;25585:23;:58:::0;-1:-1:-1;25503:159:0:o;25670:139::-;9099:6;;-1:-1:-1;;;;;9099:6:0;3381:10;9099:22;9091:67;;;;-1:-1:-1;;;9091:67:0;;;;;;;:::i;:::-;25757:22:::1;:44:::0;;-1:-1:-1;;;;;25757:44:0;;::::1;;;-1:-1:-1::0;;;;;;25757:44:0;;::::1;::::0;;;::::1;::::0;;25670:139::o;26893:806::-;26973:22;9099:6;;-1:-1:-1;;;;;9099:6:0;3381:10;9099:22;9091:67;;;;-1:-1:-1;;;9091:67:0;;;;;;;:::i;:::-;27010:35:::1;27067:16;27010:74;;27132:16;-1:-1:-1::0;;;;;27132:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;27114:53:0::1;;27176:4;27183:16;-1:-1:-1::0;;;;;27183:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27114:93;::::0;-1:-1:-1;;;;;;27114:93:0::1;::::0;;;;;;-1:-1:-1;;;;;6988:15:1;;;27114:93:0::1;::::0;::::1;6970:34:1::0;7040:15;;7020:18;;;7013:43;6905:18;;27114:93:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27097:110:::0;-1:-1:-1;;;;;;27223:28:0;::::1;27220:225;;27337:16;-1:-1:-1::0;;;;;27337:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;27319:74:0::1;;27402:4;27409:16;-1:-1:-1::0;;;;;27409:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27319:114;::::0;-1:-1:-1;;;;;;27319:114:0::1;::::0;;;;;;-1:-1:-1;;;;;6988:15:1;;;27319:114:0::1;::::0;::::1;6970:34:1::0;7040:15;;7020:18;;;7013:43;6905:18;;27319:114:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27302:131;;27220:225;27457:11;:28:::0;;-1:-1:-1;;;;;;27457:28:0;;::::1;-1:-1:-1::0;;;;;27457:28:0;;::::1;::::0;;::::1;::::0;;27519:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;27591:41:0;;;:19:::1;:41;::::0;;;;;;;:48;;-1:-1:-1;;27591:48:0;;::::1;-1:-1:-1::0;27591:48:0;;::::1;::::0;;;27671:11;;;;::::1;27650:34:::0;;:12:::1;:34:::0;;;;;:41;;;;::::1;::::0;;::::1;::::0;;27457:28;27471:14;-1:-1:-1;26893:806:0:o;25986:99::-;9099:6;;-1:-1:-1;;;;;9099:6:0;3381:10;9099:22;9091:67;;;;-1:-1:-1;;;9091:67:0;;;;;;;:::i;:::-;26054:13:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;26054:23:0::1;-1:-1:-1::0;;;;26054:23:0;;::::1;::::0;;;::::1;::::0;;25986:99::o;23469:129::-;9099:6;;-1:-1:-1;;;;;9099:6:0;3381:10;9099:22;9091:67;;;;-1:-1:-1;;;9091:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23558:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:32;;-1:-1:-1;;23558:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23469:129::o;26093:210::-;9099:6;;-1:-1:-1;;;;;9099:6:0;3381:10;9099:22;9091:67;;;;-1:-1:-1;;;9091:67:0;;;;;;;:::i;:::-;26195:9:::1;26190:106;26206:20:::0;;::::1;26190:106;;;26278:6;26248:13;:27;26262:9;;26272:1;26262:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;26248:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;26248:27:0;:36;;-1:-1:-1;;26248:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26228:3:::1;::::0;::::1;:::i;:::-;;;26190:106;;;;26093:210:::0;;;:::o;9186:145::-;9099:6;;-1:-1:-1;;;;;9099:6:0;3381:10;9099:22;9091:67;;;;-1:-1:-1;;;9091:67:0;;;;;;;:::i;:::-;9290:1:::1;9274:6:::0;;9253:40:::1;::::0;-1:-1:-1;;;;;9274:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;9253:40:0;9290:1;;9253:40:::1;9321:1;9304:19:::0;;-1:-1:-1;;;;;;9304:19:0::1;::::0;;9186:145::o;21752:87::-;21791:13;21824:7;21817:14;;;;;:::i;22550:269::-;22643:4;22660:129;3381:10;22683:7;22692:96;22731:15;22692:96;;;;;;;;;;;;;;;;;3381:10;22692:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;22692:34:0;;;;;;;;;;;;:38;:96::i;26490:125::-;9099:6;;-1:-1:-1;;;;;9099:6:0;3381:10;9099:22;9091:67;;;;-1:-1:-1;;;9091:67:0;;;;;;;:::i;:::-;26571:25:::1;:36:::0;;;::::1;;-1:-1:-1::0;;;26571:36:0::1;-1:-1:-1::0;;;;26571:36:0;;::::1;::::0;;;::::1;::::0;;26490:125::o;10021:305::-;10073:14;;-1:-1:-1;;;;;10073:14:0;10091:10;10073:28;10065:76;;;;-1:-1:-1;;;10065:76:0;;7541:2:1;10065:76:0;;;7523:21:1;7580:2;7560:18;;;7553:30;7619:34;7599:18;;;7592:62;-1:-1:-1;;;7670:18:1;;;7663:33;7713:19;;10065:76:0;7339:399:1;10065:76:0;10178:9;;10160:15;:27;10152:72;;;;-1:-1:-1;;;10152:72:0;;7945:2:1;10152:72:0;;;7927:21:1;7984:2;7964:18;;;7957:30;8023:33;8003:18;;;7996:61;8074:18;;10152:72:0;7743:355:1;10152:72:0;10269:14;;;10261:6;;10240:44;;-1:-1:-1;;;;;10269:14:0;;;;10261:6;;;;-1:-1:-1;;;;;;;;;;;10240:44:0;;10304:14;;;10295:23;;-1:-1:-1;;;;;;10295:23:0;-1:-1:-1;;;;;10304:14:0;;;10295:23;;;;;;10021:305::o;27801:167::-;27879:4;27896:42;3381:10;27920:9;27931:6;27896:9;:42::i;24574:358::-;9099:6;;-1:-1:-1;;;;;9099:6:0;3381:10;9099:22;9091:67;;;;-1:-1:-1;;;9091:67:0;;;;;;;:::i;:::-;24715:15:::1;:35:::0;;;24761:15:::1;:35:::0;;;24807:10:::1;:25:::0;;;24872:52:::1;24820:12:::0;24872:36:::1;24733:17:::0;24779;24872:19:::1;:36::i;:52::-;24845:24;:79:::0;-1:-1:-1;;;24574:358:0:o;26311:171::-;9099:6;;-1:-1:-1;;;;;9099:6:0;3381:10;9099:22;9091:67;;;;-1:-1:-1;;;9091:67:0;;;;;;;:::i;:::-;26388:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;26388:32:0::1;-1:-1:-1::0;;;;26388:32:0;;::::1;;::::0;;26436:38:::1;::::0;::::1;::::0;::::1;::::0;26412:8;1509:14:1;1502:22;1484:41;;1472:2;1457:18;;1344:187;26436:38:0::1;;;;;;;;26311:171:::0;:::o;9787:226::-;9099:6;;-1:-1:-1;;;;;9099:6:0;3381:10;9099:22;9091:67;;;;-1:-1:-1;;;9091:67:0;;;;;;;:::i;:::-;9868:6:::1;::::0;;;9851:23;;-1:-1:-1;;;;;;9851:23:0;;::::1;-1:-1:-1::0;;;;;9868:6:0;::::1;9851:23;::::0;;;9885:19:::1;::::0;;9927:22:::1;9945:4:::0;9927:15:::1;:22;:::i;:::-;9915:9;:34:::0;10002:1:::1;9986:6:::0;;9965:40:::1;::::0;-1:-1:-1;;;;;9986:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;9965:40:0;10002:1;;9965:40:::1;9787:226:::0;:::o;24940:146::-;9099:6;;-1:-1:-1;;;;;9099:6:0;3381:10;9099:22;9091:67;;;;-1:-1:-1;;;9091:67:0;;;;;;;:::i;:::-;25063:4:::1;25048:11;25033:12;;:26;;;;:::i;:::-;25032:35;;;;:::i;:::-;25017:12;:50:::0;-1:-1:-1;24940:146:0:o;23741:135::-;9099:6;;-1:-1:-1;;;;;9099:6:0;3381:10;9099:22;9091:67;;;;-1:-1:-1;;;9091:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23831:26:0;;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:37;;-1:-1:-1;;23831:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23741:135::o;25358:137::-;9099:6;;-1:-1:-1;;;;;9099:6:0;3381:10;9099:22;9091:67;;;;-1:-1:-1;;;9091:67:0;;;;;;;:::i;:::-;25472:4:::1;25460:8;25445:12;;:23;;;;:::i;:::-;25444:32;;;;:::i;:::-;25430:10;:46:::0;-1:-1:-1;25358:137:0:o;9339:244::-;9099:6;;-1:-1:-1;;;;;9099:6:0;3381:10;9099:22;9091:67;;;;-1:-1:-1;;;9091:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9428:22:0;::::1;9420:73;;;::::0;-1:-1:-1;;;9420:73:0;;8435:2:1;9420:73:0::1;::::0;::::1;8417:21:1::0;8474:2;8454:18;;;8447:30;8513:34;8493:18;;;8486:62;-1:-1:-1;;;8564:18:1;;;8557:36;8610:19;;9420:73:0::1;8233:402:1::0;9420:73:0::1;9530:6;::::0;;9509:38:::1;::::0;-1:-1:-1;;;;;9509:38:0;;::::1;::::0;9530:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;9509:38:0;::::1;9558:6;:17:::0;;-1:-1:-1;;;;;;9558:17:0::1;-1:-1:-1::0;;;;;9558:17:0;;;::::1;::::0;;;::::1;::::0;;9339:244::o;23606:127::-;9099:6;;-1:-1:-1;;;;;9099:6:0;3381:10;9099:22;9091:67;;;;-1:-1:-1;;;9091:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23693:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;23693:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23606:127::o;4353:181::-;4411:7;;4443:5;4447:1;4443;:5;:::i;:::-;4431:17;;4472:1;4467;:6;;4459:46;;;;-1:-1:-1;;;4459:46:0;;8842:2:1;4459:46:0;;;8824:21:1;8881:2;8861:18;;;8854:30;8920:29;8900:18;;;8893:57;8967:18;;4459:46:0;8640:351:1;23124:337:0;-1:-1:-1;;;;;23217:19:0;;23209:68;;;;-1:-1:-1;;;23209:68:0;;9198:2:1;23209:68:0;;;9180:21:1;9237:2;9217:18;;;9210:30;9276:34;9256:18;;;9249:62;-1:-1:-1;;;9327:18:1;;;9320:34;9371:19;;23209:68:0;8996:400:1;23209:68:0;-1:-1:-1;;;;;23296:21:0;;23288:68;;;;-1:-1:-1;;;23288:68:0;;9603:2:1;23288:68:0;;;9585:21:1;9642:2;9622:18;;;9615:30;9681:34;9661:18;;;9654:62;-1:-1:-1;;;9732:18:1;;;9725:32;9774:19;;23288:68:0;9401:398:1;23288:68:0;-1:-1:-1;;;;;23369:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;23421:32;;2393:25:1;;;23421:32:0;;2366:18:1;23421:32:0;;;;;;;23124:337;;;:::o;28297:1181::-;28384:4;-1:-1:-1;;;;;28411:20:0;;28403:70;;;;-1:-1:-1;;;28403:70:0;;10006:2:1;28403:70:0;;;9988:21:1;10045:2;10025:18;;;10018:30;10084:34;10064:18;;;10057:62;-1:-1:-1;;;10135:18:1;;;10128:35;10180:19;;28403:70:0;9804:401:1;28403:70:0;-1:-1:-1;;;;;28492:23:0;;28484:71;;;;-1:-1:-1;;;28484:71:0;;10412:2:1;28484:71:0;;;10394:21:1;10451:2;10431:18;;;10424:30;10490:34;10470:18;;;10463:62;-1:-1:-1;;;10541:18:1;;;10534:33;10584:19;;28484:71:0;10210:399:1;28484:71:0;28571:13;;-1:-1:-1;;;28571:13:0;;;;28568:118;;;-1:-1:-1;;;;;28609:21:0;;;;;;:13;:21;;;;;;;;28608:22;:51;;;;-1:-1:-1;;;;;;28635:24:0;;;;;;:13;:24;;;;;;;;28634:25;28608:51;28600:74;;;;-1:-1:-1;;;28600:74:0;;10816:2:1;28600:74:0;;;10798:21:1;10855:2;10835:18;;;10828:30;-1:-1:-1;;;10874:18:1;;;10867:41;10925:18;;28600:74:0;10614:335:1;28600:74:0;28701:16;;-1:-1:-1;;;28701:16:0;;;;28698:773;;;28750:41;28765:6;28773:9;28784:6;28750:14;:41::i;:::-;28743:48;;;;28698:773;-1:-1:-1;;;;;28846:23:0;;;;;;:15;:23;;;;;;;;28845:24;:55;;;;-1:-1:-1;;;;;;28874:26:0;;;;;;:15;:26;;;;;;;;28873:27;28845:55;28842:179;;;28954:6;28939:12;;:21;;;;:::i;:::-;28929:6;:31;;28921:84;;;;-1:-1:-1;;;28921:84:0;;11156:2:1;28921:84:0;;;11138:21:1;11195:2;11175:18;;;11168:30;11234:34;11214:18;;;11207:62;-1:-1:-1;;;11285:18:1;;;11278:38;11333:19;;28921:84:0;10954:404:1;28921:84:0;29059:53;;;;;;;;;;;-1:-1:-1;;;29059:53:0;;;;;;;;-1:-1:-1;;;;;29059:17:0;;-1:-1:-1;29059:17:0;;;:9;:17;;;;;;;;:53;;29081:6;;29059:21;:53::i;:::-;-1:-1:-1;;;;;29039:17:0;;;;;;:9;:17;;;;;;;;:73;;;;29150:17;:25;;;;;;;;;:57;;-1:-1:-1;;;;;;29179:28:0;;;;;;:17;:28;;;;;;;;29150:57;29149:147;;29262:34;29270:6;29278:9;29289:6;29262:7;:34::i;:::-;29149:147;;;29253:6;29149:147;-1:-1:-1;;;;;29334:20:0;;;;;;:9;:20;;;;;;29127:169;;-1:-1:-1;29334:37:0;;29127:169;29334:24;:37::i;:::-;-1:-1:-1;;;;;29311:20:0;;;;;;;:9;:20;;;;;;;:60;;;;29393:40;;;;;;;;;;29421:11;2393:25:1;;2381:2;2366:18;;2247:177;29393:40:0;;;;;;;;29455:4;29448:11;;;;;4686:192;4772:7;4808:12;4800:6;;;;4792:29;;;;-1:-1:-1;;;4792:29:0;;;;;;;;:::i;:::-;-1:-1:-1;4832:9:0;4844:5;4848:1;4844;:5;:::i;:::-;4832:17;4686:192;-1:-1:-1;;;;;4686:192:0:o;4542:136::-;4600:7;4627:43;4631:1;4634;4627:43;;;;;;;;;;;;;;;;;:3;:43::i;29486:330::-;29616:53;;;;;;;;;;;-1:-1:-1;;;29616:53:0;;;;;;;;-1:-1:-1;;;;;29616:17:0;;29579:4;29616:17;;;:9;:17;;;;;;;:53;;29638:6;;29616:21;:53::i;:::-;-1:-1:-1;;;;;29596:17:0;;;;;;;:9;:17;;;;;;:73;;;;29703:20;;;;;;;:32;;29728:6;29703:24;:32::i;:::-;-1:-1:-1;;;;;29680:20:0;;;;;;;:9;:20;;;;;;;:55;;;;29751:35;;;;;;;;;;29779:6;2393:25:1;;2381:2;2366:18;;2247:177;29751:35:0;;;;;;;;-1:-1:-1;29804:4:0;29486:330;;;;;:::o;31917:598::-;-1:-1:-1;;;;;32062:20:0;;32003:7;32062:20;;;:12;:20;;;;;;32003:7;;32062:20;;32059:223;;;32111:38;32145:3;32111:29;32122:17;;32111:6;:10;;:29;;;;:::i;:::-;:33;;:38::i;:::-;32099:50;;32059:223;;;-1:-1:-1;;;;;32179:23:0;;;;;;:12;:23;;;;;;;;32176:106;;;32231:39;32266:3;32231:30;32242:18;;32231:6;:10;;:30;;;;:::i;:39::-;32219:51;;32176:106;32297:13;;32294:173;;32372:4;32354:24;;;;:9;:24;;;;;;:39;;32383:9;32354:28;:39::i;:::-;32345:4;32327:24;;;;:9;:24;;;;;;;:66;;;;32413:42;;-1:-1:-1;;;;;32413:42:0;;;;;;;32445:9;2393:25:1;;2381:2;2366:18;;2247:177;32413:42:0;;;;;;;;32294:173;32486:21;:6;32497:9;32486:10;:21::i;4886:250::-;4944:7;4968:1;4973;4968:6;4964:47;;-1:-1:-1;4998:1:0;4991:8;;4964:47;5023:9;5035:5;5039:1;5035;:5;:::i;:::-;5023:17;-1:-1:-1;5068:1:0;5059:5;5063:1;5023:17;5059:5;:::i;:::-;:10;5051:56;;;;-1:-1:-1;;;5051:56:0;;11698:2:1;5051:56:0;;;11680:21:1;11737:2;11717:18;;;11710:30;11776:34;11756:18;;;11749:62;-1:-1:-1;;;11827:18:1;;;11820:31;11868:19;;5051:56:0;11496:397:1;5144:132:0;5202:7;5229:39;5233:1;5236;5229:39;;;;;;;;;;;;;;;;;5370:7;5405:12;5398:5;5390:28;;;;-1:-1:-1;;;5390:28:0;;;;;;;;:::i;:::-;-1:-1:-1;5429:9:0;5441:5;5445:1;5441;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:316::-;644:6;652;660;713:2;701:9;692:7;688:23;684:32;681:52;;;729:1;726;719:12;681:52;-1:-1:-1;;752:23:1;;;822:2;807:18;;794:32;;-1:-1:-1;873:2:1;858:18;;;845:32;;567:316;-1:-1:-1;567:316:1:o;888:131::-;-1:-1:-1;;;;;963:31:1;;953:42;;943:70;;1009:1;1006;999:12;943:70;888:131;:::o;1024:315::-;1092:6;1100;1153:2;1141:9;1132:7;1128:23;1124:32;1121:52;;;1169:1;1166;1159:12;1121:52;1208:9;1195:23;1227:31;1252:5;1227:31;:::i;:::-;1277:5;1329:2;1314:18;;;;1301:32;;-1:-1:-1;;;1024:315:1:o;1760:247::-;1819:6;1872:2;1860:9;1851:7;1847:23;1843:32;1840:52;;;1888:1;1885;1878:12;1840:52;1927:9;1914:23;1946:31;1971:5;1946:31;:::i;2429:160::-;2494:20;;2550:13;;2543:21;2533:32;;2523:60;;2579:1;2576;2569:12;2523:60;2429:160;;;:::o;2594:315::-;2659:6;2667;2720:2;2708:9;2699:7;2695:23;2691:32;2688:52;;;2736:1;2733;2726:12;2688:52;2775:9;2762:23;2794:31;2819:5;2794:31;:::i;:::-;2844:5;-1:-1:-1;2868:35:1;2899:2;2884:18;;2868:35;:::i;:::-;2858:45;;2594:315;;;;;:::o;2914:456::-;2991:6;2999;3007;3060:2;3048:9;3039:7;3035:23;3031:32;3028:52;;;3076:1;3073;3066:12;3028:52;3115:9;3102:23;3134:31;3159:5;3134:31;:::i;:::-;3184:5;-1:-1:-1;3241:2:1;3226:18;;3213:32;3254:33;3213:32;3254:33;:::i;:::-;2914:456;;3306:7;;-1:-1:-1;;;3360:2:1;3345:18;;;;3332:32;;2914:456::o;3375:180::-;3431:6;3484:2;3472:9;3463:7;3459:23;3455:32;3452:52;;;3500:1;3497;3490:12;3452:52;3523:26;3539:9;3523:26;:::i;3957:180::-;4016:6;4069:2;4057:9;4048:7;4044:23;4040:32;4037:52;;;4085:1;4082;4075:12;4037:52;-1:-1:-1;4108:23:1;;3957:180;-1:-1:-1;3957:180:1:o;4142:689::-;4234:6;4242;4250;4303:2;4291:9;4282:7;4278:23;4274:32;4271:52;;;4319:1;4316;4309:12;4271:52;4359:9;4346:23;4388:18;4429:2;4421:6;4418:14;4415:34;;;4445:1;4442;4435:12;4415:34;4483:6;4472:9;4468:22;4458:32;;4528:7;4521:4;4517:2;4513:13;4509:27;4499:55;;4550:1;4547;4540:12;4499:55;4590:2;4577:16;4616:2;4608:6;4605:14;4602:34;;;4632:1;4629;4622:12;4602:34;4687:7;4680:4;4670:6;4667:1;4663:14;4659:2;4655:23;4651:34;4648:47;4645:67;;;4708:1;4705;4698:12;4645:67;4739:4;4731:13;;;;-1:-1:-1;4763:6:1;-1:-1:-1;4788:37:1;;4804:20;;;-1:-1:-1;4788:37:1;:::i;:::-;4778:47;;4142:689;;;;;:::o;4836:388::-;4904:6;4912;4965:2;4953:9;4944:7;4940:23;4936:32;4933:52;;;4981:1;4978;4971:12;4933:52;5020:9;5007:23;5039:31;5064:5;5039:31;:::i;:::-;5089:5;-1:-1:-1;5146:2:1;5131:18;;5118:32;5159:33;5118:32;5159:33;:::i;:::-;5211:7;5201:17;;;4836:388;;;;;:::o;5229:380::-;5308:1;5304:12;;;;5351;;;5372:61;;5426:4;5418:6;5414:17;5404:27;;5372:61;5479:2;5471:6;5468:14;5448:18;5445:38;5442:161;;5525:10;5520:3;5516:20;5513:1;5506:31;5560:4;5557:1;5550:15;5588:4;5585:1;5578:15;5442:161;;5229:380;;;:::o;5614:356::-;5816:2;5798:21;;;5835:18;;;5828:30;5894:34;5889:2;5874:18;;5867:62;5961:2;5946:18;;5614:356::o;5975:127::-;6036:10;6031:3;6027:20;6024:1;6017:31;6067:4;6064:1;6057:15;6091:4;6088:1;6081:15;6107:168;6180:9;;;6211;;6228:15;;;6222:22;;6208:37;6198:71;;6249:18;;:::i;6280:217::-;6320:1;6346;6336:132;;6390:10;6385:3;6381:20;6378:1;6371:31;6425:4;6422:1;6415:15;6453:4;6450:1;6443:15;6336:132;-1:-1:-1;6482:9:1;;6280:217::o;6502:251::-;6572:6;6625:2;6613:9;6604:7;6600:23;6596:32;6593:52;;;6641:1;6638;6631:12;6593:52;6673:9;6667:16;6692:31;6717:5;6692:31;:::i;7067:127::-;7128:10;7123:3;7119:20;7116:1;7109:31;7159:4;7156:1;7149:15;7183:4;7180:1;7173:15;7199:135;7238:3;7259:17;;;7256:43;;7279:18;;:::i;:::-;-1:-1:-1;7326:1:1;7315:13;;7199:135::o;8103:125::-;8168:9;;;8189:10;;;8186:36;;;8202:18;;:::i;11363:128::-;11430:9;;;11451:11;;;11448:37;;;11465:18;;:::i
Swarm Source
ipfs://7a924c843328d103b0aaf8a1671cbd5b18e251ded4238189838221cd24b3b6c1
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in FRAX
0
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.