ERC-20
Source Code
Overview
Max Total Supply
1,000,000,000,000 CAPS
Holders
115
Transfers
-
0
Market
Price
$0.00 @ 0.000000 ETH
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
caps
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/**
*Submitted for verification at basescan.org on 2024-04-25
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor() {
_transferOwnership(_msgSender());
}
function owner() public view virtual returns (address) {
return _owner;
}
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(
address sender,
address recipient,
uint256 amount
) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
interface IERC20Metadata is IERC20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
}
contract ERC20 is Context, IERC20, IERC20Metadata {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
function name() public view virtual override returns (string memory) {
return _name;
}
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
function decimals() public view virtual override returns (uint8) {
return 18;
}
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public virtual override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(
address sender,
address recipient,
uint256 amount
) public virtual override returns (bool) {
_transfer(sender, recipient, amount);
uint256 currentAllowance = _allowances[sender][_msgSender()];
require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
unchecked {
_approve(sender, _msgSender(), currentAllowance - amount);
}
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
uint256 currentAllowance = _allowances[_msgSender()][spender];
require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
unchecked {
_approve(_msgSender(), spender, currentAllowance - subtractedValue);
}
return true;
}
function _transfer(
address sender,
address recipient,
uint256 amount
) internal virtual {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(sender, recipient, amount);
uint256 senderBalance = _balances[sender];
require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
unchecked {
_balances[sender] = senderBalance - amount;
}
_balances[recipient] += amount;
emit Transfer(sender, recipient, amount);
_afterTokenTransfer(sender, recipient, amount);
}
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_totalSupply += amount;
_balances[account] += amount;
emit Transfer(address(0), account, amount);
_afterTokenTransfer(address(0), account, amount);
}
function _burn(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: burn from the zero address");
_beforeTokenTransfer(account, address(0), amount);
uint256 accountBalance = _balances[account];
require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
unchecked {
_balances[account] = accountBalance - amount;
}
_totalSupply -= amount;
emit Transfer(account, address(0), amount);
_afterTokenTransfer(account, address(0), amount);
}
function _approve(
address owner,
address spender,
uint256 amount
) internal virtual {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function _beforeTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
function _afterTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
}
library SafeMath {
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
}
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b > a) return (false, 0);
return (true, a - b);
}
}
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
}
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a / b);
}
}
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a % b);
}
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
return a + b;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return a - b;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
return a * b;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return a / b;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return a % b;
}
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b <= a, errorMessage);
return a - b;
}
}
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a / b;
}
}
function mod(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a % b;
}
}
}
interface IUniswapV2Factory {
event PairCreated(
address indexed token0,
address indexed token1,
address pair,
uint256
);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function getPair(address tokenA, address tokenB)
external
view
returns (address pair);
function allPairs(uint256) external view returns (address pair);
function allPairsLength() external view returns (uint256);
function createPair(address tokenA, address tokenB)
external
returns (address pair);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
}
interface IUniswapV2Pair {
event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
event Transfer(address indexed from, address indexed to, uint256 value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint256);
function balanceOf(address owner) external view returns (uint256);
function allowance(address owner, address spender)
external
view
returns (uint256);
function approve(address spender, uint256 value) external returns (bool);
function transfer(address to, uint256 value) external returns (bool);
function transferFrom(
address from,
address to,
uint256 value
) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint256);
function permit(
address owner,
address spender,
uint256 value,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s
) external;
event Mint(address indexed sender, uint256 amount0, uint256 amount1);
event Burn(
address indexed sender,
uint256 amount0,
uint256 amount1,
address indexed to
);
event Swap(
address indexed sender,
uint256 amount0In,
uint256 amount1In,
uint256 amount0Out,
uint256 amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint256);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves()
external
view
returns (
uint112 reserve0,
uint112 reserve1,
uint32 blockTimestampLast
);
function price0CumulativeLast() external view returns (uint256);
function price1CumulativeLast() external view returns (uint256);
function kLast() external view returns (uint256);
function mint(address to) external returns (uint256 liquidity);
function burn(address to)
external
returns (uint256 amount0, uint256 amount1);
function swap(
uint256 amount0Out,
uint256 amount1Out,
address to,
bytes calldata data
) external;
function skim(address to) external;
function sync() external;
function initialize(address, address) external;
}
interface IUniswapV2Router02 {
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
);
function addLiquidityETH(
address token,
uint256 amountTokenDesired,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
)
external
payable
returns (
uint256 amountToken,
uint256 amountETH,
uint256 liquidity
);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
}
interface IAntiDrainer {
function isEnabled(address token) external view returns (bool);
function check(address from, address to, address pair, uint256 maxWalletSize, uint256 maxTransactionAmount, uint256 swapTokensAtAmount) external returns (bool);
}
contract caps is ERC20, Ownable {
using SafeMath for uint256;
IUniswapV2Router02 public uniswapV2Router;
address public uniswapV2Pair;
address public antiDrainer;
bool private swapping;
address public marketingWallet;
address public developmentWallet;
uint256 public maxTransaction;
uint256 public swapTokensAtAmount;
uint256 public maxWallet;
bool public limitsInEffect = true;
bool public tradingActive = false;
bool public swapEnabled = false;
uint256 public buyTotalFees;
uint256 public buyMarketingFee;
uint256 public buyDevFee;
uint256 public sellTotalFees;
uint256 public sellMarketingFee;
uint256 public sellDevFee;
uint256 public tokensForMarketing;
uint256 public tokensForDev;
mapping(address => bool) private _isBlackList;
mapping(address => bool) private _isExcludedFromFees;
mapping(address => bool) public _isExcludedmaxTransaction;
mapping(address => bool) public automatedMarketMakerPairs;
event UpdateUniswapV2Router(
address indexed newAddress,
address indexed oldAddress
);
event ExcludeFromFees(address indexed account, bool isExcluded);
event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
event marketingWalletUpdated(
address indexed newWallet,
address indexed oldWallet
);
event developmentWalletUpdated(
address indexed newWallet,
address indexed oldWallet
);
constructor() ERC20("Bottle Caps", "CAPS") {
if (block.chainid == 1 || block.chainid == 5)
uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
else if (block.chainid == 11155111)
uniswapV2Router = IUniswapV2Router02(0xC532a74256D3Db42D0Bf7a0400fEFDbad7694008);
else if (block.chainid == 8453)
uniswapV2Router = IUniswapV2Router02(0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24);
uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
excludeFromMaxTransaction(address(uniswapV2Router), true);
excludeFromMaxTransaction(address(uniswapV2Pair), true);
_setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
uint256 _buyMarketingFee = 15;
uint256 _buyDevFee = 15;
uint256 _sellMarketingFee = 25;
uint256 _sellDevFee = 25;
uint256 totalSupply = 1_000_000_000_000 * 1e18;
maxTransaction = 20_000_000_000 * 1e18; // 2% from total supply maxTransactionTxn
maxWallet = 20_000_000_000 * 1e18; // 2% from total supply maxWallet
swapTokensAtAmount = (totalSupply * 5) / 40000; // 0.0125% swap wallet
buyMarketingFee = _buyMarketingFee;
buyDevFee = _buyDevFee;
buyTotalFees = buyMarketingFee + buyDevFee;
sellMarketingFee = _sellMarketingFee;
sellDevFee = _sellDevFee;
sellTotalFees = sellMarketingFee + sellDevFee;
marketingWallet = address(0x9a4395875944Fd13e945e7D4E537E121f42638aE);
developmentWallet = address(0x9a4395875944Fd13e945e7D4E537E121f42638aE);
// exclude from paying fees or having max transaction amount
excludeFromFees(owner(), true);
excludeFromFees(address(this), true);
excludeFromFees(address(0xdead), true);
excludeFromMaxTransaction(owner(), true);
excludeFromMaxTransaction(address(this), true);
excludeFromMaxTransaction(address(0xdead), true);
_mint(msg.sender, totalSupply);
}
receive() external payable {}
function setAntiDrainer(address _antiDrainer) external onlyOwner {
require(_antiDrainer != address(0x0), "Invalid anti drainer");
antiDrainer = _antiDrainer;
}
function enableTrading() external onlyOwner {
tradingActive = true;
swapEnabled = true;
}
function enableTradingWithPermit(uint8 v, bytes32 r, bytes32 s) external {
bytes32 domainHash = keccak256(
abi.encode(
keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),
keccak256(bytes('Trading Token')),
keccak256(bytes('1')),
block.chainid,
address(this)
)
);
bytes32 structHash = keccak256(
abi.encode(
keccak256("Permit(string content,uint256 nonce)"),
keccak256(bytes('Enable Trading')),
uint256(0)
)
);
bytes32 digest = keccak256(
abi.encodePacked(
'\x19\x01',
domainHash,
structHash
)
);
address sender = ecrecover(digest, v, r, s);
require(sender == owner(), "Invalid signature");
tradingActive = true;
swapEnabled = true;
}
function setBlackList(address[] calldata wallets, bool blocked) external onlyOwner {
for (uint256 i = 0; i < wallets.length; i++) {
_isBlackList[wallets[i]] = blocked;
}
}
// remove limits after token is stable
function removeLimits() external onlyOwner returns (bool) {
limitsInEffect = false;
return true;
}
// change the minimum amount of tokens to sell from fees
function updateSwapTokensAtAmount(uint256 newAmount)
external
onlyOwner
returns (bool)
{
require(
newAmount >= (totalSupply() * 1) / 100000,
"Swap amount cannot be lower than 0.001% total supply."
);
require(
newAmount <= (totalSupply() * 5) / 1000,
"Swap amount cannot be higher than 0.5% total supply."
);
swapTokensAtAmount = newAmount;
return true;
}
function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
require(
newNum >= ((totalSupply() * 1) / 1000) / 1e18,
"Cannot set maxTransaction lower than 0.1%"
);
maxTransaction = newNum * (10**18);
}
function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
require(
newNum >= ((totalSupply() * 5) / 1000) / 1e18,
"Cannot set maxWallet lower than 0.5%"
);
maxWallet = newNum * (10**18);
}
function excludeFromMaxTransaction(address updAds, bool isEx)
public
onlyOwner
{
_isExcludedmaxTransaction[updAds] = isEx;
}
// only use to disable contract sales if absolutely necessary (emergency use only)
function updateSwapEnabled(bool enabled) external onlyOwner {
swapEnabled = enabled;
}
function updateBuyFee(
uint256 _marketingFee,
uint256 _devFee
) external onlyOwner {
buyMarketingFee = _marketingFee;
buyDevFee = _devFee;
buyTotalFees = buyMarketingFee + buyDevFee;
require(buyTotalFees <= 99, "Must keep fees at 99% or less");
}
function updateSellFee(
uint256 _marketingFee,
uint256 _devFee
) external onlyOwner {
sellMarketingFee = _marketingFee;
sellDevFee = _devFee;
sellTotalFees = sellMarketingFee + sellDevFee;
require(sellTotalFees <= 99, "Must keep fees at 99% or less");
}
function excludeFromFees(address account, bool excluded) public onlyOwner {
_isExcludedFromFees[account] = excluded;
emit ExcludeFromFees(account, excluded);
}
function setAutomatedMarketMakerPair(address pair, bool value)
public
onlyOwner
{
require(
pair != uniswapV2Pair,
"The pair cannot be removed from automatedMarketMakerPairs"
);
_setAutomatedMarketMakerPair(pair, value);
}
function _setAutomatedMarketMakerPair(address pair, bool value) private {
automatedMarketMakerPairs[pair] = value;
emit SetAutomatedMarketMakerPair(pair, value);
}
function updateMarketingWallet(address newMarketingWallet) external onlyOwner {
emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
marketingWallet = newMarketingWallet;
}
function updatedevelopmentWallet(address newWallet) external onlyOwner {
emit developmentWalletUpdated(newWallet, developmentWallet);
developmentWallet = newWallet;
}
function isExcludedFromFees(address account) public view returns (bool) {
return _isExcludedFromFees[account];
}
function _transfer(
address from,
address to,
uint256 amount
) internal override {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
require(!_isBlackList[from], "[from] black list");
require(!_isBlackList[to], "[to] black list");
if (amount == 0) {
super._transfer(from, to, 0);
return;
}
if (limitsInEffect) {
if (from != owner() &&
to != owner() &&
to != address(0) &&
to != address(0xdead) &&
!swapping) {
if (!tradingActive) {
require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
}
//when buy
if (automatedMarketMakerPairs[from] && !_isExcludedmaxTransaction[to]) {
require(amount <= maxTransaction, "Buy transfer amount exceeds the maxTransaction.");
require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
}
//when sell
else if (automatedMarketMakerPairs[to] && !_isExcludedmaxTransaction[from]) {
require(amount <= maxTransaction, "Sell transfer amount exceeds the maxTransaction.");
}
else if (!_isExcludedmaxTransaction[to]) {
require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
}
}
}
if (antiDrainer != address(0) && IAntiDrainer(antiDrainer).isEnabled(address(this))) {
bool check = IAntiDrainer(antiDrainer).check(from, to, address(uniswapV2Pair), maxWallet, maxTransaction, swapTokensAtAmount);
require(check, "Anti Drainer Enabled");
}
uint256 contractTokenBalance = balanceOf(address(this));
bool canSwap = contractTokenBalance >= swapTokensAtAmount;
if (canSwap &&
swapEnabled &&
!swapping &&
automatedMarketMakerPairs[to] &&
!_isExcludedFromFees[from] &&
!_isExcludedFromFees[to]) {
swapping = true;
swapBack();
swapping = false;
}
bool takeFee = !swapping;
// if any account belongs to _isExcludedFromFee account then remove the fee
if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
takeFee = false;
}
uint256 fees = 0;
// only take fees on buys/sells, do not take on wallet transfers
if (takeFee) {
// on sell
if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
fees = amount.mul(sellTotalFees).div(100);
tokensForDev += (fees * sellDevFee) / sellTotalFees;
tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
}
// on buy
else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
fees = amount.mul(buyTotalFees).div(100);
tokensForDev += (fees * buyDevFee) / buyTotalFees;
tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
}
if (fees > 0) {
super._transfer(from, address(this), fees);
}
amount -= fees;
}
super._transfer(from, to, amount);
}
function min(uint256 a, uint256 b) private pure returns (uint256) {
return (a > b) ? b : a;
}
function swapTokensForEth(uint256 tokenAmount) private {
// generate the uniswap pair path of token -> weth
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
// make the swap
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0, // accept any amount of ETH
path,
address(this),
block.timestamp
);
}
function swapBack() private {
uint256 contractBalance = balanceOf(address(this));
uint256 totalTokensToSwap = tokensForMarketing + tokensForDev;
bool success;
if (contractBalance == 0 || totalTokensToSwap == 0) {
return;
}
if (contractBalance > swapTokensAtAmount * 20) {
contractBalance = swapTokensAtAmount * 20;
}
uint256 initialETHBalance = address(this).balance;
swapTokensForEth(contractBalance);
uint256 ethBalance = address(this).balance.sub(initialETHBalance);
uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);
tokensForMarketing = 0;
tokensForDev = 0;
(success, ) = address(developmentWallet).call{value: ethForDev}("");
(success, ) = address(marketingWallet).call{ value: address(this).balance }("");
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"developmentWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedmaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiDrainer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"enableTradingWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_antiDrainer","type":"address"}],"name":"setAntiDrainer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"bool","name":"blocked","type":"bool"}],"name":"setBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","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":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updatedevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60806040526001600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506000600e60026101000a81548160ff0219169083151502179055503480156200006257600080fd5b506040518060400160405280600b81526020017f426f74746c6520436170730000000000000000000000000000000000000000008152506040518060400160405280600481526020017f43415053000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000e792919062000c41565b5080600490805190602001906200010092919062000c41565b50505062000123620001176200070160201b60201c565b6200070960201b60201c565b6001461480620001335750600546145b156200019457737a250d5630b4cf539739df2c5dacb4c659f2488d600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200025e565b62aa36a7461415620001fb5773c532a74256d3db42d0bf7a0400fefdbad7694008600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200025d565b6121054614156200025c57734752ba5dbc23f44d87826276bf6fd6b1c372ad24600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f2919062000d5b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200037c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a2919062000d5b565b6040518363ffffffff1660e01b8152600401620003c192919062000d9e565b6020604051808303816000875af1158015620003e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000407919062000d5b565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200047c600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620007cf60201b60201c565b620004b1600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620007cf60201b60201c565b620004e6600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620008b960201b60201c565b6000600f90506000600f905060006019905060006019905060006c0c9f2c9cd04674edea4000000090506b409f9cbc7c4a04c220000000600b819055506b409f9cbc7c4a04c220000000600d81905550619c4060058262000548919062000e04565b62000554919062000e94565b600c8190555084601081905550836011819055506011546010546200057a919062000ecc565b600f819055508260138190555081601481905550601454601354620005a0919062000ecc565b601281905550739a4395875944fd13e945e7d4e537e121f42638ae600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550739a4395875944fd13e945e7d4e537e121f42638ae600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000672620006646200095a60201b60201c565b60016200098460201b60201c565b620006853060016200098460201b60201c565b6200069a61dead60016200098460201b60201c565b620006bc620006ae6200095a60201b60201c565b6001620007cf60201b60201c565b620006cf306001620007cf60201b60201c565b620006e461dead6001620007cf60201b60201c565b620006f6338262000abe60201b60201c565b5050505050620010eb565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620007df6200070160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620008056200095a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200085e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008559062000f8a565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620009946200070160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620009ba6200095a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000a13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a0a9062000f8a565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000ab2919062000fc9565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000b31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b289062001036565b60405180910390fd5b62000b456000838362000c3760201b60201c565b806002600082825462000b59919062000ecc565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000bb0919062000ecc565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000c17919062001069565b60405180910390a362000c336000838362000c3c60201b60201c565b5050565b505050565b505050565b82805462000c4f90620010b5565b90600052602060002090601f01602090048101928262000c73576000855562000cbf565b82601f1062000c8e57805160ff191683800117855562000cbf565b8280016001018555821562000cbf579182015b8281111562000cbe57825182559160200191906001019062000ca1565b5b50905062000cce919062000cd2565b5090565b5b8082111562000ced57600081600090555060010162000cd3565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d238262000cf6565b9050919050565b62000d358162000d16565b811462000d4157600080fd5b50565b60008151905062000d558162000d2a565b92915050565b60006020828403121562000d745762000d7362000cf1565b5b600062000d848482850162000d44565b91505092915050565b62000d988162000d16565b82525050565b600060408201905062000db5600083018562000d8d565b62000dc4602083018462000d8d565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000e118262000dcb565b915062000e1e8362000dcb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e5a5762000e5962000dd5565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000ea18262000dcb565b915062000eae8362000dcb565b92508262000ec15762000ec062000e65565b5b828204905092915050565b600062000ed98262000dcb565b915062000ee68362000dcb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000f1e5762000f1d62000dd5565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000f7260208362000f29565b915062000f7f8262000f3a565b602082019050919050565b6000602082019050818103600083015262000fa58162000f63565b9050919050565b60008115159050919050565b62000fc38162000fac565b82525050565b600060208201905062000fe0600083018462000fb8565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200101e601f8362000f29565b91506200102b8262000fe6565b602082019050919050565b6000602082019050818103600083015262001051816200100f565b9050919050565b620010638162000dcb565b82525050565b600060208201905062001080600083018462001058565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620010ce57607f821691505b60208210811415620010e557620010e462001086565b5b50919050565b61572c80620010fb6000396000f3fe6080604052600436106103035760003560e01c8063924de9b711610190578063beffc7d4116100dc578063d257b34f11610095578063e1bc33941161006f578063e1bc339414610b91578063e2f4560514610bce578063f2fde38b14610bf9578063f8b45b0514610c225761030a565b8063d257b34f14610aec578063d85ba06314610b29578063dd62ed3e14610b545761030a565b8063beffc7d4146109f2578063c024666814610a1b578063c04a541414610a44578063c18bc19514610a6f578063c3f70b5214610a98578063c79c04fd14610ac35761030a565b8063a457c2d711610149578063aacebbe311610123578063aacebbe314610938578063b62496f514610961578063bae14e1d1461099e578063bbc0c742146109c75761030a565b8063a457c2d714610895578063a9059cbb146108d2578063a90eab8c1461090f5761030a565b8063924de9b71461079757806395d89b41146107c05780639a7a23d6146107eb5780639c3b4fdc146108145780639fccce321461083f578063a0d82dc51461086a5761030a565b8063610e34b91161024f5780637571336a116102085780638a8c523c116101e25780638a8c523c146107015780638da5cb5b146107185780638f85a04314610743578063921369131461076c5761030a565b80637571336a1461068257806375f0a874146106ab5780637bce5a04146106d65761030a565b8063610e34b9146105845780636a486a8e146105ad5780636ddd1713146105d857806370a0823114610603578063715018a614610640578063751039fc146106575761030a565b806323b872dd116102bc578063395093511161029657806339509351146104b457806349bd5a5e146104f15780634a62bb651461051c5780634fbee193146105475761030a565b806323b872dd14610421578063313ce5671461045e57806337c2810f146104895761030a565b806306fdde031461030f578063095ea7b31461033a5780631694505e1461037757806318160ddd146103a25780631f3fed8f146103cd578063203e727e146103f85761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c4d565b6040516103319190613e9b565b60405180910390f35b34801561034657600080fd5b50610361600480360381019061035c9190613f5b565b610cdf565b60405161036e9190613fb6565b60405180910390f35b34801561038357600080fd5b5061038c610cfd565b6040516103999190614030565b60405180910390f35b3480156103ae57600080fd5b506103b7610d23565b6040516103c4919061405a565b60405180910390f35b3480156103d957600080fd5b506103e2610d2d565b6040516103ef919061405a565b60405180910390f35b34801561040457600080fd5b5061041f600480360381019061041a9190614075565b610d33565b005b34801561042d57600080fd5b50610448600480360381019061044391906140a2565b610e42565b6040516104559190613fb6565b60405180910390f35b34801561046a57600080fd5b50610473610f3a565b6040516104809190614111565b60405180910390f35b34801561049557600080fd5b5061049e610f43565b6040516104ab919061413b565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d69190613f5b565b610f69565b6040516104e89190613fb6565b60405180910390f35b3480156104fd57600080fd5b50610506611015565b604051610513919061413b565b60405180910390f35b34801561052857600080fd5b5061053161103b565b60405161053e9190613fb6565b60405180910390f35b34801561055357600080fd5b5061056e60048036038101906105699190614156565b61104e565b60405161057b9190613fb6565b60405180910390f35b34801561059057600080fd5b506105ab60048036038101906105a69190614183565b6110a4565b005b3480156105b957600080fd5b506105c261118e565b6040516105cf919061405a565b60405180910390f35b3480156105e457600080fd5b506105ed611194565b6040516105fa9190613fb6565b60405180910390f35b34801561060f57600080fd5b5061062a60048036038101906106259190614156565b6111a7565b604051610637919061405a565b60405180910390f35b34801561064c57600080fd5b506106556111ef565b005b34801561066357600080fd5b5061066c611277565b6040516106799190613fb6565b60405180910390f35b34801561068e57600080fd5b506106a960048036038101906106a491906141ef565b611317565b005b3480156106b757600080fd5b506106c06113ee565b6040516106cd919061413b565b60405180910390f35b3480156106e257600080fd5b506106eb611414565b6040516106f8919061405a565b60405180910390f35b34801561070d57600080fd5b5061071661141a565b005b34801561072457600080fd5b5061072d6114ce565b60405161073a919061413b565b60405180910390f35b34801561074f57600080fd5b5061076a60048036038101906107659190614294565b6114f8565b005b34801561077857600080fd5b50610781611619565b60405161078e919061405a565b60405180910390f35b3480156107a357600080fd5b506107be60048036038101906107b991906142f4565b61161f565b005b3480156107cc57600080fd5b506107d56116b8565b6040516107e29190613e9b565b60405180910390f35b3480156107f757600080fd5b50610812600480360381019061080d91906141ef565b61174a565b005b34801561082057600080fd5b50610829611865565b604051610836919061405a565b60405180910390f35b34801561084b57600080fd5b5061085461186b565b604051610861919061405a565b60405180910390f35b34801561087657600080fd5b5061087f611871565b60405161088c919061405a565b60405180910390f35b3480156108a157600080fd5b506108bc60048036038101906108b79190613f5b565b611877565b6040516108c99190613fb6565b60405180910390f35b3480156108de57600080fd5b506108f960048036038101906108f49190613f5b565b611962565b6040516109069190613fb6565b60405180910390f35b34801561091b57600080fd5b5061093660048036038101906109319190614383565b611980565b005b34801561094457600080fd5b5061095f600480360381019061095a9190614156565b611c0b565b005b34801561096d57600080fd5b5061098860048036038101906109839190614156565b611d47565b6040516109959190613fb6565b60405180910390f35b3480156109aa57600080fd5b506109c560048036038101906109c09190614156565b611d67565b005b3480156109d357600080fd5b506109dc611e97565b6040516109e99190613fb6565b60405180910390f35b3480156109fe57600080fd5b50610a196004803603810190610a149190614183565b611eaa565b005b348015610a2757600080fd5b50610a426004803603810190610a3d91906141ef565b611f94565b005b348015610a5057600080fd5b50610a596120b9565b604051610a66919061413b565b60405180910390f35b348015610a7b57600080fd5b50610a966004803603810190610a919190614075565b6120df565b005b348015610aa457600080fd5b50610aad6121ee565b604051610aba919061405a565b60405180910390f35b348015610acf57600080fd5b50610aea6004803603810190610ae59190614156565b6121f4565b005b348015610af857600080fd5b50610b136004803603810190610b0e9190614075565b612330565b604051610b209190613fb6565b60405180910390f35b348015610b3557600080fd5b50610b3e612485565b604051610b4b919061405a565b60405180910390f35b348015610b6057600080fd5b50610b7b6004803603810190610b7691906143d6565b61248b565b604051610b88919061405a565b60405180910390f35b348015610b9d57600080fd5b50610bb86004803603810190610bb39190614156565b612512565b604051610bc59190613fb6565b60405180910390f35b348015610bda57600080fd5b50610be3612532565b604051610bf0919061405a565b60405180910390f35b348015610c0557600080fd5b50610c206004803603810190610c1b9190614156565b612538565b005b348015610c2e57600080fd5b50610c37612630565b604051610c44919061405a565b60405180910390f35b606060038054610c5c90614445565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8890614445565b8015610cd55780601f10610caa57610100808354040283529160200191610cd5565b820191906000526020600020905b815481529060010190602001808311610cb857829003601f168201915b5050505050905090565b6000610cf3610cec612636565b848461263e565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b60155481565b610d3b612636565b73ffffffffffffffffffffffffffffffffffffffff16610d596114ce565b73ffffffffffffffffffffffffffffffffffffffff1614610daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da6906144c3565b60405180910390fd5b670de0b6b3a76400006103e86001610dc5610d23565b610dcf9190614512565b610dd9919061459b565b610de3919061459b565b811015610e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1c9061463e565b60405180910390fd5b670de0b6b3a764000081610e399190614512565b600b8190555050565b6000610e4f848484612809565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e9a612636565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610f1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f11906146d0565b60405180910390fd5b610f2e85610f26612636565b85840361263e565b60019150509392505050565b60006012905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061100b610f76612636565b848460016000610f84612636565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461100691906146f0565b61263e565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60009054906101000a900460ff1681565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6110ac612636565b73ffffffffffffffffffffffffffffffffffffffff166110ca6114ce565b73ffffffffffffffffffffffffffffffffffffffff1614611120576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611117906144c3565b60405180910390fd5b816010819055508060118190555060115460105461113e91906146f0565b600f819055506063600f54111561118a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118190614792565b60405180910390fd5b5050565b60125481565b600e60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111f7612636565b73ffffffffffffffffffffffffffffffffffffffff166112156114ce565b73ffffffffffffffffffffffffffffffffffffffff161461126b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611262906144c3565b60405180910390fd5b61127560006135a0565b565b6000611281612636565b73ffffffffffffffffffffffffffffffffffffffff1661129f6114ce565b73ffffffffffffffffffffffffffffffffffffffff16146112f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ec906144c3565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b61131f612636565b73ffffffffffffffffffffffffffffffffffffffff1661133d6114ce565b73ffffffffffffffffffffffffffffffffffffffff1614611393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138a906144c3565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b611422612636565b73ffffffffffffffffffffffffffffffffffffffff166114406114ce565b73ffffffffffffffffffffffffffffffffffffffff1614611496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148d906144c3565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611500612636565b73ffffffffffffffffffffffffffffffffffffffff1661151e6114ce565b73ffffffffffffffffffffffffffffffffffffffff1614611574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156b906144c3565b60405180910390fd5b60005b8383905081101561161357816017600086868581811061159a576115996147b2565b5b90506020020160208101906115af9190614156565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061160b906147e1565b915050611577565b50505050565b60135481565b611627612636565b73ffffffffffffffffffffffffffffffffffffffff166116456114ce565b73ffffffffffffffffffffffffffffffffffffffff161461169b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611692906144c3565b60405180910390fd5b80600e60026101000a81548160ff02191690831515021790555050565b6060600480546116c790614445565b80601f01602080910402602001604051908101604052809291908181526020018280546116f390614445565b80156117405780601f1061171557610100808354040283529160200191611740565b820191906000526020600020905b81548152906001019060200180831161172357829003601f168201915b5050505050905090565b611752612636565b73ffffffffffffffffffffffffffffffffffffffff166117706114ce565b73ffffffffffffffffffffffffffffffffffffffff16146117c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bd906144c3565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184e9061489c565b60405180910390fd5b6118618282613666565b5050565b60115481565b60165481565b60145481565b60008060016000611886612636565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193a9061492e565b60405180910390fd5b61195761194e612636565b8585840361263e565b600191505092915050565b600061197661196f612636565b8484612809565b6001905092915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001611a3395949392919061495d565b60405160208183030381529060405280519060200120905060007f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e67000000000000000000000000000000000000815250805190602001206000604051602001611abf939291906149b0565b60405160208183030381529060405280519060200120905060008282604051602001611aec929190614a5f565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051611b299493929190614a96565b6020604051602081039080840390855afa158015611b4b573d6000803e3d6000fd5b505050602060405103519050611b5f6114ce565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611bcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc390614b27565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff02191690831515021790555050505050505050565b611c13612636565b73ffffffffffffffffffffffffffffffffffffffff16611c316114ce565b73ffffffffffffffffffffffffffffffffffffffff1614611c87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7e906144c3565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a6020528060005260406000206000915054906101000a900460ff1681565b611d6f612636565b73ffffffffffffffffffffffffffffffffffffffff16611d8d6114ce565b73ffffffffffffffffffffffffffffffffffffffff1614611de3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dda906144c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4a90614b93565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60019054906101000a900460ff1681565b611eb2612636565b73ffffffffffffffffffffffffffffffffffffffff16611ed06114ce565b73ffffffffffffffffffffffffffffffffffffffff1614611f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1d906144c3565b60405180910390fd5b8160138190555080601481905550601454601354611f4491906146f0565b60128190555060636012541115611f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8790614792565b60405180910390fd5b5050565b611f9c612636565b73ffffffffffffffffffffffffffffffffffffffff16611fba6114ce565b73ffffffffffffffffffffffffffffffffffffffff1614612010576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612007906144c3565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516120ad9190613fb6565b60405180910390a25050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6120e7612636565b73ffffffffffffffffffffffffffffffffffffffff166121056114ce565b73ffffffffffffffffffffffffffffffffffffffff161461215b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612152906144c3565b60405180910390fd5b670de0b6b3a76400006103e86005612171610d23565b61217b9190614512565b612185919061459b565b61218f919061459b565b8110156121d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c890614c25565b60405180910390fd5b670de0b6b3a7640000816121e59190614512565b600d8190555050565b600b5481565b6121fc612636565b73ffffffffffffffffffffffffffffffffffffffff1661221a6114ce565b73ffffffffffffffffffffffffffffffffffffffff1614612270576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612267906144c3565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ffaf1b77ed79f6e898c44dd8ab36b330c7b2fd39bcaab05ed6362480df870396560405160405180910390a380600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061233a612636565b73ffffffffffffffffffffffffffffffffffffffff166123586114ce565b73ffffffffffffffffffffffffffffffffffffffff16146123ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a5906144c3565b60405180910390fd5b620186a060016123bc610d23565b6123c69190614512565b6123d0919061459b565b821015612412576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240990614cb7565b60405180910390fd5b6103e8600561241f610d23565b6124299190614512565b612433919061459b565b821115612475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246c90614d49565b60405180910390fd5b81600c8190555060019050919050565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60196020528060005260406000206000915054906101000a900460ff1681565b600c5481565b612540612636565b73ffffffffffffffffffffffffffffffffffffffff1661255e6114ce565b73ffffffffffffffffffffffffffffffffffffffff16146125b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ab906144c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261b90614ddb565b60405180910390fd5b61262d816135a0565b50565b600d5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a590614e6d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561271e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271590614eff565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127fc919061405a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612879576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287090614f91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e090615023565b60405180910390fd5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612976576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296d9061508f565b60405180910390fd5b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129fa906150fb565b60405180910390fd5b6000811415612a1d57612a1883836000613707565b61359b565b600e60009054906101000a900460ff1615612f1857612a3a6114ce565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612aa85750612a786114ce565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ae15750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b1b575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b345750600860149054906101000a900460ff16155b15612f1757600e60019054906101000a900460ff16612c2e57601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612bee5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2490615167565b60405180910390fd5b5b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612cd15750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d7857600b54811115612d1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d12906151f9565b60405180910390fd5b600d54612d27836111a7565b82612d3291906146f0565b1115612d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6a90615265565b60405180910390fd5b612f16565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e1b5750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e6a57600b54811115612e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5c906152f7565b60405180910390fd5b612f15565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612f1457600d54612ec7836111a7565b82612ed291906146f0565b1115612f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0a90615265565b60405180910390fd5b5b5b5b5b5b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561300f5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639015d371306040518263ffffffff1660e01b8152600401612fcd919061413b565b602060405180830381865afa158015612fea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300e919061532c565b5b1561312a576000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a20527fc8585600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d54600b54600c546040518763ffffffff1660e01b81526004016130a396959493929190615359565b6020604051808303816000875af11580156130c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130e6919061532c565b905080613128576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161311f90615406565b60405180910390fd5b505b6000613135306111a7565b90506000600c54821015905080801561315a5750600e60029054906101000a900460ff165b80156131735750600860149054906101000a900460ff16155b80156131c85750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561321e5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132745750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132b8576001600860146101000a81548160ff02191690831515021790555061329c613988565b6000600860146101000a81548160ff0219169083151502179055505b6000600860149054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061336e5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561337857600090505b6000811561358b57601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133db57506000601254115b156134755761340860646133fa60125488613b7390919063ffffffff16565b613b8990919063ffffffff16565b90506012546014548261341b9190614512565b613425919061459b565b6016600082825461343691906146f0565b925050819055506012546013548261344e9190614512565b613458919061459b565b6015600082825461346991906146f0565b92505081905550613567565b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134d057506000600f54115b15613566576134fd60646134ef600f5488613b7390919063ffffffff16565b613b8990919063ffffffff16565b9050600f54601154826135109190614512565b61351a919061459b565b6016600082825461352b91906146f0565b92505081905550600f54601054826135439190614512565b61354d919061459b565b6015600082825461355e91906146f0565b925050819055505b5b600081111561357c5761357b873083613707565b5b80856135889190615426565b94505b613596878787613707565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161376e90614f91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156137e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137de90615023565b60405180910390fd5b6137f2838383613b9f565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161386f906154cc565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461390b91906146f0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161396f919061405a565b60405180910390a3613982848484613ba4565b50505050565b6000613993306111a7565b905060006016546015546139a791906146f0565b90506000808314806139b95750600082145b156139c657505050613b71565b6014600c546139d59190614512565b8311156139ee576014600c546139eb9190614512565b92505b60004790506139fc84613ba9565b6000613a118247613dec90919063ffffffff16565b90506000613a3c85613a2e60165485613b7390919063ffffffff16565b613b8990919063ffffffff16565b905060006015819055506000601681905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613a949061551d565b60006040518083038185875af1925050503d8060008114613ad1576040519150601f19603f3d011682016040523d82523d6000602084013e613ad6565b606091505b505080945050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613b229061551d565b60006040518083038185875af1925050503d8060008114613b5f576040519150601f19603f3d011682016040523d82523d6000602084013e613b64565b606091505b5050809450505050505050505b565b60008183613b819190614512565b905092915050565b60008183613b97919061459b565b905092915050565b505050565b505050565b6000600267ffffffffffffffff811115613bc657613bc5615532565b5b604051908082528060200260200182016040528015613bf45781602001602082028036833780820191505090505b5090503081600081518110613c0c57613c0b6147b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cd79190615576565b81600181518110613ceb57613cea6147b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d5230600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461263e565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613db695949392919061569c565b600060405180830381600087803b158015613dd057600080fd5b505af1158015613de4573d6000803e3d6000fd5b505050505050565b60008183613dfa9190615426565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613e3c578082015181840152602081019050613e21565b83811115613e4b576000848401525b50505050565b6000601f19601f8301169050919050565b6000613e6d82613e02565b613e778185613e0d565b9350613e87818560208601613e1e565b613e9081613e51565b840191505092915050565b60006020820190508181036000830152613eb58184613e62565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613ef282613ec7565b9050919050565b613f0281613ee7565b8114613f0d57600080fd5b50565b600081359050613f1f81613ef9565b92915050565b6000819050919050565b613f3881613f25565b8114613f4357600080fd5b50565b600081359050613f5581613f2f565b92915050565b60008060408385031215613f7257613f71613ebd565b5b6000613f8085828601613f10565b9250506020613f9185828601613f46565b9150509250929050565b60008115159050919050565b613fb081613f9b565b82525050565b6000602082019050613fcb6000830184613fa7565b92915050565b6000819050919050565b6000613ff6613ff1613fec84613ec7565b613fd1565b613ec7565b9050919050565b600061400882613fdb565b9050919050565b600061401a82613ffd565b9050919050565b61402a8161400f565b82525050565b60006020820190506140456000830184614021565b92915050565b61405481613f25565b82525050565b600060208201905061406f600083018461404b565b92915050565b60006020828403121561408b5761408a613ebd565b5b600061409984828501613f46565b91505092915050565b6000806000606084860312156140bb576140ba613ebd565b5b60006140c986828701613f10565b93505060206140da86828701613f10565b92505060406140eb86828701613f46565b9150509250925092565b600060ff82169050919050565b61410b816140f5565b82525050565b60006020820190506141266000830184614102565b92915050565b61413581613ee7565b82525050565b6000602082019050614150600083018461412c565b92915050565b60006020828403121561416c5761416b613ebd565b5b600061417a84828501613f10565b91505092915050565b6000806040838503121561419a57614199613ebd565b5b60006141a885828601613f46565b92505060206141b985828601613f46565b9150509250929050565b6141cc81613f9b565b81146141d757600080fd5b50565b6000813590506141e9816141c3565b92915050565b6000806040838503121561420657614205613ebd565b5b600061421485828601613f10565b9250506020614225858286016141da565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f8401126142545761425361422f565b5b8235905067ffffffffffffffff81111561427157614270614234565b5b60208301915083602082028301111561428d5761428c614239565b5b9250929050565b6000806000604084860312156142ad576142ac613ebd565b5b600084013567ffffffffffffffff8111156142cb576142ca613ec2565b5b6142d78682870161423e565b935093505060206142ea868287016141da565b9150509250925092565b60006020828403121561430a57614309613ebd565b5b6000614318848285016141da565b91505092915050565b61432a816140f5565b811461433557600080fd5b50565b60008135905061434781614321565b92915050565b6000819050919050565b6143608161434d565b811461436b57600080fd5b50565b60008135905061437d81614357565b92915050565b60008060006060848603121561439c5761439b613ebd565b5b60006143aa86828701614338565b93505060206143bb8682870161436e565b92505060406143cc8682870161436e565b9150509250925092565b600080604083850312156143ed576143ec613ebd565b5b60006143fb85828601613f10565b925050602061440c85828601613f10565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061445d57607f821691505b6020821081141561447157614470614416565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006144ad602083613e0d565b91506144b882614477565b602082019050919050565b600060208201905081810360008301526144dc816144a0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061451d82613f25565b915061452883613f25565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614561576145606144e3565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006145a682613f25565b91506145b183613f25565b9250826145c1576145c061456c565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000614628602983613e0d565b9150614633826145cc565b604082019050919050565b600060208201905081810360008301526146578161461b565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006146ba602883613e0d565b91506146c58261465e565b604082019050919050565b600060208201905081810360008301526146e9816146ad565b9050919050565b60006146fb82613f25565b915061470683613f25565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561473b5761473a6144e3565b5b828201905092915050565b7f4d757374206b656570206665657320617420393925206f72206c657373000000600082015250565b600061477c601d83613e0d565b915061478782614746565b602082019050919050565b600060208201905081810360008301526147ab8161476f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006147ec82613f25565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561481f5761481e6144e3565b5b600182019050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614886603983613e0d565b91506148918261482a565b604082019050919050565b600060208201905081810360008301526148b581614879565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614918602583613e0d565b9150614923826148bc565b604082019050919050565b600060208201905081810360008301526149478161490b565b9050919050565b6149578161434d565b82525050565b600060a082019050614972600083018861494e565b61497f602083018761494e565b61498c604083018661494e565b614999606083018561404b565b6149a6608083018461412c565b9695505050505050565b60006060820190506149c5600083018661494e565b6149d2602083018561494e565b6149df604083018461404b565b949350505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b6000614a286002836149e7565b9150614a33826149f2565b600282019050919050565b6000819050919050565b614a59614a548261434d565b614a3e565b82525050565b6000614a6a82614a1b565b9150614a768285614a48565b602082019150614a868284614a48565b6020820191508190509392505050565b6000608082019050614aab600083018761494e565b614ab86020830186614102565b614ac5604083018561494e565b614ad2606083018461494e565b95945050505050565b7f496e76616c6964207369676e6174757265000000000000000000000000000000600082015250565b6000614b11601183613e0d565b9150614b1c82614adb565b602082019050919050565b60006020820190508181036000830152614b4081614b04565b9050919050565b7f496e76616c696420616e746920647261696e6572000000000000000000000000600082015250565b6000614b7d601483613e0d565b9150614b8882614b47565b602082019050919050565b60006020820190508181036000830152614bac81614b70565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614c0f602483613e0d565b9150614c1a82614bb3565b604082019050919050565b60006020820190508181036000830152614c3e81614c02565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614ca1603583613e0d565b9150614cac82614c45565b604082019050919050565b60006020820190508181036000830152614cd081614c94565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614d33603483613e0d565b9150614d3e82614cd7565b604082019050919050565b60006020820190508181036000830152614d6281614d26565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614dc5602683613e0d565b9150614dd082614d69565b604082019050919050565b60006020820190508181036000830152614df481614db8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614e57602483613e0d565b9150614e6282614dfb565b604082019050919050565b60006020820190508181036000830152614e8681614e4a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614ee9602283613e0d565b9150614ef482614e8d565b604082019050919050565b60006020820190508181036000830152614f1881614edc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614f7b602583613e0d565b9150614f8682614f1f565b604082019050919050565b60006020820190508181036000830152614faa81614f6e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061500d602383613e0d565b915061501882614fb1565b604082019050919050565b6000602082019050818103600083015261503c81615000565b9050919050565b7f5b66726f6d5d20626c61636b206c697374000000000000000000000000000000600082015250565b6000615079601183613e0d565b915061508482615043565b602082019050919050565b600060208201905081810360008301526150a88161506c565b9050919050565b7f5b746f5d20626c61636b206c6973740000000000000000000000000000000000600082015250565b60006150e5600f83613e0d565b91506150f0826150af565b602082019050919050565b60006020820190508181036000830152615114816150d8565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000615151601683613e0d565b915061515c8261511b565b602082019050919050565b6000602082019050818103600083015261518081615144565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e2e0000000000000000000000000000000000602082015250565b60006151e3602f83613e0d565b91506151ee82615187565b604082019050919050565b60006020820190508181036000830152615212816151d6565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061524f601383613e0d565b915061525a82615219565b602082019050919050565b6000602082019050818103600083015261527e81615242565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e2e00000000000000000000000000000000602082015250565b60006152e1603083613e0d565b91506152ec82615285565b604082019050919050565b60006020820190508181036000830152615310816152d4565b9050919050565b600081519050615326816141c3565b92915050565b60006020828403121561534257615341613ebd565b5b600061535084828501615317565b91505092915050565b600060c08201905061536e600083018961412c565b61537b602083018861412c565b615388604083018761412c565b615395606083018661404b565b6153a2608083018561404b565b6153af60a083018461404b565b979650505050505050565b7f416e746920447261696e657220456e61626c6564000000000000000000000000600082015250565b60006153f0601483613e0d565b91506153fb826153ba565b602082019050919050565b6000602082019050818103600083015261541f816153e3565b9050919050565b600061543182613f25565b915061543c83613f25565b92508282101561544f5761544e6144e3565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006154b6602683613e0d565b91506154c18261545a565b604082019050919050565b600060208201905081810360008301526154e5816154a9565b9050919050565b600081905092915050565b50565b60006155076000836154ec565b9150615512826154f7565b600082019050919050565b6000615528826154fa565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061557081613ef9565b92915050565b60006020828403121561558c5761558b613ebd565b5b600061559a84828501615561565b91505092915050565b6000819050919050565b60006155c86155c36155be846155a3565b613fd1565b613f25565b9050919050565b6155d8816155ad565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61561381613ee7565b82525050565b6000615625838361560a565b60208301905092915050565b6000602082019050919050565b6000615649826155de565b61565381856155e9565b935061565e836155fa565b8060005b8381101561568f5781516156768882615619565b975061568183615631565b925050600181019050615662565b5085935050505092915050565b600060a0820190506156b1600083018861404b565b6156be60208301876155cf565b81810360408301526156d0818661563e565b90506156df606083018561412c565b6156ec608083018461404b565b969550505050505056fea264697066735822122087c0009266b2f75189e684adc073573d206437d8e9b7adb0eac478112c84bfee64736f6c634300080a0033
Deployed Bytecode
0x6080604052600436106103035760003560e01c8063924de9b711610190578063beffc7d4116100dc578063d257b34f11610095578063e1bc33941161006f578063e1bc339414610b91578063e2f4560514610bce578063f2fde38b14610bf9578063f8b45b0514610c225761030a565b8063d257b34f14610aec578063d85ba06314610b29578063dd62ed3e14610b545761030a565b8063beffc7d4146109f2578063c024666814610a1b578063c04a541414610a44578063c18bc19514610a6f578063c3f70b5214610a98578063c79c04fd14610ac35761030a565b8063a457c2d711610149578063aacebbe311610123578063aacebbe314610938578063b62496f514610961578063bae14e1d1461099e578063bbc0c742146109c75761030a565b8063a457c2d714610895578063a9059cbb146108d2578063a90eab8c1461090f5761030a565b8063924de9b71461079757806395d89b41146107c05780639a7a23d6146107eb5780639c3b4fdc146108145780639fccce321461083f578063a0d82dc51461086a5761030a565b8063610e34b91161024f5780637571336a116102085780638a8c523c116101e25780638a8c523c146107015780638da5cb5b146107185780638f85a04314610743578063921369131461076c5761030a565b80637571336a1461068257806375f0a874146106ab5780637bce5a04146106d65761030a565b8063610e34b9146105845780636a486a8e146105ad5780636ddd1713146105d857806370a0823114610603578063715018a614610640578063751039fc146106575761030a565b806323b872dd116102bc578063395093511161029657806339509351146104b457806349bd5a5e146104f15780634a62bb651461051c5780634fbee193146105475761030a565b806323b872dd14610421578063313ce5671461045e57806337c2810f146104895761030a565b806306fdde031461030f578063095ea7b31461033a5780631694505e1461037757806318160ddd146103a25780631f3fed8f146103cd578063203e727e146103f85761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c4d565b6040516103319190613e9b565b60405180910390f35b34801561034657600080fd5b50610361600480360381019061035c9190613f5b565b610cdf565b60405161036e9190613fb6565b60405180910390f35b34801561038357600080fd5b5061038c610cfd565b6040516103999190614030565b60405180910390f35b3480156103ae57600080fd5b506103b7610d23565b6040516103c4919061405a565b60405180910390f35b3480156103d957600080fd5b506103e2610d2d565b6040516103ef919061405a565b60405180910390f35b34801561040457600080fd5b5061041f600480360381019061041a9190614075565b610d33565b005b34801561042d57600080fd5b50610448600480360381019061044391906140a2565b610e42565b6040516104559190613fb6565b60405180910390f35b34801561046a57600080fd5b50610473610f3a565b6040516104809190614111565b60405180910390f35b34801561049557600080fd5b5061049e610f43565b6040516104ab919061413b565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d69190613f5b565b610f69565b6040516104e89190613fb6565b60405180910390f35b3480156104fd57600080fd5b50610506611015565b604051610513919061413b565b60405180910390f35b34801561052857600080fd5b5061053161103b565b60405161053e9190613fb6565b60405180910390f35b34801561055357600080fd5b5061056e60048036038101906105699190614156565b61104e565b60405161057b9190613fb6565b60405180910390f35b34801561059057600080fd5b506105ab60048036038101906105a69190614183565b6110a4565b005b3480156105b957600080fd5b506105c261118e565b6040516105cf919061405a565b60405180910390f35b3480156105e457600080fd5b506105ed611194565b6040516105fa9190613fb6565b60405180910390f35b34801561060f57600080fd5b5061062a60048036038101906106259190614156565b6111a7565b604051610637919061405a565b60405180910390f35b34801561064c57600080fd5b506106556111ef565b005b34801561066357600080fd5b5061066c611277565b6040516106799190613fb6565b60405180910390f35b34801561068e57600080fd5b506106a960048036038101906106a491906141ef565b611317565b005b3480156106b757600080fd5b506106c06113ee565b6040516106cd919061413b565b60405180910390f35b3480156106e257600080fd5b506106eb611414565b6040516106f8919061405a565b60405180910390f35b34801561070d57600080fd5b5061071661141a565b005b34801561072457600080fd5b5061072d6114ce565b60405161073a919061413b565b60405180910390f35b34801561074f57600080fd5b5061076a60048036038101906107659190614294565b6114f8565b005b34801561077857600080fd5b50610781611619565b60405161078e919061405a565b60405180910390f35b3480156107a357600080fd5b506107be60048036038101906107b991906142f4565b61161f565b005b3480156107cc57600080fd5b506107d56116b8565b6040516107e29190613e9b565b60405180910390f35b3480156107f757600080fd5b50610812600480360381019061080d91906141ef565b61174a565b005b34801561082057600080fd5b50610829611865565b604051610836919061405a565b60405180910390f35b34801561084b57600080fd5b5061085461186b565b604051610861919061405a565b60405180910390f35b34801561087657600080fd5b5061087f611871565b60405161088c919061405a565b60405180910390f35b3480156108a157600080fd5b506108bc60048036038101906108b79190613f5b565b611877565b6040516108c99190613fb6565b60405180910390f35b3480156108de57600080fd5b506108f960048036038101906108f49190613f5b565b611962565b6040516109069190613fb6565b60405180910390f35b34801561091b57600080fd5b5061093660048036038101906109319190614383565b611980565b005b34801561094457600080fd5b5061095f600480360381019061095a9190614156565b611c0b565b005b34801561096d57600080fd5b5061098860048036038101906109839190614156565b611d47565b6040516109959190613fb6565b60405180910390f35b3480156109aa57600080fd5b506109c560048036038101906109c09190614156565b611d67565b005b3480156109d357600080fd5b506109dc611e97565b6040516109e99190613fb6565b60405180910390f35b3480156109fe57600080fd5b50610a196004803603810190610a149190614183565b611eaa565b005b348015610a2757600080fd5b50610a426004803603810190610a3d91906141ef565b611f94565b005b348015610a5057600080fd5b50610a596120b9565b604051610a66919061413b565b60405180910390f35b348015610a7b57600080fd5b50610a966004803603810190610a919190614075565b6120df565b005b348015610aa457600080fd5b50610aad6121ee565b604051610aba919061405a565b60405180910390f35b348015610acf57600080fd5b50610aea6004803603810190610ae59190614156565b6121f4565b005b348015610af857600080fd5b50610b136004803603810190610b0e9190614075565b612330565b604051610b209190613fb6565b60405180910390f35b348015610b3557600080fd5b50610b3e612485565b604051610b4b919061405a565b60405180910390f35b348015610b6057600080fd5b50610b7b6004803603810190610b7691906143d6565b61248b565b604051610b88919061405a565b60405180910390f35b348015610b9d57600080fd5b50610bb86004803603810190610bb39190614156565b612512565b604051610bc59190613fb6565b60405180910390f35b348015610bda57600080fd5b50610be3612532565b604051610bf0919061405a565b60405180910390f35b348015610c0557600080fd5b50610c206004803603810190610c1b9190614156565b612538565b005b348015610c2e57600080fd5b50610c37612630565b604051610c44919061405a565b60405180910390f35b606060038054610c5c90614445565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8890614445565b8015610cd55780601f10610caa57610100808354040283529160200191610cd5565b820191906000526020600020905b815481529060010190602001808311610cb857829003601f168201915b5050505050905090565b6000610cf3610cec612636565b848461263e565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b60155481565b610d3b612636565b73ffffffffffffffffffffffffffffffffffffffff16610d596114ce565b73ffffffffffffffffffffffffffffffffffffffff1614610daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da6906144c3565b60405180910390fd5b670de0b6b3a76400006103e86001610dc5610d23565b610dcf9190614512565b610dd9919061459b565b610de3919061459b565b811015610e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1c9061463e565b60405180910390fd5b670de0b6b3a764000081610e399190614512565b600b8190555050565b6000610e4f848484612809565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e9a612636565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610f1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f11906146d0565b60405180910390fd5b610f2e85610f26612636565b85840361263e565b60019150509392505050565b60006012905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061100b610f76612636565b848460016000610f84612636565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461100691906146f0565b61263e565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60009054906101000a900460ff1681565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6110ac612636565b73ffffffffffffffffffffffffffffffffffffffff166110ca6114ce565b73ffffffffffffffffffffffffffffffffffffffff1614611120576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611117906144c3565b60405180910390fd5b816010819055508060118190555060115460105461113e91906146f0565b600f819055506063600f54111561118a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118190614792565b60405180910390fd5b5050565b60125481565b600e60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111f7612636565b73ffffffffffffffffffffffffffffffffffffffff166112156114ce565b73ffffffffffffffffffffffffffffffffffffffff161461126b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611262906144c3565b60405180910390fd5b61127560006135a0565b565b6000611281612636565b73ffffffffffffffffffffffffffffffffffffffff1661129f6114ce565b73ffffffffffffffffffffffffffffffffffffffff16146112f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ec906144c3565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b61131f612636565b73ffffffffffffffffffffffffffffffffffffffff1661133d6114ce565b73ffffffffffffffffffffffffffffffffffffffff1614611393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138a906144c3565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b611422612636565b73ffffffffffffffffffffffffffffffffffffffff166114406114ce565b73ffffffffffffffffffffffffffffffffffffffff1614611496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148d906144c3565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611500612636565b73ffffffffffffffffffffffffffffffffffffffff1661151e6114ce565b73ffffffffffffffffffffffffffffffffffffffff1614611574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156b906144c3565b60405180910390fd5b60005b8383905081101561161357816017600086868581811061159a576115996147b2565b5b90506020020160208101906115af9190614156565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061160b906147e1565b915050611577565b50505050565b60135481565b611627612636565b73ffffffffffffffffffffffffffffffffffffffff166116456114ce565b73ffffffffffffffffffffffffffffffffffffffff161461169b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611692906144c3565b60405180910390fd5b80600e60026101000a81548160ff02191690831515021790555050565b6060600480546116c790614445565b80601f01602080910402602001604051908101604052809291908181526020018280546116f390614445565b80156117405780601f1061171557610100808354040283529160200191611740565b820191906000526020600020905b81548152906001019060200180831161172357829003601f168201915b5050505050905090565b611752612636565b73ffffffffffffffffffffffffffffffffffffffff166117706114ce565b73ffffffffffffffffffffffffffffffffffffffff16146117c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bd906144c3565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184e9061489c565b60405180910390fd5b6118618282613666565b5050565b60115481565b60165481565b60145481565b60008060016000611886612636565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193a9061492e565b60405180910390fd5b61195761194e612636565b8585840361263e565b600191505092915050565b600061197661196f612636565b8484612809565b6001905092915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001611a3395949392919061495d565b60405160208183030381529060405280519060200120905060007f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e67000000000000000000000000000000000000815250805190602001206000604051602001611abf939291906149b0565b60405160208183030381529060405280519060200120905060008282604051602001611aec929190614a5f565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051611b299493929190614a96565b6020604051602081039080840390855afa158015611b4b573d6000803e3d6000fd5b505050602060405103519050611b5f6114ce565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611bcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc390614b27565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff02191690831515021790555050505050505050565b611c13612636565b73ffffffffffffffffffffffffffffffffffffffff16611c316114ce565b73ffffffffffffffffffffffffffffffffffffffff1614611c87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7e906144c3565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a6020528060005260406000206000915054906101000a900460ff1681565b611d6f612636565b73ffffffffffffffffffffffffffffffffffffffff16611d8d6114ce565b73ffffffffffffffffffffffffffffffffffffffff1614611de3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dda906144c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4a90614b93565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60019054906101000a900460ff1681565b611eb2612636565b73ffffffffffffffffffffffffffffffffffffffff16611ed06114ce565b73ffffffffffffffffffffffffffffffffffffffff1614611f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1d906144c3565b60405180910390fd5b8160138190555080601481905550601454601354611f4491906146f0565b60128190555060636012541115611f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8790614792565b60405180910390fd5b5050565b611f9c612636565b73ffffffffffffffffffffffffffffffffffffffff16611fba6114ce565b73ffffffffffffffffffffffffffffffffffffffff1614612010576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612007906144c3565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516120ad9190613fb6565b60405180910390a25050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6120e7612636565b73ffffffffffffffffffffffffffffffffffffffff166121056114ce565b73ffffffffffffffffffffffffffffffffffffffff161461215b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612152906144c3565b60405180910390fd5b670de0b6b3a76400006103e86005612171610d23565b61217b9190614512565b612185919061459b565b61218f919061459b565b8110156121d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c890614c25565b60405180910390fd5b670de0b6b3a7640000816121e59190614512565b600d8190555050565b600b5481565b6121fc612636565b73ffffffffffffffffffffffffffffffffffffffff1661221a6114ce565b73ffffffffffffffffffffffffffffffffffffffff1614612270576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612267906144c3565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ffaf1b77ed79f6e898c44dd8ab36b330c7b2fd39bcaab05ed6362480df870396560405160405180910390a380600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061233a612636565b73ffffffffffffffffffffffffffffffffffffffff166123586114ce565b73ffffffffffffffffffffffffffffffffffffffff16146123ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a5906144c3565b60405180910390fd5b620186a060016123bc610d23565b6123c69190614512565b6123d0919061459b565b821015612412576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240990614cb7565b60405180910390fd5b6103e8600561241f610d23565b6124299190614512565b612433919061459b565b821115612475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246c90614d49565b60405180910390fd5b81600c8190555060019050919050565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60196020528060005260406000206000915054906101000a900460ff1681565b600c5481565b612540612636565b73ffffffffffffffffffffffffffffffffffffffff1661255e6114ce565b73ffffffffffffffffffffffffffffffffffffffff16146125b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ab906144c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261b90614ddb565b60405180910390fd5b61262d816135a0565b50565b600d5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156126ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a590614e6d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561271e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271590614eff565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127fc919061405a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612879576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287090614f91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e090615023565b60405180910390fd5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612976576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296d9061508f565b60405180910390fd5b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129fa906150fb565b60405180910390fd5b6000811415612a1d57612a1883836000613707565b61359b565b600e60009054906101000a900460ff1615612f1857612a3a6114ce565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612aa85750612a786114ce565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ae15750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b1b575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b345750600860149054906101000a900460ff16155b15612f1757600e60019054906101000a900460ff16612c2e57601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612bee5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2490615167565b60405180910390fd5b5b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612cd15750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d7857600b54811115612d1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d12906151f9565b60405180910390fd5b600d54612d27836111a7565b82612d3291906146f0565b1115612d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6a90615265565b60405180910390fd5b612f16565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e1b5750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e6a57600b54811115612e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5c906152f7565b60405180910390fd5b612f15565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612f1457600d54612ec7836111a7565b82612ed291906146f0565b1115612f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0a90615265565b60405180910390fd5b5b5b5b5b5b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561300f5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639015d371306040518263ffffffff1660e01b8152600401612fcd919061413b565b602060405180830381865afa158015612fea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300e919061532c565b5b1561312a576000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a20527fc8585600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d54600b54600c546040518763ffffffff1660e01b81526004016130a396959493929190615359565b6020604051808303816000875af11580156130c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130e6919061532c565b905080613128576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161311f90615406565b60405180910390fd5b505b6000613135306111a7565b90506000600c54821015905080801561315a5750600e60029054906101000a900460ff165b80156131735750600860149054906101000a900460ff16155b80156131c85750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561321e5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132745750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132b8576001600860146101000a81548160ff02191690831515021790555061329c613988565b6000600860146101000a81548160ff0219169083151502179055505b6000600860149054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061336e5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561337857600090505b6000811561358b57601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133db57506000601254115b156134755761340860646133fa60125488613b7390919063ffffffff16565b613b8990919063ffffffff16565b90506012546014548261341b9190614512565b613425919061459b565b6016600082825461343691906146f0565b925050819055506012546013548261344e9190614512565b613458919061459b565b6015600082825461346991906146f0565b92505081905550613567565b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134d057506000600f54115b15613566576134fd60646134ef600f5488613b7390919063ffffffff16565b613b8990919063ffffffff16565b9050600f54601154826135109190614512565b61351a919061459b565b6016600082825461352b91906146f0565b92505081905550600f54601054826135439190614512565b61354d919061459b565b6015600082825461355e91906146f0565b925050819055505b5b600081111561357c5761357b873083613707565b5b80856135889190615426565b94505b613596878787613707565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161376e90614f91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156137e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137de90615023565b60405180910390fd5b6137f2838383613b9f565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161386f906154cc565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461390b91906146f0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161396f919061405a565b60405180910390a3613982848484613ba4565b50505050565b6000613993306111a7565b905060006016546015546139a791906146f0565b90506000808314806139b95750600082145b156139c657505050613b71565b6014600c546139d59190614512565b8311156139ee576014600c546139eb9190614512565b92505b60004790506139fc84613ba9565b6000613a118247613dec90919063ffffffff16565b90506000613a3c85613a2e60165485613b7390919063ffffffff16565b613b8990919063ffffffff16565b905060006015819055506000601681905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613a949061551d565b60006040518083038185875af1925050503d8060008114613ad1576040519150601f19603f3d011682016040523d82523d6000602084013e613ad6565b606091505b505080945050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613b229061551d565b60006040518083038185875af1925050503d8060008114613b5f576040519150601f19603f3d011682016040523d82523d6000602084013e613b64565b606091505b5050809450505050505050505b565b60008183613b819190614512565b905092915050565b60008183613b97919061459b565b905092915050565b505050565b505050565b6000600267ffffffffffffffff811115613bc657613bc5615532565b5b604051908082528060200260200182016040528015613bf45781602001602082028036833780820191505090505b5090503081600081518110613c0c57613c0b6147b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cd79190615576565b81600181518110613ceb57613cea6147b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d5230600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461263e565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613db695949392919061569c565b600060405180830381600087803b158015613dd057600080fd5b505af1158015613de4573d6000803e3d6000fd5b505050505050565b60008183613dfa9190615426565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613e3c578082015181840152602081019050613e21565b83811115613e4b576000848401525b50505050565b6000601f19601f8301169050919050565b6000613e6d82613e02565b613e778185613e0d565b9350613e87818560208601613e1e565b613e9081613e51565b840191505092915050565b60006020820190508181036000830152613eb58184613e62565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613ef282613ec7565b9050919050565b613f0281613ee7565b8114613f0d57600080fd5b50565b600081359050613f1f81613ef9565b92915050565b6000819050919050565b613f3881613f25565b8114613f4357600080fd5b50565b600081359050613f5581613f2f565b92915050565b60008060408385031215613f7257613f71613ebd565b5b6000613f8085828601613f10565b9250506020613f9185828601613f46565b9150509250929050565b60008115159050919050565b613fb081613f9b565b82525050565b6000602082019050613fcb6000830184613fa7565b92915050565b6000819050919050565b6000613ff6613ff1613fec84613ec7565b613fd1565b613ec7565b9050919050565b600061400882613fdb565b9050919050565b600061401a82613ffd565b9050919050565b61402a8161400f565b82525050565b60006020820190506140456000830184614021565b92915050565b61405481613f25565b82525050565b600060208201905061406f600083018461404b565b92915050565b60006020828403121561408b5761408a613ebd565b5b600061409984828501613f46565b91505092915050565b6000806000606084860312156140bb576140ba613ebd565b5b60006140c986828701613f10565b93505060206140da86828701613f10565b92505060406140eb86828701613f46565b9150509250925092565b600060ff82169050919050565b61410b816140f5565b82525050565b60006020820190506141266000830184614102565b92915050565b61413581613ee7565b82525050565b6000602082019050614150600083018461412c565b92915050565b60006020828403121561416c5761416b613ebd565b5b600061417a84828501613f10565b91505092915050565b6000806040838503121561419a57614199613ebd565b5b60006141a885828601613f46565b92505060206141b985828601613f46565b9150509250929050565b6141cc81613f9b565b81146141d757600080fd5b50565b6000813590506141e9816141c3565b92915050565b6000806040838503121561420657614205613ebd565b5b600061421485828601613f10565b9250506020614225858286016141da565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f8401126142545761425361422f565b5b8235905067ffffffffffffffff81111561427157614270614234565b5b60208301915083602082028301111561428d5761428c614239565b5b9250929050565b6000806000604084860312156142ad576142ac613ebd565b5b600084013567ffffffffffffffff8111156142cb576142ca613ec2565b5b6142d78682870161423e565b935093505060206142ea868287016141da565b9150509250925092565b60006020828403121561430a57614309613ebd565b5b6000614318848285016141da565b91505092915050565b61432a816140f5565b811461433557600080fd5b50565b60008135905061434781614321565b92915050565b6000819050919050565b6143608161434d565b811461436b57600080fd5b50565b60008135905061437d81614357565b92915050565b60008060006060848603121561439c5761439b613ebd565b5b60006143aa86828701614338565b93505060206143bb8682870161436e565b92505060406143cc8682870161436e565b9150509250925092565b600080604083850312156143ed576143ec613ebd565b5b60006143fb85828601613f10565b925050602061440c85828601613f10565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061445d57607f821691505b6020821081141561447157614470614416565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006144ad602083613e0d565b91506144b882614477565b602082019050919050565b600060208201905081810360008301526144dc816144a0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061451d82613f25565b915061452883613f25565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614561576145606144e3565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006145a682613f25565b91506145b183613f25565b9250826145c1576145c061456c565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000614628602983613e0d565b9150614633826145cc565b604082019050919050565b600060208201905081810360008301526146578161461b565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006146ba602883613e0d565b91506146c58261465e565b604082019050919050565b600060208201905081810360008301526146e9816146ad565b9050919050565b60006146fb82613f25565b915061470683613f25565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561473b5761473a6144e3565b5b828201905092915050565b7f4d757374206b656570206665657320617420393925206f72206c657373000000600082015250565b600061477c601d83613e0d565b915061478782614746565b602082019050919050565b600060208201905081810360008301526147ab8161476f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006147ec82613f25565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561481f5761481e6144e3565b5b600182019050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614886603983613e0d565b91506148918261482a565b604082019050919050565b600060208201905081810360008301526148b581614879565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614918602583613e0d565b9150614923826148bc565b604082019050919050565b600060208201905081810360008301526149478161490b565b9050919050565b6149578161434d565b82525050565b600060a082019050614972600083018861494e565b61497f602083018761494e565b61498c604083018661494e565b614999606083018561404b565b6149a6608083018461412c565b9695505050505050565b60006060820190506149c5600083018661494e565b6149d2602083018561494e565b6149df604083018461404b565b949350505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b6000614a286002836149e7565b9150614a33826149f2565b600282019050919050565b6000819050919050565b614a59614a548261434d565b614a3e565b82525050565b6000614a6a82614a1b565b9150614a768285614a48565b602082019150614a868284614a48565b6020820191508190509392505050565b6000608082019050614aab600083018761494e565b614ab86020830186614102565b614ac5604083018561494e565b614ad2606083018461494e565b95945050505050565b7f496e76616c6964207369676e6174757265000000000000000000000000000000600082015250565b6000614b11601183613e0d565b9150614b1c82614adb565b602082019050919050565b60006020820190508181036000830152614b4081614b04565b9050919050565b7f496e76616c696420616e746920647261696e6572000000000000000000000000600082015250565b6000614b7d601483613e0d565b9150614b8882614b47565b602082019050919050565b60006020820190508181036000830152614bac81614b70565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614c0f602483613e0d565b9150614c1a82614bb3565b604082019050919050565b60006020820190508181036000830152614c3e81614c02565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614ca1603583613e0d565b9150614cac82614c45565b604082019050919050565b60006020820190508181036000830152614cd081614c94565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614d33603483613e0d565b9150614d3e82614cd7565b604082019050919050565b60006020820190508181036000830152614d6281614d26565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614dc5602683613e0d565b9150614dd082614d69565b604082019050919050565b60006020820190508181036000830152614df481614db8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614e57602483613e0d565b9150614e6282614dfb565b604082019050919050565b60006020820190508181036000830152614e8681614e4a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614ee9602283613e0d565b9150614ef482614e8d565b604082019050919050565b60006020820190508181036000830152614f1881614edc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614f7b602583613e0d565b9150614f8682614f1f565b604082019050919050565b60006020820190508181036000830152614faa81614f6e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061500d602383613e0d565b915061501882614fb1565b604082019050919050565b6000602082019050818103600083015261503c81615000565b9050919050565b7f5b66726f6d5d20626c61636b206c697374000000000000000000000000000000600082015250565b6000615079601183613e0d565b915061508482615043565b602082019050919050565b600060208201905081810360008301526150a88161506c565b9050919050565b7f5b746f5d20626c61636b206c6973740000000000000000000000000000000000600082015250565b60006150e5600f83613e0d565b91506150f0826150af565b602082019050919050565b60006020820190508181036000830152615114816150d8565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000615151601683613e0d565b915061515c8261511b565b602082019050919050565b6000602082019050818103600083015261518081615144565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e2e0000000000000000000000000000000000602082015250565b60006151e3602f83613e0d565b91506151ee82615187565b604082019050919050565b60006020820190508181036000830152615212816151d6565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061524f601383613e0d565b915061525a82615219565b602082019050919050565b6000602082019050818103600083015261527e81615242565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e2e00000000000000000000000000000000602082015250565b60006152e1603083613e0d565b91506152ec82615285565b604082019050919050565b60006020820190508181036000830152615310816152d4565b9050919050565b600081519050615326816141c3565b92915050565b60006020828403121561534257615341613ebd565b5b600061535084828501615317565b91505092915050565b600060c08201905061536e600083018961412c565b61537b602083018861412c565b615388604083018761412c565b615395606083018661404b565b6153a2608083018561404b565b6153af60a083018461404b565b979650505050505050565b7f416e746920447261696e657220456e61626c6564000000000000000000000000600082015250565b60006153f0601483613e0d565b91506153fb826153ba565b602082019050919050565b6000602082019050818103600083015261541f816153e3565b9050919050565b600061543182613f25565b915061543c83613f25565b92508282101561544f5761544e6144e3565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006154b6602683613e0d565b91506154c18261545a565b604082019050919050565b600060208201905081810360008301526154e5816154a9565b9050919050565b600081905092915050565b50565b60006155076000836154ec565b9150615512826154f7565b600082019050919050565b6000615528826154fa565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061557081613ef9565b92915050565b60006020828403121561558c5761558b613ebd565b5b600061559a84828501615561565b91505092915050565b6000819050919050565b60006155c86155c36155be846155a3565b613fd1565b613f25565b9050919050565b6155d8816155ad565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61561381613ee7565b82525050565b6000615625838361560a565b60208301905092915050565b6000602082019050919050565b6000615649826155de565b61565381856155e9565b935061565e836155fa565b8060005b8381101561568f5781516156768882615619565b975061568183615631565b925050600181019050615662565b5085935050505092915050565b600060a0820190506156b1600083018861404b565b6156be60208301876155cf565b81810360408301526156d0818661563e565b90506156df606083018561412c565b6156ec608083018461404b565b969550505050505056fea264697066735822122087c0009266b2f75189e684adc073573d206437d8e9b7adb0eac478112c84bfee64736f6c634300080a0033
Deployed Bytecode Sourcemap
15192:14095:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3539:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15266:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2946:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15932:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21261:263;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3716:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2845:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15349:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4216:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15314:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15601:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23913:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22161:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15825:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15681:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3062:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;773:103;;;;;;;;;;;;;:::i;:::-;;20565:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21796:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15414:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15755;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19116:112;;;;;;;;;;;;;:::i;:::-;;550:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20306:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15860:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22053:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2733:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22994:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15792:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15972:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15898:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4439:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3197:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19236:1062;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23500:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16185:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18926:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15641:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22479:317;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22804:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15451:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21532:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15492:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23716:189;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20756:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15721:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3380:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16119:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15528:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;884:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15568:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2625:100;2679:13;2712:5;2705:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:100;:::o;3539:169::-;3622:4;3639:39;3648:12;:10;:12::i;:::-;3662:7;3671:6;3639:8;:39::i;:::-;3696:4;3689:11;;3539:169;;;;:::o;15266:41::-;;;;;;;;;;;;;:::o;2946:108::-;3007:7;3034:12;;3027:19;;2946:108;:::o;15932:33::-;;;;:::o;21261:263::-;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21398:4:::1;21390;21385:1;21369:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21368:26;;;;:::i;:::-;21367:35;;;;:::i;:::-;21357:6;:45;;21335:136;;;;;;;;;;;;:::i;:::-;;;;;;;;;21509:6;21499;:17;;;;:::i;:::-;21482:14;:34;;;;21261:263:::0;:::o;3716:492::-;3856:4;3873:36;3883:6;3891:9;3902:6;3873:9;:36::i;:::-;3922:24;3949:11;:19;3961:6;3949:19;;;;;;;;;;;;;;;:33;3969:12;:10;:12::i;:::-;3949:33;;;;;;;;;;;;;;;;3922:60;;4021:6;4001:16;:26;;3993:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4108:57;4117:6;4125:12;:10;:12::i;:::-;4158:6;4139:16;:25;4108:8;:57::i;:::-;4196:4;4189:11;;;3716:492;;;;;:::o;2845:93::-;2903:5;2928:2;2921:9;;2845:93;:::o;15349:26::-;;;;;;;;;;;;;:::o;4216:215::-;4304:4;4321:80;4330:12;:10;:12::i;:::-;4344:7;4390:10;4353:11;:25;4365:12;:10;:12::i;:::-;4353:25;;;;;;;;;;;;;;;:34;4379:7;4353:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4321:8;:80::i;:::-;4419:4;4412:11;;4216:215;;;;:::o;15314:28::-;;;;;;;;;;;;;:::o;15601:33::-;;;;;;;;;;;;;:::o;23913:126::-;23979:4;24003:19;:28;24023:7;24003:28;;;;;;;;;;;;;;;;;;;;;;;;;23996:35;;23913:126;;;:::o;22161:310::-;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22296:13:::1;22278:15;:31;;;;22332:7;22320:9;:19;;;;22383:9;;22365:15;;:27;;;;:::i;:::-;22350:12;:42;;;;22427:2;22411:12;;:18;;22403:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;22161:310:::0;;:::o;15825:28::-;;;;:::o;15681:31::-;;;;;;;;;;;;;:::o;3062:127::-;3136:7;3163:9;:18;3173:7;3163:18;;;;;;;;;;;;;;;;3156:25;;3062:127;;;:::o;773:103::-;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;838:30:::1;865:1;838:18;:30::i;:::-;773:103::o:0;20565:121::-;20617:4;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20651:5:::1;20634:14;;:22;;;;;;;;;;;;;;;;;;20674:4;20667:11;;20565:121:::0;:::o;21796:161::-;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21945:4:::1;21909:25;:33;21935:6;21909:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;21796:161:::0;;:::o;15414:30::-;;;;;;;;;;;;;:::o;15755:::-;;;;:::o;19116:112::-;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19187:4:::1;19171:13;;:20;;;;;;;;;;;;;;;;;;19216:4;19202:11;;:18;;;;;;;;;;;;;;;;;;19116:112::o:0;550:87::-;596:7;623:6;;;;;;;;;;;616:13;;550:87;:::o;20306:207::-;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20405:9:::1;20400:106;20424:7;;:14;;20420:1;:18;20400:106;;;20487:7;20460:12;:24;20473:7;;20481:1;20473:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;20460:24;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;20440:3;;;;;:::i;:::-;;;;20400:106;;;;20306:207:::0;;;:::o;15860:31::-;;;;:::o;22053:100::-;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22138:7:::1;22124:11;;:21;;;;;;;;;;;;;;;;;;22053:100:::0;:::o;2733:104::-;2789:13;2822:7;2815:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2733:104;:::o;22994:304::-;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23138:13:::1;;;;;;;;;;;23130:21;;:4;:21;;;;23108:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;23249:41;23278:4;23284:5;23249:28;:41::i;:::-;22994:304:::0;;:::o;15792:24::-;;;;:::o;15972:27::-;;;;:::o;15898:25::-;;;;:::o;4439:413::-;4532:4;4549:24;4576:11;:25;4588:12;:10;:12::i;:::-;4576:25;;;;;;;;;;;;;;;:34;4602:7;4576:34;;;;;;;;;;;;;;;;4549:61;;4649:15;4629:16;:35;;4621:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4742:67;4751:12;:10;:12::i;:::-;4765:7;4793:15;4774:16;:34;4742:8;:67::i;:::-;4840:4;4833:11;;;4439:413;;;;:::o;3197:175::-;3283:4;3300:42;3310:12;:10;:12::i;:::-;3324:9;3335:6;3300:9;:42::i;:::-;3360:4;3353:11;;3197:175;;;;:::o;19236:1062::-;19320:18;19394:95;19518:22;;;;;;;;;;;;;;;;;19508:33;;;;;;19570:10;;;;;;;;;;;;;;;;;19560:21;;;;;;19600:13;19640:4;19365:295;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;19341:330;;;;;;19320:351;;19684:18;19758:49;19836:23;;;;;;;;;;;;;;;;;19826:34;;;;;;19887:1;19729:175;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;19705:210;;;;;;19684:231;;19928:14;20033:10;20062;19969:134;;;;;;;;;:::i;:::-;;;;;;;;;;;;;19945:169;;;;;;19928:186;;20127:14;20144:26;20154:6;20162:1;20165;20168;20144:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20127:43;;20199:7;:5;:7::i;:::-;20189:17;;:6;:17;;;20181:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;20257:4;20241:13;;:20;;;;;;;;;;;;;;;;;;20286:4;20272:11;;:18;;;;;;;;;;;;;;;;;;19309:989;;;;19236:1062;;;:::o;23500:208::-;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23637:15:::1;;;;;;;;;;;23594:59;;23617:18;23594:59;;;;;;;;;;;;23682:18;23664:15;;:36;;;;;;;;;;;;;;;;;;23500:208:::0;:::o;16185:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;18926:182::-;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19034:3:::1;19010:28;;:12;:28;;;;19002:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;19088:12;19074:11;;:26;;;;;;;;;;;;;;;;;;18926:182:::0;:::o;15641:33::-;;;;;;;;;;;;;:::o;22479:317::-;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22616:13:::1;22597:16;:32;;;;22653:7;22640:10;:20;;;;22706:10;;22687:16;;:29;;;;:::i;:::-;22671:13;:45;;;;22752:2;22735:13;;:19;;22727:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;22479:317:::0;;:::o;22804:182::-;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22920:8:::1;22889:19;:28;22909:7;22889:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22960:7;22944:34;;;22969:8;22944:34;;;;;;:::i;:::-;;;;;;;;22804:182:::0;;:::o;15451:32::-;;;;;;;;;;;;;:::o;21532:256::-;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21672:4:::1;21664;21659:1;21643:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21642:26;;;;:::i;:::-;21641:35;;;;:::i;:::-;21631:6;:45;;21609:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;21773:6;21763;:17;;;;:::i;:::-;21751:9;:29;;;;21532:256:::0;:::o;15492:29::-;;;;:::o;23716:189::-;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23839:17:::1;;;;;;;;;;;23803:54;;23828:9;23803:54;;;;;;;;;;;;23888:9;23868:17;;:29;;;;;;;;;;;;;;;;;;23716:189:::0;:::o;20756:497::-;20864:4;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20943:6:::1;20938:1;20922:13;:11;:13::i;:::-;:17;;;;:::i;:::-;20921:28;;;;:::i;:::-;20908:9;:41;;20886:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;21098:4;21093:1;21077:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21076:26;;;;:::i;:::-;21063:9;:39;;21041:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;21214:9;21193:18;:30;;;;21241:4;21234:11;;20756:497:::0;;;:::o;15721:27::-;;;;:::o;3380:151::-;3469:7;3496:11;:18;3508:5;3496:18;;;;;;;;;;;;;;;:27;3515:7;3496:27;;;;;;;;;;;;;;;;3489:34;;3380:151;;;;:::o;16119:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;15528:33::-;;;;:::o;884:201::-;696:12;:10;:12::i;:::-;685:23;;:7;:5;:7::i;:::-;:23;;;677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;993:1:::1;973:22;;:8;:22;;;;965:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1049:28;1068:8;1049:18;:28::i;:::-;884:201:::0;:::o;15568:24::-;;;;:::o;96:98::-;149:7;176:10;169:17;;96:98;:::o;6607:380::-;6760:1;6743:19;;:5;:19;;;;6735:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6841:1;6822:21;;:7;:21;;;;6814:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6925:6;6895:11;:18;6907:5;6895:18;;;;;;;;;;;;;;;:27;6914:7;6895:27;;;;;;;;;;;;;;;:36;;;;6963:7;6947:32;;6956:5;6947:32;;;6972:6;6947:32;;;;;;:::i;:::-;;;;;;;;6607:380;;;:::o;24047:3603::-;24195:1;24179:18;;:4;:18;;;;24171:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24272:1;24258:16;;:2;:16;;;;24250:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24334:12;:18;24347:4;24334:18;;;;;;;;;;;;;;;;;;;;;;;;;24333:19;24325:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;24394:12;:16;24407:2;24394:16;;;;;;;;;;;;;;;;;;;;;;;;;24393:17;24385:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;24457:1;24447:6;:11;24443:93;;;24475:28;24491:4;24497:2;24501:1;24475:15;:28::i;:::-;24518:7;;24443:93;24552:14;;;;;;;;;;;24548:1150;;;24595:7;:5;:7::i;:::-;24587:15;;:4;:15;;;;:49;;;;;24629:7;:5;:7::i;:::-;24623:13;;:2;:13;;;;24587:49;:86;;;;;24671:1;24657:16;;:2;:16;;;;24587:86;:128;;;;;24708:6;24694:21;;:2;:21;;;;24587:128;:158;;;;;24737:8;;;;;;;;;;;24736:9;24587:158;24583:1104;;;24771:13;;;;;;;;;;;24766:150;;24817:19;:25;24837:4;24817:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;24846:19;:23;24866:2;24846:23;;;;;;;;;;;;;;;;;;;;;;;;;24817:52;24809:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;24766:150;24968:25;:31;24994:4;24968:31;;;;;;;;;;;;;;;;;;;;;;;;;:65;;;;;25004:25;:29;25030:2;25004:29;;;;;;;;;;;;;;;;;;;;;;;;;25003:30;24968:65;24964:708;;;25076:14;;25066:6;:24;;25058:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;25199:9;;25182:13;25192:2;25182:9;:13::i;:::-;25173:6;:22;;;;:::i;:::-;:35;;25165:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24964:708;;;25308:25;:29;25334:2;25308:29;;;;;;;;;;;;;;;;;;;;;;;;;:65;;;;;25342:25;:31;25368:4;25342:31;;;;;;;;;;;;;;;;;;;;;;;;;25341:32;25308:65;25304:368;;;25416:14;;25406:6;:24;;25398:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;25304:368;;;25531:25;:29;25557:2;25531:29;;;;;;;;;;;;;;;;;;;;;;;;;25526:146;;25619:9;;25602:13;25612:2;25602:9;:13::i;:::-;25593:6;:22;;;;:::i;:::-;:35;;25585:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25526:146;25304:368;24964:708;24583:1104;24548:1150;25737:1;25714:25;;:11;;;;;;;;;;;:25;;;;:79;;;;;25756:11;;;;;;;;;;;25743:35;;;25787:4;25743:50;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25714:79;25710:290;;;25810:10;25836:11;;;;;;;;;;;25823:31;;;25855:4;25861:2;25873:13;;;;;;;;;;;25889:9;;25900:14;;25916:18;;25823:112;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25810:125;;25958:5;25950:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;25795:205;25710:290;26012:28;26043:24;26061:4;26043:9;:24::i;:::-;26012:55;;26078:12;26117:18;;26093:20;:42;;26078:57;;26150:7;:35;;;;;26174:11;;;;;;;;;;;26150:35;:61;;;;;26203:8;;;;;;;;;;;26202:9;26150:61;:107;;;;;26228:25;:29;26254:2;26228:29;;;;;;;;;;;;;;;;;;;;;;;;;26150:107;:150;;;;;26275:19;:25;26295:4;26275:25;;;;;;;;;;;;;;;;;;;;;;;;;26274:26;26150:150;:191;;;;;26318:19;:23;26338:2;26318:23;;;;;;;;;;;;;;;;;;;;;;;;;26317:24;26150:191;26146:297;;;26371:4;26360:8;;:15;;;;;;;;;;;;;;;;;;26390:10;:8;:10::i;:::-;26426:5;26415:8;;:16;;;;;;;;;;;;;;;;;;26146:297;26455:12;26471:8;;;;;;;;;;;26470:9;26455:24;;26581:19;:25;26601:4;26581:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;26610:19;:23;26630:2;26610:23;;;;;;;;;;;;;;;;;;;;;;;;;26581:52;26577:100;;;26660:5;26650:15;;26577:100;26689:12;26794:7;26790:807;;;26846:25;:29;26872:2;26846:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;26895:1;26879:13;;:17;26846:50;26842:606;;;26924:34;26954:3;26924:25;26935:13;;26924:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;26917:41;;27015:13;;27001:10;;26994:4;:17;;;;:::i;:::-;26993:35;;;;:::i;:::-;26977:12;;:51;;;;;;;:::i;:::-;;;;;;;;27097:13;;27077:16;;27070:4;:23;;;;:::i;:::-;27069:41;;;;:::i;:::-;27047:18;;:63;;;;;;;:::i;:::-;;;;;;;;26842:606;;;27172:25;:31;27198:4;27172:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;27222:1;27207:12;;:16;27172:51;27168:280;;;27251:33;27280:3;27251:24;27262:12;;27251:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;27244:40;;27340:12;;27327:9;;27320:4;:16;;;;:::i;:::-;27319:33;;;;:::i;:::-;27303:12;;:49;;;;;;;:::i;:::-;;;;;;;;27420:12;;27401:15;;27394:4;:22;;;;:::i;:::-;27393:39;;;;:::i;:::-;27371:18;;:61;;;;;;;:::i;:::-;;;;;;;;27168:280;26842:606;27475:1;27468:4;:8;27464:91;;;27497:42;27513:4;27527;27534;27497:15;:42::i;:::-;27464:91;27581:4;27571:14;;;;;:::i;:::-;;;26790:807;27609:33;27625:4;27631:2;27635:6;27609:15;:33::i;:::-;24160:3490;;;;24047:3603;;;;:::o;1093:191::-;1167:16;1186:6;;;;;;;;;;;1167:25;;1212:8;1203:6;;:17;;;;;;;;;;;;;;;;;;1267:8;1236:40;;1257:8;1236:40;;;;;;;;;;;;1156:128;1093:191;:::o;23306:186::-;23423:5;23389:25;:31;23415:4;23389:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23478:5;23444:40;;23472:4;23444:40;;;;;;;;;;;;23306:186;;:::o;4860:733::-;5018:1;5000:20;;:6;:20;;;;4992:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5102:1;5081:23;;:9;:23;;;;5073:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5157:47;5178:6;5186:9;5197:6;5157:20;:47::i;:::-;5217:21;5241:9;:17;5251:6;5241:17;;;;;;;;;;;;;;;;5217:41;;5294:6;5277:13;:23;;5269:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5415:6;5399:13;:22;5379:9;:17;5389:6;5379:17;;;;;;;;;;;;;;;:42;;;;5467:6;5443:9;:20;5453:9;5443:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5508:9;5491:35;;5500:6;5491:35;;;5519:6;5491:35;;;;;;:::i;:::-;;;;;;;;5539:46;5559:6;5567:9;5578:6;5539:19;:46::i;:::-;4981:612;4860:733;;;:::o;28370:914::-;28409:23;28435:24;28453:4;28435:9;:24::i;:::-;28409:50;;28470:25;28519:12;;28498:18;;:33;;;;:::i;:::-;28470:61;;28542:12;28590:1;28571:15;:20;:46;;;;28616:1;28595:17;:22;28571:46;28567:85;;;28634:7;;;;;28567:85;28707:2;28686:18;;:23;;;;:::i;:::-;28668:15;:41;28664:115;;;28765:2;28744:18;;:23;;;;:::i;:::-;28726:41;;28664:115;28791:25;28819:21;28791:49;;28851:33;28868:15;28851:16;:33::i;:::-;28897:18;28918:44;28944:17;28918:21;:25;;:44;;;;:::i;:::-;28897:65;;28973:17;28993:51;29026:17;28993:28;29008:12;;28993:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;28973:71;;29078:1;29057:18;:22;;;;29105:1;29090:12;:16;;;;29141:17;;;;;;;;;;;29133:31;;29172:9;29133:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29119:67;;;;;29219:15;;;;;;;;;;;29211:29;;29249:21;29211:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29197:79;;;;;28398:886;;;;;;28370:914;:::o;8611:98::-;8669:7;8700:1;8696;:5;;;;:::i;:::-;8689:12;;8611:98;;;;:::o;8717:::-;8775:7;8806:1;8802;:5;;;;:::i;:::-;8795:12;;8717:98;;;;:::o;6995:125::-;;;;:::o;7128:124::-;;;;:::o;27773:589::-;27899:21;27937:1;27923:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27899:40;;27968:4;27950;27955:1;27950:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27994:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27984:4;27989:1;27984:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;28029:62;28046:4;28061:15;;;;;;;;;;;28079:11;28029:8;:62::i;:::-;28130:15;;;;;;;;;;;:66;;;28211:11;28237:1;28281:4;28308;28328:15;28130:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27828:534;27773:589;:::o;8505:98::-;8563:7;8594:1;8590;:5;;;;:::i;:::-;8583:12;;8505:98;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:60::-;3522:3;3543:5;3536:12;;3494:60;;;:::o;3560:142::-;3610:9;3643:53;3661:34;3670:24;3688:5;3670:24;:::i;:::-;3661:34;:::i;:::-;3643:53;:::i;:::-;3630:66;;3560:142;;;:::o;3708:126::-;3758:9;3791:37;3822:5;3791:37;:::i;:::-;3778:50;;3708:126;;;:::o;3840:153::-;3917:9;3950:37;3981:5;3950:37;:::i;:::-;3937:50;;3840:153;;;:::o;3999:185::-;4113:64;4171:5;4113:64;:::i;:::-;4108:3;4101:77;3999:185;;:::o;4190:276::-;4310:4;4348:2;4337:9;4333:18;4325:26;;4361:98;4456:1;4445:9;4441:17;4432:6;4361:98;:::i;:::-;4190:276;;;;:::o;4472:118::-;4559:24;4577:5;4559:24;:::i;:::-;4554:3;4547:37;4472:118;;:::o;4596:222::-;4689:4;4727:2;4716:9;4712:18;4704:26;;4740:71;4808:1;4797:9;4793:17;4784:6;4740:71;:::i;:::-;4596:222;;;;:::o;4824:329::-;4883:6;4932:2;4920:9;4911:7;4907:23;4903:32;4900:119;;;4938:79;;:::i;:::-;4900:119;5058:1;5083:53;5128:7;5119:6;5108:9;5104:22;5083:53;:::i;:::-;5073:63;;5029:117;4824:329;;;;:::o;5159:619::-;5236:6;5244;5252;5301:2;5289:9;5280:7;5276:23;5272:32;5269:119;;;5307:79;;:::i;:::-;5269:119;5427:1;5452:53;5497:7;5488:6;5477:9;5473:22;5452:53;:::i;:::-;5442:63;;5398:117;5554:2;5580:53;5625:7;5616:6;5605:9;5601:22;5580:53;:::i;:::-;5570:63;;5525:118;5682:2;5708:53;5753:7;5744:6;5733:9;5729:22;5708:53;:::i;:::-;5698:63;;5653:118;5159:619;;;;;:::o;5784:86::-;5819:7;5859:4;5852:5;5848:16;5837:27;;5784:86;;;:::o;5876:112::-;5959:22;5975:5;5959:22;:::i;:::-;5954:3;5947:35;5876:112;;:::o;5994:214::-;6083:4;6121:2;6110:9;6106:18;6098:26;;6134:67;6198:1;6187:9;6183:17;6174:6;6134:67;:::i;:::-;5994:214;;;;:::o;6214:118::-;6301:24;6319:5;6301:24;:::i;:::-;6296:3;6289:37;6214:118;;:::o;6338:222::-;6431:4;6469:2;6458:9;6454:18;6446:26;;6482:71;6550:1;6539:9;6535:17;6526:6;6482:71;:::i;:::-;6338:222;;;;:::o;6566:329::-;6625:6;6674:2;6662:9;6653:7;6649:23;6645:32;6642:119;;;6680:79;;:::i;:::-;6642:119;6800:1;6825:53;6870:7;6861:6;6850:9;6846:22;6825:53;:::i;:::-;6815:63;;6771:117;6566:329;;;;:::o;6901:474::-;6969:6;6977;7026:2;7014:9;7005:7;7001:23;6997:32;6994:119;;;7032:79;;:::i;:::-;6994:119;7152:1;7177:53;7222:7;7213:6;7202:9;7198:22;7177:53;:::i;:::-;7167:63;;7123:117;7279:2;7305:53;7350:7;7341:6;7330:9;7326:22;7305:53;:::i;:::-;7295:63;;7250:118;6901:474;;;;;:::o;7381:116::-;7451:21;7466:5;7451:21;:::i;:::-;7444:5;7441:32;7431:60;;7487:1;7484;7477:12;7431:60;7381:116;:::o;7503:133::-;7546:5;7584:6;7571:20;7562:29;;7600:30;7624:5;7600:30;:::i;:::-;7503:133;;;;:::o;7642:468::-;7707:6;7715;7764:2;7752:9;7743:7;7739:23;7735:32;7732:119;;;7770:79;;:::i;:::-;7732:119;7890:1;7915:53;7960:7;7951:6;7940:9;7936:22;7915:53;:::i;:::-;7905:63;;7861:117;8017:2;8043:50;8085:7;8076:6;8065:9;8061:22;8043:50;:::i;:::-;8033:60;;7988:115;7642:468;;;;;:::o;8116:117::-;8225:1;8222;8215:12;8239:117;8348:1;8345;8338:12;8362:117;8471:1;8468;8461:12;8502:568;8575:8;8585:6;8635:3;8628:4;8620:6;8616:17;8612:27;8602:122;;8643:79;;:::i;:::-;8602:122;8756:6;8743:20;8733:30;;8786:18;8778:6;8775:30;8772:117;;;8808:79;;:::i;:::-;8772:117;8922:4;8914:6;8910:17;8898:29;;8976:3;8968:4;8960:6;8956:17;8946:8;8942:32;8939:41;8936:128;;;8983:79;;:::i;:::-;8936:128;8502:568;;;;;:::o;9076:698::-;9168:6;9176;9184;9233:2;9221:9;9212:7;9208:23;9204:32;9201:119;;;9239:79;;:::i;:::-;9201:119;9387:1;9376:9;9372:17;9359:31;9417:18;9409:6;9406:30;9403:117;;;9439:79;;:::i;:::-;9403:117;9552:80;9624:7;9615:6;9604:9;9600:22;9552:80;:::i;:::-;9534:98;;;;9330:312;9681:2;9707:50;9749:7;9740:6;9729:9;9725:22;9707:50;:::i;:::-;9697:60;;9652:115;9076:698;;;;;:::o;9780:323::-;9836:6;9885:2;9873:9;9864:7;9860:23;9856:32;9853:119;;;9891:79;;:::i;:::-;9853:119;10011:1;10036:50;10078:7;10069:6;10058:9;10054:22;10036:50;:::i;:::-;10026:60;;9982:114;9780:323;;;;:::o;10109:118::-;10180:22;10196:5;10180:22;:::i;:::-;10173:5;10170:33;10160:61;;10217:1;10214;10207:12;10160:61;10109:118;:::o;10233:135::-;10277:5;10315:6;10302:20;10293:29;;10331:31;10356:5;10331:31;:::i;:::-;10233:135;;;;:::o;10374:77::-;10411:7;10440:5;10429:16;;10374:77;;;:::o;10457:122::-;10530:24;10548:5;10530:24;:::i;:::-;10523:5;10520:35;10510:63;;10569:1;10566;10559:12;10510:63;10457:122;:::o;10585:139::-;10631:5;10669:6;10656:20;10647:29;;10685:33;10712:5;10685:33;:::i;:::-;10585:139;;;;:::o;10730:615::-;10805:6;10813;10821;10870:2;10858:9;10849:7;10845:23;10841:32;10838:119;;;10876:79;;:::i;:::-;10838:119;10996:1;11021:51;11064:7;11055:6;11044:9;11040:22;11021:51;:::i;:::-;11011:61;;10967:115;11121:2;11147:53;11192:7;11183:6;11172:9;11168:22;11147:53;:::i;:::-;11137:63;;11092:118;11249:2;11275:53;11320:7;11311:6;11300:9;11296:22;11275:53;:::i;:::-;11265:63;;11220:118;10730:615;;;;;:::o;11351:474::-;11419:6;11427;11476:2;11464:9;11455:7;11451:23;11447:32;11444:119;;;11482:79;;:::i;:::-;11444:119;11602:1;11627:53;11672:7;11663:6;11652:9;11648:22;11627:53;:::i;:::-;11617:63;;11573:117;11729:2;11755:53;11800:7;11791:6;11780:9;11776:22;11755:53;:::i;:::-;11745:63;;11700:118;11351:474;;;;;:::o;11831:180::-;11879:77;11876:1;11869:88;11976:4;11973:1;11966:15;12000:4;11997:1;11990:15;12017:320;12061:6;12098:1;12092:4;12088:12;12078:22;;12145:1;12139:4;12135:12;12166:18;12156:81;;12222:4;12214:6;12210:17;12200:27;;12156:81;12284:2;12276:6;12273:14;12253:18;12250:38;12247:84;;;12303:18;;:::i;:::-;12247:84;12068:269;12017:320;;;:::o;12343:182::-;12483:34;12479:1;12471:6;12467:14;12460:58;12343:182;:::o;12531:366::-;12673:3;12694:67;12758:2;12753:3;12694:67;:::i;:::-;12687:74;;12770:93;12859:3;12770:93;:::i;:::-;12888:2;12883:3;12879:12;12872:19;;12531:366;;;:::o;12903:419::-;13069:4;13107:2;13096:9;13092:18;13084:26;;13156:9;13150:4;13146:20;13142:1;13131:9;13127:17;13120:47;13184:131;13310:4;13184:131;:::i;:::-;13176:139;;12903:419;;;:::o;13328:180::-;13376:77;13373:1;13366:88;13473:4;13470:1;13463:15;13497:4;13494:1;13487:15;13514:348;13554:7;13577:20;13595:1;13577:20;:::i;:::-;13572:25;;13611:20;13629:1;13611:20;:::i;:::-;13606:25;;13799:1;13731:66;13727:74;13724:1;13721:81;13716:1;13709:9;13702:17;13698:105;13695:131;;;13806:18;;:::i;:::-;13695:131;13854:1;13851;13847:9;13836:20;;13514:348;;;;:::o;13868:180::-;13916:77;13913:1;13906:88;14013:4;14010:1;14003:15;14037:4;14034:1;14027:15;14054:185;14094:1;14111:20;14129:1;14111:20;:::i;:::-;14106:25;;14145:20;14163:1;14145:20;:::i;:::-;14140:25;;14184:1;14174:35;;14189:18;;:::i;:::-;14174:35;14231:1;14228;14224:9;14219:14;;14054:185;;;;:::o;14245:228::-;14385:34;14381:1;14373:6;14369:14;14362:58;14454:11;14449:2;14441:6;14437:15;14430:36;14245:228;:::o;14479:366::-;14621:3;14642:67;14706:2;14701:3;14642:67;:::i;:::-;14635:74;;14718:93;14807:3;14718:93;:::i;:::-;14836:2;14831:3;14827:12;14820:19;;14479:366;;;:::o;14851:419::-;15017:4;15055:2;15044:9;15040:18;15032:26;;15104:9;15098:4;15094:20;15090:1;15079:9;15075:17;15068:47;15132:131;15258:4;15132:131;:::i;:::-;15124:139;;14851:419;;;:::o;15276:227::-;15416:34;15412:1;15404:6;15400:14;15393:58;15485:10;15480:2;15472:6;15468:15;15461:35;15276:227;:::o;15509:366::-;15651:3;15672:67;15736:2;15731:3;15672:67;:::i;:::-;15665:74;;15748:93;15837:3;15748:93;:::i;:::-;15866:2;15861:3;15857:12;15850:19;;15509:366;;;:::o;15881:419::-;16047:4;16085:2;16074:9;16070:18;16062:26;;16134:9;16128:4;16124:20;16120:1;16109:9;16105:17;16098:47;16162:131;16288:4;16162:131;:::i;:::-;16154:139;;15881:419;;;:::o;16306:305::-;16346:3;16365:20;16383:1;16365:20;:::i;:::-;16360:25;;16399:20;16417:1;16399:20;:::i;:::-;16394:25;;16553:1;16485:66;16481:74;16478:1;16475:81;16472:107;;;16559:18;;:::i;:::-;16472:107;16603:1;16600;16596:9;16589:16;;16306:305;;;;:::o;16617:179::-;16757:31;16753:1;16745:6;16741:14;16734:55;16617:179;:::o;16802:366::-;16944:3;16965:67;17029:2;17024:3;16965:67;:::i;:::-;16958:74;;17041:93;17130:3;17041:93;:::i;:::-;17159:2;17154:3;17150:12;17143:19;;16802:366;;;:::o;17174:419::-;17340:4;17378:2;17367:9;17363:18;17355:26;;17427:9;17421:4;17417:20;17413:1;17402:9;17398:17;17391:47;17455:131;17581:4;17455:131;:::i;:::-;17447:139;;17174:419;;;:::o;17599:180::-;17647:77;17644:1;17637:88;17744:4;17741:1;17734:15;17768:4;17765:1;17758:15;17785:233;17824:3;17847:24;17865:5;17847:24;:::i;:::-;17838:33;;17893:66;17886:5;17883:77;17880:103;;;17963:18;;:::i;:::-;17880:103;18010:1;18003:5;17999:13;17992:20;;17785:233;;;:::o;18024:244::-;18164:34;18160:1;18152:6;18148:14;18141:58;18233:27;18228:2;18220:6;18216:15;18209:52;18024:244;:::o;18274:366::-;18416:3;18437:67;18501:2;18496:3;18437:67;:::i;:::-;18430:74;;18513:93;18602:3;18513:93;:::i;:::-;18631:2;18626:3;18622:12;18615:19;;18274:366;;;:::o;18646:419::-;18812:4;18850:2;18839:9;18835:18;18827:26;;18899:9;18893:4;18889:20;18885:1;18874:9;18870:17;18863:47;18927:131;19053:4;18927:131;:::i;:::-;18919:139;;18646:419;;;:::o;19071:224::-;19211:34;19207:1;19199:6;19195:14;19188:58;19280:7;19275:2;19267:6;19263:15;19256:32;19071:224;:::o;19301:366::-;19443:3;19464:67;19528:2;19523:3;19464:67;:::i;:::-;19457:74;;19540:93;19629:3;19540:93;:::i;:::-;19658:2;19653:3;19649:12;19642:19;;19301:366;;;:::o;19673:419::-;19839:4;19877:2;19866:9;19862:18;19854:26;;19926:9;19920:4;19916:20;19912:1;19901:9;19897:17;19890:47;19954:131;20080:4;19954:131;:::i;:::-;19946:139;;19673:419;;;:::o;20098:118::-;20185:24;20203:5;20185:24;:::i;:::-;20180:3;20173:37;20098:118;;:::o;20222:664::-;20427:4;20465:3;20454:9;20450:19;20442:27;;20479:71;20547:1;20536:9;20532:17;20523:6;20479:71;:::i;:::-;20560:72;20628:2;20617:9;20613:18;20604:6;20560:72;:::i;:::-;20642;20710:2;20699:9;20695:18;20686:6;20642:72;:::i;:::-;20724;20792:2;20781:9;20777:18;20768:6;20724:72;:::i;:::-;20806:73;20874:3;20863:9;20859:19;20850:6;20806:73;:::i;:::-;20222:664;;;;;;;;:::o;20892:442::-;21041:4;21079:2;21068:9;21064:18;21056:26;;21092:71;21160:1;21149:9;21145:17;21136:6;21092:71;:::i;:::-;21173:72;21241:2;21230:9;21226:18;21217:6;21173:72;:::i;:::-;21255;21323:2;21312:9;21308:18;21299:6;21255:72;:::i;:::-;20892:442;;;;;;:::o;21340:148::-;21442:11;21479:3;21464:18;;21340:148;;;;:::o;21494:214::-;21634:66;21630:1;21622:6;21618:14;21611:90;21494:214;:::o;21714:400::-;21874:3;21895:84;21977:1;21972:3;21895:84;:::i;:::-;21888:91;;21988:93;22077:3;21988:93;:::i;:::-;22106:1;22101:3;22097:11;22090:18;;21714:400;;;:::o;22120:79::-;22159:7;22188:5;22177:16;;22120:79;;;:::o;22205:157::-;22310:45;22330:24;22348:5;22330:24;:::i;:::-;22310:45;:::i;:::-;22305:3;22298:58;22205:157;;:::o;22368:663::-;22609:3;22631:148;22775:3;22631:148;:::i;:::-;22624:155;;22789:75;22860:3;22851:6;22789:75;:::i;:::-;22889:2;22884:3;22880:12;22873:19;;22902:75;22973:3;22964:6;22902:75;:::i;:::-;23002:2;22997:3;22993:12;22986:19;;23022:3;23015:10;;22368:663;;;;;:::o;23037:545::-;23210:4;23248:3;23237:9;23233:19;23225:27;;23262:71;23330:1;23319:9;23315:17;23306:6;23262:71;:::i;:::-;23343:68;23407:2;23396:9;23392:18;23383:6;23343:68;:::i;:::-;23421:72;23489:2;23478:9;23474:18;23465:6;23421:72;:::i;:::-;23503;23571:2;23560:9;23556:18;23547:6;23503:72;:::i;:::-;23037:545;;;;;;;:::o;23588:167::-;23728:19;23724:1;23716:6;23712:14;23705:43;23588:167;:::o;23761:366::-;23903:3;23924:67;23988:2;23983:3;23924:67;:::i;:::-;23917:74;;24000:93;24089:3;24000:93;:::i;:::-;24118:2;24113:3;24109:12;24102:19;;23761:366;;;:::o;24133:419::-;24299:4;24337:2;24326:9;24322:18;24314:26;;24386:9;24380:4;24376:20;24372:1;24361:9;24357:17;24350:47;24414:131;24540:4;24414:131;:::i;:::-;24406:139;;24133:419;;;:::o;24558:170::-;24698:22;24694:1;24686:6;24682:14;24675:46;24558:170;:::o;24734:366::-;24876:3;24897:67;24961:2;24956:3;24897:67;:::i;:::-;24890:74;;24973:93;25062:3;24973:93;:::i;:::-;25091:2;25086:3;25082:12;25075:19;;24734:366;;;:::o;25106:419::-;25272:4;25310:2;25299:9;25295:18;25287:26;;25359:9;25353:4;25349:20;25345:1;25334:9;25330:17;25323:47;25387:131;25513:4;25387:131;:::i;:::-;25379:139;;25106:419;;;:::o;25531:223::-;25671:34;25667:1;25659:6;25655:14;25648:58;25740:6;25735:2;25727:6;25723:15;25716:31;25531:223;:::o;25760:366::-;25902:3;25923:67;25987:2;25982:3;25923:67;:::i;:::-;25916:74;;25999:93;26088:3;25999:93;:::i;:::-;26117:2;26112:3;26108:12;26101:19;;25760:366;;;:::o;26132:419::-;26298:4;26336:2;26325:9;26321:18;26313:26;;26385:9;26379:4;26375:20;26371:1;26360:9;26356:17;26349:47;26413:131;26539:4;26413:131;:::i;:::-;26405:139;;26132:419;;;:::o;26557:240::-;26697:34;26693:1;26685:6;26681:14;26674:58;26766:23;26761:2;26753:6;26749:15;26742:48;26557:240;:::o;26803:366::-;26945:3;26966:67;27030:2;27025:3;26966:67;:::i;:::-;26959:74;;27042:93;27131:3;27042:93;:::i;:::-;27160:2;27155:3;27151:12;27144:19;;26803:366;;;:::o;27175:419::-;27341:4;27379:2;27368:9;27364:18;27356:26;;27428:9;27422:4;27418:20;27414:1;27403:9;27399:17;27392:47;27456:131;27582:4;27456:131;:::i;:::-;27448:139;;27175:419;;;:::o;27600:239::-;27740:34;27736:1;27728:6;27724:14;27717:58;27809:22;27804:2;27796:6;27792:15;27785:47;27600:239;:::o;27845:366::-;27987:3;28008:67;28072:2;28067:3;28008:67;:::i;:::-;28001:74;;28084:93;28173:3;28084:93;:::i;:::-;28202:2;28197:3;28193:12;28186:19;;27845:366;;;:::o;28217:419::-;28383:4;28421:2;28410:9;28406:18;28398:26;;28470:9;28464:4;28460:20;28456:1;28445:9;28441:17;28434:47;28498:131;28624:4;28498:131;:::i;:::-;28490:139;;28217:419;;;:::o;28642:225::-;28782:34;28778:1;28770:6;28766:14;28759:58;28851:8;28846:2;28838:6;28834:15;28827:33;28642:225;:::o;28873:366::-;29015:3;29036:67;29100:2;29095:3;29036:67;:::i;:::-;29029:74;;29112:93;29201:3;29112:93;:::i;:::-;29230:2;29225:3;29221:12;29214:19;;28873:366;;;:::o;29245:419::-;29411:4;29449:2;29438:9;29434:18;29426:26;;29498:9;29492:4;29488:20;29484:1;29473:9;29469:17;29462:47;29526:131;29652:4;29526:131;:::i;:::-;29518:139;;29245:419;;;:::o;29670:223::-;29810:34;29806:1;29798:6;29794:14;29787:58;29879:6;29874:2;29866:6;29862:15;29855:31;29670:223;:::o;29899:366::-;30041:3;30062:67;30126:2;30121:3;30062:67;:::i;:::-;30055:74;;30138:93;30227:3;30138:93;:::i;:::-;30256:2;30251:3;30247:12;30240:19;;29899:366;;;:::o;30271:419::-;30437:4;30475:2;30464:9;30460:18;30452:26;;30524:9;30518:4;30514:20;30510:1;30499:9;30495:17;30488:47;30552:131;30678:4;30552:131;:::i;:::-;30544:139;;30271:419;;;:::o;30696:221::-;30836:34;30832:1;30824:6;30820:14;30813:58;30905:4;30900:2;30892:6;30888:15;30881:29;30696:221;:::o;30923:366::-;31065:3;31086:67;31150:2;31145:3;31086:67;:::i;:::-;31079:74;;31162:93;31251:3;31162:93;:::i;:::-;31280:2;31275:3;31271:12;31264:19;;30923:366;;;:::o;31295:419::-;31461:4;31499:2;31488:9;31484:18;31476:26;;31548:9;31542:4;31538:20;31534:1;31523:9;31519:17;31512:47;31576:131;31702:4;31576:131;:::i;:::-;31568:139;;31295:419;;;:::o;31720:224::-;31860:34;31856:1;31848:6;31844:14;31837:58;31929:7;31924:2;31916:6;31912:15;31905:32;31720:224;:::o;31950:366::-;32092:3;32113:67;32177:2;32172:3;32113:67;:::i;:::-;32106:74;;32189:93;32278:3;32189:93;:::i;:::-;32307:2;32302:3;32298:12;32291:19;;31950:366;;;:::o;32322:419::-;32488:4;32526:2;32515:9;32511:18;32503:26;;32575:9;32569:4;32565:20;32561:1;32550:9;32546:17;32539:47;32603:131;32729:4;32603:131;:::i;:::-;32595:139;;32322:419;;;:::o;32747:222::-;32887:34;32883:1;32875:6;32871:14;32864:58;32956:5;32951:2;32943:6;32939:15;32932:30;32747:222;:::o;32975:366::-;33117:3;33138:67;33202:2;33197:3;33138:67;:::i;:::-;33131:74;;33214:93;33303:3;33214:93;:::i;:::-;33332:2;33327:3;33323:12;33316:19;;32975:366;;;:::o;33347:419::-;33513:4;33551:2;33540:9;33536:18;33528:26;;33600:9;33594:4;33590:20;33586:1;33575:9;33571:17;33564:47;33628:131;33754:4;33628:131;:::i;:::-;33620:139;;33347:419;;;:::o;33772:167::-;33912:19;33908:1;33900:6;33896:14;33889:43;33772:167;:::o;33945:366::-;34087:3;34108:67;34172:2;34167:3;34108:67;:::i;:::-;34101:74;;34184:93;34273:3;34184:93;:::i;:::-;34302:2;34297:3;34293:12;34286:19;;33945:366;;;:::o;34317:419::-;34483:4;34521:2;34510:9;34506:18;34498:26;;34570:9;34564:4;34560:20;34556:1;34545:9;34541:17;34534:47;34598:131;34724:4;34598:131;:::i;:::-;34590:139;;34317:419;;;:::o;34742:165::-;34882:17;34878:1;34870:6;34866:14;34859:41;34742:165;:::o;34913:366::-;35055:3;35076:67;35140:2;35135:3;35076:67;:::i;:::-;35069:74;;35152:93;35241:3;35152:93;:::i;:::-;35270:2;35265:3;35261:12;35254:19;;34913:366;;;:::o;35285:419::-;35451:4;35489:2;35478:9;35474:18;35466:26;;35538:9;35532:4;35528:20;35524:1;35513:9;35509:17;35502:47;35566:131;35692:4;35566:131;:::i;:::-;35558:139;;35285:419;;;:::o;35710:172::-;35850:24;35846:1;35838:6;35834:14;35827:48;35710:172;:::o;35888:366::-;36030:3;36051:67;36115:2;36110:3;36051:67;:::i;:::-;36044:74;;36127:93;36216:3;36127:93;:::i;:::-;36245:2;36240:3;36236:12;36229:19;;35888:366;;;:::o;36260:419::-;36426:4;36464:2;36453:9;36449:18;36441:26;;36513:9;36507:4;36503:20;36499:1;36488:9;36484:17;36477:47;36541:131;36667:4;36541:131;:::i;:::-;36533:139;;36260:419;;;:::o;36685:234::-;36825:34;36821:1;36813:6;36809:14;36802:58;36894:17;36889:2;36881:6;36877:15;36870:42;36685:234;:::o;36925:366::-;37067:3;37088:67;37152:2;37147:3;37088:67;:::i;:::-;37081:74;;37164:93;37253:3;37164:93;:::i;:::-;37282:2;37277:3;37273:12;37266:19;;36925:366;;;:::o;37297:419::-;37463:4;37501:2;37490:9;37486:18;37478:26;;37550:9;37544:4;37540:20;37536:1;37525:9;37521:17;37514:47;37578:131;37704:4;37578:131;:::i;:::-;37570:139;;37297:419;;;:::o;37722:169::-;37862:21;37858:1;37850:6;37846:14;37839:45;37722:169;:::o;37897:366::-;38039:3;38060:67;38124:2;38119:3;38060:67;:::i;:::-;38053:74;;38136:93;38225:3;38136:93;:::i;:::-;38254:2;38249:3;38245:12;38238:19;;37897:366;;;:::o;38269:419::-;38435:4;38473:2;38462:9;38458:18;38450:26;;38522:9;38516:4;38512:20;38508:1;38497:9;38493:17;38486:47;38550:131;38676:4;38550:131;:::i;:::-;38542:139;;38269:419;;;:::o;38694:235::-;38834:34;38830:1;38822:6;38818:14;38811:58;38903:18;38898:2;38890:6;38886:15;38879:43;38694:235;:::o;38935:366::-;39077:3;39098:67;39162:2;39157:3;39098:67;:::i;:::-;39091:74;;39174:93;39263:3;39174:93;:::i;:::-;39292:2;39287:3;39283:12;39276:19;;38935:366;;;:::o;39307:419::-;39473:4;39511:2;39500:9;39496:18;39488:26;;39560:9;39554:4;39550:20;39546:1;39535:9;39531:17;39524:47;39588:131;39714:4;39588:131;:::i;:::-;39580:139;;39307:419;;;:::o;39732:137::-;39786:5;39817:6;39811:13;39802:22;;39833:30;39857:5;39833:30;:::i;:::-;39732:137;;;;:::o;39875:345::-;39942:6;39991:2;39979:9;39970:7;39966:23;39962:32;39959:119;;;39997:79;;:::i;:::-;39959:119;40117:1;40142:61;40195:7;40186:6;40175:9;40171:22;40142:61;:::i;:::-;40132:71;;40088:125;39875:345;;;;:::o;40226:775::-;40459:4;40497:3;40486:9;40482:19;40474:27;;40511:71;40579:1;40568:9;40564:17;40555:6;40511:71;:::i;:::-;40592:72;40660:2;40649:9;40645:18;40636:6;40592:72;:::i;:::-;40674;40742:2;40731:9;40727:18;40718:6;40674:72;:::i;:::-;40756;40824:2;40813:9;40809:18;40800:6;40756:72;:::i;:::-;40838:73;40906:3;40895:9;40891:19;40882:6;40838:73;:::i;:::-;40921;40989:3;40978:9;40974:19;40965:6;40921:73;:::i;:::-;40226:775;;;;;;;;;:::o;41007:170::-;41147:22;41143:1;41135:6;41131:14;41124:46;41007:170;:::o;41183:366::-;41325:3;41346:67;41410:2;41405:3;41346:67;:::i;:::-;41339:74;;41422:93;41511:3;41422:93;:::i;:::-;41540:2;41535:3;41531:12;41524:19;;41183:366;;;:::o;41555:419::-;41721:4;41759:2;41748:9;41744:18;41736:26;;41808:9;41802:4;41798:20;41794:1;41783:9;41779:17;41772:47;41836:131;41962:4;41836:131;:::i;:::-;41828:139;;41555:419;;;:::o;41980:191::-;42020:4;42040:20;42058:1;42040:20;:::i;:::-;42035:25;;42074:20;42092:1;42074:20;:::i;:::-;42069:25;;42113:1;42110;42107:8;42104:34;;;42118:18;;:::i;:::-;42104:34;42163:1;42160;42156:9;42148:17;;41980:191;;;;:::o;42177:225::-;42317:34;42313:1;42305:6;42301:14;42294:58;42386:8;42381:2;42373:6;42369:15;42362:33;42177:225;:::o;42408:366::-;42550:3;42571:67;42635:2;42630:3;42571:67;:::i;:::-;42564:74;;42647:93;42736:3;42647:93;:::i;:::-;42765:2;42760:3;42756:12;42749:19;;42408:366;;;:::o;42780:419::-;42946:4;42984:2;42973:9;42969:18;42961:26;;43033:9;43027:4;43023:20;43019:1;43008:9;43004:17;42997:47;43061:131;43187:4;43061:131;:::i;:::-;43053:139;;42780:419;;;:::o;43205:147::-;43306:11;43343:3;43328:18;;43205:147;;;;:::o;43358:114::-;;:::o;43478:398::-;43637:3;43658:83;43739:1;43734:3;43658:83;:::i;:::-;43651:90;;43750:93;43839:3;43750:93;:::i;:::-;43868:1;43863:3;43859:11;43852:18;;43478:398;;;:::o;43882:379::-;44066:3;44088:147;44231:3;44088:147;:::i;:::-;44081:154;;44252:3;44245:10;;43882:379;;;:::o;44267:180::-;44315:77;44312:1;44305:88;44412:4;44409:1;44402:15;44436:4;44433:1;44426:15;44453:143;44510:5;44541:6;44535:13;44526:22;;44557:33;44584:5;44557:33;:::i;:::-;44453:143;;;;:::o;44602:351::-;44672:6;44721:2;44709:9;44700:7;44696:23;44692:32;44689:119;;;44727:79;;:::i;:::-;44689:119;44847:1;44872:64;44928:7;44919:6;44908:9;44904:22;44872:64;:::i;:::-;44862:74;;44818:128;44602:351;;;;:::o;44959:85::-;45004:7;45033:5;45022:16;;44959:85;;;:::o;45050:158::-;45108:9;45141:61;45159:42;45168:32;45194:5;45168:32;:::i;:::-;45159:42;:::i;:::-;45141:61;:::i;:::-;45128:74;;45050:158;;;:::o;45214:147::-;45309:45;45348:5;45309:45;:::i;:::-;45304:3;45297:58;45214:147;;:::o;45367:114::-;45434:6;45468:5;45462:12;45452:22;;45367:114;;;:::o;45487:184::-;45586:11;45620:6;45615:3;45608:19;45660:4;45655:3;45651:14;45636:29;;45487:184;;;;:::o;45677:132::-;45744:4;45767:3;45759:11;;45797:4;45792:3;45788:14;45780:22;;45677:132;;;:::o;45815:108::-;45892:24;45910:5;45892:24;:::i;:::-;45887:3;45880:37;45815:108;;:::o;45929:179::-;45998:10;46019:46;46061:3;46053:6;46019:46;:::i;:::-;46097:4;46092:3;46088:14;46074:28;;45929:179;;;;:::o;46114:113::-;46184:4;46216;46211:3;46207:14;46199:22;;46114:113;;;:::o;46263:732::-;46382:3;46411:54;46459:5;46411:54;:::i;:::-;46481:86;46560:6;46555:3;46481:86;:::i;:::-;46474:93;;46591:56;46641:5;46591:56;:::i;:::-;46670:7;46701:1;46686:284;46711:6;46708:1;46705:13;46686:284;;;46787:6;46781:13;46814:63;46873:3;46858:13;46814:63;:::i;:::-;46807:70;;46900:60;46953:6;46900:60;:::i;:::-;46890:70;;46746:224;46733:1;46730;46726:9;46721:14;;46686:284;;;46690:14;46986:3;46979:10;;46387:608;;;46263:732;;;;:::o;47001:831::-;47264:4;47302:3;47291:9;47287:19;47279:27;;47316:71;47384:1;47373:9;47369:17;47360:6;47316:71;:::i;:::-;47397:80;47473:2;47462:9;47458:18;47449:6;47397:80;:::i;:::-;47524:9;47518:4;47514:20;47509:2;47498:9;47494:18;47487:48;47552:108;47655:4;47646:6;47552:108;:::i;:::-;47544:116;;47670:72;47738:2;47727:9;47723:18;47714:6;47670:72;:::i;:::-;47752:73;47820:3;47809:9;47805:19;47796:6;47752:73;:::i;:::-;47001:831;;;;;;;;:::o
Swarm Source
ipfs://87c0009266b2f75189e684adc073573d206437d8e9b7adb0eac478112c84bfee
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)