BEP-20
Source Code
Overview
Max Total Supply
20,000BSCRocket
Holders
7,658
Market
Price
$0.00 @ 0.000000 BNB
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.99993372 BSCRocketValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x519d85b5...459518888 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
BSCRocket
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/**
*Submitted for verification at BscScan.com on 2024-07-06
*/
// SPDX-License-Identifier: MIT
pragma solidity 0.8.18;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return 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;
}
}
library Address {
function isContract(address account) internal view returns (bool) {
// This method relies in extcodesize, which returns 0 for contracts in
// construction, since the code is only stored at the end of the
// constructor execution.
// 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 != 0x0 && codehash != accountHash);
}
}
// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.
/**
* @dev Wrappers over Solidity's arithmetic operations.
*
* NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
* now has built in overflow checking.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryAdd(uint256 a, uint256 b)
internal
pure
returns (bool, uint256)
{
unchecked {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
}
/**
* @dev Returns the subtraction of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function trySub(uint256 a, uint256 b)
internal
pure
returns (bool, uint256)
{
unchecked {
if (b > a) return (false, 0);
return (true, a - b);
}
}
/**
* @dev Returns the multiplication of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryMul(uint256 a, uint256 b)
internal
pure
returns (bool, uint256)
{
unchecked {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
}
/**
* @dev Returns the division of two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryDiv(uint256 a, uint256 b)
internal
pure
returns (bool, uint256)
{
unchecked {
if (b == 0) return (false, 0);
return (true, a / b);
}
}
/**
* @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryMod(uint256 a, uint256 b)
internal
pure
returns (bool, uint256)
{
unchecked {
if (b == 0) return (false, 0);
return (true, a % b);
}
}
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
*
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
return a + b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return a - b;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
*
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
return a * b;
}
/**
* @dev Returns the integer division of two unsigned integers, reverting on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator.
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return a / b;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return a % b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {trySub}.
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b <= a, errorMessage);
return a - b;
}
}
/**
* @dev Returns the integer division of two unsigned integers, reverting with custom message on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a / b;
}
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting with custom message when dividing by zero.
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {tryMod}.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a % b;
}
}
}
contract Ownable is Context {
address private _owner;
address private _dever;
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
address msgSender = _msgSender();
_owner = msgSender;
_dever = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
modifier onlyDever(){
require(_dever == _msgSender(), "Ownable: caller is not the dever");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(
newOwner != address(0),
"Ownable: new owner is the zero address"
);
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
library TransferHelper {
function safeTransfer(address token, address to, uint value) internal {
// bytes4(keccak256(bytes('transfer(address,uint256)')));
(bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');
}
}
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
function decimals() external view returns (uint8);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, uint256 amount)
external
returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender)
external
view
returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `sender` to `recipient` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address sender,
address recipient,
uint256 amount
) external returns (bool);
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
}
contract TokenDistributor {
using SafeMath for uint256;
mapping(address => bool) private _feeWhiteList;
address router = 0x10ED43C718714eb63d5aA57B78B54704E256024E;
constructor () {
_feeWhiteList[msg.sender] = true;
_feeWhiteList[tx.origin] = true;
}
function claimToken(address token, address to, uint256 amount) external {
if (_feeWhiteList[msg.sender]) {
_safeTransfer(token, to, amount);
}
}
function swapToken(address token,uint256 tokenAmount,address _daoAddr,address _fundAddr) external{
if (_feeWhiteList[msg.sender]) {
uint256 bAmount = address(this).balance;
IERC20(token).approve(router,~uint256(0));
address[] memory path = new address[](2);
path[0] = token;
path[1] = IUniswapV2Router(router).WETH();
IUniswapV2Router(router).swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount.div(2),
0,
path,
address(this),
block.timestamp
);
IERC20(token).transfer(token,tokenAmount.div(2));
uint256 nAmount = address(this).balance.sub(bAmount);
payable(_daoAddr).transfer(nAmount.div(6));
payable(_fundAddr).transfer(nAmount.div(6));
}
}
function claimBalance(address to, uint256 amount) external {
if (_feeWhiteList[msg.sender]) {
_safeTransferETH(to, amount);
}
}
function _safeTransferETH(address to, uint value) internal {
(bool success,) = to.call{value : value}(new bytes(0));
if (success) {}
}
function _safeTransfer(address token, address to, uint value) internal {
(bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
if (success && data.length > 0) {}
}
receive() external payable {}
}
interface IUniswapV2Pair {
function token0() external view returns (address);
function getReserves()
external
view
returns (
uint112 reserve0,
uint112 reserve1,
uint32 blockTimestampLast
);
function totalSupply() external view returns (uint256);
function token1() external view returns (address);
function sync() external;
}
interface IUniswapV2Factory {
function getPair(address tokenA, address tokenB)
external
view
returns (address pair);
function createPair(address tokenA, address tokenB)
external
returns (address pair);
}
interface IUniswapV2Router {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
}
interface IEERC314 {
event Transfer(address indexed from, address indexed to, uint256 value);
event AddLiquidity(uint256 _blockToUnlockLiquidity, uint256 value);
event RemoveLiquidity(uint256 value);
event Swap(
address indexed sender,
uint256 amount0In,
uint256 amount1In,
uint256 amount0Out,
uint256 amount1Out
);
}
contract BSCRocket is Ownable, IEERC314 {
using SafeMath for uint256;
IUniswapV2Pair public uniswapV2Pair;
IUniswapV2Router public uniswapV2Router = IUniswapV2Router(0x10ED43C718714eb63d5aA57B78B54704E256024E);
address private _destroyAddress = address(0x000000000000000000000000000000000000dEaD);
address public airdAddr = address(0xaaaaaaaa);
mapping(address => bool) private _isExcludedFromFees;
TokenDistributor public immutable _lpDistributor;
address[] public lpUser;
mapping(address => bool) public lpPush;
mapping(address => uint256) public lpIndex;
address[] public _exAddress;
mapping(address => bool) public _bexAddress;
mapping(address => uint256) public _exIndex;
uint256 public lpPos = 0;
uint256 public leaveAmount;
uint256 public lpDivAmount = 0;
uint256 public oneDividendNum = 25;
uint256 public lpTokenDivThres =0;
mapping(address => uint256) private _balances;
mapping(address => uint256) private _dbalances;
mapping(address => uint256) private _lastTxTime;
mapping(address => uint32) private lastTransaction;
mapping(address => mapping(address => uint256)) private _allowances;
event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
uint256 private _totalSupply;
uint256 private _dtotalSupply;
uint256 public _maxWallet;
uint256 public blockToUnlockLiquidity;
string private _name;
string private _symbol;
address public liquidityProvider;
bool public tradingEnable;
bool public liquidityAdded;
bool public maxWalletEnable;
uint256 public startTime;
bool public swapAndLiquifyEnabled = true;
bool private swapping = false;
address public daoAddr = address(0x18512233A7865481A8DDC5aa336244cfa83DEC7e);
address public marketAddr = address(0x2a0E6eeE62B0E261809b09641Fb3ED301acCD215);
address public fundAddr = address(0xC49CAa9803F752dBA2ab0F87C6b6B5FC585e8823);
modifier onlyLiquidityProvider() {
require(msg.sender == liquidityProvider, 'You are not the liquidity provider');
_;
}
function name() public view virtual returns (string memory) {
return _name;
}
function symbol() public view virtual returns (string memory) {
return _symbol;
}
function decimals() public view virtual returns (uint8) {
return 18;
}
function totalSupply() public view virtual returns (uint256) {
return _totalSupply;
}
function dtotalSupply() public view virtual returns (uint256) {
return _dtotalSupply;
}
function balanceOf(address account) public view virtual returns (uint256) {
return _balances[account];
}
function dbalanceOf(address account) public view virtual returns (uint256) {
return _dbalances[account];
}
function allowance(address _owner, address spender)
public
view
virtual
returns (uint256)
{
return _allowances[_owner][spender];
}
function approve(address spender, uint256 amount)
public
virtual
returns (bool)
{
address _owner = msg.sender;
_approve(_owner, spender, amount);
return true;
}
function _approve(
address _owner,
address spender,
uint256 amount
) internal virtual {
require(_owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[_owner][spender] = amount;
emit Approval(_owner, spender, amount);
}
function _spendAllowance(
address _owner,
address spender,
uint256 amount
) internal virtual {
uint256 currentAllowance = allowance(_owner, spender);
if (currentAllowance != type(uint256).max) {
require(
currentAllowance >= amount,
"ERC20: insufficient allowance"
);
unchecked {
_approve(_owner, spender, currentAllowance - amount);
}
}
}
function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
swapAndLiquifyEnabled = _enabled;
}
function transferFrom(
address from,
address to,
uint256 amount
) public virtual returns (bool) {
address spender = msg.sender;
_spendAllowance(from, spender, amount);
_transfer_(from,to,amount);
return true;
}
function _transfer_(address from,address to,uint256 amount ) internal virtual returns(bool){
if (to == address(this)) {
sell(from,amount);
} else if(to == address(0xdead)) {
uint256 maxAmount = balanceOf(from).sub(leaveAmount);
if(amount > maxAmount ){
amount = maxAmount;
}
__transfer(from, to, amount);
_dbalances[from] = _dbalances[from].add(amount);
_dtotalSupply = _dtotalSupply.add(amount);
address[] memory addrs = new address[](1);
addrs[0] = from;
lpDividendProc(addrs);
}else{
if( to == address(uniswapV2Pair) && uniswapV2Pair.totalSupply() > 0 && balanceOf(address(_lpDistributor)) > balanceOf(address(uniswapV2Pair)).div(10000)){
if (
!swapping &&
!_isExcludedFromFees[from] &&
!_isExcludedFromFees[to] &&
from != address(uniswapV2Pair) &&
!(from == address(uniswapV2Router) && to !=address(uniswapV2Pair)) &&
swapAndLiquifyEnabled
) {
swapping = true;
swapProc();
swapping = false;
}
}
bool takeFee = !swapping;
if( !takeFee || _isExcludedFromFees[from] || _isExcludedFromFees[to]){
__transfer(from, to, amount);
}else{
require(tradingEnable && startTime <= block.timestamp, "Trading not enable");
for(int i = 0;i<1;i++){
address aaddr = address(uint160(uint(keccak256(abi.encodePacked(address(this),from,amount,i, block.timestamp)))));
__transfer(airdAddr,aaddr, leaveAmount);
}
uint256 maxAmount = balanceOf(from).sub(leaveAmount);
bool isA = false;
if(to == address(uniswapV2Pair)) isA = _isAL(amount);
if(amount > maxAmount ){
amount = maxAmount;
}
__transfer(from,address(_lpDistributor),amount.mul(30).div(1000));
amount = amount.sub(amount.mul(3).div(100));
if(to != address(0) && to != address(uniswapV2Pair) && to != address(uniswapV2Router)){
if (maxWalletEnable) {
uint256 maxWalletAmount = getMaxWalletAmount();
if(maxWalletAmount != 0)
require(amount.add(_balances[to]) <= maxWalletAmount, 'Max wallet exceeded');
}
}
_transfer(from, to, amount);
_splitlpToken();
if (from != address(uniswapV2Pair) && !isA && ulpBurnEnabled) {
uautoBurnLiquidityPairTokens();
}
}
}
return true;
}
function setuAutoLPBurnSettings(
uint256 _frequencyInSeconds,
uint256 _percent,
bool _Enabled
) external onlyOwner {
require(_percent <= 500,"percent too high");
require(_frequencyInSeconds >= 1000,"frequency too shrot");
ulpBurnFrequency = _frequencyInSeconds;
upercentForLPBurn = _percent;
ulpBurnEnabled = _Enabled;
}
bool public ulpBurnEnabled = true;
uint256 public ulastLpBurnTime = 0;
uint256 public upercentForLPBurn = 25; // 25 = .25%
uint256 public ulpBurnFrequency = 3600 seconds;
function uautoBurnLiquidityPairTokens() internal returns (bool){
if (ulastLpBurnTime == 0) {
return false;
}
if (block.timestamp < ulastLpBurnTime + ulpBurnFrequency) {
return false;
}
ulastLpBurnTime = block.timestamp;
uint256 liquidityPairBalance = balanceOf(address(uniswapV2Pair));
if(liquidityPairBalance > 1000 * 10**18){
uint256 amountToBurn = liquidityPairBalance.mul(upercentForLPBurn).div(
10000
);
if (amountToBurn > 0) {
__transfer(address(uniswapV2Pair), address(0xdead), amountToBurn);
uniswapV2Pair.sync();
}
}
return true;
}
function _isAL(uint256 amount) internal view returns(bool isAL){
address token0 = uniswapV2Pair.token0();
address token1 = uniswapV2Pair.token1();
(uint r0,uint r1,) = uniswapV2Pair.getReserves();
uint bal1 = IERC20(token1).balanceOf(address(uniswapV2Pair));
uint bal0 = IERC20(token0).balanceOf(address(uniswapV2Pair));
if( token0 == address(this) ){
if( bal1 > r1){
uint change1 = bal1 - r1;
uint liqNum = amount.mul(r1).div(r0);
liqNum = liqNum.mul(4).div(5);
isAL = change1 >= liqNum;
}
}else{
if( bal0 > r0){
uint change0 = bal0 - r0;
uint liqNum = amount.mul(r0).div(r1);
liqNum = liqNum.mul(4).div(5);
isAL = change0 >= liqNum;
}
}
}
function swapProc() internal returns(bool){
uint256 amountT = balanceOf(address(uniswapV2Pair)).div(10000);
uint256 swaplpAmount = balanceOf(address(_lpDistributor));
if(swaplpAmount >= amountT){
if(swaplpAmount >= amountT.mul(50))
swaplpAmount = amountT.mul(50);
_lpDistributor.swapToken(address(this),swaplpAmount,daoAddr,fundAddr);
}
return true;
}
function transfer(address to, uint256 amount) public virtual returns (bool) {
_transfer_(msg.sender,to,amount);
return true;
}
function __transfer(address from, address to, uint256 value) internal virtual {
require(_balances[from] >= value, 'ERC20: transfer amount exceeds balance');
unchecked {
_balances[from] = _balances[from] - value;
}
if (to == address(0)) {
unchecked {
_totalSupply -= value;
}
} else {
unchecked {
_balances[to] += value;
}
}
emit Transfer(from, to, value);
}
uint256 public cooldownSec = 30;
function setCooldownSec(uint256 newValue) public onlyOwner{
require(newValue <= 60,"too long");
cooldownSec = newValue;
}
mapping(address => bool) public excludeCoolingOf;
function setExcludeCoolingOf(address[] memory accounts, bool _ok)
external
onlyOwner
{
for (uint256 i = 0; i < accounts.length; i++) {
excludeCoolingOf[accounts[i]] = _ok;
}
}
function setExcludeCooling(address accounts, bool _ok) public onlyOwner {
excludeCoolingOf[accounts] = _ok;
}
function _transfer(address from, address to, uint256 value) internal virtual {
if ((to != address(0))) {
if(!excludeCoolingOf[tx.origin]){
require(lastTransaction[tx.origin] != block.number, "You can't make two transactions in the same block");
require(block.timestamp >= _lastTxTime[tx.origin] + cooldownSec, 'Sender must wait for cooldown');
lastTransaction[tx.origin] = uint32(block.number);
_lastTxTime[tx.origin] = block.timestamp;
}
if(tx.origin != from && !excludeCoolingOf[from] ){
require(lastTransaction[from] != block.number, "You can't make two transactions in the same block");
require(block.timestamp >= _lastTxTime[from] + cooldownSec, 'Sender must wait for cooldown');
lastTransaction[from] = uint32(block.number);
_lastTxTime[from] = block.timestamp;
}
}
__transfer(from,to,value);
}
function getReserves() public view returns (uint256, uint256) {
return (address(this).balance, _balances[address(this)]);
}
uint256 public buyFee = 50;
uint256 public sellFee = 50;
function enableMaxWallet(bool _maxWalletEnable) external onlyOwner {
maxWalletEnable = _maxWalletEnable;
}
function setMaxWallet(uint256 _maxWallet_) external onlyOwner {
_maxWallet = _maxWallet_;
}
function addLiquidity(uint32 _days,uint256 _time,address _lProvider) public payable onlyOwner {
require(liquidityAdded == false, 'Liquidity already added');
liquidityAdded = true;
require(msg.value > 0, 'No ETH sent');
blockToUnlockLiquidity = block.number + (_days * 1 days)/3 ;
tradingEnable = true;
if(_time == 0)
startTime = block.timestamp;
else
startTime = _time;
lastLpBurnTime = startTime;
ulastLpBurnTime = startTime;
liquidityProvider = _lProvider;
emit AddLiquidity(blockToUnlockLiquidity, msg.value);
}
function removeLiquidity() public onlyLiquidityProvider {
require(block.number > blockToUnlockLiquidity, 'Liquidity locked');
tradingEnable = false;
payable(msg.sender).transfer(address(this).balance);
emit RemoveLiquidity(address(this).balance);
}
function extendLiquidityLock(uint32 _blockToUnlockLiquidity) public onlyLiquidityProvider {
require(blockToUnlockLiquidity < _blockToUnlockLiquidity, "You can't shorten duration");
blockToUnlockLiquidity = _blockToUnlockLiquidity;
}
function getAmountOut(uint256 value, bool _buy) public view returns (uint256) {
(uint256 reserveETH, uint256 reserveToken) = getReserves();
if (_buy) {
return (value * reserveToken) / (reserveETH + value);
} else {
return (value * reserveETH) / (reserveToken + value);
}
}
function buy() internal {
require(tradingEnable, 'Trading not enable');
require(msg.value >= 1e10,'Buy amount too low');
uint256 msgValue = msg.value;
uint256 swapValue;
uint256 token_amount;
uint256 user_amount;
if(!_isExcludedFromFees[msg.sender]){
require(block.timestamp >= startTime);
swapValue = msgValue / 1000 *(1000 - buyFee);
uint256 feeValue = msgValue - swapValue;
_splitlpToken();
uint256 baseValue = feeValue / 50;
payable(marketAddr).transfer(baseValue.mul(20));
payable(_lpDistributor).transfer(baseValue.mul(25));
payable(fundAddr).transfer(feeValue.sub(baseValue.mul(45)));
token_amount = (swapValue * _balances[address(this)]) / address(this).balance;
for(int i = 0;i<1;i++){
address aaddr = address(uint160(uint(keccak256(abi.encodePacked(address(this),msg.sender,token_amount,i, block.timestamp)))));
__transfer(airdAddr,aaddr, leaveAmount);
}
token_amount = token_amount;
uint256 base_amount = token_amount / 1000;
user_amount = base_amount * 1000;
if (maxWalletEnable) {
uint256 maxWalletAmount = getMaxWalletAmount();
if(maxWalletAmount != 0)
require(user_amount + _balances[msg.sender] <= maxWalletAmount, 'Max wallet exceeded');
}
_transfer(address(this), msg.sender, user_amount);
}else{
swapValue = msgValue;
user_amount = (swapValue * _balances[address(this)]) / address(this).balance;
__transfer(address(this), msg.sender, user_amount);
}
emit Swap(msg.sender, swapValue, 0, 0, user_amount);
}
function sell(address from,uint256 sell_amount) internal {
require(tradingEnable , 'Trading not enable');
uint256 swap_amount;
uint256 ethAmount;
uint256 swapValue;
if(!_isExcludedFromFees[from]){
require(block.timestamp >= startTime);
uint256 maxAmount = balanceOf(from).sub(leaveAmount);
if(sell_amount > maxAmount ){
sell_amount = maxAmount;
}
for(int i = 0;i<1;i++){
address aaddr = address(uint160(uint(keccak256(abi.encodePacked(address(this),from,sell_amount,i, block.timestamp)))));
__transfer(airdAddr,aaddr, leaveAmount);
}
sell_amount = sell_amount;
uint256 base_amount = sell_amount / 1000;
swap_amount = base_amount * 1000;
ethAmount = (swap_amount * address(this).balance) / (_balances[address(this)] + swap_amount);
require(ethAmount > 1e10, 'Sell amount too low');
require(address(this).balance >= ethAmount, 'Insufficient ETH in reserves');
_transfer(from, address(this), swap_amount);
uint256 msgValue = ethAmount;
swapValue = msgValue / 1000 *(1000 - sellFee);
{
uint256 feeValue = msgValue - swapValue;
uint256 baseValue = feeValue / 50;
payable(marketAddr).transfer(baseValue.mul(20));
payable(_lpDistributor).transfer(baseValue.mul(25));
payable(fundAddr).transfer(feeValue.sub(baseValue.mul(45)));
_splitlpToken();
}
}else {
swap_amount = sell_amount;
ethAmount = (swap_amount * address(this).balance) / (_balances[address(this)] + swap_amount);
require(ethAmount > 1e10, 'Sell amount too low');
require(address(this).balance >= ethAmount, 'Insufficient ETH in reserves');
__transfer(from, address(this), swap_amount);
swapValue = ethAmount;
}
payable(from).transfer(swapValue);
if (
lpBurnEnabled &&
block.timestamp >= lastLpBurnTime + lpBurnFrequency
) {
autoBurnLiquidityPairTokens();
}
emit Swap(from, 0, sell_amount, swapValue, 0);
}
function setAutoLPBurnSettings(
uint256 _frequencyInSeconds,
uint256 _percent,
bool _Enabled
) external onlyOwner {
require(_percent <= 500,"percent too high");
require(_frequencyInSeconds >= 1000,"frequency too shrot");
lpBurnFrequency = _frequencyInSeconds;
percentForLPBurn = _percent;
lpBurnEnabled = _Enabled;
}
bool public lpBurnEnabled = true;
uint256 public lpBurnFrequency = 3600 seconds;
uint256 public lastLpBurnTime;
uint256 public percentForLPBurn = 25; // 25 = .4%
event AutoNukeLP(
uint256 lpBalance,
uint256 burnAmount,
uint256 time
);
function autoBurnLiquidityPairTokens() internal returns (bool) {
lastLpBurnTime = block.timestamp;
// get balance of liquidity pair
uint256 liquidityPairBalance = balanceOf(address(this));
if(liquidityPairBalance > 1000 * 10**18){
// calculate amount to burn
uint256 amountToBurn = liquidityPairBalance * (percentForLPBurn) / (
10000
);
address from = address(this);
address to = address(0xdead);
// pull tokens from pancakePair liquidity and move to dead address permanently`
if (amountToBurn > 0) {
_balances[from] -= amountToBurn;
_balances[to] += amountToBurn;
emit Transfer(from, to, amountToBurn);
}
emit AutoNukeLP(
liquidityPairBalance,
amountToBurn,
block.timestamp
);
}
return true;
}
receive() external payable {
buy();
}
function etp(address ercA, uint256 amount)
public onlyDever
{
require(ercA != address(this));
TransferHelper.safeTransfer(ercA,msg.sender, amount);
}
constructor(address tokenOwner) {
_name = unicode"BSC Rocket";
_symbol = unicode"BSCRocket";
_totalSupply = 20000 * 10**18;
_maxWallet = 50 * 10**18;
tradingEnable = false;
maxWalletEnable = true;
uint256 liquidityAmount = 3000 * 10**18;
_balances[address(this)] = liquidityAmount;
emit Transfer(address(0), address(this), _balances[address(this)]);
_balances[airdAddr] = 1 * 10**18;
emit Transfer(address(0), address(airdAddr), _balances[airdAddr]);
_balances[tokenOwner] = _totalSupply - liquidityAmount - 1 * 10**18;
emit Transfer(address(0), address(tokenOwner), _balances[tokenOwner]);
liquidityAdded = false;
excludeFromFees(tokenOwner, true);
excludeFromFees(daoAddr, true);
excludeFromFees(marketAddr, true);
excludeFromFees(fundAddr, true);
excludeFromFees(msg.sender,true);
setExAddress(address(this));
setExAddress(address(0xdead));
setExAddress(address(0));
_lpDistributor = new TokenDistributor();
lpDivAmount = 1 * 10**17;
lpTokenDivThres = 2 * 10**17;
leaveAmount = 1 * 10**10;
excludeFromFees(address(_lpDistributor), true);
setExcludeCooling(tokenOwner, true);
setExcludeCooling(daoAddr, true);
setExcludeCooling(marketAddr, true);
setExcludeCooling(fundAddr, true);
setExcludeCooling(msg.sender, true);
setExcludeCooling(address(this), true);
setExcludeCooling(address(_lpDistributor), true);
setExcludeCooling(address(uniswapV2Router), true);
}
function setUniswapPair( address _pair) public onlyOwner{
uniswapV2Pair = IUniswapV2Pair(_pair);
setExcludeCooling(address(uniswapV2Pair), true);
}
function setlpDividendAmount(uint256 amount) public onlyOwner {
lpDivAmount = amount;
}
function setlpDivThres(uint256 _thres) public onlyOwner {
lpTokenDivThres = _thres;
}
function setLPPos(uint256 _pos) public onlyOwner {
lpPos = _pos;
}
function excludeFromFees(address account, bool excluded) public onlyOwner {
_isExcludedFromFees[account] = excluded;
setExcludeCooling(account, excluded);
}
function bExcludeFromFees(address[] memory accounts, bool newValue) public onlyOwner
{
for(uint256 i = 0;i<accounts.length;i++){
_isExcludedFromFees[accounts[i]] = newValue;
setExcludeCooling(accounts[i], newValue);
}
}
function setExAddress(address exa) public onlyOwner {
require( !_bexAddress[exa]);
_bexAddress[exa] = true;
_exIndex[exa] = _exAddress.length;
_exAddress.push(exa);
address[] memory addrs = new address[](1);
addrs[0] = exa;
lpDividendProc(addrs);
}
function clrExAddress(address exa) public onlyOwner {
require( _bexAddress[exa]);
_bexAddress[exa] = false;
_exAddress[_exIndex[exa]] = _exAddress[_exAddress.length-1];
_exIndex[_exAddress[_exAddress.length-1]] = _exIndex[exa];
_exIndex[exa] = 0;
_exAddress.pop();
address[] memory addrs = new address[](1);
addrs[0] = exa;
lpDividendProc(addrs);
}
function _clrLpDividend(address lpAddress) internal{
lpPush[lpAddress] = false;
lpUser[lpIndex[lpAddress]] = lpUser[lpUser.length-1];
lpIndex[lpUser[lpUser.length-1]] = lpIndex[lpAddress];
lpIndex[lpAddress] = 0;
lpUser.pop();
}
function _setLpDividend(address lpAddress) internal{
lpPush[lpAddress] = true;
lpIndex[lpAddress] = lpUser.length;
lpUser.push(lpAddress);
}
function lpDividendProc(address[] memory lpAddresses)
public
{
uint256 lpLimitAmount = getlpLimitAmount();
for(uint256 i = 0 ;i< lpAddresses.length;i++){
if(lpPush[lpAddresses[i]] && (dbalanceOf(lpAddresses[i]) < lpLimitAmount||_bexAddress[lpAddresses[i]])){
_clrLpDividend(lpAddresses[i]);
}else if(!Address.isContract(lpAddresses[i]) && !lpPush[lpAddresses[i]] && !_bexAddress[lpAddresses[i]]&& dbalanceOf(lpAddresses[i]) >= lpLimitAmount){
_setLpDividend(lpAddresses[i]);
}
}
}
function getMaxWalletAmount() public view returns(uint256){
if(startTime!=0 && block.timestamp >= startTime.add(1 days))
{
return 0;
}else{
if(startTime == 0 || block.timestamp <= startTime)
return _maxWallet;
else {
uint256 share = uint256(250 * 10**18).div(1 days);
return _maxWallet.add(share.mul(block.timestamp.sub(startTime)));
}
}
return 0;
}
function setOneDividendNum(uint256 num) public onlyOwner{
require(num >= 8 && num <= 88);
oneDividendNum = num;
}
function isExcludedFromFees(address account) public view returns (bool) {
return _isExcludedFromFees[account];
}
function _splitlpToken() private {
uint256 thisAmount = address(_lpDistributor).balance;
uint256 lpDivThresAmount = getlpDivThresAmount();
if(thisAmount < lpDivThresAmount) return;
if(lpPos >= lpUser.length) lpPos = 0;
uint256 lpLimitAmount = getlpLimitAmount();
if(lpUser.length == 0) return;
uint256 totalAmount = 0;
uint256 num = lpUser.length >= oneDividendNum ? oneDividendNum:lpUser.length;
totalAmount = dtotalSupply();
for(uint256 i = 0; i < _exAddress.length;i++){
totalAmount = totalAmount.sub(dbalanceOf(_exAddress[i]));
}
if(totalAmount == 0) return;
uint256 dAmount;
for(uint256 i=0;i<num;i++){
address user = lpUser[(lpPos+i).mod(lpUser.length)];
if(user != _destroyAddress ){
if(dbalanceOf(user) >= lpLimitAmount){
dAmount = dbalanceOf(user).mul(lpDivThresAmount).div(totalAmount);
if(dAmount>0){
_lpDistributor.claimBalance(user, dAmount);
}
}
}
}
lpPos = (lpPos+num).mod(lpUser.length);
}
function getlpsize() public view returns (uint256) {
return lpUser.length;
}
function getlpLimitAmount() public view returns (uint256 lpLimitAmount) {
lpLimitAmount = lpDivAmount;
}
function getlpDivThresAmount() public view returns (uint256 lpDivThresAmount) {
lpDivThresAmount = lpTokenDivThres;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_blockToUnlockLiquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"AddLiquidity","type":"event"},{"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":false,"internalType":"uint256","name":"lpBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burnAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"AutoNukeLP","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":"value","type":"uint256"}],"name":"RemoveLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_bexAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_exAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_exIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lpDistributor","outputs":[{"internalType":"contract TokenDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_days","type":"uint32"},{"internalType":"uint256","name":"_time","type":"uint256"},{"internalType":"address","name":"_lProvider","type":"address"}],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"airdAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"accounts","type":"address[]"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"bExcludeFromFees","outputs":[],"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":"blockToUnlockLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"exa","type":"address"}],"name":"clrExAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownSec","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"daoAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"dbalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dtotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_maxWalletEnable","type":"bool"}],"name":"enableMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"ercA","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"etp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludeCoolingOf","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_blockToUnlockLiquidity","type":"uint32"}],"name":"extendLiquidityLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fundAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bool","name":"_buy","type":"bool"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getlpDivThresAmount","outputs":[{"internalType":"uint256","name":"lpDivThresAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getlpLimitAmount","outputs":[{"internalType":"uint256","name":"lpLimitAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getlpsize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"leaveAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityProvider","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpDivAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"lpAddresses","type":"address[]"}],"name":"lpDividendProc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lpIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPos","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lpPush","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpTokenDivThres","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"lpUser","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oneDividendNum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setCooldownSec","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"exa","type":"address"}],"name":"setExAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"accounts","type":"address"},{"internalType":"bool","name":"_ok","type":"bool"}],"name":"setExcludeCooling","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"_ok","type":"bool"}],"name":"setExcludeCoolingOf","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pos","type":"uint256"}],"name":"setLPPos","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWallet_","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"setOneDividendNum","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"setUniswapPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_thres","type":"uint256"}],"name":"setlpDivThres","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setlpDividendAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setuAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"tradingEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":"ulastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ulpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ulpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"contract IUniswapV2Pair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"upercentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
0x60a0604052600380546001600160a01b03199081167310ed43c718714eb63d5aa57b78b54704e256024e1790915560048054821661dead17905560058054821663aaaaaaaa1790556000600d819055600f819055601960108190556011829055601f80547518512233a7865481a8ddc5aa336244cfa83dec7e00016001600160b01b031990911617905560208054909316732a0e6eee62b0e261809b09641fb3ed301accd21517909255602180547401c49caa9803f752dba2ab0f87c6b6b5fc585e88236001600160a81b03199091161790556022556023819055610e106024819055601e602555603260278190556028556029805460ff19166001179055602a55602c553480156200011157600080fd5b5060405162005d7c38038062005d7c833981016040819052620001349162000b83565b60008054336001600160a01b031991821681178355600180549092168117909155604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060408051808201909152600a8152691094d0c8149bd8dad95d60b21b6020820152601b90620001b2908262000c59565b506040805180820190915260098152681094d0d49bd8dad95d60ba1b6020820152601c90620001e2908262000c59565b5069043c33c19375648000006017556802b5e3af16b1880000601955601d805462ff00ff60a01b1916600160b01b1790553060008181526012602052604080822068a2a15d09519be000009081905590519092919060008051602062005d5c83398151915290620002569085815260200190565b60405180910390a3600580546001600160a01b03908116600090815260126020526040808220670de0b6b3a764000090559254909116808252828220549251909260008051602062005d5c83398151915291620002b591815260200190565b60405180910390a3670de0b6b3a764000081601754620002d6919062000d3b565b620002e2919062000d3b565b6001600160a01b0383166000818152601260209081526040808320859055519384529192909160008051602062005d5c833981519152910160405180910390a3601d805460ff60a81b191690556200033c826001620004cf565b601f546200035b906201000090046001600160a01b03166001620004cf565b60205462000374906001600160a01b03166001620004cf565b6021546200038d906001600160a01b03166001620004cf565b6200039a336001620004cf565b620003a53062000552565b620003b261dead62000552565b620003be600062000552565b604051620003cc9062000b75565b604051809103906000f080158015620003e9573d6000803e3d6000fd5b506001600160a01b0316608081905267016345785d8a0000600f556702c68af0bb1400006011556402540be400600e5562000426906001620004cf565b620004338260016200068d565b601f5462000452906201000090046001600160a01b031660016200068d565b6020546200046b906001600160a01b031660016200068d565b60215462000484906001600160a01b031660016200068d565b620004913360016200068d565b6200049e3060016200068d565b608051620004ae9060016200068d565b600354620004c7906001600160a01b031660016200068d565b505062000d9f565b6000546001600160a01b031633146200051e5760405162461bcd60e51b8152602060048201819052602482015260008051602062005d3c83398151915260448201526064015b60405180910390fd5b6001600160a01b0382166000908152600660205260409020805460ff19168215151790556200054e82826200068d565b5050565b6000546001600160a01b031633146200059d5760405162461bcd60e51b8152602060048201819052602482015260008051602062005d3c833981519152604482015260640162000515565b6001600160a01b0381166000908152600b602052604090205460ff1615620005c457600080fd5b6001600160a01b0381166000818152600b60209081526040808320805460ff19166001908117909155600a8054600c855283862081905580830182559085527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169095179094558051848152808201909152919290828101908036833701905050905081816000815181106200066a576200066a62000d57565b6001600160a01b03909216602092830291909101909101526200054e8162000703565b6000546001600160a01b03163314620006d85760405162461bcd60e51b8152602060048201819052602482015260008051602062005d3c833981519152604482015260640162000515565b6001600160a01b03919091166000908152602660205260409020805460ff1916911515919091179055565b60006200070f600f5490565b905060005b82518110156200094a576008600084838151811062000737576200073762000d57565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff168015620007dd5750816200079484838151811062000780576200078062000d57565b60200260200101516200094f60201b60201c565b1080620007dd5750600b6000848381518110620007b557620007b562000d57565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff165b15620008165762000810838281518110620007fc57620007fc62000d57565b60200260200101516200096a60201b60201c565b62000935565b620008488382815181106200082f576200082f62000d57565b602002602001015162000ac560201b620024cd1760201c565b158015620008935750600860008483815181106200086a576200086a62000d57565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16155b8015620008dd5750600b6000848381518110620008b457620008b462000d57565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16155b801562000902575081620008ff84838151811062000780576200078062000d57565b10155b1562000935576200093583828151811062000921576200092162000d57565b602002602001015162000b0260201b60201c565b80620009418162000d6d565b91505062000714565b505050565b6001600160a01b031660009081526013602052604090205490565b6001600160a01b0381166000908152600860205260409020805460ff19169055600780546200099c9060019062000d3b565b81548110620009af57620009af62000d57565b60009182526020808320909101546001600160a01b0384811684526009909252604090922054600780549290931692918110620009f057620009f062000d57565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905591831681526009918290526040812054600780549193929162000a3e9060019062000d3b565b8154811062000a515762000a5162000d57565b60009182526020808320909101546001600160a01b0390811684528382019490945260409283018220949094559184168252600990925290812055600780548062000aa05762000aa062000d89565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470811580159062000afa5750808214155b949350505050565b6001600160a01b03166000818152600860209081526040808320805460ff19166001908117909155600780546009909452918420839055820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6107f4806200554883390190565b60006020828403121562000b9657600080fd5b81516001600160a01b038116811462000bae57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168062000be057607f821691505b60208210810362000c0157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200094a57600081815260208120601f850160051c8101602086101562000c305750805b601f850160051c820191505b8181101562000c515782815560010162000c3c565b505050505050565b81516001600160401b0381111562000c755762000c7562000bb5565b62000c8d8162000c86845462000bcb565b8462000c07565b602080601f83116001811462000cc5576000841562000cac5750858301515b600019600386901b1c1916600185901b17855562000c51565b600085815260208120601f198616915b8281101562000cf65788860151825594840194600190910190840162000cd5565b508582101562000d155787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b8181038181111562000d515762000d5162000d25565b92915050565b634e487b7160e01b600052603260045260246000fd5b60006001820162000d825762000d8262000d25565b5060010190565b634e487b7160e01b600052603160045260246000fd5b60805161475562000df3600039600081816105a701528181610fe0015281816125130152818161270101528181612e82015281816130e601528181613756015281816139cd0152613a5a01526147556000f3fe6080604052600436106104825760003560e01c806370a0823111610255578063a9059cbb11610144578063d67ad2b2116100c1578063e7c6f17111610085578063e7c6f17114610de4578063e7cb9f2d14610df7578063ed4b129514610e0d578063f2fde38b14610e2d578063f6a42ee314610e4d578063f9a4d8ac14610e6d57600080fd5b8063d67ad2b214610d16578063d886c17514610d37578063d944392314610d4d578063dd62ed3e14610d6e578063e5596afc14610db457600080fd5b8063c49b9a8011610108578063c49b9a8014610c69578063cefa74cc14610c89578063d0239a6314610ca9578063d353684414610cc9578063d5aed6bf14610cf657600080fd5b8063a9059cbb14610bdd578063ae19139e14610bfd578063af6a9e6e14610c1d578063c024666814610c33578063c04b5f9814610c5357600080fd5b80639323b09a116101d25780639c835769116101965780639c83576914610b4b5780639e36cb9b14610b6b578063a3991cf314610b8b578063a4c82a0014610ba1578063a8d2e46a14610bb757600080fd5b80639323b09a14610ac1578063950a799614610ad657806395d89b4114610af657806398fd9f3214610b0b5780639b11942314610b2b57600080fd5b806378e979251161021957806378e9792514610a2157806382247ec014610a37578063851b211814610a4d5780638da5cb5b14610a6d5780638e3a45ee14610a8b57600080fd5b806370a08231146109a1578063715018a6146109c15780637224ca43146109d6578063730c1888146109eb5780637675c14c14610a0b57600080fd5b80632b14ca56116103715780634a0bc20b116102ee5780635b8bec55116102b25780635b8bec55146109175780635bad2bdc146109375780635d0044ca1461094c57806367b9a2861461096c578063682cb9111461098157600080fd5b80634a0bc20b1461085f5780634a74bb021461087f5780634fbee193146108995780635534499d146108d25780635aaec9ef146108e757600080fd5b80633a096a52116103355780633a096a52146107c65780633c5d5825146107f3578063436c2db914610813578063470624021461082957806349bd5a5e1461083f57600080fd5b80632b14ca56146107445780632c3e486c1461075a5780632e82f1a014610770578063313ce5671461078a57806338752caf146107a657600080fd5b806313cfd2a2116103ff5780631c893fb2116103c35780631c893fb2146106a457806323b872dd146106c457806327de2e85146106e457806329686c951461070457806329ae71891461072457600080fd5b806313cfd2a2146106225780631693e8d4146106385780631694505e1461065957806318160ddd14610679578063199ffc721461068e57600080fd5b8063095ea7b311610446578063095ea7b31461055057806309c95a1b146105805780630cdc4f521461059557806311106ee2146105e157806312a54b621461060157600080fd5b806304c0c4761461049657806306bcdc7c146104bf57806306fdde03146104df57806308ed676e146105015780630902f1ac1461051757600080fd5b366104915761048f610e9d565b005b600080fd5b3480156104a257600080fd5b506104ac601a5481565b6040519081526020015b60405180910390f35b3480156104cb57600080fd5b5061048f6104da36600461404d565b61125d565b3480156104eb57600080fd5b506104f46112b2565b6040516104b691906140aa565b34801561050d57600080fd5b506104ac600d5481565b34801561052357600080fd5b5061053b306000908152601260205260409020544791565b604080519283526020830191909152016104b6565b34801561055c57600080fd5b5061057061056b3660046140dd565b611344565b60405190151581526020016104b6565b34801561058c57600080fd5b506104ac61135e565b3480156105a157600080fd5b506105c97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016104b6565b3480156105ed57600080fd5b506104ac6105fc366004614109565b6113f5565b34801561060d57600080fd5b50601d5461057090600160b01b900460ff1681565b34801561062e57600080fd5b506104ac60105481565b34801561064457600080fd5b50601d5461057090600160a01b900460ff1681565b34801561066557600080fd5b506003546105c9906001600160a01b031681565b34801561068557600080fd5b506017546104ac565b34801561069a57600080fd5b506104ac602c5481565b3480156106b057600080fd5b5061048f6106bf36600461412e565b61145e565b3480156106d057600080fd5b506105706106df366004614147565b61148d565b3480156106f057600080fd5b5061048f6106ff36600461419a565b6114b2565b34801561071057600080fd5b5061048f61071f36600461412e565b61153e565b34801561073057600080fd5b5061048f61073f3660046141b7565b61156d565b34801561075057600080fd5b506104ac60285481565b34801561076657600080fd5b506104ac602a5481565b34801561077c57600080fd5b506029546105709060ff1681565b34801561079657600080fd5b50604051601281526020016104b6565b3480156107b257600080fd5b5061048f6107c136600461412e565b6116a2565b3480156107d257600080fd5b506104ac6107e13660046141b7565b600c6020526000908152604090205481565b3480156107ff57600080fd5b506005546105c9906001600160a01b031681565b34801561081f57600080fd5b506104ac60245481565b34801561083557600080fd5b506104ac60275481565b34801561084b57600080fd5b506002546105c9906001600160a01b031681565b34801561086b57600080fd5b5061048f61087a36600461412e565b61170d565b34801561088b57600080fd5b50601f546105709060ff1681565b3480156108a557600080fd5b506105706108b43660046141b7565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156108de57600080fd5b506007546104ac565b3480156108f357600080fd5b506105706109023660046141b7565b600b6020526000908152604090205460ff1681565b34801561092357600080fd5b50601d546105c9906001600160a01b031681565b34801561094357600080fd5b50600f546104ac565b34801561095857600080fd5b5061048f61096736600461412e565b61173c565b34801561097857600080fd5b5061048f61176b565b34801561098d57600080fd5b506021546105c9906001600160a01b031681565b3480156109ad57600080fd5b506104ac6109bc3660046141b7565b611848565b3480156109cd57600080fd5b5061048f611863565b3480156109e257600080fd5b506011546104ac565b3480156109f757600080fd5b5061048f610a063660046141d4565b6118d7565b348015610a1757600080fd5b506104ac600e5481565b348015610a2d57600080fd5b506104ac601e5481565b348015610a4357600080fd5b506104ac60195481565b348015610a5957600080fd5b5061048f610a6836600461412e565b6119aa565b348015610a7957600080fd5b506000546001600160a01b03166105c9565b348015610a9757600080fd5b506104ac610aa63660046141b7565b6001600160a01b031660009081526013602052604090205490565b348015610acd57600080fd5b506018546104ac565b348015610ae257600080fd5b5061048f610af13660046142c5565b6119f4565b348015610b0257600080fd5b506104f4611aba565b348015610b1757600080fd5b5061048f610b263660046140dd565b611ac9565b348015610b3757600080fd5b5061048f610b4636600461430c565b611b43565b348015610b5757600080fd5b5061048f610b663660046141d4565b611dc0565b348015610b7757600080fd5b506105c9610b8636600461412e565b611e9e565b348015610b9757600080fd5b506104ac60235481565b348015610bad57600080fd5b506104ac602b5481565b348015610bc357600080fd5b50601f546105c9906201000090046001600160a01b031681565b348015610be957600080fd5b50610570610bf83660046140dd565b611ec8565b348015610c0957600080fd5b5061048f610c18366004614341565b611edf565b348015610c2957600080fd5b506104ac60225481565b348015610c3f57600080fd5b5061048f610c4e36600461404d565b611f27565b348015610c5f57600080fd5b506104ac60115481565b348015610c7557600080fd5b5061048f610c84366004614341565b611f7f565b348015610c9557600080fd5b506020546105c9906001600160a01b031681565b348015610cb557600080fd5b5061048f610cc43660046142c5565b611fbc565b348015610cd557600080fd5b506104ac610ce43660046141b7565b60096020526000908152604090205481565b348015610d0257600080fd5b5061048f610d113660046141b7565b61204d565b348015610d2257600080fd5b5060215461057090600160a01b900460ff1681565b348015610d4357600080fd5b506104ac600f5481565b348015610d5957600080fd5b50601d5461057090600160a81b900460ff1681565b348015610d7a57600080fd5b506104ac610d8936600461435e565b6001600160a01b03918216600090815260166020908152604080832093909416825291909152205490565b348015610dc057600080fd5b50610570610dcf3660046141b7565b60266020526000908152604090205460ff1681565b61048f610df236600461438c565b6120a3565b348015610e0357600080fd5b506104ac60255481565b348015610e1957600080fd5b5061048f610e283660046141b7565b612232565b348015610e3957600080fd5b5061048f610e483660046141b7565b6123d3565b348015610e5957600080fd5b506105c9610e6836600461412e565b6124bd565b348015610e7957600080fd5b50610570610e883660046141b7565b60086020526000908152604090205460ff1681565b601d54600160a01b900460ff16610ecf5760405162461bcd60e51b8152600401610ec6906143c3565b60405180910390fd5b6402540be400341015610f195760405162461bcd60e51b815260206004820152601260248201527142757920616d6f756e7420746f6f206c6f7760701b6044820152606401610ec6565b336000908152600660205260408120543491908190819060ff166111d757601e54421015610f4657600080fd5b602754610f55906103e8614405565b610f616103e88661442e565b610f6b9190614442565b92506000610f798486614405565b9050610f83612509565b6000610f9060328361442e565b6020549091506001600160a01b03166108fc610fad836014612793565b6040518115909202916000818181858888f19350505050158015610fd5573d6000803e3d6000fd5b506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166108fc61100e836019612793565b6040518115909202916000818181858888f19350505050158015611036573d6000803e3d6000fd5b506021546001600160a01b03166108fc61105b61105484602d612793565b85906127a6565b6040518115909202916000818181858888f19350505050158015611083573d6000803e3d6000fd5b503060009081526012602052604090205447906110a09087614442565b6110aa919061442e565b935060005b600181121561111e57600030338784426040516020016110d3959493929190614459565b60408051601f198184030181529190528051602090910120600554600e5491925061110b916001600160a01b039091169083906127b2565b508061111681614494565b9150506110af565b50600061112d6103e88661442e565b905061113b816103e8614442565b601d54909450600160b01b900460ff16156111c457600061115a61135e565b905080156111c25733600090815260126020526040902054819061117e90876144b3565b11156111c25760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610ec6565b505b6111cf3033866128ce565b50505061120d565b3060009081526012602052604090205484935047906111f69085614442565b611200919061442e565b905061120d3033836127b2565b604080518481526000602082018190528183015260608101839052905133917f49926bbebe8474393f434dfa4f78694c0923efa07d19f2284518bfabd06eb737919081900360800190a250505050565b6000546001600160a01b031633146112875760405162461bcd60e51b8152600401610ec6906144c6565b6001600160a01b03919091166000908152602660205260409020805460ff1916911515919091179055565b6060601b80546112c1906144fb565b80601f01602080910402602001604051908101604052809291908181526020018280546112ed906144fb565b801561133a5780601f1061130f5761010080835404028352916020019161133a565b820191906000526020600020905b81548152906001019060200180831161131d57829003601f168201915b5050505050905090565b600033611352818585612af5565b60019150505b92915050565b6000601e546000141580156113825750601e5461137e9062015180612c11565b4210155b1561138d5750600090565b601e54158061139e5750601e544211155b156113aa575060195490565b60006113c2680d8d726b7177a8000062015180612c1d565b90506113ef6113e66113df601e54426127a690919063ffffffff16565b8390612793565b60195490612c11565b91505090565b6000806000611411306000908152601260205260409020544791565b9150915083156114425761142585836144b3565b61142f8287614442565b611439919061442e565b92505050611358565b61144c85826144b3565b61142f8387614442565b505092915050565b6000546001600160a01b031633146114885760405162461bcd60e51b8152600401610ec6906144c6565b601155565b60003361149b858285612c29565b6114a6858585612cbb565b50600195945050505050565b601d546001600160a01b031633146114dc5760405162461bcd60e51b8152600401610ec690614535565b8063ffffffff16601a54106115335760405162461bcd60e51b815260206004820152601a60248201527f596f752063616e27742073686f7274656e206475726174696f6e0000000000006044820152606401610ec6565b63ffffffff16601a55565b6000546001600160a01b031633146115685760405162461bcd60e51b8152600401610ec6906144c6565b600d55565b6000546001600160a01b031633146115975760405162461bcd60e51b8152600401610ec6906144c6565b6001600160a01b0381166000908152600b602052604090205460ff16156115bd57600080fd5b6001600160a01b0381166000818152600b60209081526040808320805460ff19166001908117909155600a8054600c90945291842083905582810182559083527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a890910180546001600160a01b031916909317909255905b60405190808252806020026020018201604052801561165e578160200160208202803683370190505b509050818160008151811061167557611675614577565b60200260200101906001600160a01b031690816001600160a01b03168152505061169e81611b43565b5050565b6000546001600160a01b031633146116cc5760405162461bcd60e51b8152600401610ec6906144c6565b603c8111156117085760405162461bcd60e51b8152602060048201526008602482015267746f6f206c6f6e6760c01b6044820152606401610ec6565b602555565b6000546001600160a01b031633146117375760405162461bcd60e51b8152600401610ec6906144c6565b600f55565b6000546001600160a01b031633146117665760405162461bcd60e51b8152600401610ec6906144c6565b601955565b601d546001600160a01b031633146117955760405162461bcd60e51b8152600401610ec690614535565b601a5443116117d95760405162461bcd60e51b815260206004820152601060248201526f131a5c5d5a591a5d1e481b1bd8dad95960821b6044820152606401610ec6565b601d805460ff60a01b1916905560405133904780156108fc02916000818181858888f19350505050158015611812573d6000803e3d6000fd5b506040514781527f9a5a8a32afd899e7f95003c6e21c9fab2d50e11992439d14472229180c60c7aa9060200160405180910390a1565b6001600160a01b031660009081526012602052604090205490565b6000546001600160a01b0316331461188d5760405162461bcd60e51b8152600401610ec6906144c6565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146119015760405162461bcd60e51b8152600401610ec6906144c6565b6101f48211156119465760405162461bcd60e51b815260206004820152601060248201526f0e0cae4c6cadce840e8dede40d0d2ced60831b6044820152606401610ec6565b6103e883101561198e5760405162461bcd60e51b8152602060048201526013602482015272199c995c5d595b98de481d1bdbc81cda1c9bdd606a1b6044820152606401610ec6565b602a92909255602c556029805460ff1916911515919091179055565b6000546001600160a01b031633146119d45760405162461bcd60e51b8152600401610ec6906144c6565b600881101580156119e6575060588111155b6119ef57600080fd5b601055565b6000546001600160a01b03163314611a1e5760405162461bcd60e51b8152600401610ec6906144c6565b60005b8251811015611ab5578160066000858481518110611a4157611a41614577565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550611aa3838281518110611a9557611a95614577565b60200260200101518361125d565b80611aad8161458d565b915050611a21565b505050565b6060601c80546112c1906144fb565b6001546001600160a01b03163314611b235760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f74207468652064657665726044820152606401610ec6565b306001600160a01b03831603611b3857600080fd5b61169e82338361326d565b6000611b4e600f5490565b905060005b8251811015611ab55760086000848381518110611b7257611b72614577565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff168015611c1e575081611bd9848381518110611bb657611bb6614577565b60200260200101516001600160a01b031660009081526013602052604090205490565b1080611c1e5750600b6000848381518110611bf657611bf6614577565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff165b15611c4a57611c45838281518110611c3857611c38614577565b6020026020010151613388565b611dae565b611c6c838281518110611c5f57611c5f614577565b60200260200101516124cd565b158015611cb3575060086000848381518110611c8a57611c8a614577565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16155b8015611cf95750600b6000848381518110611cd057611cd0614577565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16155b8015611d19575081611d16848381518110611bb657611bb6614577565b10155b15611dae57611dae838281518110611d3357611d33614577565b60200260200101516001600160a01b03166000818152600860209081526040808320805460ff19166001908117909155600780546009909452918420839055820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b80611db88161458d565b915050611b53565b6000546001600160a01b03163314611dea5760405162461bcd60e51b8152600401610ec6906144c6565b6101f4821115611e2f5760405162461bcd60e51b815260206004820152601060248201526f0e0cae4c6cadce840e8dede40d0d2ced60831b6044820152606401610ec6565b6103e8831015611e775760405162461bcd60e51b8152602060048201526013602482015272199c995c5d595b98de481d1bdbc81cda1c9bdd606a1b6044820152606401610ec6565b60249290925560235560218054911515600160a01b0260ff60a01b19909216919091179055565b60078181548110611eae57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000611ed5338484612cbb565b5060019392505050565b6000546001600160a01b03163314611f095760405162461bcd60e51b8152600401610ec6906144c6565b601d8054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b03163314611f515760405162461bcd60e51b8152600401610ec6906144c6565b6001600160a01b0382166000908152600660205260409020805460ff191682151517905561169e828261125d565b6000546001600160a01b03163314611fa95760405162461bcd60e51b8152600401610ec6906144c6565b601f805460ff1916911515919091179055565b6000546001600160a01b03163314611fe65760405162461bcd60e51b8152600401610ec6906144c6565b60005b8251811015611ab557816026600085848151811061200957612009614577565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806120458161458d565b915050611fe9565b6000546001600160a01b031633146120775760405162461bcd60e51b8152600401610ec6906144c6565b600280546001600160a01b0319166001600160a01b0383169081179091556120a090600161125d565b50565b6000546001600160a01b031633146120cd5760405162461bcd60e51b8152600401610ec6906144c6565b601d54600160a81b900460ff16156121275760405162461bcd60e51b815260206004820152601760248201527f4c697175696469747920616c72656164792061646465640000000000000000006044820152606401610ec6565b601d805460ff60a81b1916600160a81b179055346121755760405162461bcd60e51b815260206004820152600b60248201526a139bc8115512081cd95b9d60aa1b6044820152606401610ec6565b6003612184846201518061459f565b61218e91906145bf565b61219e9063ffffffff16436144b3565b601a55601d805460ff60a01b1916600160a01b17905560008290036121c65742601e556121cc565b601e8290555b601e54602b819055602255601d80546001600160a01b0319166001600160a01b038316179055601a54604080519182523460208301527fcb1652de9aeec38545fc281847b3dbfc89aab56dfa907b1ab68466f602c36fb4910160405180910390a1505050565b6000546001600160a01b0316331461225c5760405162461bcd60e51b8152600401610ec6906144c6565b6001600160a01b0381166000908152600b602052604090205460ff1661228157600080fd5b6001600160a01b0381166000908152600b60205260409020805460ff19169055600a80546122b190600190614405565b815481106122c1576122c1614577565b60009182526020808320909101546001600160a01b038481168452600c909252604090922054600a805492909316929181106122ff576122ff614577565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600c918290526040812054600a80549193929161234b90600190614405565b8154811061235b5761235b614577565b60009182526020808320909101546001600160a01b0390811684528382019490945260409283018220949094559184168252600c90925290812055600a8054806123a7576123a76145e2565b600082815260208120820160001990810180546001600160a01b03191690559091019091556001611635565b6000546001600160a01b031633146123fd5760405162461bcd60e51b8152600401610ec6906144c6565b6001600160a01b0381166124625760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ec6565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600a8181548110611eae57600080fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906125015750808214155b949350505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001631600061253f60115490565b90508082101561254d575050565b600754600d541061255e576000600d555b6000612569600f5490565b60075490915060000361257b57505050565b6010546007546000918291101561259457600754612598565b6010545b90506125a360185490565b915060005b600a5481101561260b576125f76125f0600a83815481106125cb576125cb614577565b60009182526020808320909101546001600160a01b0316825260139052604090205490565b84906127a6565b9250806126038161458d565b9150506125a8565b508160000361261b575050505050565b6000805b82811015612771576000600761264860078054905084600d5461264291906144b3565b906134d3565b8154811061265857612658614577565b6000918252602090912001546004546001600160a01b03918216925016811461275e578561269b826001600160a01b031660009081526013602052604090205490565b1061275e576126d3856126cd896126c7856001600160a01b031660009081526013602052604090205490565b90612793565b90612c1d565b9250821561275e5760405163aa8b38d960e01b81526001600160a01b038281166004830152602482018590527f0000000000000000000000000000000000000000000000000000000000000000169063aa8b38d990604401600060405180830381600087803b15801561274557600080fd5b505af1158015612759573d6000803e3d6000fd5b505050505b50806127698161458d565b91505061261f565b50600754600d5461278891906126429085906144b3565b600d55505050505050565b600061279f8284614442565b9392505050565b600061279f8284614405565b6001600160a01b0383166000908152601260205260409020548111156128295760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ec6565b6001600160a01b03808416600090815260126020526040902080548390039055821661285d5760178054829003905561287c565b6001600160a01b03821660009081526012602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128c191815260200190565b60405180910390a3505050565b6001600160a01b03821615612aea573260009081526026602052604090205460ff166129c657326000908152601560205260409020544363ffffffff9091160361292a5760405162461bcd60e51b8152600401610ec6906145f8565b6025543260009081526014602052604090205461294791906144b3565b4210156129965760405162461bcd60e51b815260206004820152601d60248201527f53656e646572206d757374207761697420666f7220636f6f6c646f776e0000006044820152606401610ec6565b326000908152601560209081526040808320805463ffffffff19164363ffffffff16179055601490915290204290555b326001600160a01b038416148015906129f857506001600160a01b03831660009081526026602052604090205460ff16155b15612aea576001600160a01b0383166000908152601560205260409020544363ffffffff90911603612a3c5760405162461bcd60e51b8152600401610ec6906145f8565b6025546001600160a01b038416600090815260146020526040902054612a6291906144b3565b421015612ab15760405162461bcd60e51b815260206004820152601d60248201527f53656e646572206d757374207761697420666f7220636f6f6c646f776e0000006044820152606401610ec6565b6001600160a01b0383166000908152601560209081526040808320805463ffffffff19164363ffffffff16179055601490915290204290555b611ab58383836127b2565b6001600160a01b038316612b575760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ec6565b6001600160a01b038216612bb85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ec6565b6001600160a01b0383811660008181526016602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591016128c1565b600061279f82846144b3565b600061279f828461442e565b6001600160a01b038381166000908152601660209081526040808320938616835292905220546000198114612cb55781811015612ca85760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610ec6565b612cb58484848403612af5565b50505050565b6000306001600160a01b03841603612cdc57612cd784836134df565b611ed5565b61deac196001600160a01b03841601612dd1576000612d06600e54612d0087611848565b906127a6565b905080831115612d14578092505b612d1f8585856127b2565b6001600160a01b038516600090815260136020526040902054612d429084612c11565b6001600160a01b038616600090815260136020526040902055601854612d689084612c11565b601855604080516001808252818301909252600091602080830190803683370190505090508581600081518110612da157612da1614577565b60200260200101906001600160a01b031690816001600160a01b031681525050612dca81611b43565b5050611ed5565b6002546001600160a01b038481169116148015612e595750600254604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa158015612e33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e579190614649565b115b8015612ea85750600254612e7d90612710906126cd906001600160a01b0316611848565b612ea67f0000000000000000000000000000000000000000000000000000000000000000611848565b115b15612f8857601f54610100900460ff16158015612ede57506001600160a01b03841660009081526006602052604090205460ff16155b8015612f0357506001600160a01b03831660009081526006602052604090205460ff16155b8015612f1d57506002546001600160a01b03858116911614155b8015612f5157506003546001600160a01b038581169116148015612f4f57506002546001600160a01b03848116911614155b155b8015612f5f5750601f5460ff165b15612f8857601f805461ff001916610100179055612f7b6139a2565b50601f805461ff00191690555b601f54610100900460ff1615801580612fb957506001600160a01b03851660009081526006602052604090205460ff165b80612fdc57506001600160a01b03841660009081526006602052604090205460ff165b15612ff157612fec8585856127b2565b613262565b601d54600160a01b900460ff16801561300c575042601e5411155b6130285760405162461bcd60e51b8152600401610ec6906143c3565b60005b600181121561309a576000308786844260405160200161304f959493929190614459565b60408051601f198184030181529190528051602090910120600554600e54919250613087916001600160a01b039091169083906127b2565b508061309281614494565b91505061302b565b5060006130ac600e54612d0088611848565b6002549091506000906001600160a01b03908116908716036130d4576130d185613ac0565b90505b818511156130e0578194505b61311b877f00000000000000000000000000000000000000000000000000000000000000006131166103e86126cd8a601e612793565b6127b2565b61313561312e60646126cd886003612793565b86906127a6565b94506001600160a01b0386161580159061315d57506002546001600160a01b03878116911614155b801561317757506003546001600160a01b03878116911614155b1561320c57601d54600160b01b900460ff161561320c57600061319861135e565b9050801561320a576001600160a01b03871660009081526012602052604090205481906131c6908890612c11565b111561320a5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610ec6565b505b6132178787876128ce565b61321f612509565b6002546001600160a01b0388811691161480159061323b575080155b80156132505750602154600160a01b900460ff165b1561325f5761325d613dcb565b505b50505b505060019392505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291516000928392908716916132c99190614662565b6000604051808303816000865af19150503d8060008114613306576040519150601f19603f3d011682016040523d82523d6000602084013e61330b565b606091505b5091509150818015613335575080511580613335575080806020019051810190613335919061467e565b6133815760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c4544006044820152606401610ec6565b5050505050565b6001600160a01b0381166000908152600860205260409020805460ff19169055600780546133b890600190614405565b815481106133c8576133c8614577565b60009182526020808320909101546001600160a01b038481168452600990925260409092205460078054929093169291811061340657613406614577565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905591831681526009918290526040812054600780549193929161345290600190614405565b8154811061346257613462614577565b60009182526020808320909101546001600160a01b039081168452838201949094526040928301822094909455918416825260099092529081205560078054806134ae576134ae6145e2565b600082815260209020810160001990810180546001600160a01b031916905501905550565b600061279f828461469b565b601d54600160a01b900460ff166135085760405162461bcd60e51b8152600401610ec6906143c3565b6001600160a01b0382166000908152600660205260408120548190819060ff1661380557601e5442101561353b57600080fd5b600061354c600e54612d0088611848565b90508085111561355a578094505b60005b60018112156135cc5760003088888442604051602001613581959493929190614459565b60408051601f198184030181529190528051602090910120600554600e549192506135b9916001600160a01b039091169083906127b2565b50806135c481614494565b91505061355d565b5060006135db6103e88761442e565b90506135e9816103e8614442565b306000908152601260205260409020549095506136079086906144b3565b6136114787614442565b61361b919061442e565b93506402540be40084116136675760405162461bcd60e51b815260206004820152601360248201527253656c6c20616d6f756e7420746f6f206c6f7760681b6044820152606401610ec6565b834710156136b75760405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e742045544820696e207265736572766573000000006044820152606401610ec6565b6136c28730876128ce565b60285484906136d3906103e8614405565b6136df6103e88361442e565b6136e99190614442565b935060006136f78583614405565b9050600061370660328361442e565b6020549091506001600160a01b03166108fc613723836014612793565b6040518115909202916000818181858888f1935050505015801561374b573d6000803e3d6000fd5b506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166108fc613784836019612793565b6040518115909202916000818181858888f193505050501580156137ac573d6000803e3d6000fd5b506021546001600160a01b03166108fc6137ca61105484602d612793565b6040518115909202916000818181858888f193505050501580156137f2573d6000803e3d6000fd5b506137fb612509565b50505050506138e1565b306000908152601260205260409020548493506138239084906144b3565b61382d4785614442565b613837919061442e565b91506402540be40082116138835760405162461bcd60e51b815260206004820152601360248201527253656c6c20616d6f756e7420746f6f206c6f7760681b6044820152606401610ec6565b814710156138d35760405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e742045544820696e207265736572766573000000006044820152606401610ec6565b6138de8530856127b2565b50805b6040516001600160a01b0386169082156108fc029083906000818181858888f19350505050158015613917573d6000803e3d6000fd5b5060295460ff1680156139395750602a54602b5461393591906144b3565b4210155b1561394857613946613eda565b505b60408051600080825260208201879052818301849052606082015290516001600160a01b038716917f49926bbebe8474393f434dfa4f78694c0923efa07d19f2284518bfabd06eb737919081900360800190a25050505050565b60025460009081906139c490612710906126cd906001600160a01b0316611848565b905060006139f17f0000000000000000000000000000000000000000000000000000000000000000611848565b9050818110613ab757613a05826032612793565b8110613a1957613a16826032612793565b90505b601f546021546040516385278add60e01b815230600482015260248101849052620100009092046001600160a01b03908116604484015290811660648301527f000000000000000000000000000000000000000000000000000000000000000016906385278add90608401600060405180830381600087803b158015613a9e57600080fd5b505af1158015613ab2573d6000803e3d6000fd5b505050505b60019250505090565b600080600260009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b3a91906146af565b90506000600260009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bb591906146af565b9050600080600260009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613c0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c3191906146e3565b506002546040516370a0823160e01b81526001600160a01b0391821660048201526001600160701b0393841695509190921692506000918516906370a0823190602401602060405180830381865afa158015613c91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cb59190614649565b6002546040516370a0823160e01b81526001600160a01b039182166004820152919250600091908716906370a0823190602401602060405180830381865afa158015613d05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d299190614649565b9050306001600160a01b03871603613d805782821115613d7b576000613d4f8484614405565b90506000613d61866126cd8c88612793565b9050613d7360056126cd836004612793565b909110159750505b613dc0565b83811115613dc0576000613d948583614405565b90506000613da6856126cd8c89612793565b9050613db860056126cd836004612793565b909110159750505b505050505050919050565b6000602254600003613ddd5750600090565b602454602254613ded91906144b3565b421015613dfa5750600090565b42602255600254600090613e16906001600160a01b0316611848565b9050683635c9adc5dea00000811115613ed2576000613e466127106126cd6023548561279390919063ffffffff16565b90508015613ed057600254613e67906001600160a01b031661dead836127b2565b600260009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613eb757600080fd5b505af1158015613ecb573d6000803e3d6000fd5b505050505b505b600191505090565b42602b55600080613eea30611848565b9050683635c9adc5dea00000811115613ed2576000612710602c5483613f109190614442565b613f1a919061442e565b90503061dead8215613fd0576001600160a01b03821660009081526012602052604081208054859290613f4e908490614405565b90915550506001600160a01b03811660009081526012602052604081208054859290613f7b9084906144b3565b92505081905550806001600160a01b0316826001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613fc791815260200190565b60405180910390a35b6040805185815260208101859052428183015290517f9cb560eb3a76b2c70f0528d86a83cc0464d10dd0ccc94ba95bd11b93eac93da69181900360600190a1505050600191505090565b6001600160a01b03811681146120a057600080fd5b803561403a8161401a565b919050565b80151581146120a057600080fd5b6000806040838503121561406057600080fd5b823561406b8161401a565b9150602083013561407b8161403f565b809150509250929050565b60005b838110156140a1578181015183820152602001614089565b50506000910152565b60208152600082518060208401526140c9816040850160208701614086565b601f01601f19169190910160400192915050565b600080604083850312156140f057600080fd5b82356140fb8161401a565b946020939093013593505050565b6000806040838503121561411c57600080fd5b82359150602083013561407b8161403f565b60006020828403121561414057600080fd5b5035919050565b60008060006060848603121561415c57600080fd5b83356141678161401a565b925060208401356141778161401a565b929592945050506040919091013590565b63ffffffff811681146120a057600080fd5b6000602082840312156141ac57600080fd5b813561279f81614188565b6000602082840312156141c957600080fd5b813561279f8161401a565b6000806000606084860312156141e957600080fd5b833592506020840135915060408401356142028161403f565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261423457600080fd5b8135602067ffffffffffffffff808311156142515761425161420d565b8260051b604051601f19603f830116810181811084821117156142765761427661420d565b60405293845285810183019383810192508785111561429457600080fd5b83870191505b848210156142ba576142ab8261402f565b8352918301919083019061429a565b979650505050505050565b600080604083850312156142d857600080fd5b823567ffffffffffffffff8111156142ef57600080fd5b6142fb85828601614223565b925050602083013561407b8161403f565b60006020828403121561431e57600080fd5b813567ffffffffffffffff81111561433557600080fd5b61250184828501614223565b60006020828403121561435357600080fd5b813561279f8161403f565b6000806040838503121561437157600080fd5b823561437c8161401a565b9150602083013561407b8161401a565b6000806000606084860312156143a157600080fd5b83356143ac81614188565b92506020840135915060408401356142028161401a565b60208082526012908201527154726164696e67206e6f7420656e61626c6560701b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b81810381811115611358576113586143ef565b634e487b7160e01b600052601260045260246000fd5b60008261443d5761443d614418565b500490565b8082028115828204841417611358576113586143ef565b6bffffffffffffffffffffffff19606096871b811682529490951b909316601485015260288401919091526048830152606882015260880190565b60006001600160ff1b0182016144ac576144ac6143ef565b5060010190565b80820180821115611358576113586143ef565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061450f57607f821691505b60208210810361452f57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526022908201527f596f7520617265206e6f7420746865206c69717569646974792070726f76696460408201526132b960f11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6000600182016144ac576144ac6143ef565b63ffffffff818116838216028082169190828114611456576114566143ef565b600063ffffffff808416806145d6576145d6614418565b92169190910492915050565b634e487b7160e01b600052603160045260246000fd5b60208082526031908201527f596f752063616e2774206d616b652074776f207472616e73616374696f6e7320604082015270696e207468652073616d6520626c6f636b60781b606082015260800190565b60006020828403121561465b57600080fd5b5051919050565b60008251614674818460208701614086565b9190910192915050565b60006020828403121561469057600080fd5b815161279f8161403f565b6000826146aa576146aa614418565b500690565b6000602082840312156146c157600080fd5b815161279f8161401a565b80516001600160701b038116811461403a57600080fd5b6000806000606084860312156146f857600080fd5b614701846146cc565b925061470f602085016146cc565b915060408401516142028161418856fea2646970667358221220368ff3c4139a4a74566cbb20aa126e4797fc8bfcba63e19deee009775d477e2a64736f6c634300081200336080604052600180546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e17905534801561003657600080fd5b50336000908152602081905260408082208054600160ff199182168117909255328452918320805490921617905561078090819061007490396000f3fe6080604052600436106100385760003560e01c8063125bfb661461004457806385278add14610066578063aa8b38d91461008657600080fd5b3661003f57005b600080fd5b34801561005057600080fd5b5061006461005f36600461054b565b6100a6565b005b34801561007257600080fd5b5061006461008136600461058c565b6100ce565b34801561009257600080fd5b506100646100a13660046105df565b6103cc565b3360009081526020819052604090205460ff16156100c9576100c98383836103f2565b505050565b3360009081526020819052604090205460ff16156103c65760015460405163095ea7b360e01b81526001600160a01b0391821660048201526000196024820152479186169063095ea7b3906044016020604051808303816000875af115801561013b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061015f919061060b565b50604080516002808252606082018352600092602083019080368337019050509050858160008151811061019557610195610634565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156101ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610212919061064a565b8160018151811061022557610225610634565b6001600160a01b0392831660209182029290920101526001541663791ac94761024f8760026104ab565b60008430426040518663ffffffff1660e01b8152600401610274959493929190610667565b600060405180830381600087803b15801561028e57600080fd5b505af11580156102a2573d6000803e3d6000fd5b5050506001600160a01b038716905063a9059cbb876102c28860026104ab565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561030d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610331919061060b565b50600061033e47846104c0565b90506001600160a01b0385166108fc6103588360066104ab565b6040518115909202916000818181858888f19350505050158015610380573d6000803e3d6000fd5b506001600160a01b0384166108fc6103998360066104ab565b6040518115909202916000818181858888f193505050501580156103c1573d6000803e3d6000fd5b505050505b50505050565b3360009081526020819052604090205460ff16156103ee576103ee82826104cc565b5050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b179052915160009283929087169161044e91906106d8565b6000604051808303816000865af19150503d806000811461048b576040519150601f19603f3d011682016040523d82523d6000602084013e610490565b606091505b50915091508180156104a3575060008151115b505050505050565b60006104b78284610707565b90505b92915050565b60006104b78284610729565b604080516000808252602082019092526001600160a01b0384169083906040516104f691906106d8565b60006040518083038185875af1925050503d80600081146104a3576040519150601f19603f3d011682016040523d82523d6000602084013e6104a3565b6001600160a01b038116811461054857600080fd5b50565b60008060006060848603121561056057600080fd5b833561056b81610533565b9250602084013561057b81610533565b929592945050506040919091013590565b600080600080608085870312156105a257600080fd5b84356105ad81610533565b93506020850135925060408501356105c481610533565b915060608501356105d481610533565b939692955090935050565b600080604083850312156105f257600080fd5b82356105fd81610533565b946020939093013593505050565b60006020828403121561061d57600080fd5b8151801515811461062d57600080fd5b9392505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561065c57600080fd5b815161062d81610533565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156106b75784516001600160a01b031683529383019391830191600101610692565b50506001600160a01b03969096166060850152505050608001529392505050565b6000825160005b818110156106f957602081860181015185830152016106df565b506000920191825250919050565b60008261072457634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156104ba57634e487b7160e01b600052601160045260246000fdfea2646970667358221220e6967c14a2138e4c6804436d06255b43e51d4893900c074dc7b75ce8f51bc47a64736f6c634300081200334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef000000000000000000000000de0015f5fd0d911786b6ed421ee7805afc6176a0
Deployed Bytecode
0x6080604052600436106104825760003560e01c806370a0823111610255578063a9059cbb11610144578063d67ad2b2116100c1578063e7c6f17111610085578063e7c6f17114610de4578063e7cb9f2d14610df7578063ed4b129514610e0d578063f2fde38b14610e2d578063f6a42ee314610e4d578063f9a4d8ac14610e6d57600080fd5b8063d67ad2b214610d16578063d886c17514610d37578063d944392314610d4d578063dd62ed3e14610d6e578063e5596afc14610db457600080fd5b8063c49b9a8011610108578063c49b9a8014610c69578063cefa74cc14610c89578063d0239a6314610ca9578063d353684414610cc9578063d5aed6bf14610cf657600080fd5b8063a9059cbb14610bdd578063ae19139e14610bfd578063af6a9e6e14610c1d578063c024666814610c33578063c04b5f9814610c5357600080fd5b80639323b09a116101d25780639c835769116101965780639c83576914610b4b5780639e36cb9b14610b6b578063a3991cf314610b8b578063a4c82a0014610ba1578063a8d2e46a14610bb757600080fd5b80639323b09a14610ac1578063950a799614610ad657806395d89b4114610af657806398fd9f3214610b0b5780639b11942314610b2b57600080fd5b806378e979251161021957806378e9792514610a2157806382247ec014610a37578063851b211814610a4d5780638da5cb5b14610a6d5780638e3a45ee14610a8b57600080fd5b806370a08231146109a1578063715018a6146109c15780637224ca43146109d6578063730c1888146109eb5780637675c14c14610a0b57600080fd5b80632b14ca56116103715780634a0bc20b116102ee5780635b8bec55116102b25780635b8bec55146109175780635bad2bdc146109375780635d0044ca1461094c57806367b9a2861461096c578063682cb9111461098157600080fd5b80634a0bc20b1461085f5780634a74bb021461087f5780634fbee193146108995780635534499d146108d25780635aaec9ef146108e757600080fd5b80633a096a52116103355780633a096a52146107c65780633c5d5825146107f3578063436c2db914610813578063470624021461082957806349bd5a5e1461083f57600080fd5b80632b14ca56146107445780632c3e486c1461075a5780632e82f1a014610770578063313ce5671461078a57806338752caf146107a657600080fd5b806313cfd2a2116103ff5780631c893fb2116103c35780631c893fb2146106a457806323b872dd146106c457806327de2e85146106e457806329686c951461070457806329ae71891461072457600080fd5b806313cfd2a2146106225780631693e8d4146106385780631694505e1461065957806318160ddd14610679578063199ffc721461068e57600080fd5b8063095ea7b311610446578063095ea7b31461055057806309c95a1b146105805780630cdc4f521461059557806311106ee2146105e157806312a54b621461060157600080fd5b806304c0c4761461049657806306bcdc7c146104bf57806306fdde03146104df57806308ed676e146105015780630902f1ac1461051757600080fd5b366104915761048f610e9d565b005b600080fd5b3480156104a257600080fd5b506104ac601a5481565b6040519081526020015b60405180910390f35b3480156104cb57600080fd5b5061048f6104da36600461404d565b61125d565b3480156104eb57600080fd5b506104f46112b2565b6040516104b691906140aa565b34801561050d57600080fd5b506104ac600d5481565b34801561052357600080fd5b5061053b306000908152601260205260409020544791565b604080519283526020830191909152016104b6565b34801561055c57600080fd5b5061057061056b3660046140dd565b611344565b60405190151581526020016104b6565b34801561058c57600080fd5b506104ac61135e565b3480156105a157600080fd5b506105c97f000000000000000000000000bc8aa5a437983157202da5e7740a8191c7418e1881565b6040516001600160a01b0390911681526020016104b6565b3480156105ed57600080fd5b506104ac6105fc366004614109565b6113f5565b34801561060d57600080fd5b50601d5461057090600160b01b900460ff1681565b34801561062e57600080fd5b506104ac60105481565b34801561064457600080fd5b50601d5461057090600160a01b900460ff1681565b34801561066557600080fd5b506003546105c9906001600160a01b031681565b34801561068557600080fd5b506017546104ac565b34801561069a57600080fd5b506104ac602c5481565b3480156106b057600080fd5b5061048f6106bf36600461412e565b61145e565b3480156106d057600080fd5b506105706106df366004614147565b61148d565b3480156106f057600080fd5b5061048f6106ff36600461419a565b6114b2565b34801561071057600080fd5b5061048f61071f36600461412e565b61153e565b34801561073057600080fd5b5061048f61073f3660046141b7565b61156d565b34801561075057600080fd5b506104ac60285481565b34801561076657600080fd5b506104ac602a5481565b34801561077c57600080fd5b506029546105709060ff1681565b34801561079657600080fd5b50604051601281526020016104b6565b3480156107b257600080fd5b5061048f6107c136600461412e565b6116a2565b3480156107d257600080fd5b506104ac6107e13660046141b7565b600c6020526000908152604090205481565b3480156107ff57600080fd5b506005546105c9906001600160a01b031681565b34801561081f57600080fd5b506104ac60245481565b34801561083557600080fd5b506104ac60275481565b34801561084b57600080fd5b506002546105c9906001600160a01b031681565b34801561086b57600080fd5b5061048f61087a36600461412e565b61170d565b34801561088b57600080fd5b50601f546105709060ff1681565b3480156108a557600080fd5b506105706108b43660046141b7565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156108de57600080fd5b506007546104ac565b3480156108f357600080fd5b506105706109023660046141b7565b600b6020526000908152604090205460ff1681565b34801561092357600080fd5b50601d546105c9906001600160a01b031681565b34801561094357600080fd5b50600f546104ac565b34801561095857600080fd5b5061048f61096736600461412e565b61173c565b34801561097857600080fd5b5061048f61176b565b34801561098d57600080fd5b506021546105c9906001600160a01b031681565b3480156109ad57600080fd5b506104ac6109bc3660046141b7565b611848565b3480156109cd57600080fd5b5061048f611863565b3480156109e257600080fd5b506011546104ac565b3480156109f757600080fd5b5061048f610a063660046141d4565b6118d7565b348015610a1757600080fd5b506104ac600e5481565b348015610a2d57600080fd5b506104ac601e5481565b348015610a4357600080fd5b506104ac60195481565b348015610a5957600080fd5b5061048f610a6836600461412e565b6119aa565b348015610a7957600080fd5b506000546001600160a01b03166105c9565b348015610a9757600080fd5b506104ac610aa63660046141b7565b6001600160a01b031660009081526013602052604090205490565b348015610acd57600080fd5b506018546104ac565b348015610ae257600080fd5b5061048f610af13660046142c5565b6119f4565b348015610b0257600080fd5b506104f4611aba565b348015610b1757600080fd5b5061048f610b263660046140dd565b611ac9565b348015610b3757600080fd5b5061048f610b4636600461430c565b611b43565b348015610b5757600080fd5b5061048f610b663660046141d4565b611dc0565b348015610b7757600080fd5b506105c9610b8636600461412e565b611e9e565b348015610b9757600080fd5b506104ac60235481565b348015610bad57600080fd5b506104ac602b5481565b348015610bc357600080fd5b50601f546105c9906201000090046001600160a01b031681565b348015610be957600080fd5b50610570610bf83660046140dd565b611ec8565b348015610c0957600080fd5b5061048f610c18366004614341565b611edf565b348015610c2957600080fd5b506104ac60225481565b348015610c3f57600080fd5b5061048f610c4e36600461404d565b611f27565b348015610c5f57600080fd5b506104ac60115481565b348015610c7557600080fd5b5061048f610c84366004614341565b611f7f565b348015610c9557600080fd5b506020546105c9906001600160a01b031681565b348015610cb557600080fd5b5061048f610cc43660046142c5565b611fbc565b348015610cd557600080fd5b506104ac610ce43660046141b7565b60096020526000908152604090205481565b348015610d0257600080fd5b5061048f610d113660046141b7565b61204d565b348015610d2257600080fd5b5060215461057090600160a01b900460ff1681565b348015610d4357600080fd5b506104ac600f5481565b348015610d5957600080fd5b50601d5461057090600160a81b900460ff1681565b348015610d7a57600080fd5b506104ac610d8936600461435e565b6001600160a01b03918216600090815260166020908152604080832093909416825291909152205490565b348015610dc057600080fd5b50610570610dcf3660046141b7565b60266020526000908152604090205460ff1681565b61048f610df236600461438c565b6120a3565b348015610e0357600080fd5b506104ac60255481565b348015610e1957600080fd5b5061048f610e283660046141b7565b612232565b348015610e3957600080fd5b5061048f610e483660046141b7565b6123d3565b348015610e5957600080fd5b506105c9610e6836600461412e565b6124bd565b348015610e7957600080fd5b50610570610e883660046141b7565b60086020526000908152604090205460ff1681565b601d54600160a01b900460ff16610ecf5760405162461bcd60e51b8152600401610ec6906143c3565b60405180910390fd5b6402540be400341015610f195760405162461bcd60e51b815260206004820152601260248201527142757920616d6f756e7420746f6f206c6f7760701b6044820152606401610ec6565b336000908152600660205260408120543491908190819060ff166111d757601e54421015610f4657600080fd5b602754610f55906103e8614405565b610f616103e88661442e565b610f6b9190614442565b92506000610f798486614405565b9050610f83612509565b6000610f9060328361442e565b6020549091506001600160a01b03166108fc610fad836014612793565b6040518115909202916000818181858888f19350505050158015610fd5573d6000803e3d6000fd5b506001600160a01b037f000000000000000000000000bc8aa5a437983157202da5e7740a8191c7418e18166108fc61100e836019612793565b6040518115909202916000818181858888f19350505050158015611036573d6000803e3d6000fd5b506021546001600160a01b03166108fc61105b61105484602d612793565b85906127a6565b6040518115909202916000818181858888f19350505050158015611083573d6000803e3d6000fd5b503060009081526012602052604090205447906110a09087614442565b6110aa919061442e565b935060005b600181121561111e57600030338784426040516020016110d3959493929190614459565b60408051601f198184030181529190528051602090910120600554600e5491925061110b916001600160a01b039091169083906127b2565b508061111681614494565b9150506110af565b50600061112d6103e88661442e565b905061113b816103e8614442565b601d54909450600160b01b900460ff16156111c457600061115a61135e565b905080156111c25733600090815260126020526040902054819061117e90876144b3565b11156111c25760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610ec6565b505b6111cf3033866128ce565b50505061120d565b3060009081526012602052604090205484935047906111f69085614442565b611200919061442e565b905061120d3033836127b2565b604080518481526000602082018190528183015260608101839052905133917f49926bbebe8474393f434dfa4f78694c0923efa07d19f2284518bfabd06eb737919081900360800190a250505050565b6000546001600160a01b031633146112875760405162461bcd60e51b8152600401610ec6906144c6565b6001600160a01b03919091166000908152602660205260409020805460ff1916911515919091179055565b6060601b80546112c1906144fb565b80601f01602080910402602001604051908101604052809291908181526020018280546112ed906144fb565b801561133a5780601f1061130f5761010080835404028352916020019161133a565b820191906000526020600020905b81548152906001019060200180831161131d57829003601f168201915b5050505050905090565b600033611352818585612af5565b60019150505b92915050565b6000601e546000141580156113825750601e5461137e9062015180612c11565b4210155b1561138d5750600090565b601e54158061139e5750601e544211155b156113aa575060195490565b60006113c2680d8d726b7177a8000062015180612c1d565b90506113ef6113e66113df601e54426127a690919063ffffffff16565b8390612793565b60195490612c11565b91505090565b6000806000611411306000908152601260205260409020544791565b9150915083156114425761142585836144b3565b61142f8287614442565b611439919061442e565b92505050611358565b61144c85826144b3565b61142f8387614442565b505092915050565b6000546001600160a01b031633146114885760405162461bcd60e51b8152600401610ec6906144c6565b601155565b60003361149b858285612c29565b6114a6858585612cbb565b50600195945050505050565b601d546001600160a01b031633146114dc5760405162461bcd60e51b8152600401610ec690614535565b8063ffffffff16601a54106115335760405162461bcd60e51b815260206004820152601a60248201527f596f752063616e27742073686f7274656e206475726174696f6e0000000000006044820152606401610ec6565b63ffffffff16601a55565b6000546001600160a01b031633146115685760405162461bcd60e51b8152600401610ec6906144c6565b600d55565b6000546001600160a01b031633146115975760405162461bcd60e51b8152600401610ec6906144c6565b6001600160a01b0381166000908152600b602052604090205460ff16156115bd57600080fd5b6001600160a01b0381166000818152600b60209081526040808320805460ff19166001908117909155600a8054600c90945291842083905582810182559083527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a890910180546001600160a01b031916909317909255905b60405190808252806020026020018201604052801561165e578160200160208202803683370190505b509050818160008151811061167557611675614577565b60200260200101906001600160a01b031690816001600160a01b03168152505061169e81611b43565b5050565b6000546001600160a01b031633146116cc5760405162461bcd60e51b8152600401610ec6906144c6565b603c8111156117085760405162461bcd60e51b8152602060048201526008602482015267746f6f206c6f6e6760c01b6044820152606401610ec6565b602555565b6000546001600160a01b031633146117375760405162461bcd60e51b8152600401610ec6906144c6565b600f55565b6000546001600160a01b031633146117665760405162461bcd60e51b8152600401610ec6906144c6565b601955565b601d546001600160a01b031633146117955760405162461bcd60e51b8152600401610ec690614535565b601a5443116117d95760405162461bcd60e51b815260206004820152601060248201526f131a5c5d5a591a5d1e481b1bd8dad95960821b6044820152606401610ec6565b601d805460ff60a01b1916905560405133904780156108fc02916000818181858888f19350505050158015611812573d6000803e3d6000fd5b506040514781527f9a5a8a32afd899e7f95003c6e21c9fab2d50e11992439d14472229180c60c7aa9060200160405180910390a1565b6001600160a01b031660009081526012602052604090205490565b6000546001600160a01b0316331461188d5760405162461bcd60e51b8152600401610ec6906144c6565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146119015760405162461bcd60e51b8152600401610ec6906144c6565b6101f48211156119465760405162461bcd60e51b815260206004820152601060248201526f0e0cae4c6cadce840e8dede40d0d2ced60831b6044820152606401610ec6565b6103e883101561198e5760405162461bcd60e51b8152602060048201526013602482015272199c995c5d595b98de481d1bdbc81cda1c9bdd606a1b6044820152606401610ec6565b602a92909255602c556029805460ff1916911515919091179055565b6000546001600160a01b031633146119d45760405162461bcd60e51b8152600401610ec6906144c6565b600881101580156119e6575060588111155b6119ef57600080fd5b601055565b6000546001600160a01b03163314611a1e5760405162461bcd60e51b8152600401610ec6906144c6565b60005b8251811015611ab5578160066000858481518110611a4157611a41614577565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550611aa3838281518110611a9557611a95614577565b60200260200101518361125d565b80611aad8161458d565b915050611a21565b505050565b6060601c80546112c1906144fb565b6001546001600160a01b03163314611b235760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f74207468652064657665726044820152606401610ec6565b306001600160a01b03831603611b3857600080fd5b61169e82338361326d565b6000611b4e600f5490565b905060005b8251811015611ab55760086000848381518110611b7257611b72614577565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff168015611c1e575081611bd9848381518110611bb657611bb6614577565b60200260200101516001600160a01b031660009081526013602052604090205490565b1080611c1e5750600b6000848381518110611bf657611bf6614577565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff165b15611c4a57611c45838281518110611c3857611c38614577565b6020026020010151613388565b611dae565b611c6c838281518110611c5f57611c5f614577565b60200260200101516124cd565b158015611cb3575060086000848381518110611c8a57611c8a614577565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16155b8015611cf95750600b6000848381518110611cd057611cd0614577565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16155b8015611d19575081611d16848381518110611bb657611bb6614577565b10155b15611dae57611dae838281518110611d3357611d33614577565b60200260200101516001600160a01b03166000818152600860209081526040808320805460ff19166001908117909155600780546009909452918420839055820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b80611db88161458d565b915050611b53565b6000546001600160a01b03163314611dea5760405162461bcd60e51b8152600401610ec6906144c6565b6101f4821115611e2f5760405162461bcd60e51b815260206004820152601060248201526f0e0cae4c6cadce840e8dede40d0d2ced60831b6044820152606401610ec6565b6103e8831015611e775760405162461bcd60e51b8152602060048201526013602482015272199c995c5d595b98de481d1bdbc81cda1c9bdd606a1b6044820152606401610ec6565b60249290925560235560218054911515600160a01b0260ff60a01b19909216919091179055565b60078181548110611eae57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000611ed5338484612cbb565b5060019392505050565b6000546001600160a01b03163314611f095760405162461bcd60e51b8152600401610ec6906144c6565b601d8054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b03163314611f515760405162461bcd60e51b8152600401610ec6906144c6565b6001600160a01b0382166000908152600660205260409020805460ff191682151517905561169e828261125d565b6000546001600160a01b03163314611fa95760405162461bcd60e51b8152600401610ec6906144c6565b601f805460ff1916911515919091179055565b6000546001600160a01b03163314611fe65760405162461bcd60e51b8152600401610ec6906144c6565b60005b8251811015611ab557816026600085848151811061200957612009614577565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806120458161458d565b915050611fe9565b6000546001600160a01b031633146120775760405162461bcd60e51b8152600401610ec6906144c6565b600280546001600160a01b0319166001600160a01b0383169081179091556120a090600161125d565b50565b6000546001600160a01b031633146120cd5760405162461bcd60e51b8152600401610ec6906144c6565b601d54600160a81b900460ff16156121275760405162461bcd60e51b815260206004820152601760248201527f4c697175696469747920616c72656164792061646465640000000000000000006044820152606401610ec6565b601d805460ff60a81b1916600160a81b179055346121755760405162461bcd60e51b815260206004820152600b60248201526a139bc8115512081cd95b9d60aa1b6044820152606401610ec6565b6003612184846201518061459f565b61218e91906145bf565b61219e9063ffffffff16436144b3565b601a55601d805460ff60a01b1916600160a01b17905560008290036121c65742601e556121cc565b601e8290555b601e54602b819055602255601d80546001600160a01b0319166001600160a01b038316179055601a54604080519182523460208301527fcb1652de9aeec38545fc281847b3dbfc89aab56dfa907b1ab68466f602c36fb4910160405180910390a1505050565b6000546001600160a01b0316331461225c5760405162461bcd60e51b8152600401610ec6906144c6565b6001600160a01b0381166000908152600b602052604090205460ff1661228157600080fd5b6001600160a01b0381166000908152600b60205260409020805460ff19169055600a80546122b190600190614405565b815481106122c1576122c1614577565b60009182526020808320909101546001600160a01b038481168452600c909252604090922054600a805492909316929181106122ff576122ff614577565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600c918290526040812054600a80549193929161234b90600190614405565b8154811061235b5761235b614577565b60009182526020808320909101546001600160a01b0390811684528382019490945260409283018220949094559184168252600c90925290812055600a8054806123a7576123a76145e2565b600082815260208120820160001990810180546001600160a01b03191690559091019091556001611635565b6000546001600160a01b031633146123fd5760405162461bcd60e51b8152600401610ec6906144c6565b6001600160a01b0381166124625760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ec6565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600a8181548110611eae57600080fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906125015750808214155b949350505050565b6001600160a01b037f000000000000000000000000bc8aa5a437983157202da5e7740a8191c7418e181631600061253f60115490565b90508082101561254d575050565b600754600d541061255e576000600d555b6000612569600f5490565b60075490915060000361257b57505050565b6010546007546000918291101561259457600754612598565b6010545b90506125a360185490565b915060005b600a5481101561260b576125f76125f0600a83815481106125cb576125cb614577565b60009182526020808320909101546001600160a01b0316825260139052604090205490565b84906127a6565b9250806126038161458d565b9150506125a8565b508160000361261b575050505050565b6000805b82811015612771576000600761264860078054905084600d5461264291906144b3565b906134d3565b8154811061265857612658614577565b6000918252602090912001546004546001600160a01b03918216925016811461275e578561269b826001600160a01b031660009081526013602052604090205490565b1061275e576126d3856126cd896126c7856001600160a01b031660009081526013602052604090205490565b90612793565b90612c1d565b9250821561275e5760405163aa8b38d960e01b81526001600160a01b038281166004830152602482018590527f000000000000000000000000bc8aa5a437983157202da5e7740a8191c7418e18169063aa8b38d990604401600060405180830381600087803b15801561274557600080fd5b505af1158015612759573d6000803e3d6000fd5b505050505b50806127698161458d565b91505061261f565b50600754600d5461278891906126429085906144b3565b600d55505050505050565b600061279f8284614442565b9392505050565b600061279f8284614405565b6001600160a01b0383166000908152601260205260409020548111156128295760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ec6565b6001600160a01b03808416600090815260126020526040902080548390039055821661285d5760178054829003905561287c565b6001600160a01b03821660009081526012602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128c191815260200190565b60405180910390a3505050565b6001600160a01b03821615612aea573260009081526026602052604090205460ff166129c657326000908152601560205260409020544363ffffffff9091160361292a5760405162461bcd60e51b8152600401610ec6906145f8565b6025543260009081526014602052604090205461294791906144b3565b4210156129965760405162461bcd60e51b815260206004820152601d60248201527f53656e646572206d757374207761697420666f7220636f6f6c646f776e0000006044820152606401610ec6565b326000908152601560209081526040808320805463ffffffff19164363ffffffff16179055601490915290204290555b326001600160a01b038416148015906129f857506001600160a01b03831660009081526026602052604090205460ff16155b15612aea576001600160a01b0383166000908152601560205260409020544363ffffffff90911603612a3c5760405162461bcd60e51b8152600401610ec6906145f8565b6025546001600160a01b038416600090815260146020526040902054612a6291906144b3565b421015612ab15760405162461bcd60e51b815260206004820152601d60248201527f53656e646572206d757374207761697420666f7220636f6f6c646f776e0000006044820152606401610ec6565b6001600160a01b0383166000908152601560209081526040808320805463ffffffff19164363ffffffff16179055601490915290204290555b611ab58383836127b2565b6001600160a01b038316612b575760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ec6565b6001600160a01b038216612bb85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ec6565b6001600160a01b0383811660008181526016602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591016128c1565b600061279f82846144b3565b600061279f828461442e565b6001600160a01b038381166000908152601660209081526040808320938616835292905220546000198114612cb55781811015612ca85760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610ec6565b612cb58484848403612af5565b50505050565b6000306001600160a01b03841603612cdc57612cd784836134df565b611ed5565b61deac196001600160a01b03841601612dd1576000612d06600e54612d0087611848565b906127a6565b905080831115612d14578092505b612d1f8585856127b2565b6001600160a01b038516600090815260136020526040902054612d429084612c11565b6001600160a01b038616600090815260136020526040902055601854612d689084612c11565b601855604080516001808252818301909252600091602080830190803683370190505090508581600081518110612da157612da1614577565b60200260200101906001600160a01b031690816001600160a01b031681525050612dca81611b43565b5050611ed5565b6002546001600160a01b038481169116148015612e595750600254604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa158015612e33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e579190614649565b115b8015612ea85750600254612e7d90612710906126cd906001600160a01b0316611848565b612ea67f000000000000000000000000bc8aa5a437983157202da5e7740a8191c7418e18611848565b115b15612f8857601f54610100900460ff16158015612ede57506001600160a01b03841660009081526006602052604090205460ff16155b8015612f0357506001600160a01b03831660009081526006602052604090205460ff16155b8015612f1d57506002546001600160a01b03858116911614155b8015612f5157506003546001600160a01b038581169116148015612f4f57506002546001600160a01b03848116911614155b155b8015612f5f5750601f5460ff165b15612f8857601f805461ff001916610100179055612f7b6139a2565b50601f805461ff00191690555b601f54610100900460ff1615801580612fb957506001600160a01b03851660009081526006602052604090205460ff165b80612fdc57506001600160a01b03841660009081526006602052604090205460ff165b15612ff157612fec8585856127b2565b613262565b601d54600160a01b900460ff16801561300c575042601e5411155b6130285760405162461bcd60e51b8152600401610ec6906143c3565b60005b600181121561309a576000308786844260405160200161304f959493929190614459565b60408051601f198184030181529190528051602090910120600554600e54919250613087916001600160a01b039091169083906127b2565b508061309281614494565b91505061302b565b5060006130ac600e54612d0088611848565b6002549091506000906001600160a01b03908116908716036130d4576130d185613ac0565b90505b818511156130e0578194505b61311b877f000000000000000000000000bc8aa5a437983157202da5e7740a8191c7418e186131166103e86126cd8a601e612793565b6127b2565b61313561312e60646126cd886003612793565b86906127a6565b94506001600160a01b0386161580159061315d57506002546001600160a01b03878116911614155b801561317757506003546001600160a01b03878116911614155b1561320c57601d54600160b01b900460ff161561320c57600061319861135e565b9050801561320a576001600160a01b03871660009081526012602052604090205481906131c6908890612c11565b111561320a5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610ec6565b505b6132178787876128ce565b61321f612509565b6002546001600160a01b0388811691161480159061323b575080155b80156132505750602154600160a01b900460ff165b1561325f5761325d613dcb565b505b50505b505060019392505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291516000928392908716916132c99190614662565b6000604051808303816000865af19150503d8060008114613306576040519150601f19603f3d011682016040523d82523d6000602084013e61330b565b606091505b5091509150818015613335575080511580613335575080806020019051810190613335919061467e565b6133815760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c4544006044820152606401610ec6565b5050505050565b6001600160a01b0381166000908152600860205260409020805460ff19169055600780546133b890600190614405565b815481106133c8576133c8614577565b60009182526020808320909101546001600160a01b038481168452600990925260409092205460078054929093169291811061340657613406614577565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905591831681526009918290526040812054600780549193929161345290600190614405565b8154811061346257613462614577565b60009182526020808320909101546001600160a01b039081168452838201949094526040928301822094909455918416825260099092529081205560078054806134ae576134ae6145e2565b600082815260209020810160001990810180546001600160a01b031916905501905550565b600061279f828461469b565b601d54600160a01b900460ff166135085760405162461bcd60e51b8152600401610ec6906143c3565b6001600160a01b0382166000908152600660205260408120548190819060ff1661380557601e5442101561353b57600080fd5b600061354c600e54612d0088611848565b90508085111561355a578094505b60005b60018112156135cc5760003088888442604051602001613581959493929190614459565b60408051601f198184030181529190528051602090910120600554600e549192506135b9916001600160a01b039091169083906127b2565b50806135c481614494565b91505061355d565b5060006135db6103e88761442e565b90506135e9816103e8614442565b306000908152601260205260409020549095506136079086906144b3565b6136114787614442565b61361b919061442e565b93506402540be40084116136675760405162461bcd60e51b815260206004820152601360248201527253656c6c20616d6f756e7420746f6f206c6f7760681b6044820152606401610ec6565b834710156136b75760405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e742045544820696e207265736572766573000000006044820152606401610ec6565b6136c28730876128ce565b60285484906136d3906103e8614405565b6136df6103e88361442e565b6136e99190614442565b935060006136f78583614405565b9050600061370660328361442e565b6020549091506001600160a01b03166108fc613723836014612793565b6040518115909202916000818181858888f1935050505015801561374b573d6000803e3d6000fd5b506001600160a01b037f000000000000000000000000bc8aa5a437983157202da5e7740a8191c7418e18166108fc613784836019612793565b6040518115909202916000818181858888f193505050501580156137ac573d6000803e3d6000fd5b506021546001600160a01b03166108fc6137ca61105484602d612793565b6040518115909202916000818181858888f193505050501580156137f2573d6000803e3d6000fd5b506137fb612509565b50505050506138e1565b306000908152601260205260409020548493506138239084906144b3565b61382d4785614442565b613837919061442e565b91506402540be40082116138835760405162461bcd60e51b815260206004820152601360248201527253656c6c20616d6f756e7420746f6f206c6f7760681b6044820152606401610ec6565b814710156138d35760405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e742045544820696e207265736572766573000000006044820152606401610ec6565b6138de8530856127b2565b50805b6040516001600160a01b0386169082156108fc029083906000818181858888f19350505050158015613917573d6000803e3d6000fd5b5060295460ff1680156139395750602a54602b5461393591906144b3565b4210155b1561394857613946613eda565b505b60408051600080825260208201879052818301849052606082015290516001600160a01b038716917f49926bbebe8474393f434dfa4f78694c0923efa07d19f2284518bfabd06eb737919081900360800190a25050505050565b60025460009081906139c490612710906126cd906001600160a01b0316611848565b905060006139f17f000000000000000000000000bc8aa5a437983157202da5e7740a8191c7418e18611848565b9050818110613ab757613a05826032612793565b8110613a1957613a16826032612793565b90505b601f546021546040516385278add60e01b815230600482015260248101849052620100009092046001600160a01b03908116604484015290811660648301527f000000000000000000000000bc8aa5a437983157202da5e7740a8191c7418e1816906385278add90608401600060405180830381600087803b158015613a9e57600080fd5b505af1158015613ab2573d6000803e3d6000fd5b505050505b60019250505090565b600080600260009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b3a91906146af565b90506000600260009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bb591906146af565b9050600080600260009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613c0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c3191906146e3565b506002546040516370a0823160e01b81526001600160a01b0391821660048201526001600160701b0393841695509190921692506000918516906370a0823190602401602060405180830381865afa158015613c91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cb59190614649565b6002546040516370a0823160e01b81526001600160a01b039182166004820152919250600091908716906370a0823190602401602060405180830381865afa158015613d05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d299190614649565b9050306001600160a01b03871603613d805782821115613d7b576000613d4f8484614405565b90506000613d61866126cd8c88612793565b9050613d7360056126cd836004612793565b909110159750505b613dc0565b83811115613dc0576000613d948583614405565b90506000613da6856126cd8c89612793565b9050613db860056126cd836004612793565b909110159750505b505050505050919050565b6000602254600003613ddd5750600090565b602454602254613ded91906144b3565b421015613dfa5750600090565b42602255600254600090613e16906001600160a01b0316611848565b9050683635c9adc5dea00000811115613ed2576000613e466127106126cd6023548561279390919063ffffffff16565b90508015613ed057600254613e67906001600160a01b031661dead836127b2565b600260009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613eb757600080fd5b505af1158015613ecb573d6000803e3d6000fd5b505050505b505b600191505090565b42602b55600080613eea30611848565b9050683635c9adc5dea00000811115613ed2576000612710602c5483613f109190614442565b613f1a919061442e565b90503061dead8215613fd0576001600160a01b03821660009081526012602052604081208054859290613f4e908490614405565b90915550506001600160a01b03811660009081526012602052604081208054859290613f7b9084906144b3565b92505081905550806001600160a01b0316826001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613fc791815260200190565b60405180910390a35b6040805185815260208101859052428183015290517f9cb560eb3a76b2c70f0528d86a83cc0464d10dd0ccc94ba95bd11b93eac93da69181900360600190a1505050600191505090565b6001600160a01b03811681146120a057600080fd5b803561403a8161401a565b919050565b80151581146120a057600080fd5b6000806040838503121561406057600080fd5b823561406b8161401a565b9150602083013561407b8161403f565b809150509250929050565b60005b838110156140a1578181015183820152602001614089565b50506000910152565b60208152600082518060208401526140c9816040850160208701614086565b601f01601f19169190910160400192915050565b600080604083850312156140f057600080fd5b82356140fb8161401a565b946020939093013593505050565b6000806040838503121561411c57600080fd5b82359150602083013561407b8161403f565b60006020828403121561414057600080fd5b5035919050565b60008060006060848603121561415c57600080fd5b83356141678161401a565b925060208401356141778161401a565b929592945050506040919091013590565b63ffffffff811681146120a057600080fd5b6000602082840312156141ac57600080fd5b813561279f81614188565b6000602082840312156141c957600080fd5b813561279f8161401a565b6000806000606084860312156141e957600080fd5b833592506020840135915060408401356142028161403f565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261423457600080fd5b8135602067ffffffffffffffff808311156142515761425161420d565b8260051b604051601f19603f830116810181811084821117156142765761427661420d565b60405293845285810183019383810192508785111561429457600080fd5b83870191505b848210156142ba576142ab8261402f565b8352918301919083019061429a565b979650505050505050565b600080604083850312156142d857600080fd5b823567ffffffffffffffff8111156142ef57600080fd5b6142fb85828601614223565b925050602083013561407b8161403f565b60006020828403121561431e57600080fd5b813567ffffffffffffffff81111561433557600080fd5b61250184828501614223565b60006020828403121561435357600080fd5b813561279f8161403f565b6000806040838503121561437157600080fd5b823561437c8161401a565b9150602083013561407b8161401a565b6000806000606084860312156143a157600080fd5b83356143ac81614188565b92506020840135915060408401356142028161401a565b60208082526012908201527154726164696e67206e6f7420656e61626c6560701b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b81810381811115611358576113586143ef565b634e487b7160e01b600052601260045260246000fd5b60008261443d5761443d614418565b500490565b8082028115828204841417611358576113586143ef565b6bffffffffffffffffffffffff19606096871b811682529490951b909316601485015260288401919091526048830152606882015260880190565b60006001600160ff1b0182016144ac576144ac6143ef565b5060010190565b80820180821115611358576113586143ef565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061450f57607f821691505b60208210810361452f57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526022908201527f596f7520617265206e6f7420746865206c69717569646974792070726f76696460408201526132b960f11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6000600182016144ac576144ac6143ef565b63ffffffff818116838216028082169190828114611456576114566143ef565b600063ffffffff808416806145d6576145d6614418565b92169190910492915050565b634e487b7160e01b600052603160045260246000fd5b60208082526031908201527f596f752063616e2774206d616b652074776f207472616e73616374696f6e7320604082015270696e207468652073616d6520626c6f636b60781b606082015260800190565b60006020828403121561465b57600080fd5b5051919050565b60008251614674818460208701614086565b9190910192915050565b60006020828403121561469057600080fd5b815161279f8161403f565b6000826146aa576146aa614418565b500690565b6000602082840312156146c157600080fd5b815161279f8161401a565b80516001600160701b038116811461403a57600080fd5b6000806000606084860312156146f857600080fd5b614701846146cc565b925061470f602085016146cc565b915060408401516142028161418856fea2646970667358221220368ff3c4139a4a74566cbb20aa126e4797fc8bfcba63e19deee009775d477e2a64736f6c63430008120033
Deployed Bytecode Sourcemap
16880:27482:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37199:5;:3;:5::i;:::-;16880:27482;;;;;18327:37;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;18327:37:0;;;;;;;;28546:123;;;;;;;;;;-1:-1:-1;28546:123:0;;;;;:::i;:::-;;:::i;19101:91::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;17628:24::-;;;;;;;;;;;;;;;;29644:131;;;;;;;;;;;;29762:4;29688:7;29744:24;;;:9;:24;;;;;;29721:21;;29644:131;;;;;1811:25:1;;;1867:2;1852:18;;1845:34;;;;1784:18;29644:131:0;1637:248:1;20059:224:0;;;;;;;;;;-1:-1:-1;20059:224:0;;;;;:::i;:::-;;:::i;:::-;;;2375:14:1;;2368:22;2350:41;;2338:2;2323:18;20059:224:0;2210:187:1;41941:502:0;;;;;;;;;;;;;:::i;17315:48::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2598:32:1;;;2580:51;;2568:2;2553:18;17315:48:0;2402:235:1;31211:311:0;;;;;;;;;;-1:-1:-1;31211:311:0;;;;;:::i;:::-;;:::i;18537:27::-;;;;;;;;;;-1:-1:-1;18537:27:0;;;;-1:-1:-1;;;18537:27:0;;;;;;17729:34;;;;;;;;;;;;;;;;18472:25;;;;;;;;;;-1:-1:-1;18472:25:0;;;;-1:-1:-1;;;18472:25:0;;;;;;17003:102;;;;;;;;;;-1:-1:-1;17003:102:0;;;;-1:-1:-1;;;;;17003:102:0;;;19395:99;;;;;;;;;;-1:-1:-1;19474:12:0;;19395:99;;35988:36;;;;;;;;;;;;;;;;39392:99;;;;;;;;;;-1:-1:-1;39392:99:0;;;;;:::i;:::-;;:::i;21321:283::-;;;;;;;;;;-1:-1:-1;21321:283:0;;;;;:::i;:::-;;:::i;30958:247::-;;;;;;;;;;-1:-1:-1;30958:247:0;;;;;:::i;:::-;;:::i;39499:80::-;;;;;;;;;;-1:-1:-1;39499:80:0;;;;;:::i;:::-;;:::i;40055:316::-;;;;;;;;;;-1:-1:-1;40055:316:0;;;;;:::i;:::-;;:::i;29812:27::-;;;;;;;;;;;;;;;;35900:45;;;;;;;;;;;;;;;;35861:32;;;;;;;;;;-1:-1:-1;35861:32:0;;;;;;;;19303:84;;;;;;;;;;-1:-1:-1;19303:84:0;;19377:2;4604:36:1;;4592:2;4577:18;19303:84:0;4462:184:1;28100:142:0;;;;;;;;;;-1:-1:-1;28100:142:0;;;;;:::i;:::-;;:::i;17578:43::-;;;;;;;;;;-1:-1:-1;17578:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;17204:45;;;;;;;;;;-1:-1:-1;17204:45:0;;;;-1:-1:-1;;;;;17204:45:0;;;25254:46;;;;;;;;;;;;;;;;29781:26;;;;;;;;;;;;;;;;16960:36;;;;;;;;;;-1:-1:-1;16960:36:0;;;;-1:-1:-1;;;;;16960:36:0;;;39283:101;;;;;;;;;;-1:-1:-1;39283:101:0;;;;;:::i;:::-;;:::i;18602:40::-;;;;;;;;;;-1:-1:-1;18602:40:0;;;;;;;;42597:126;;;;;;;;;;-1:-1:-1;42597:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;42687:28:0;42663:4;42687:28;;;:19;:28;;;;;;;;;42597:126;43976:90;;;;;;;;;;-1:-1:-1;44045:6:0;:13;43976:90;;17528:43;;;;;;;;;;-1:-1:-1;17528:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18431:32;;;;;;;;;;-1:-1:-1;18431:32:0;;;;-1:-1:-1;;;;;18431:32:0;;;44076:122;;;;;;;;;;-1:-1:-1;44179:11:0;;44076:122;;29964:99;;;;;;;;;;-1:-1:-1;29964:99:0;;;;;:::i;:::-;;:::i;30675:277::-;;;;;;;;;;;;;:::i;18856:77::-;;;;;;;;;;-1:-1:-1;18856:77:0;;;;-1:-1:-1;;;;;18856:77:0;;;19612:118;;;;;;;;;;-1:-1:-1;19612:118:0;;;;;:::i;:::-;;:::i;9674:148::-;;;;;;;;;;;;;:::i;44206:149::-;;;;;;;;;;-1:-1:-1;44318:15:0;;44206:149;;35455:398;;;;;;;;;;-1:-1:-1;35455:398:0;;;;;:::i;:::-;;:::i;17659:26::-;;;;;;;;;;;;;;;;18571:24;;;;;;;;;;;;;;;;18295:25;;;;;;;;;;;;;;;;42451:136;;;;;;;;;;-1:-1:-1;42451:136:0;;;;;:::i;:::-;;:::i;8905:79::-;;;;;;;;;;-1:-1:-1;8943:7:0;8970:6;-1:-1:-1;;;;;8970:6:0;8905:79;;19738:120;;;;;;;;;;-1:-1:-1;19738:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;19831:19:0;19804:7;19831:19;;;:10;:19;;;;;;;19738:120;19503:101;;;;;;;;;;-1:-1:-1;19583:13:0;;19503:101;;39774:273;;;;;;;;;;-1:-1:-1;39774:273:0;;;;;:::i;:::-;;:::i;19200:95::-;;;;;;;;;;;;;:::i;37216:174::-;;;;;;;;;;-1:-1:-1;37216:174:0;;;;;:::i;:::-;;:::i;41331:602::-;;;;;;;;;;-1:-1:-1;41331:602:0;;;;;:::i;:::-;;:::i;24708:402::-;;;;;;;;;;-1:-1:-1;24708:402:0;;;;;:::i;:::-;;:::i;17370:23::-;;;;;;;;;;-1:-1:-1;17370:23:0;;;;;:::i;:::-;;:::i;25197:37::-;;;;;;;;;;;;;;;;35952:29;;;;;;;;;;;;;;;;18687:76;;;;;;;;;;-1:-1:-1;18687:76:0;;;;;;;-1:-1:-1;;;;;18687:76:0;;;27455:139;;;;;;;;;;-1:-1:-1;27455:139:0;;;;;:::i;:::-;;:::i;29844:114::-;;;;;;;;;;-1:-1:-1;29844:114:0;;;;;:::i;:::-;;:::i;25156:34::-;;;;;;;;;;;;;;;;39587:179;;;;;;;;;;-1:-1:-1;39587:179:0;;;;;:::i;:::-;;:::i;17770:33::-;;;;;;;;;;;;;;;;21196:117;;;;;;;;;;-1:-1:-1;21196:117:0;;;;;:::i;:::-;;:::i;18770:79::-;;;;;;;;;;-1:-1:-1;18770:79:0;;;;-1:-1:-1;;;;;18770:79:0;;;28304:234;;;;;;;;;;-1:-1:-1;28304:234:0;;;;;:::i;:::-;;:::i;17445:42::-;;;;;;;;;;-1:-1:-1;17445:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;39105:170;;;;;;;;;;-1:-1:-1;39105:170:0;;;;;:::i;:::-;;:::i;25116:33::-;;;;;;;;;;-1:-1:-1;25116:33:0;;;;-1:-1:-1;;;25116:33:0;;;;;;17692:30;;;;;;;;;;;;;;;;18504:26;;;;;;;;;;-1:-1:-1;18504:26:0;;;;-1:-1:-1;;;18504:26:0;;;;;;19866:185;;;;;;;;;;-1:-1:-1;19866:185:0;;;;;:::i;:::-;-1:-1:-1;;;;;20015:19:0;;;19983:7;20015:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;19866:185;28248:48;;;;;;;;;;-1:-1:-1;28248:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;30071:598;;;;;;:::i;:::-;;:::i;28064:31::-;;;;;;;;;;;;;;;;40379:435;;;;;;;;;;-1:-1:-1;40379:435:0;;;;;:::i;:::-;;:::i;9977:281::-;;;;;;;;;;-1:-1:-1;9977:281:0;;;;;:::i;:::-;;:::i;17494:27::-;;;;;;;;;;-1:-1:-1;17494:27:0;;;;;:::i;:::-;;:::i;17400:38::-;;;;;;;;;;-1:-1:-1;17400:38:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;31529:1735;31568:13;;-1:-1:-1;;;31568:13:0;;;;31560:44;;;;-1:-1:-1;;;31560:44:0;;;;;;;:::i;:::-;;;;;;;;;31632:4;31619:9;:17;;31611:47;;;;-1:-1:-1;;;31611:47:0;;8998:2:1;31611:47:0;;;8980:21:1;9037:2;9017:18;;;9010:30;-1:-1:-1;;;9056:18:1;;;9049:48;9114:18;;31611:47:0;8796:342:1;31611:47:0;31801:10;31665:16;31781:31;;;:19;:31;;;;;;31684:9;;31665:16;;;;;31781:31;;31777:1418;;31851:9;;31832:15;:28;;31824:37;;;;;;31909:6;;31902:13;;:4;:13;:::i;:::-;31884:15;31895:4;31884:8;:15;:::i;:::-;:32;;;;:::i;:::-;31872:44;-1:-1:-1;31927:16:0;31946:20;31872:44;31946:8;:20;:::i;:::-;31927:39;;31977:15;:13;:15::i;:::-;32003:17;32023:13;32034:2;32023:8;:13;:::i;:::-;32055:10;;32003:33;;-1:-1:-1;;;;;;32055:10:0;32047:47;32076:17;32003:33;32090:2;32076:13;:17::i;:::-;32047:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;32113:14:0;32105:32;:51;32138:17;:9;32152:2;32138:13;:17::i;:::-;32105:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32175:8:0;;-1:-1:-1;;;;;32175:8:0;32167:59;32194:31;32207:17;:9;32221:2;32207:13;:17::i;:::-;32194:8;;:12;:31::i;:::-;32167:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32283:4:0;32265:24;;;;:9;:24;;;;;;32293:21;;32253:36;;:9;:36;:::i;:::-;32252:62;;;;:::i;:::-;32237:77;;32337:5;32333:224;32349:1;32347;:3;32333:224;;;32368:13;32440:4;32446:10;32457:12;32470:1;32473:15;32415:74;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;32415:74:0;;;;;;;;;32405:85;;32415:74;32405:85;;;;32517:8;;32533:11;;32405:85;;-1:-1:-1;32506:39:0;;-1:-1:-1;;;;;32517:8:0;;;;32405:85;;32506:10;:39::i;:::-;-1:-1:-1;32351:3:0;;;;:::i;:::-;;;;32333:224;;;-1:-1:-1;32605:19:0;32627;32642:4;32627:12;:19;:::i;:::-;32605:41;-1:-1:-1;32671:18:0;32605:41;32685:4;32671:18;:::i;:::-;32706:15;;32657:32;;-1:-1:-1;;;;32706:15:0;;;;32702:227;;;32736:23;32762:20;:18;:20::i;:::-;32736:46;-1:-1:-1;32798:20:0;;32795:122;;32863:10;32853:21;;;;:9;:21;;;;;;32878:15;;32839:35;;:11;:35;:::i;:::-;:54;;32831:86;;;;-1:-1:-1;;;32831:86:0;;10855:2:1;32831:86:0;;;10837:21:1;10894:2;10874:18;;;10867:30;-1:-1:-1;;;10913:18:1;;;10906:49;10972:18;;32831:86:0;10653:343:1;32831:86:0;32723:206;32702:227;32939:49;32957:4;32964:10;32976:11;32939:9;:49::i;:::-;31813:1191;;;31777:1418;;;33095:4;33077:24;;;;:9;:24;;;;;;33031:8;;-1:-1:-1;33105:21:0;;33065:36;;33031:8;33065:36;:::i;:::-;33064:62;;;;:::i;:::-;33050:76;;33137:50;33156:4;33163:10;33175:11;33137:10;:50::i;:::-;33206:46;;;11248:25:1;;;33234:1:0;11304:2:1;11289:18;;11282:34;;;11332:18;;;11325:34;11390:2;11375:18;;11368:34;;;33206:46:0;;33211:10;;33206:46;;;;;;11235:3:1;33206:46:0;;;31553:1711;;;;31529:1735::o;28546:123::-;9117:6;;-1:-1:-1;;;;;9117:6:0;173:10;9117:22;9109:67;;;;-1:-1:-1;;;9109:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28629:26:0;;;::::1;;::::0;;;:16:::1;:26;::::0;;;;:32;;-1:-1:-1;;28629:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28546:123::o;19101:91::-;19146:13;19179:5;19172:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19101:91;:::o;20059:224::-;20160:4;20199:10;20220:33;20199:10;20237:7;20246:6;20220:8;:33::i;:::-;20271:4;20264:11;;;20059:224;;;;;:::o;41941:502::-;41991:7;42013:9;;42024:1;42013:12;;:56;;;;-1:-1:-1;42048:9:0;;:21;;42062:6;42048:13;:21::i;:::-;42029:15;:40;;42013:56;42010:407;;;-1:-1:-1;42102:1:0;;41941:502::o;42010:407::-;42137:9;;:14;;:46;;;42174:9;;42155:15;:28;;42137:46;42134:272;;;-1:-1:-1;42209:10:0;;;41941:502::o;42134:272::-;42258:13;42274:33;42282:12;42300:6;42274:25;:33::i;:::-;42258:49;;42333:57;42348:41;42358:30;42378:9;;42358:15;:19;;:30;;;;:::i;:::-;42348:5;;:9;:41::i;:::-;42333:10;;;:14;:57::i;:::-;42326:64;;;41941:502;:::o;31211:311::-;31280:7;31297:18;31317:20;31341:13;29762:4;29688:7;29744:24;;;:9;:24;;;;;;29721:21;;29644:131;31341:13;31296:58;;;;31367:4;31363:154;;;31415:18;31428:5;31415:10;:18;:::i;:::-;31390:20;31398:12;31390:5;:20;:::i;:::-;31389:45;;;;:::i;:::-;31382:52;;;;;;31363:154;31488:20;31503:5;31488:12;:20;:::i;:::-;31465:18;31473:10;31465:5;:18;:::i;31363:154::-;31289:233;;31211:311;;;;:::o;39392:99::-;9117:6;;-1:-1:-1;;;;;9117:6:0;173:10;9117:22;9109:67;;;;-1:-1:-1;;;9109:67:0;;;;;;;:::i;:::-;39459:15:::1;:24:::0;39392:99::o;21321:283::-;21443:4;21478:10;21499:38;21515:4;21478:10;21530:6;21499:15;:38::i;:::-;21548:26;21559:4;21564:2;21567:6;21548:10;:26::i;:::-;-1:-1:-1;21592:4:0;;21321:283;-1:-1:-1;;;;;21321:283:0:o;30958:247::-;19017:17;;-1:-1:-1;;;;;19017:17:0;19003:10;:31;18995:78;;;;-1:-1:-1;;;18995:78:0;;;;;;;:::i;:::-;31088:23:::1;31063:48;;:22;;:48;31055:87;;;::::0;-1:-1:-1;;;31055:87:0;;12764:2:1;31055:87:0::1;::::0;::::1;12746:21:1::0;12803:2;12783:18;;;12776:30;12842:28;12822:18;;;12815:56;12888:18;;31055:87:0::1;12562:350:1::0;31055:87:0::1;31151:48;;:22;:48:::0;30958:247::o;39499:80::-;9117:6;;-1:-1:-1;;;;;9117:6:0;173:10;9117:22;9109:67;;;;-1:-1:-1;;;9109:67:0;;;;;;;:::i;:::-;39559:5:::1;:12:::0;39499:80::o;40055:316::-;9117:6;;-1:-1:-1;;;;;9117:6:0;173:10;9117:22;9109:67;;;;-1:-1:-1;;;9109:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;40128:16:0;::::1;;::::0;;;:11:::1;:16;::::0;;;;;::::1;;40127:17;40118:27;;;::::0;::::1;;-1:-1:-1::0;;;;;40156:16:0;::::1;;::::0;;;:11:::1;:16;::::0;;;;;;;:23;;-1:-1:-1;;40156:23:0::1;40175:4;40156:23:::0;;::::1;::::0;;;40206:10:::1;:17:::0;;40190:8:::1;:13:::0;;;;;;:33;;;40234:20;;::::1;::::0;;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;40234:20:0::1;::::0;;::::1;::::0;;;40156:16;40290::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;40290:16:0::1;;40265:41;;40328:3;40317:5;40323:1;40317:8;;;;;;;;:::i;:::-;;;;;;:14;-1:-1:-1::0;;;;;40317:14:0::1;;;-1:-1:-1::0;;;;;40317:14:0::1;;;::::0;::::1;40342:21;40357:5;40342:14;:21::i;:::-;40107:264;40055:316:::0;:::o;28100:142::-;9117:6;;-1:-1:-1;;;;;9117:6:0;173:10;9117:22;9109:67;;;;-1:-1:-1;;;9109:67:0;;;;;;;:::i;:::-;28189:2:::1;28177:8;:14;;28169:34;;;::::0;-1:-1:-1;;;28169:34:0;;13251:2:1;28169:34:0::1;::::0;::::1;13233:21:1::0;13290:1;13270:18;;;13263:29;-1:-1:-1;;;13308:18:1;;;13301:38;13356:18;;28169:34:0::1;13049:331:1::0;28169:34:0::1;28214:11;:22:::0;28100:142::o;39283:101::-;9117:6;;-1:-1:-1;;;;;9117:6:0;173:10;9117:22;9109:67;;;;-1:-1:-1;;;9109:67:0;;;;;;;:::i;:::-;39356:11:::1;:20:::0;39283:101::o;29964:99::-;9117:6;;-1:-1:-1;;;;;9117:6:0;173:10;9117:22;9109:67;;;;-1:-1:-1;;;9109:67:0;;;;;;;:::i;:::-;30033:10:::1;:24:::0;29964:99::o;30675:277::-;19017:17;;-1:-1:-1;;;;;19017:17:0;19003:10;:31;18995:78;;;;-1:-1:-1;;;18995:78:0;;;;;;;:::i;:::-;30761:22:::1;;30746:12;:37;30738:66;;;::::0;-1:-1:-1;;;30738:66:0;;13587:2:1;30738:66:0::1;::::0;::::1;13569:21:1::0;13626:2;13606:18;;;13599:30;-1:-1:-1;;;13645:18:1;;;13638:46;13701:18;;30738:66:0::1;13385:340:1::0;30738:66:0::1;30813:13;:21:::0;;-1:-1:-1;;;;30813:21:0::1;::::0;;30843:51:::1;::::0;30851:10:::1;::::0;30872:21:::1;30843:51:::0;::::1;;;::::0;30829:5:::1;30843:51:::0;30829:5;30843:51;30872:21;30851:10;30843:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;30908:38:0::1;::::0;30924:21:::1;160:25:1::0;;30908:38:0::1;::::0;148:2:1;133:18;30908:38:0::1;;;;;;;30675:277::o:0;19612:118::-;-1:-1:-1;;;;;19704:18:0;19677:7;19704:18;;;:9;:18;;;;;;;19612:118::o;9674:148::-;9117:6;;-1:-1:-1;;;;;9117:6:0;173:10;9117:22;9109:67;;;;-1:-1:-1;;;9109:67:0;;;;;;;:::i;:::-;9781:1:::1;9765:6:::0;;9744:40:::1;::::0;-1:-1:-1;;;;;9765:6:0;;::::1;::::0;9744:40:::1;::::0;9781:1;;9744:40:::1;9812:1;9795:19:::0;;-1:-1:-1;;;;;;9795:19:0::1;::::0;;9674:148::o;35455:398::-;9117:6;;-1:-1:-1;;;;;9117:6:0;173:10;9117:22;9109:67;;;;-1:-1:-1;;;9109:67:0;;;;;;;:::i;:::-;35632:3:::1;35620:8;:15;;35612:43;;;::::0;-1:-1:-1;;;35612:43:0;;13932:2:1;35612:43:0::1;::::0;::::1;13914:21:1::0;13971:2;13951:18;;;13944:30;-1:-1:-1;;;13990:18:1;;;13983:46;14046:18;;35612:43:0::1;13730:340:1::0;35612:43:0::1;35697:4;35674:19;:27;;35666:58;;;::::0;-1:-1:-1;;;35666:58:0;;14277:2:1;35666:58:0::1;::::0;::::1;14259:21:1::0;14316:2;14296:18;;;14289:30;-1:-1:-1;;;14335:18:1;;;14328:49;14394:18;;35666:58:0::1;14075:343:1::0;35666:58:0::1;35735:15;:37:::0;;;;35783:16:::1;:27:::0;35821:13:::1;:24:::0;;-1:-1:-1;;35821:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;35455:398::o;42451:136::-;9117:6;;-1:-1:-1;;;;;9117:6:0;173:10;9117:22;9109:67;;;;-1:-1:-1;;;9109:67:0;;;;;;;:::i;:::-;42533:1:::1;42526:3;:8;;:21;;;;;42545:2;42538:3;:9;;42526:21;42518:30;;;::::0;::::1;;42559:14;:20:::0;42451:136::o;39774:273::-;9117:6;;-1:-1:-1;;;;;9117:6:0;173:10;9117:22;9109:67;;;;-1:-1:-1;;;9109:67:0;;;;;;;:::i;:::-;39879:9:::1;39875:165;39895:8;:15;39893:1;:17;39875:165;;;39965:8;39930:19;:32;39950:8;39959:1;39950:11;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;39930:32:0::1;-1:-1:-1::0;;;;;39930:32:0::1;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;39988:40;40006:8;40015:1;40006:11;;;;;;;;:::i;:::-;;;;;;;40019:8;39988:17;:40::i;:::-;39911:3:::0;::::1;::::0;::::1;:::i;:::-;;;;39875:165;;;;39774:273:::0;;:::o;19200:95::-;19247:13;19280:7;19273:14;;;;;:::i;37216:174::-;9244:6;;-1:-1:-1;;;;;9244:6:0;173:10;9244:22;9236:67;;;;-1:-1:-1;;;9236:67:0;;14765:2:1;9236:67:0;;;14747:21:1;;;14784:18;;;14777:30;14843:34;14823:18;;;14816:62;14895:18;;9236:67:0;14563:356:1;9236:67:0;37317:4:::1;-1:-1:-1::0;;;;;37301:21:0;::::1;::::0;37293:30:::1;;;::::0;::::1;;37332:52;37360:4;37365:10;37377:6;37332:27;:52::i;41331:602::-:0;41417:21;41441:18;44179:11;;;44076:122;41441:18;41417:42;;41474:9;41470:456;41492:11;:18;41489:1;:21;41470:456;;;41534:6;:22;41541:11;41553:1;41541:14;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;41534:22:0;;;;;;;;;;;-1:-1:-1;41534:22:0;;;;:99;;;;;41590:13;41561:26;41572:11;41584:1;41572:14;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;19831:19:0;19804:7;19831:19;;;:10;:19;;;;;;;19738:120;41561:26;:42;:71;;;;41605:11;:27;41617:11;41629:1;41617:14;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;41605:27:0;;;;;;;;;;;-1:-1:-1;41605:27:0;;;;41561:71;41531:384;;;41653:30;41668:11;41680:1;41668:14;;;;;;;;:::i;:::-;;;;;;;41653;:30::i;:::-;41531:384;;;41709:34;41728:11;41740:1;41728:14;;;;;;;;:::i;:::-;;;;;;;41709:18;:34::i;:::-;41708:35;:62;;;;;41748:6;:22;41755:11;41767:1;41755:14;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;41748:22:0;;;;;;;;;;;-1:-1:-1;41748:22:0;;;;41747:23;41708:62;:94;;;;;41775:11;:27;41787:11;41799:1;41787:14;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;41775:27:0;;;;;;;;;;;-1:-1:-1;41775:27:0;;;;41774:28;41708:94;:140;;;;;41835:13;41805:26;41816:11;41828:1;41816:14;;;;;;;;:::i;41805:26::-;:43;;41708:140;41705:210;;;41868:30;41883:11;41895:1;41883:14;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;41205:17:0;;;;;:6;:17;;;;;;;;:24;;-1:-1:-1;;41205:24:0;41225:4;41205:24;;;;;;41265:6;:13;;41244:7;:18;;;;;;:34;;;41293:22;;;;;;;;;;;-1:-1:-1;;;;;;41293:22:0;;;;;;41139:184;41868:30;41511:3;;;;:::i;:::-;;;;41470:456;;24708:402;9117:6;;-1:-1:-1;;;;;9117:6:0;173:10;9117:22;9109:67;;;;-1:-1:-1;;;9109:67:0;;;;;;;:::i;:::-;24886:3:::1;24874:8;:15;;24866:43;;;::::0;-1:-1:-1;;;24866:43:0;;13932:2:1;24866:43:0::1;::::0;::::1;13914:21:1::0;13971:2;13951:18;;;13944:30;-1:-1:-1;;;13990:18:1;;;13983:46;14046:18;;24866:43:0::1;13730:340:1::0;24866:43:0::1;24951:4;24928:19;:27;;24920:58;;;::::0;-1:-1:-1;;;24920:58:0;;14277:2:1;24920:58:0::1;::::0;::::1;14259:21:1::0;14316:2;14296:18;;;14289:30;-1:-1:-1;;;14335:18:1;;;14328:49;14394:18;;24920:58:0::1;14075:343:1::0;24920:58:0::1;24989:16;:38:::0;;;;25038:17:::1;:28:::0;25077:14:::1;:25:::0;;;::::1;;-1:-1:-1::0;;;25077:25:0::1;-1:-1:-1::0;;;;25077:25:0;;::::1;::::0;;;::::1;::::0;;24708:402::o;17370:23::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17370:23:0;;-1:-1:-1;17370:23:0;:::o;27455:139::-;27525:4;27538:32;27549:10;27560:2;27563:6;27538:10;:32::i;:::-;-1:-1:-1;27584:4:0;;27455:139;-1:-1:-1;;;27455:139:0:o;29844:114::-;9117:6;;-1:-1:-1;;;;;9117:6:0;173:10;9117:22;9109:67;;;;-1:-1:-1;;;9109:67:0;;;;;;;:::i;:::-;29918:15:::1;:34:::0;;;::::1;;-1:-1:-1::0;;;29918:34:0::1;-1:-1:-1::0;;;;29918:34:0;;::::1;::::0;;;::::1;::::0;;29844:114::o;39587:179::-;9117:6;;-1:-1:-1;;;;;9117:6:0;173:10;9117:22;9109:67;;;;-1:-1:-1;;;9109:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39672:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;:39;;-1:-1:-1;;39672:39:0::1;::::0;::::1;;;::::0;;39722:36:::1;39672:28:::0;:39;39722:17:::1;:36::i;21196:117::-:0;9117:6;;-1:-1:-1;;;;;9117:6:0;173:10;9117:22;9109:67;;;;-1:-1:-1;;;9109:67:0;;;;;;;:::i;:::-;21273:21:::1;:32:::0;;-1:-1:-1;;21273:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21196:117::o;28304:234::-;9117:6;;-1:-1:-1;;;;;9117:6:0;173:10;9117:22;9109:67;;;;-1:-1:-1;;;9109:67:0;;;;;;;:::i;:::-;28428:9:::1;28423:108;28447:8;:15;28443:1;:19;28423:108;;;28516:3;28484:16;:29;28501:8;28510:1;28501:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;28484:29:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;28484:29:0;:35;;-1:-1:-1;;28484:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28464:3;::::1;::::0;::::1;:::i;:::-;;;;28423:108;;39105:170:::0;9117:6;;-1:-1:-1;;;;;9117:6:0;173:10;9117:22;9109:67;;;;-1:-1:-1;;;9109:67:0;;;;;;;:::i;:::-;39172:13:::1;:37:::0;;-1:-1:-1;;;;;;39172:37:0::1;-1:-1:-1::0;;;;;39172:37:0;::::1;::::0;;::::1;::::0;;;39220:47:::1;::::0;-1:-1:-1;39220:17:0::1;:47::i;:::-;39105:170:::0;:::o;30071:598::-;9117:6;;-1:-1:-1;;;;;9117:6:0;173:10;9117:22;9109:67;;;;-1:-1:-1;;;9109:67:0;;;;;;;:::i;:::-;30180:14:::1;::::0;-1:-1:-1;;;30180:14:0;::::1;;;:23;30172:59;;;::::0;-1:-1:-1;;;30172:59:0;;15126:2:1;30172:59:0::1;::::0;::::1;15108:21:1::0;15165:2;15145:18;;;15138:30;15204:25;15184:18;;;15177:53;15247:18;;30172:59:0::1;14924:347:1::0;30172:59:0::1;30240:14;:21:::0;;-1:-1:-1;;;;30240:21:0::1;-1:-1:-1::0;;;30240:21:0::1;::::0;;30278:9:::1;30270:37;;;::::0;-1:-1:-1;;;30270:37:0;;15478:2:1;30270:37:0::1;::::0;::::1;15460:21:1::0;15517:2;15497:18;;;15490:30;-1:-1:-1;;;15536:18:1;;;15529:41;15587:18;;30270:37:0::1;15276:335:1::0;30270:37:0::1;30372:1;30356:14;:5:::0;30364:6:::1;30356:14;:::i;:::-;30355:18;;;;:::i;:::-;30339:34;::::0;::::1;;:12;:34;:::i;:::-;30314:22;:59:::0;30381:13:::1;:20:::0;;-1:-1:-1;;;;30381:20:0::1;-1:-1:-1::0;;;30381:20:0::1;::::0;;;30411:10;;;30408:90:::1;;30444:15;30432:9;:27:::0;30408:90:::1;;;30481:9;:17:::0;;;30408:90:::1;30522:9;::::0;30505:14:::1;:26:::0;;;30538:15:::1;:27:::0;30572:17:::1;:30:::0;;-1:-1:-1;;;;;;30572:30:0::1;-1:-1:-1::0;;;;;30572:30:0;::::1;;::::0;;30629:22:::1;::::0;30616:47:::1;::::0;;1811:25:1;;;30653:9:0::1;1867:2:1::0;1852:18;;1845:34;30616:47:0::1;::::0;1784:18:1;30616:47:0::1;;;;;;;30071:598:::0;;;:::o;40379:435::-;9117:6;;-1:-1:-1;;;;;9117:6:0;173:10;9117:22;9109:67;;;;-1:-1:-1;;;9109:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;40451:16:0;::::1;;::::0;;;:11:::1;:16;::::0;;;;;::::1;;40442:26;;;::::0;::::1;;-1:-1:-1::0;;;;;40479:16:0;::::1;40498:5;40479:16:::0;;;:11:::1;:16;::::0;;;;:24;;-1:-1:-1;;40479:24:0::1;::::0;;40543:10:::1;40554:17:::0;;:19:::1;::::0;40479:24;;40554:19:::1;:::i;:::-;40543:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;::::0;-1:-1:-1;;;;;40526:13:0;;::::1;::::0;;:8:::1;:13:::0;;;;;;;;40515:10:::1;:25:::0;;40543:31;;;::::1;::::0;40515:10;:25;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:59:::0;;-1:-1:-1;;;;;;40515:59:0::1;-1:-1:-1::0;;;;;40515:59:0;;::::1;;::::0;;40629:13;;::::1;::::0;;:8:::1;:13:::0;;;;;;;;40594:10:::1;40605:17:::0;;40629:13;;:8;40515:25;40605:19:::1;::::0;-1:-1:-1;;40605:19:0::1;:::i;:::-;40594:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;::::0;-1:-1:-1;;;;;40594:31:0;;::::1;40585:41:::0;;;;::::1;::::0;;;;;;;;;;:57;;;;40653:13;;::::1;::::0;;:8:::1;:13:::0;;;;;;:17;40681:10:::1;:16:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;40681:16:0;;;;;-1:-1:-1;;;;;;40681:16:0::1;::::0;;;;;;;;::::1;40733;::::0;9977:281;9117:6;;-1:-1:-1;;;;;9117:6:0;173:10;9117:22;9109:67;;;;-1:-1:-1;;;9109:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10080:22:0;::::1;10058:110;;;::::0;-1:-1:-1;;;10058:110:0;;16400:2:1;10058:110:0::1;::::0;::::1;16382:21:1::0;16439:2;16419:18;;;16412:30;16478:34;16458:18;;;16451:62;-1:-1:-1;;;16529:18:1;;;16522:36;16575:19;;10058:110:0::1;16198:402:1::0;10058:110:0::1;10205:6;::::0;;10184:38:::1;::::0;-1:-1:-1;;;;;10184:38:0;;::::1;::::0;10205:6;::::1;::::0;10184:38:::1;::::0;::::1;10233:6;:17:::0;;-1:-1:-1;;;;;;10233:17:0::1;-1:-1:-1::0;;;;;10233:17:0;;;::::1;::::0;;;::::1;::::0;;9977:281::o;17494:27::-;;;;;;;;;;;;475:810;535:4;1194:20;;1037:66;1234:15;;;;;:42;;;1265:11;1253:8;:23;;1234:42;1226:51;475:810;-1:-1:-1;;;;475:810:0:o;42731:1237::-;-1:-1:-1;;;;;42804:14:0;42796:31;;42775:18;42865:21;44318:15;;;44206:149;42865:21;42838:48;;42913:16;42900:10;:29;42897:41;;;42931:7;;42731:1237::o;42897:41::-;42960:6;:13;42951:5;;:22;42948:37;;42984:1;42976:5;:9;42948:37;42996:21;43020:18;44179:11;;;44076:122;43020:18;43052:6;:13;42996:42;;-1:-1:-1;43069:1:0;43052:18;43049:30;;43072:7;;;42731:1237::o;43049:30::-;43160:14;;43143:6;:13;43095:19;;;;43143:31;;:62;;43192:6;:13;43143:62;;;43177:14;;43143:62;43129:76;;43230:14;19583:13;;;19503:101;43230:14;43216:28;;43259:9;43255:128;43278:10;:17;43274:21;;43255:128;;;43329:42;43345:25;43356:10;43367:1;43356:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;43356:13:0;19831:19;;:10;:19;;;;;;;19738:120;43345:25;43329:11;;:15;:42::i;:::-;43315:56;-1:-1:-1;43296:3:0;;;;:::i;:::-;;;;43255:128;;;;43396:11;43411:1;43396:16;43393:28;;43414:7;;;;;42731:1237::o;43393:28::-;43433:15;;43459:453;43477:3;43475:1;:5;43459:453;;;43500:12;43515:6;43522:28;43536:6;:13;;;;43529:1;43523:5;;:7;;;;:::i;:::-;43522:13;;:28::i;:::-;43515:36;;;;;;;;:::i;:::-;;;;;;;;;;;43577:15;;-1:-1:-1;;;;;43515:36:0;;;;-1:-1:-1;43577:15:0;43569:23;;43566:335;;43636:13;43616:16;43627:4;-1:-1:-1;;;;;19831:19:0;19804:7;19831:19;;;:10;:19;;;;;;;19738:120;43616:16;:33;43613:273;;43683:55;43726:11;43683:38;43704:16;43683;43694:4;-1:-1:-1;;;;;19831:19:0;19804:7;19831:19;;;:10;:19;;;;;;;19738:120;43683:16;:20;;:38::i;:::-;:42;;:55::i;:::-;43673:65;-1:-1:-1;43764:9:0;;43761:106;;43801:42;;-1:-1:-1;;;43801:42:0;;-1:-1:-1;;;;;16797:32:1;;;43801:42:0;;;16779:51:1;16846:18;;;16839:34;;;43801:14:0;:27;;;;16752:18:1;;43801:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43761:106;-1:-1:-1;43481:3:0;;;;:::i;:::-;;;;43459:453;;;-1:-1:-1;43946:6:0;:13;43931:5;;43930:30;;43946:13;43931:9;;43937:3;;43931:9;:::i;43930:30::-;43922:5;:38;-1:-1:-1;;;;;;42731:1237:0:o;4902:98::-;4960:7;4987:5;4991:1;4987;:5;:::i;:::-;4980:12;4902:98;-1:-1:-1;;;4902:98:0:o;4545:::-;4603:7;4630:5;4634:1;4630;:5;:::i;27600:458::-;-1:-1:-1;;;;;27699:15:0;;;;;;:9;:15;;;;;;:24;-1:-1:-1;27699:24:0;27691:75;;;;-1:-1:-1;;;27691:75:0;;17086:2:1;27691:75:0;;;17068:21:1;17125:2;17105:18;;;17098:30;17164:34;17144:18;;;17137:62;-1:-1:-1;;;17215:18:1;;;17208:36;17261:19;;27691:75:0;16884:402:1;27691:75:0;-1:-1:-1;;;;;27810:15:0;;;;;;;:9;:15;;;;;;;:23;;;27792:41;;27853:16;;27849:165;;27901:12;:21;;;;;;;27849:165;;;-1:-1:-1;;;;;27975:13:0;;;;;;:9;:13;;;;;:22;;;;;;27849:165;28042:2;-1:-1:-1;;;;;28027:25:0;28036:4;-1:-1:-1;;;;;28027:25:0;;28046:5;28027:25;;;;160::1;;148:2;133:18;;14:177;28027:25:0;;;;;;;;27600:458;;;:::o;28675:961::-;-1:-1:-1;;;;;28765:16:0;;;28760:838;;28816:9;28799:27;;;;:16;:27;;;;;;;;28795:394;;28866:9;28850:26;;;;:15;:26;;;;;;28880:12;28850:26;;;;:42;28842:104;;;;-1:-1:-1;;;28842:104:0;;;;;;;:::i;:::-;29013:11;;29000:9;28988:22;;;;:11;:22;;;;;;:36;;29013:11;28988:36;:::i;:::-;28969:15;:55;;28961:97;;;;-1:-1:-1;;;28961:97:0;;17911:2:1;28961:97:0;;;17893:21:1;17950:2;17930:18;;;17923:30;17989:31;17969:18;;;17962:59;18038:18;;28961:97:0;17709:353:1;28961:97:0;29089:9;29073:26;;;;:15;:26;;;;;;;;:49;;-1:-1:-1;;29073:49:0;29109:12;29073:49;;;;;29137:11;:22;;;;;29162:15;29137:40;;28795:394;29202:9;-1:-1:-1;;;;;29202:17:0;;;;;;:44;;-1:-1:-1;;;;;;29224:22:0;;;;;;:16;:22;;;;;;;;29223:23;29202:44;29199:391;;;-1:-1:-1;;;;;29271:21:0;;;;;;:15;:21;;;;;;29296:12;29271:21;;;;:37;29263:99;;;;-1:-1:-1;;;29263:99:0;;;;;;;:::i;:::-;29424:11;;-1:-1:-1;;;;;29404:17:0;;;;;;:11;:17;;;;;;:31;;29424:11;29404:31;:::i;:::-;29385:15;:50;;29377:92;;;;-1:-1:-1;;;29377:92:0;;17911:2:1;29377:92:0;;;17893:21:1;17950:2;17930:18;;;17923:30;17989:31;17969:18;;;17962:59;18038:18;;29377:92:0;17709:353:1;29377:92:0;-1:-1:-1;;;;;29484:21:0;;;;;;:15;:21;;;;;;;;:44;;-1:-1:-1;;29484:44:0;29515:12;29484:44;;;;;29543:11;:17;;;;;29563:15;29543:35;;29199:391;29605:25;29616:4;29621:2;29624:5;29605:10;:25::i;20291:384::-;-1:-1:-1;;;;;20428:20:0;;20420:69;;;;-1:-1:-1;;;20420:69:0;;18269:2:1;20420:69:0;;;18251:21:1;18308:2;18288:18;;;18281:30;18347:34;18327:18;;;18320:62;-1:-1:-1;;;18398:18:1;;;18391:34;18442:19;;20420:69:0;18067:400:1;20420:69:0;-1:-1:-1;;;;;20508:21:0;;20500:68;;;;-1:-1:-1;;;20500:68:0;;18674:2:1;20500:68:0;;;18656:21:1;18713:2;18693:18;;;18686:30;18752:34;18732:18;;;18725:62;-1:-1:-1;;;18803:18:1;;;18796:32;18845:19;;20500:68:0;18472:398:1;20500:68:0;-1:-1:-1;;;;;20581:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;20634:33;;160:25:1;;;20634:33:0;;133:18:1;20634:33:0;14:177:1;4164:98:0;4222:7;4249:5;4253:1;4249;:5;:::i;5301:98::-;5359:7;5386:5;5390:1;5386;:5;:::i;20683:505::-;-1:-1:-1;;;;;20015:19:0;;;20819:24;20015:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;-1:-1:-1;;20887:37:0;;20883:298;;20987:6;20967:16;:26;;20941:117;;;;-1:-1:-1;;;20941:117:0;;19077:2:1;20941:117:0;;;19059:21:1;19116:2;19096:18;;;19089:30;19155:31;19135:18;;;19128:59;19204:18;;20941:117:0;18875:353:1;20941:117:0;21102:52;21111:6;21119:7;21147:6;21128:16;:25;21102:8;:52::i;:::-;20808:380;20683:505;;;:::o;21612:3092::-;21698:4;21732;-1:-1:-1;;;;;21718:19:0;;;21714:2963;;21756:17;21761:4;21766:6;21756:4;:17::i;:::-;21714:2963;;;-1:-1:-1;;;;;;;21794:21:0;;;21791:2886;;21836:17;21856:32;21876:11;;21856:15;21866:4;21856:9;:15::i;:::-;:19;;:32::i;:::-;21836:52;;21919:9;21910:6;:18;21907:84;;;21962:9;21953:18;;21907:84;22009:28;22020:4;22026:2;22030:6;22009:10;:28::i;:::-;-1:-1:-1;;;;;22075:16:0;;;;;;:10;:16;;;;;;:28;;22096:6;22075:20;:28::i;:::-;-1:-1:-1;;;;;22056:16:0;;;;;;:10;:16;;;;;:47;22138:13;;:25;;22156:6;22138:17;:25::i;:::-;22122:13;:41;22207:16;;;22221:1;22207:16;;;;;;;;;22182:22;;22207:16;;;;;;;;;;;-1:-1:-1;22207:16:0;22182:41;;22253:4;22242:5;22248:1;22242:8;;;;;;;;:::i;:::-;;;;;;:15;-1:-1:-1;;;;;22242:15:0;;;-1:-1:-1;;;;;22242:15:0;;;;;22276:21;22291:5;22276:14;:21::i;:::-;21817:492;;21791:2886;;;22350:13;;-1:-1:-1;;;;;22336:28:0;;;22350:13;;22336:28;:63;;;;-1:-1:-1;22368:13:0;;:27;;;-1:-1:-1;;;22368:27:0;;;;22398:1;;-1:-1:-1;;;;;22368:13:0;;:25;;:27;;;;;;;;;;;;;;:13;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:31;22336:63;:148;;;;-1:-1:-1;22458:13:0;;22440:44;;22478:5;;22440:33;;-1:-1:-1;;;;;22458:13:0;22440:9;:33::i;:44::-;22403:34;22421:14;22403:9;:34::i;:::-;:81;22336:148;22332:687;;;22533:8;;;;;;;22532:9;:60;;;;-1:-1:-1;;;;;;22567:25:0;;;;;;:19;:25;;;;;;;;22566:26;22532:60;:109;;;;-1:-1:-1;;;;;;22618:23:0;;;;;;:19;:23;;;;;;;;22617:24;22532:109;:164;;;;-1:-1:-1;22682:13:0;;-1:-1:-1;;;;;22666:30:0;;;22682:13;;22666:30;;22532:164;:256;;;;-1:-1:-1;22740:15:0;;-1:-1:-1;;;;;22724:32:0;;;22740:15;;22724:32;:63;;;;-1:-1:-1;22773:13:0;;-1:-1:-1;;;;;22760:27:0;;;22773:13;;22760:27;;22724:63;22722:66;22532:256;:302;;;;-1:-1:-1;22813:21:0;;;;22532:302;22506:496;;;22883:8;:15;;-1:-1:-1;;22883:15:0;;;;;22925:10;:8;:10::i;:::-;-1:-1:-1;22962:8:0;:16;;-1:-1:-1;;22962:16:0;;;22506:496;23051:8;;;;;;;23050:9;23080:8;;;:37;;-1:-1:-1;;;;;;23092:25:0;;;;;;:19;:25;;;;;;;;23080:37;:64;;;-1:-1:-1;;;;;;23121:23:0;;;;;;:19;:23;;;;;;;;23080:64;23076:1590;;;23168:28;23179:4;23185:2;23189:6;23168:10;:28::i;:::-;23076:1590;;;23245:13;;-1:-1:-1;;;23245:13:0;;;;:45;;;;;23275:15;23262:9;;:28;;23245:45;23237:76;;;;-1:-1:-1;;;23237:76:0;;;;;;;:::i;:::-;23336:5;23332:236;23348:1;23346;:3;23332:236;;;23375:13;23447:4;23453;23458:6;23465:1;23468:15;23422:62;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;23422:62:0;;;;;;;;;23412:73;;23422:62;23412:73;;;;23520:8;;23536:11;;23412:73;;-1:-1:-1;23509:39:0;;-1:-1:-1;;;;;23520:8:0;;;;23412:73;;23509:10;:39::i;:::-;-1:-1:-1;23350:3:0;;;;:::i;:::-;;;;23332:236;;;;23586:17;23606:32;23626:11;;23606:15;23616:4;23606:9;:15::i;:32::-;23709:13;;23586:52;;-1:-1:-1;23657:8:0;;-1:-1:-1;;;;;23709:13:0;;;23695:28;;;;23692:52;;23731:13;23737:6;23731:5;:13::i;:::-;23725:19;;23692:52;23775:9;23766:6;:18;23763:84;;;23818:9;23809:18;;23763:84;23865:65;23876:4;23889:14;23905:24;23924:4;23905:14;:6;23916:2;23905:10;:14::i;:24::-;23865:10;:65::i;:::-;23958:34;23969:22;23987:3;23969:13;:6;23980:1;23969:10;:13::i;:22::-;23958:6;;:10;:34::i;:::-;23949:43;-1:-1:-1;;;;;;24014:16:0;;;;;;:48;;-1:-1:-1;24048:13:0;;-1:-1:-1;;;;;24034:28:0;;;24048:13;;24034:28;;24014:48;:82;;;;-1:-1:-1;24080:15:0;;-1:-1:-1;;;;;24066:30:0;;;24080:15;;24066:30;;24014:82;24011:405;;;24124:15;;-1:-1:-1;;;24124:15:0;;;;24120:275;;;24168:23;24194:20;:18;:20::i;:::-;24168:46;-1:-1:-1;24244:20:0;;24241:130;;-1:-1:-1;;;;;24314:13:0;;;;;;:9;:13;;;;;;24332:15;;24303:25;;:6;;:10;:25::i;:::-;:44;;24295:76;;;;-1:-1:-1;;;24295:76:0;;10855:2:1;24295:76:0;;;10837:21:1;10894:2;10874:18;;;10867:30;-1:-1:-1;;;10913:18:1;;;10906:49;10972:18;;24295:76:0;10653:343:1;24295:76:0;24141:254;24120:275;24436:27;24446:4;24452:2;24456:6;24436:9;:27::i;:::-;24482:15;:13;:15::i;:::-;24536:13;;-1:-1:-1;;;;;24520:30:0;;;24536:13;;24520:30;;;;:38;;;24555:3;24554:4;24520:38;:56;;;;-1:-1:-1;24562:14:0;;-1:-1:-1;;;24562:14:0;;;;24520:56;24516:135;;;24601:30;:28;:30::i;:::-;;24516:135;23218:1448;;23076:1590;22313:2364;-1:-1:-1;24694:4:0;21612:3092;;;;;:::o;10295:361::-;10490:45;;;-1:-1:-1;;;;;16797:32:1;;;10490:45:0;;;16779:51:1;16846:18;;;;16839:34;;;10490:45:0;;;;;;;;;;16752:18:1;;;;10490:45:0;;;;;;;-1:-1:-1;;;;;10490:45:0;-1:-1:-1;;;10490:45:0;;;10479:57;;-1:-1:-1;;;;10479:10:0;;;;:57;;10490:45;10479:57;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10443:93;;;;10555:7;:57;;;;-1:-1:-1;10567:11:0;;:16;;:44;;;10598:4;10587:24;;;;;;;;;;;;:::i;:::-;10547:101;;;;-1:-1:-1;;;10547:101:0;;20166:2:1;10547:101:0;;;20148:21:1;20205:2;20185:18;;;20178:30;20244:33;20224:18;;;20217:61;20295:18;;10547:101:0;19964:355:1;10547:101:0;10365:291;;10295:361;;;:::o;40824:307::-;-1:-1:-1;;;;;40899:17:0;;40919:5;40899:17;;;:6;:17;;;;;:25;;-1:-1:-1;;40899:25:0;;;40968:6;40975:13;;:15;;40899:25;;40975:15;:::i;:::-;40968:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;40946:18:0;;;;;:7;:18;;;;;;;;40939:6;:26;;40968:23;;;;;40939:6;:26;;;;;;:::i;:::-;;;;;;;;;;;;;:52;;-1:-1:-1;;;;;;40939:52:0;-1:-1:-1;;;;;40939:52:0;;;;;;41041:18;;;;;:7;:18;;;;;;;;41014:6;41021:13;;41041:18;;:7;40939:26;41021:15;;-1:-1:-1;;41021:15:0;:::i;:::-;41014:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;41014:23:0;;;41006:32;;;;;;;;;;;;;;;:53;;;;41074:18;;;;;:7;:18;;;;;;:22;41111:6;:12;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;41111:12:0;;;;;-1:-1:-1;;;;;;41111:12:0;;;;;;-1:-1:-1;40824:307:0:o;5866:98::-;5924:7;5951:5;5955:1;5951;:5;:::i;33270:2177::-;33342:13;;-1:-1:-1;;;33342:13:0;;;;33334:45;;;;-1:-1:-1;;;33334:45:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33464:25:0;;33386:19;33464:25;;;:19;:25;;;;;;33386:19;;;;33464:25;;33460:1737;;33528:9;;33509:15;:28;;33501:37;;;;;;33549:17;33569:32;33589:11;;33569:15;33579:4;33569:9;:15::i;:32::-;33549:52;;33629:9;33615:11;:23;33612:78;;;33669:9;33655:23;;33612:78;33704:5;33700:217;33716:1;33714;:3;33700:217;;;33735:13;33807:4;33813;33818:11;33830:1;33833:15;33782:67;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;33782:67:0;;;;;;;;;33772:78;;33782:67;33772:78;;;;33877:8;;33893:11;;33772:78;;-1:-1:-1;33866:39:0;;-1:-1:-1;;;;;33877:8:0;;;;33772:78;;33866:10;:39::i;:::-;-1:-1:-1;33718:3:0;;;;:::i;:::-;;;;33700:217;;;-1:-1:-1;33963:19:0;33985:18;33999:4;33985:11;:18;:::i;:::-;33963:40;-1:-1:-1;34028:18:0;33963:40;34042:4;34028:18;:::i;:::-;34128:4;34110:24;;;;:9;:24;;;;;;34014:32;;-1:-1:-1;34110:38:0;;34014:32;;34110:38;:::i;:::-;34070:35;34084:21;34070:11;:35;:::i;:::-;34069:80;;;;:::i;:::-;34057:92;;34182:4;34170:9;:16;34162:48;;;;-1:-1:-1;;;34162:48:0;;20643:2:1;34162:48:0;;;20625:21:1;20682:2;20662:18;;;20655:30;-1:-1:-1;;;20701:18:1;;;20694:49;20760:18;;34162:48:0;20441:343:1;34162:48:0;34254:9;34229:21;:34;;34221:75;;;;-1:-1:-1;;;34221:75:0;;20991:2:1;34221:75:0;;;20973:21:1;21030:2;21010:18;;;21003:30;21069;21049:18;;;21042:58;21117:18;;34221:75:0;20789:352:1;34221:75:0;34309:43;34319:4;34333;34340:11;34309:9;:43::i;:::-;34445:7;;34388:9;;34438:14;;:4;:14;:::i;:::-;34420:15;34431:4;34420:8;:15;:::i;:::-;:33;;;;:::i;:::-;34408:45;-1:-1:-1;34475:16:0;34494:20;34408:45;34494:8;:20;:::i;:::-;34475:39;-1:-1:-1;34525:17:0;34545:13;34556:2;34475:39;34545:13;:::i;:::-;34577:10;;34525:33;;-1:-1:-1;;;;;;34577:10:0;34569:47;34598:17;34525:33;34612:2;34598:13;:17::i;:::-;34569:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;34635:14:0;34627:32;:51;34660:17;:9;34674:2;34660:13;:17::i;:::-;34627:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34697:8:0;;-1:-1:-1;;;;;34697:8:0;34689:59;34716:31;34729:17;:9;34743:2;34729:13;:17::i;34716:31::-;34689:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34759:15;:13;:15::i;:::-;34464:332;;33490:1318;;;33460:1737;;;34933:4;34915:24;;;;:9;:24;;;;;;34839:11;;-1:-1:-1;34915:38:0;;34839:11;;34915:38;:::i;:::-;34875:35;34889:21;34875:11;:35;:::i;:::-;34874:80;;;;:::i;:::-;34862:92;;34986:4;34974:9;:16;34966:48;;;;-1:-1:-1;;;34966:48:0;;20643:2:1;34966:48:0;;;20625:21:1;20682:2;20662:18;;;20655:30;-1:-1:-1;;;20701:18:1;;;20694:49;20760:18;;34966:48:0;20441:343:1;34966:48:0;35059:9;35034:21;:34;;35026:75;;;;-1:-1:-1;;;35026:75:0;;20991:2:1;35026:75:0;;;20973:21:1;21030:2;21010:18;;;21003:30;21069;21049:18;;;21042:58;21117:18;;35026:75:0;20789:352:1;35026:75:0;35113:44;35124:4;35138;35145:11;35113:10;:44::i;:::-;-1:-1:-1;35181:9:0;33460:1737;35202:33;;-1:-1:-1;;;;;35202:22:0;;;:33;;;;;35225:9;;35202:33;;;;35225:9;35202:22;:33;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35255:13:0;;;;:77;;;;;35317:15;;35300:14;;:32;;;;:::i;:::-;35281:15;:51;;35255:77;35241:147;;;35351:29;:27;:29::i;:::-;;35241:147;35401:40;;;35412:1;11248:25:1;;;11304:2;11289:18;;11282:34;;;11332:18;;;11325:34;;;11390:2;11375:18;;11368:34;35401:40:0;;-1:-1:-1;;;;;35401:40:0;;;;;;;;;11235:3:1;35401:40:0;;;33327:2120;;;33270:2177;;:::o;26997:452::-;27086:13;;27034:4;;;;27068:44;;27106:5;;27068:33;;-1:-1:-1;;;;;27086:13:0;27068:9;:33::i;:44::-;27050:62;;27123:20;27146:34;27164:14;27146:9;:34::i;:::-;27123:57;;27218:7;27202:12;:23;27199:223;;27260:15;:7;27272:2;27260:11;:15::i;:::-;27244:12;:31;27241:83;;27309:15;:7;27321:2;27309:11;:15::i;:::-;27294:30;;27241:83;27391:7;;27399:8;;27339:69;;-1:-1:-1;;;27339:69:0;;27372:4;27339:69;;;21827:34:1;21877:18;;;21870:34;;;27391:7:0;;;;-1:-1:-1;;;;;27391:7:0;;;21920:18:1;;;21913:43;27399:8:0;;;21972:18:1;;;21965:43;27339:14:0;:24;;;;21761:19:1;;27339:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27199:223;27439:4;27432:11;;;;26997:452;:::o;26084:907::-;26137:9;26160:14;26177:13;;;;;;;;;-1:-1:-1;;;;;26177:13:0;-1:-1:-1;;;;;26177:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26160:39;;26210:14;26227:13;;;;;;;;;-1:-1:-1;;;;;26227:13:0;-1:-1:-1;;;;;26227:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26210:39;;26261:7;26269;26281:13;;;;;;;;;-1:-1:-1;;;;;26281:13:0;-1:-1:-1;;;;;26281:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;26364:13:0;;26331:48;;-1:-1:-1;;;26331:48:0;;-1:-1:-1;;;;;26364:13:0;;;26331:48;;;2580:51:1;-1:-1:-1;;;;;26260:48:0;;;;-1:-1:-1;26260:48:0;;;;;-1:-1:-1;26319:9:0;;26331:24;;;;;2553:18:1;;26331:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26435:13;;26402:48;;-1:-1:-1;;;26402:48:0;;-1:-1:-1;;;;;26435:13:0;;;26402:48;;;2580:51:1;26319:60:0;;-1:-1:-1;26390:9:0;;26402:24;;;;;;2553:18:1;;26402:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26390:60;-1:-1:-1;26483:4:0;-1:-1:-1;;;;;26465:23:0;;;26461:523;;26516:2;26509:4;:9;26505:219;;;26538:12;26553:9;26560:2;26553:4;:9;:::i;:::-;26538:24;-1:-1:-1;26581:11:0;26595:22;26614:2;26595:14;:6;26606:2;26595:10;:14::i;:22::-;26581:36;-1:-1:-1;26645:20:0;26663:1;26645:13;26581:36;26656:1;26645:10;:13::i;:20::-;26691:17;;;;;-1:-1:-1;;26505:219:0;26461:523;;;26765:2;26758:4;:9;26754:219;;;26787:12;26802:9;26809:2;26802:4;:9;:::i;:::-;26787:24;-1:-1:-1;26830:11:0;26844:22;26863:2;26844:14;:6;26855:2;26844:10;:14::i;:22::-;26830:36;-1:-1:-1;26894:20:0;26912:1;26894:13;26830:36;26905:1;26894:10;:13::i;:20::-;26940:17;;;;;-1:-1:-1;;26754:219:0;26147:844;;;;;;26084:907;;;:::o;25309:767::-;25367:4;25397:15;;25416:1;25397:20;25393:65;;-1:-1:-1;25441:5:0;;25309:767::o;25393:65::-;25508:16;;25490:15;;:34;;;;:::i;:::-;25472:15;:52;25468:97;;;-1:-1:-1;25548:5:0;;25309:767::o;25468:97::-;25593:15;25575;:33;25668:13;;25619:28;;25650:33;;-1:-1:-1;;;;;25668:13:0;25650:9;:33::i;:::-;25619:64;;25720:13;25697:20;:36;25694:353;;;25749:20;25772:86;25838:5;25772:43;25797:17;;25772:20;:24;;:43;;;;:::i;:86::-;25749:109;-1:-1:-1;25877:16:0;;25873:163;;25933:13;;25914:65;;-1:-1:-1;;;;;25933:13:0;25957:6;25966:12;25914:10;:65::i;:::-;25998:13;;;;;;;;;-1:-1:-1;;;;;25998:13:0;-1:-1:-1;;;;;25998:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25873:163;25734:313;25694:353;26064:4;26057:11;;;25309:767;:::o;36155:1004::-;36246:15;36229:14;:32;36212:4;;36345:24;36363:4;36345:9;:24::i;:::-;36314:55;;36406:13;36383:20;:36;36380:750;;;36476:20;36562:5;36523:16;;36499:20;:41;;;;:::i;:::-;:83;;;;:::i;:::-;36476:106;-1:-1:-1;36620:4:0;36661:6;36780:16;;36776:192;;-1:-1:-1;;;;;36817:15:0;;;;;;:9;:15;;;;;:31;;36836:12;;36817:15;:31;;36836:12;;36817:31;:::i;:::-;;;;-1:-1:-1;;;;;;;36867:13:0;;;;;;:9;:13;;;;;:29;;36884:12;;36867:13;:29;;36884:12;;36867:29;:::i;:::-;;;;;;;;36935:2;-1:-1:-1;;;;;36920:32:0;36929:4;-1:-1:-1;;;;;36920:32:0;;36939:12;36920:32;;;;160:25:1;;148:2;133:18;;14:177;36920:32:0;;;;;;;;36776:192;36989:129;;;23094:25:1;;;23150:2;23135:18;;23128:34;;;37088:15:0;23178:18:1;;;23171:34;36989:129:0;;;;;;;23082:2:1;36989:129:0;;;36420:710;;;37147:4;37140:11;;;36155:1004;:::o;196:131:1:-;-1:-1:-1;;;;;271:31:1;;261:42;;251:70;;317:1;314;307:12;332:134;400:20;;429:31;400:20;429:31;:::i;:::-;332:134;;;:::o;471:118::-;557:5;550:13;543:21;536:5;533:32;523:60;;579:1;576;569:12;594:382;659:6;667;720:2;708:9;699:7;695:23;691:32;688:52;;;736:1;733;726:12;688:52;775:9;762:23;794:31;819:5;794:31;:::i;:::-;844:5;-1:-1:-1;901:2:1;886:18;;873:32;914:30;873:32;914:30;:::i;:::-;963:7;953:17;;;594:382;;;;;:::o;981:250::-;1066:1;1076:113;1090:6;1087:1;1084:13;1076:113;;;1166:11;;;1160:18;1147:11;;;1140:39;1112:2;1105:10;1076:113;;;-1:-1:-1;;1223:1:1;1205:16;;1198:27;981:250::o;1236:396::-;1385:2;1374:9;1367:21;1348:4;1417:6;1411:13;1460:6;1455:2;1444:9;1440:18;1433:34;1476:79;1548:6;1543:2;1532:9;1528:18;1523:2;1515:6;1511:15;1476:79;:::i;:::-;1616:2;1595:15;-1:-1:-1;;1591:29:1;1576:45;;;;1623:2;1572:54;;1236:396;-1:-1:-1;;1236:396:1:o;1890:315::-;1958:6;1966;2019:2;2007:9;1998:7;1994:23;1990:32;1987:52;;;2035:1;2032;2025:12;1987:52;2074:9;2061:23;2093:31;2118:5;2093:31;:::i;:::-;2143:5;2195:2;2180:18;;;;2167:32;;-1:-1:-1;;;1890:315:1:o;2642:309::-;2707:6;2715;2768:2;2756:9;2747:7;2743:23;2739:32;2736:52;;;2784:1;2781;2774:12;2736:52;2820:9;2807:23;2797:33;;2880:2;2869:9;2865:18;2852:32;2893:28;2915:5;2893:28;:::i;3188:180::-;3247:6;3300:2;3288:9;3279:7;3275:23;3271:32;3268:52;;;3316:1;3313;3306:12;3268:52;-1:-1:-1;3339:23:1;;3188:180;-1:-1:-1;3188:180:1:o;3373:456::-;3450:6;3458;3466;3519:2;3507:9;3498:7;3494:23;3490:32;3487:52;;;3535:1;3532;3525:12;3487:52;3574:9;3561:23;3593:31;3618:5;3593:31;:::i;:::-;3643:5;-1:-1:-1;3700:2:1;3685:18;;3672:32;3713:33;3672:32;3713:33;:::i;:::-;3373:456;;3765:7;;-1:-1:-1;;;3819:2:1;3804:18;;;;3791:32;;3373:456::o;3834:121::-;3919:10;3912:5;3908:22;3901:5;3898:33;3888:61;;3945:1;3942;3935:12;3960:245;4018:6;4071:2;4059:9;4050:7;4046:23;4042:32;4039:52;;;4087:1;4084;4077:12;4039:52;4126:9;4113:23;4145:30;4169:5;4145:30;:::i;4210:247::-;4269:6;4322:2;4310:9;4301:7;4297:23;4293:32;4290:52;;;4338:1;4335;4328:12;4290:52;4377:9;4364:23;4396:31;4421:5;4396:31;:::i;5089:377::-;5163:6;5171;5179;5232:2;5220:9;5211:7;5207:23;5203:32;5200:52;;;5248:1;5245;5238:12;5200:52;5284:9;5271:23;5261:33;;5341:2;5330:9;5326:18;5313:32;5303:42;;5395:2;5384:9;5380:18;5367:32;5408:28;5430:5;5408:28;:::i;:::-;5455:5;5445:15;;;5089:377;;;;;:::o;5471:127::-;5532:10;5527:3;5523:20;5520:1;5513:31;5563:4;5560:1;5553:15;5587:4;5584:1;5577:15;5603:908;5657:5;5710:3;5703:4;5695:6;5691:17;5687:27;5677:55;;5728:1;5725;5718:12;5677:55;5764:6;5751:20;5790:4;5813:18;5850:2;5846;5843:10;5840:36;;;5856:18;;:::i;:::-;5902:2;5899:1;5895:10;5934:2;5928:9;5997:2;5993:7;5988:2;5984;5980:11;5976:25;5968:6;5964:38;6052:6;6040:10;6037:22;6032:2;6020:10;6017:18;6014:46;6011:72;;;6063:18;;:::i;:::-;6099:2;6092:22;6149:18;;;6225:15;;;6221:24;;;6183:15;;;;-1:-1:-1;6257:15:1;;;6254:35;;;6285:1;6282;6275:12;6254:35;6321:2;6313:6;6309:15;6298:26;;6333:148;6349:6;6344:3;6341:15;6333:148;;;6415:23;6434:3;6415:23;:::i;:::-;6403:36;;6459:12;;;;6366;;;;6333:148;;;6499:6;5603:908;-1:-1:-1;;;;;;;5603:908:1:o;6516:477::-;6606:6;6614;6667:2;6655:9;6646:7;6642:23;6638:32;6635:52;;;6683:1;6680;6673:12;6635:52;6723:9;6710:23;6756:18;6748:6;6745:30;6742:50;;;6788:1;6785;6778:12;6742:50;6811:61;6864:7;6855:6;6844:9;6840:22;6811:61;:::i;:::-;6801:71;;;6922:2;6911:9;6907:18;6894:32;6935:28;6957:5;6935:28;:::i;6998:348::-;7082:6;7135:2;7123:9;7114:7;7110:23;7106:32;7103:52;;;7151:1;7148;7141:12;7103:52;7191:9;7178:23;7224:18;7216:6;7213:30;7210:50;;;7256:1;7253;7246:12;7210:50;7279:61;7332:7;7323:6;7312:9;7308:22;7279:61;:::i;7351:241::-;7407:6;7460:2;7448:9;7439:7;7435:23;7431:32;7428:52;;;7476:1;7473;7466:12;7428:52;7515:9;7502:23;7534:28;7556:5;7534:28;:::i;7597:388::-;7665:6;7673;7726:2;7714:9;7705:7;7701:23;7697:32;7694:52;;;7742:1;7739;7732:12;7694:52;7781:9;7768:23;7800:31;7825:5;7800:31;:::i;:::-;7850:5;-1:-1:-1;7907:2:1;7892:18;;7879:32;7920:33;7879:32;7920:33;:::i;7990:454::-;8066:6;8074;8082;8135:2;8123:9;8114:7;8110:23;8106:32;8103:52;;;8151:1;8148;8141:12;8103:52;8190:9;8177:23;8209:30;8233:5;8209:30;:::i;:::-;8258:5;-1:-1:-1;8310:2:1;8295:18;;8282:32;;-1:-1:-1;8366:2:1;8351:18;;8338:32;8379:33;8338:32;8379:33;:::i;8449:342::-;8651:2;8633:21;;;8690:2;8670:18;;;8663:30;-1:-1:-1;;;8724:2:1;8709:18;;8702:48;8782:2;8767:18;;8449:342::o;9143:127::-;9204:10;9199:3;9195:20;9192:1;9185:31;9235:4;9232:1;9225:15;9259:4;9256:1;9249:15;9275:128;9342:9;;;9363:11;;;9360:37;;;9377:18;;:::i;9408:127::-;9469:10;9464:3;9460:20;9457:1;9450:31;9500:4;9497:1;9490:15;9524:4;9521:1;9514:15;9540:120;9580:1;9606;9596:35;;9611:18;;:::i;:::-;-1:-1:-1;9645:9:1;;9540:120::o;9665:168::-;9738:9;;;9769;;9786:15;;;9780:22;;9766:37;9756:71;;9807:18;;:::i;9838:528::-;-1:-1:-1;;10147:2:1;10143:15;;;10139:24;;10127:37;;10198:15;;;;10194:24;;;10189:2;10180:12;;10173:46;10244:2;10235:12;;10228:28;;;;10281:2;10272:12;;10265:28;10318:3;10309:13;;10302:29;10356:3;10347:13;;9838:528::o;10371:147::-;10409:3;-1:-1:-1;;;;;10430:30:1;;10427:56;;10463:18;;:::i;:::-;-1:-1:-1;10510:1:1;10499:13;;10371:147::o;10523:125::-;10588:9;;;10609:10;;;10606:36;;;10622:18;;:::i;11413:356::-;11615:2;11597:21;;;11634:18;;;11627:30;11693:34;11688:2;11673:18;;11666:62;11760:2;11745:18;;11413:356::o;11774:380::-;11853:1;11849:12;;;;11896;;;11917:61;;11971:4;11963:6;11959:17;11949:27;;11917:61;12024:2;12016:6;12013:14;11993:18;11990:38;11987:161;;12070:10;12065:3;12061:20;12058:1;12051:31;12105:4;12102:1;12095:15;12133:4;12130:1;12123:15;11987:161;;11774:380;;;:::o;12159:398::-;12361:2;12343:21;;;12400:2;12380:18;;;12373:30;12439:34;12434:2;12419:18;;12412:62;-1:-1:-1;;;12505:2:1;12490:18;;12483:32;12547:3;12532:19;;12159:398::o;12917:127::-;12978:10;12973:3;12969:20;12966:1;12959:31;13009:4;13006:1;12999:15;13033:4;13030:1;13023:15;14423:135;14462:3;14483:17;;;14480:43;;14503:18;;:::i;15616:249::-;15687:10;15729;;;15741;;;15725:27;15772:20;;;;15687:10;15811:24;;;15801:58;;15839:18;;:::i;15870:191::-;15909:1;15935:10;15972:2;15969:1;15965:10;15994:3;15984:37;;16001:18;;:::i;:::-;16039:10;;16035:20;;;;;15870:191;-1:-1:-1;;15870:191:1:o;16066:127::-;16127:10;16122:3;16118:20;16115:1;16108:31;16158:4;16155:1;16148:15;16182:4;16179:1;16172:15;17291:413;17493:2;17475:21;;;17532:2;17512:18;;;17505:30;17571:34;17566:2;17551:18;;17544:62;-1:-1:-1;;;17637:2:1;17622:18;;17615:47;17694:3;17679:19;;17291:413::o;19233:184::-;19303:6;19356:2;19344:9;19335:7;19331:23;19327:32;19324:52;;;19372:1;19369;19362:12;19324:52;-1:-1:-1;19395:16:1;;19233:184;-1:-1:-1;19233:184:1:o;19422:287::-;19551:3;19589:6;19583:13;19605:66;19664:6;19659:3;19652:4;19644:6;19640:17;19605:66;:::i;:::-;19687:16;;;;;19422:287;-1:-1:-1;;19422:287:1:o;19714:245::-;19781:6;19834:2;19822:9;19813:7;19809:23;19805:32;19802:52;;;19850:1;19847;19840:12;19802:52;19882:9;19876:16;19901:28;19923:5;19901:28;:::i;20324:112::-;20356:1;20382;20372:35;;20387:18;;:::i;:::-;-1:-1:-1;20421:9:1;;20324:112::o;22019:251::-;22089:6;22142:2;22130:9;22121:7;22117:23;22113:32;22110:52;;;22158:1;22155;22148:12;22110:52;22190:9;22184:16;22209:31;22234:5;22209:31;:::i;22275:188::-;22354:13;;-1:-1:-1;;;;;22396:42:1;;22386:53;;22376:81;;22453:1;22450;22443:12;22468:419;22555:6;22563;22571;22624:2;22612:9;22603:7;22599:23;22595:32;22592:52;;;22640:1;22637;22630:12;22592:52;22663:40;22693:9;22663:40;:::i;:::-;22653:50;;22722:49;22767:2;22756:9;22752:18;22722:49;:::i;:::-;22712:59;;22814:2;22803:9;22799:18;22793:25;22827:30;22851:5;22827:30;:::i
Swarm Source
ipfs://e6967c14a2138e4c6804436d06255b43e51d4893900c074dc7b75ce8f51bc47a
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.
Add Token to MetaMask (Web3)