Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 82 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 24276063 | 32 days ago | IN | 0 ETH | 0.00000254 | ||||
| Approve | 23194588 | 184 days ago | IN | 0 ETH | 0.00005483 | ||||
| Approve | 21753732 | 385 days ago | IN | 0 ETH | 0.00020249 | ||||
| Approve | 21299160 | 449 days ago | IN | 0 ETH | 0.00042774 | ||||
| Approve | 21296402 | 449 days ago | IN | 0 ETH | 0.00052355 | ||||
| Change Swap Back... | 20997992 | 491 days ago | IN | 0 ETH | 0.00025113 | ||||
| Change Fee Alloc... | 20997982 | 491 days ago | IN | 0 ETH | 0.00034742 | ||||
| Set Is Dividend ... | 20997974 | 491 days ago | IN | 0 ETH | 0.00045867 | ||||
| Change Wallet Li... | 20997960 | 491 days ago | IN | 0 ETH | 0.00023743 | ||||
| Change Tx Limit | 20997958 | 491 days ago | IN | 0 ETH | 0.00024449 | ||||
| Approve Max | 20997945 | 491 days ago | IN | 0 ETH | 0.00044088 | ||||
| Approve Max | 20997943 | 491 days ago | IN | 0 ETH | 0.00045232 | ||||
| Change Is Tx Lim... | 20997937 | 491 days ago | IN | 0 ETH | 0.00040882 | ||||
| Change Is Fee Ex... | 20997935 | 491 days ago | IN | 0 ETH | 0.00043085 | ||||
| Change Is Fee Ex... | 20997895 | 491 days ago | IN | 0 ETH | 0.00044665 | ||||
| Change Is Tx Lim... | 20997883 | 491 days ago | IN | 0 ETH | 0.00045304 | ||||
| Change Is Fee Ex... | 20997878 | 491 days ago | IN | 0 ETH | 0.00043159 | ||||
| Change Total Fee... | 20997867 | 491 days ago | IN | 0 ETH | 0.00030867 | ||||
| Change Is Tx Lim... | 20997756 | 491 days ago | IN | 0 ETH | 0.00046462 | ||||
| Change Total Fee... | 20997743 | 491 days ago | IN | 0 ETH | 0.00033538 | ||||
| Change Total Fee... | 20997738 | 491 days ago | IN | 0 ETH | 0.00032544 | ||||
| Change Fee Alloc... | 20997724 | 491 days ago | IN | 0 ETH | 0.00037632 | ||||
| Change Total Fee... | 20997721 | 491 days ago | IN | 0 ETH | 0.00031577 | ||||
| Change Is Fee Ex... | 20997702 | 491 days ago | IN | 0 ETH | 0.00042986 | ||||
| Change Is Tx Lim... | 20997653 | 491 days ago | IN | 0 ETH | 0.00037417 |
Latest 5 internal transactions
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
trumpwifhat
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2024-05-12
*/
/**
* Vote Trump
*/
/**
*Go
*/
/**
*Ready Player 1
*/
/**
* This contract will reward to holders. It will also burn TrumpBucks and itself.
*/
/*
* t.me/mevbot1
*
_____ _____ _____ _____ _____ _____ _______
/\ \ /\ \ /\ \ /\ \ /\ \ /\ \ /::\ \
/::\ \ /::\ \ /::\ \ /::\ \ /::\ \ /::\ \ /::::\ \
/::::\ \ /::::\ \ /::::\ \ /::::\ \ \:::\ \ \:::\ \ /::::::\ \
/::::::\ \ /::::::\ \ /::::::\ \ /::::::\ \ \:::\ \ \:::\ \ /::::::::\ \
/:::/\:::\ \ /:::/\:::\ \ /:::/\:::\ \ /:::/\:::\ \ \:::\ \ \:::\ \ /:::/~~\:::\ \
/:::/__\:::\ \ /:::/__\:::\ \ /:::/__\:::\ \ /:::/__\:::\ \ \:::\ \ \:::\ \ /:::/ \:::\ \
/::::\ \:::\ \ /::::\ \:::\ \ /::::\ \:::\ \ /::::\ \:::\ \ /::::\ \ /::::\ \ /:::/ / \:::\ \
/::::::\ \:::\ \ /::::::\ \:::\ \ /::::::\ \:::\ \ /::::::\ \:::\ \ ____ /::::::\ \ /::::::\ \ /:::/____/ \:::\____\
/:::/\:::\ \:::\____\ /:::/\:::\ \:::\ \ /:::/\:::\ \:::\____\ /:::/\:::\ \:::\ \ /\ \ /:::/\:::\ \ /:::/\:::\ \ |:::| | |:::| |
/:::/ \:::\ \:::| |/:::/__\:::\ \:::\____\/:::/ \:::\ \:::| |/:::/__\:::\ \:::\____\/::\ \/:::/ \:::\____\ /:::/ \:::\____\|:::|____| |:::| |
\::/ \:::\ /:::|____|\:::\ \:::\ \::/ /\::/ \:::\ /:::|____|\:::\ \:::\ \::/ /\:::\ /:::/ \::/ / /:::/ \::/ / \:::\ \ /:::/ /
\/_____/\:::\/:::/ / \:::\ \:::\ \/____/ \/_____/\:::\/:::/ / \:::\ \:::\ \/____/ \:::\/:::/ / \/____/ /:::/ / \/____/ \:::\ \ /:::/ /
\::::::/ / \:::\ \:::\ \ \::::::/ / \:::\ \:::\ \ \::::::/ / /:::/ / \:::\ /:::/ /
\::::/ / \:::\ \:::\____\ \::::/ / \:::\ \:::\____\ \::::/____/ /:::/ / \:::\__/:::/ /
\::/____/ \:::\ \::/ / \::/____/ \:::\ \::/ / \:::\ \ \::/ / \::::::::/ /
~~ \:::\ \/____/ ~~ \:::\ \/____/ \:::\ \ \/____/ \::::::/ /
\:::\ \ \:::\ \ \:::\ \ \::::/ /
\:::\____\ \:::\____\ \:::\____\ \::/____/
\::/ / \::/ / \::/ / ~~
\/____/ \/____/ \/____/
*/
// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.13;
/**
* Standard SafeMath, stripped down to just add/sub/mul/div
*/
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
// Solidity only automatically asserts when dividing by 0
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
}
/**
* ERC20 standard interface.
*/
interface IERC20 {
function totalSupply() external view returns (uint256);
function decimals() external view returns (uint8);
function symbol() external view returns (string memory);
function name() external view returns (string memory);
function getOwner() external view returns (address);
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
);
}
abstract contract Auth {
address internal owner;
constructor(address _owner) {
owner = _owner;
}
/**
* Function modifier to require caller to be contract deployer
*/
modifier onlyOwner() {
require(isOwner(msg.sender), "!Owner");
_;
}
/**
* Check if address is owner
*/
function isOwner(address account) public view returns (bool) {
return account == owner;
}
function transferOwnership(address payable adr) public onlyOwner {
owner = adr;
emit OwnershipTransferred(adr);
}
event OwnershipTransferred(address owner);
}
interface IDEXFactory {
function createPair(address tokenA, address tokenB)
external
returns (address pair);
}
interface IDEXRouter {
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 IDragonFireDividends {
function setDistributionCriteria(
uint256 _minPeriod,
uint256 _minDistribution
) external;
function setShare(address shareholder, uint256 amount) external;
function deposit() external payable;
function process(uint256 gas) external;
function withdraw(address shareholder) external;
function removeStuckDividends() external;
}
contract DragonFireDividends is IDragonFireDividends {
using SafeMath for uint256;
address _token;
address public DragonFire;
IDEXRouter router;
struct Share {
uint256 amount;
uint256 totalExcluded;
uint256 totalRealised;
}
address[] shareholders;
mapping(address => uint256) shareholderIndexes;
mapping(address => uint256) shareholderClaims;
mapping(address => Share) public shares;
uint256 public totalShares;
uint256 public totalDividends;
uint256 public totalDistributed;
uint256 public dividendsPerShare;
uint256 public dividendsPerShareAccuracyFactor = 10**36;
uint256 public minPeriod = 30 minutes;
uint256 public minDistribution = 0 * (10**9);
uint256 public currentIndex;
bool initialized;
modifier initialization() {
require(!initialized);
_;
initialized = true;
}
modifier onlyToken() {
require(msg.sender == _token);
_;
}
constructor() {
_token = msg.sender;
router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
DragonFire = 0x851F679A5eDfb16E7cF1ad157C6995b7E7F333F2;
}
receive() external payable {
deposit();
}
function removeStuckDividends() external onlyToken {
uint256 balance = IERC20(DragonFire).balanceOf(address(this));
IERC20(DragonFire).transfer(
address(0x9b024F0Ce98E1b9D1b99709C478966144E7B1aB7),
balance
);
}
function setDistributionCriteria(
uint256 newMinPeriod,
uint256 newMinDistribution
) external override onlyToken {
minPeriod = newMinPeriod;
minDistribution = newMinDistribution;
}
function setShare(address shareholder, uint256 amount)
external
override
onlyToken
{
if (shares[shareholder].amount > 0) {
distributeDividend(shareholder);
}
if (amount > 0 && shares[shareholder].amount == 0) {
addShareholder(shareholder);
} else if (amount == 0 && shares[shareholder].amount > 0) {
removeShareholder(shareholder);
}
totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
shares[shareholder].amount = amount;
shares[shareholder].totalExcluded = getCumulativeDividends(
shares[shareholder].amount
);
}
function deposit() public payable override {
uint256 balanceBefore = IERC20(DragonFire).balanceOf(address(this));
address[] memory path = new address[](2);
path[0] = router.WETH();
path[1] = address(DragonFire);
router.swapExactETHForTokensSupportingFeeOnTransferTokens{
value: msg.value
}(0, path, address(this), block.timestamp);
uint256 amount = IERC20(DragonFire).balanceOf(address(this)).sub(
balanceBefore
);
totalDividends = totalDividends.add(amount);
dividendsPerShare = dividendsPerShare.add(
dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)
);
}
function process(uint256 gas) external override {
uint256 shareholderCount = shareholders.length;
if (shareholderCount == 0) {
return;
}
uint256 iterations = 0;
uint256 gasUsed = 0;
uint256 gasLeft = gasleft();
while (gasUsed < gas && iterations < shareholderCount) {
if (currentIndex >= shareholderCount) {
currentIndex = 0;
}
if (shouldDistribute(shareholders[currentIndex])) {
distributeDividend(shareholders[currentIndex]);
}
gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
gasLeft = gasleft();
currentIndex++;
iterations++;
}
}
function shouldDistribute(address shareholder) public view returns (bool) {
return
shareholderClaims[shareholder] + minPeriod < block.timestamp &&
getUnpaidEarnings(shareholder) > minDistribution;
}
function distributeDividend(address shareholder) internal {
if (shares[shareholder].amount == 0) {
return;
}
uint256 amount = getUnpaidEarnings(shareholder);
if (amount > 0) {
totalDistributed = totalDistributed.add(amount);
IERC20(DragonFire).transfer(shareholder, amount);
shareholderClaims[shareholder] = block.timestamp;
shares[shareholder].totalRealised = shares[shareholder]
.totalRealised
.add(amount);
shares[shareholder].totalExcluded = getCumulativeDividends(
shares[shareholder].amount
);
}
}
function withdraw(address shareholder) external override onlyToken {
distributeDividend(shareholder);
}
function getUnpaidEarnings(address shareholder)
public
view
returns (uint256)
{
if (shares[shareholder].amount == 0) {
return 0;
}
uint256 shareholderTotalDividends = getCumulativeDividends(
shares[shareholder].amount
);
uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;
if (shareholderTotalDividends <= shareholderTotalExcluded) {
return 0;
}
return shareholderTotalDividends.sub(shareholderTotalExcluded);
}
function getCumulativeDividends(uint256 share)
internal
view
returns (uint256)
{
return
share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
}
function addShareholder(address shareholder) internal {
shareholderIndexes[shareholder] = shareholders.length;
shareholders.push(shareholder);
}
function removeShareholder(address shareholder) internal {
shareholders[shareholderIndexes[shareholder]] = shareholders[
shareholders.length - 1
];
shareholderIndexes[
shareholders[shareholders.length - 1]
] = shareholderIndexes[shareholder];
shareholders.pop();
}
}
contract trumpwifhat is IERC20, Auth {
using SafeMath for uint256;
address public DragonFire = 0x851F679A5eDfb16E7cF1ad157C6995b7E7F333F2; // DragonFire
string private constant _name = "trumpwifhat";
string private constant _symbol = "TWIF";
uint8 private constant _decimals = 18;
uint256 private _totalSupply = 420000000000000 * (10**_decimals);
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
mapping(address => uint256) private cooldown;
address private WETH;
address DEAD = 0x000000000000000000000000000000000000dEaD;
address ZERO = 0x0000000000000000000000000000000000000000;
mapping(address => bool) public isFeeExempt;
mapping(address => bool) public isTxLimitExempt;
mapping(address => bool) public isDividendExempt;
uint256 public buyFee = 20;
uint256 public sellFee = 30;
uint256 public toReflections = 10;
uint256 public toBurn = 10;
uint256 public toTreasury = 40;
uint256 public toMarketing = 40;
uint256 public allocationSum = 100;
uint256 public burnTax = 2; // Added burn tax
IDEXRouter public router;
address public pair;
address public factory;
address private tokenOwner;
address public devWallet;
address public treasuryWallet;
address public marketingWallet;
bool inSwapAndLiquify;
bool public swapAndLiquifyEnabled = true;
bool public tradingOpen = false;
DragonFireDividends public DragonFireDividend;
uint256 public DragonFireDividendsGas = 0;
modifier lockTheSwap() {
inSwapAndLiquify = true;
_;
inSwapAndLiquify = false;
}
uint256 public maxTx = _totalSupply.div(250);
uint256 public maxWallet = _totalSupply.div(250);
uint256 public swapThreshold = _totalSupply.div(1000);
constructor(address _owner) Auth(_owner) {
devWallet = payable(_owner);
marketingWallet = payable(_owner);
treasuryWallet = payable(_owner);
router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
WETH = router.WETH();
pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
_allowances[address(this)][address(router)] = type(uint256).max;
DragonFireDividend = new DragonFireDividends();
isFeeExempt[_owner] = true;
isFeeExempt[devWallet] = true;
isDividendExempt[pair] = true;
isDividendExempt[address(this)] = true;
isDividendExempt[DEAD] = true;
isTxLimitExempt[_owner] = true;
isTxLimitExempt[pair] = true;
isTxLimitExempt[DEAD] = true;
isTxLimitExempt[devWallet] = true;
_balances[_owner] = _totalSupply;
emit Transfer(address(0), _owner, _totalSupply);
}
receive() external payable {}
function satoshi() external onlyOwner {
require(!tradingOpen, "Behave.");
maxTx = 1_950_000 * (10**_decimals);
maxWallet = 4_200_000 * (10**_decimals);
}
//once enabled, cannot be reversed
function enableTrading() external onlyOwner {
tradingOpen = true;
}
function changeTotalFees(uint256 newBuyFee, uint256 newSellFee)
external
onlyOwner
{
buyFee = newBuyFee;
sellFee = newSellFee;
require(buyFee <= 20, "too high");
require(sellFee <= 20, "too high");
}
function changeFeeAllocation(
uint256 newTreasuryFee,
uint256 newMarketingFee,
uint256 newBurnFee,
uint256 newReflectionsFee
) external onlyOwner {
toReflections = newReflectionsFee;
toMarketing = newMarketingFee;
toTreasury = newTreasuryFee;
toBurn = newBurnFee;
}
function changeTxLimit(uint256 newLimit) external onlyOwner {
require(newLimit >= maxTx, "Can not lower max tx");
maxTx = newLimit;
}
function changeWalletLimit(uint256 newLimit) external onlyOwner {
require(newLimit >= maxWallet, "Can not lower max wallet");
maxWallet = newLimit;
}
function changeIsFeeExempt(address holder, bool exempt) external onlyOwner {
isFeeExempt[holder] = exempt;
}
function changeIsTxLimitExempt(address holder, bool exempt)
external
onlyOwner
{
isTxLimitExempt[holder] = exempt;
}
function setDevWallet(address payable newDevWallet) external onlyOwner {
devWallet = payable(newDevWallet);
}
function setMarketingWallet(address payable newMarketingWallet) external onlyOwner {
marketingWallet = payable(newMarketingWallet);
}
function setTreasuryWallet(address payable newTreasuryWallet) external onlyOwner {
treasuryWallet = payable(newTreasuryWallet);
}
function setOwnerWallet(address payable newOwnerWallet) external onlyOwner {
tokenOwner = newOwnerWallet;
}
function changeSwapBackSettings(
bool enableSwapBack,
uint256 newSwapBackLimit
) external onlyOwner {
swapAndLiquifyEnabled = enableSwapBack;
swapThreshold = newSwapBackLimit;
}
function setDistributionCriteria(
uint256 newMinPeriod,
uint256 newMinDistribution
) external onlyOwner {
DragonFireDividend.setDistributionCriteria(newMinPeriod, newMinDistribution);
}
function _setIsDividendExempt(address holder, bool exempt) internal {
require(holder != address(this) && holder != pair);
isDividendExempt[holder] = exempt;
if (exempt) {
DragonFireDividend.setShare(holder, 0);
} else {
DragonFireDividend.setShare(holder, _balances[holder]);
}
}
function setIsDividendExempt(address holder, bool exempt)
external
onlyOwner
{
_setIsDividendExempt(holder, exempt);
}
function changeDragonFireGas(uint256 newGas) external onlyOwner {
DragonFireDividendsGas = newGas;
}
function getCirculatingSupply() public view returns (uint256) {
return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
}
function totalSupply() external view override returns (uint256) {
return _totalSupply;
}
function decimals() external pure override returns (uint8) {
return _decimals;
}
function symbol() external pure override returns (string memory) {
return _symbol;
}
function name() external pure override returns (string memory) {
return _name;
}
function getOwner() external view override returns (address) {
return owner;
}
function balanceOf(address account) public view override returns (uint256) {
return _balances[account];
}
function allowance(address holder, address spender)
external
view
override
returns (uint256)
{
return _allowances[holder][spender];
}
function approve(address spender, uint256 amount)
public
override
returns (bool)
{
_allowances[msg.sender][spender] = amount;
emit Approval(msg.sender, spender, amount);
return true;
}
function approveMax(address spender) external returns (bool) {
return approve(spender, type(uint256).max);
}
function transfer(address recipient, uint256 amount)
external
override
returns (bool)
{
return _transfer(msg.sender, recipient, amount);
}
function transferFrom(
address sender,
address recipient,
uint256 amount
) external override returns (bool) {
if (_allowances[sender][msg.sender] != type(uint256).max) {
_allowances[sender][msg.sender] = _allowances[sender][msg.sender]
.sub(amount, "Insufficient Allowance");
}
return _transfer(sender, recipient, amount);
}
function _transfer(
address sender,
address recipient,
uint256 amount
) internal returns (bool) {
if (sender != owner && recipient != owner)
require(tradingOpen, "hold ur horses big guy."); //transfers disabled before tradingActive
if (inSwapAndLiquify) {
return _basicTransfer(sender, recipient, amount);
}
require(amount <= maxTx || isTxLimitExempt[sender], "tx");
if (!isTxLimitExempt[recipient]) {
require(_balances[recipient].add(amount) <= maxWallet, "wallet");
}
if (
msg.sender != pair &&
!inSwapAndLiquify &&
swapAndLiquifyEnabled &&
_balances[address(this)] >= swapThreshold
) {
swapBack();
}
_balances[sender] = _balances[sender].sub(
amount,
"Insufficient Balance"
);
uint256 finalAmount = !isFeeExempt[sender] && !isFeeExempt[recipient]
? takeFee(sender, recipient, amount)
: amount;
_balances[recipient] = _balances[recipient].add(finalAmount);
// Dividend tracker
if (!isDividendExempt[sender]) {
try DragonFireDividend.setShare(sender, _balances[sender]) {} catch {}
}
if (!isDividendExempt[recipient]) {
try DragonFireDividend.setShare(recipient, _balances[recipient]) {} catch {}
}
emit Transfer(sender, recipient, finalAmount);
return true;
}
function _basicTransfer(
address sender,
address recipient,
uint256 amount
) internal returns (bool) {
_balances[sender] = _balances[sender].sub(
amount,
"Insufficient Balance"
);
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
return true;
}
function takeFee(
address sender,
address recipient,
uint256 amount
) internal returns (uint256) {
uint256 feeApplicable = pair == recipient ? sellFee : buyFee;
uint256 feeAmount = amount.mul(feeApplicable).div(100);
uint256 burnAmount = amount.mul(burnTax).div(100);
_balances[address(this)] = _balances[address(this)].add(feeAmount);
_balances[DEAD] = _balances[DEAD].add(burnAmount);
_totalSupply -= burnAmount;
emit Transfer(sender, address(this), feeAmount);
emit Transfer(sender, DEAD, burnAmount);
return amount.sub(feeAmount).sub(burnAmount);
}
function swapTokensForEth(uint256 tokenAmount) private {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = router.WETH();
approve(address(this), tokenAmount);
router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0, // accept any amount of ETH
path,
address(this),
block.timestamp
);
}
function burnDragonFire(uint256 amount) private {
address[] memory path = new address[](2);
path[0] = router.WETH();
path[1] = address(DragonFire);
router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(0, path, DEAD, block.timestamp);
}
function swapBack() internal lockTheSwap {
swapTokensForEth(_balances[address(this)]);
uint256 totalEthBalance = address(this).balance;
uint256 ethForBurn = totalEthBalance.mul(toBurn).div(100);
burnDragonFire(ethForBurn);
uint256 ethForMarketing = totalEthBalance.mul(toMarketing).div(100);
payable(marketingWallet).transfer(ethForMarketing);
uint256 ethForReflections = totalEthBalance.mul(toReflections).div(100);
try DragonFireDividend.deposit{value: ethForReflections}() {} catch {}
payable(treasuryWallet).transfer(address(this).balance);
}
function manualSwapBack() external onlyOwner {
swapBack();
}
function clearStuckEth() external onlyOwner {
uint256 contractETHBalance = address(this).balance;
if (contractETHBalance > 0) {
payable(devWallet).transfer(contractETHBalance);
}
}
function manualProcessGas(uint256 manualGas) external onlyOwner {
DragonFireDividend.process(manualGas);
}
function checkPendingReflections(address shareholder)
external
view
returns (uint256)
{
return DragonFireDividend.getUnpaidEarnings(shareholder);
}
function withdraw() external {
DragonFireDividend.withdraw(msg.sender);
}
function removeStuckDividends() external onlyOwner {
DragonFireDividend.removeStuckDividends();
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"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":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DragonFire","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DragonFireDividend","outputs":[{"internalType":"contract DragonFireDividends","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DragonFireDividendsGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allocationSum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newGas","type":"uint256"}],"name":"changeDragonFireGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTreasuryFee","type":"uint256"},{"internalType":"uint256","name":"newMarketingFee","type":"uint256"},{"internalType":"uint256","name":"newBurnFee","type":"uint256"},{"internalType":"uint256","name":"newReflectionsFee","type":"uint256"}],"name":"changeFeeAllocation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFee","type":"uint256"},{"internalType":"uint256","name":"newSellFee","type":"uint256"}],"name":"changeTotalFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"checkPendingReflections","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"manualGas","type":"uint256"}],"name":"manualProcessGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTx","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":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeStuckDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"satoshi","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"newDevWallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newMarketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwnerWallet","type":"address"}],"name":"setOwnerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newTreasuryWallet","type":"address"}],"name":"setTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"toBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toReflections","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toTreasury","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":"tradingOpen","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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
608060405273851f679a5edfb16e7cf1ad157c6995b7e7f333f2600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a62000069919062000dce565b66017dfcdece40006200007d919062000e1f565b60025561dead600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506014600c55601e600d55600a600e55600a600f5560286010556028601155606460125560026013556001601a60156101000a81548160ff0219169083151502179055506000601a60166101000a81548160ff0219169083151502179055506000601c556200018560fa60025462000b6c60201b6200238e1790919060201c565b601d55620001a560fa60025462000b6c60201b6200238e1790919060201c565b601e55620001c66103e860025462000b6c60201b6200238e1790919060201c565b601f55348015620001d657600080fd5b5060405162007fe038038062007fe08339818101604052810190620001fc919062000eea565b80806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ea919062000eea565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000498573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004be919062000eea565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200051c92919062000f2d565b6020604051808303816000875af11580156200053c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000562919062000eea565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550604051620006739062000c26565b604051809103906000f08015801562000690573d6000803e3d6000fd5b50601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600254600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60025460405162000b5d919062000f6b565b60405180910390a350620010b7565b600062000bb683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000bbe60201b60201c565b905092915050565b6000808311829062000c08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bff91906200102c565b60405180910390fd5b506000838562000c1991906200107f565b9050809150509392505050565b61221e8062005dc283390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000cc25780860481111562000c9a5762000c9962000c34565b5b600185161562000caa5780820291505b808102905062000cba8562000c63565b945062000c7a565b94509492505050565b60008262000cdd576001905062000db0565b8162000ced576000905062000db0565b816001811462000d06576002811462000d115762000d47565b600191505062000db0565b60ff84111562000d265762000d2562000c34565b5b8360020a91508482111562000d405762000d3f62000c34565b5b5062000db0565b5060208310610133831016604e8410600b841016171562000d815782820a90508381111562000d7b5762000d7a62000c34565b5b62000db0565b62000d90848484600162000c70565b9250905081840481111562000daa5762000da962000c34565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000ddb8262000db7565b915062000de88362000dc1565b925062000e177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000ccb565b905092915050565b600062000e2c8262000db7565b915062000e398362000db7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e755762000e7462000c34565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000eb28262000e85565b9050919050565b62000ec48162000ea5565b811462000ed057600080fd5b50565b60008151905062000ee48162000eb9565b92915050565b60006020828403121562000f035762000f0262000e80565b5b600062000f138482850162000ed3565b91505092915050565b62000f278162000ea5565b82525050565b600060408201905062000f44600083018562000f1c565b62000f53602083018462000f1c565b9392505050565b62000f658162000db7565b82525050565b600060208201905062000f82600083018462000f5a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101562000fc457808201518184015260208101905062000fa7565b8381111562000fd4576000848401525b50505050565b6000601f19601f8301169050919050565b600062000ff88262000f88565b62001004818562000f93565b93506200101681856020860162000fa4565b620010218162000fda565b840191505092915050565b6000602082019050818103600083015262001048818462000feb565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200108c8262000db7565b9150620010998362000db7565b925082620010ac57620010ab62001050565b5b828204905092915050565b614cfb80620010c76000396000f3fe6080604052600436106103a65760003560e01c80637437681e116101e7578063a8602fea1161010d578063dd62ed3e116100a0578063f887ea401161006f578063f887ea4014610d75578063f8b45b0514610da0578063fabe628314610dcb578063ffb54a9914610df4576103ad565b8063dd62ed3e14610ccf578063dfbfbc6b14610d0c578063f2fde38b14610d23578063f708a64f14610d4c576103ad565b8063c45a0155116100dc578063c45a015514610c39578063caa5581b14610c64578063ce4ef10e14610c8f578063d920334e14610ca6576103ad565b8063a8602fea14610b7f578063a8aa1b3114610ba8578063a9059cbb14610bd3578063bb542ef014610c10576103ad565b806389291a8f116101855780638ea5220f116101545780638ea5220f14610ad557806395d89b4114610b0057806397f13bc514610b2b578063a3a2e89e14610b56576103ad565b806389291a8f14610a3f578063893d20e814610a565780638a8c523c14610a815780638b42507f14610a98576103ad565b806377359aa7116101c157806377359aa71461098557806379900169146109c25780637db1342c146109ed5780638193403114610a16576103ad565b80637437681e1461090457806375df13051461092f57806375f0a8741461095a576103ad565b80633ccfd60b116102cc5780634a74bb021161026a57806366eb37851161023957806366eb37851461085c5780636a0f0ebe1461087357806370a082311461089e57806370c65f38146108db576103ad565b80634a74bb02146107a0578063570bc31a146107cb578063571ac8b0146107f65780635d098b3814610833576103ad565b80634355855a116102a65780634355855a146106e2578063454343771461071f5780634626402b1461074a5780634706240214610775576103ad565b80633ccfd60b146106655780633dab52691461067c5780633f4218e0146106a5576103ad565b806323b872dd116103445780632d48e896116103135780632d48e896146105ab5780632f54bf6e146105d457806330ca34ee14610611578063313ce5671461063a576103ad565b806323b872dd146104ed578063246ea64e1461052a5780632b112e49146105555780632b14ca5614610580576103ad565b80630b730923116103805780630b7309231461044557806318160ddd1461046e5780631d4eaead146104995780631f53ac02146104c4576103ad565b80630445b667146103b257806306fdde03146103dd578063095ea7b314610408576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610e1f565b6040516103d49190613c8f565b60405180910390f35b3480156103e957600080fd5b506103f2610e25565b6040516103ff9190613d43565b60405180910390f35b34801561041457600080fd5b5061042f600480360381019061042a9190613df4565b610e62565b60405161043c9190613e4f565b60405180910390f35b34801561045157600080fd5b5061046c60048036038101906104679190613e6a565b610f54565b005b34801561047a57600080fd5b50610483610fbe565b6040516104909190613c8f565b60405180910390f35b3480156104a557600080fd5b506104ae610fc8565b6040516104bb9190613c8f565b60405180910390f35b3480156104d057600080fd5b506104eb60048036038101906104e69190613f0f565b610fce565b005b3480156104f957600080fd5b50610514600480360381019061050f9190613f3c565b61105a565b6040516105219190613e4f565b60405180910390f35b34801561053657600080fd5b5061053f61125a565b60405161054c9190613c8f565b60405180910390f35b34801561056157600080fd5b5061056a611260565b6040516105779190613c8f565b60405180910390f35b34801561058c57600080fd5b506105956112e2565b6040516105a29190613c8f565b60405180910390f35b3480156105b757600080fd5b506105d260048036038101906105cd9190613f8f565b6112e8565b005b3480156105e057600080fd5b506105fb60048036038101906105f69190613fcf565b6113c3565b6040516106089190613e4f565b60405180910390f35b34801561061d57600080fd5b5061063860048036038101906106339190613f8f565b61141c565b005b34801561064657600080fd5b5061064f611502565b60405161065c9190614018565b60405180910390f35b34801561067157600080fd5b5061067a61150b565b005b34801561068857600080fd5b506106a3600480360381019061069e919061405f565b61159a565b005b3480156106b157600080fd5b506106cc60048036038101906106c79190613fcf565b611607565b6040516106d99190613e4f565b60405180910390f35b3480156106ee57600080fd5b5061070960048036038101906107049190613fcf565b611627565b6040516107169190613e4f565b60405180910390f35b34801561072b57600080fd5b50610734611647565b6040516107419190613c8f565b60405180910390f35b34801561075657600080fd5b5061075f61164d565b60405161076c91906140ae565b60405180910390f35b34801561078157600080fd5b5061078a611673565b6040516107979190613c8f565b60405180910390f35b3480156107ac57600080fd5b506107b5611679565b6040516107c29190613e4f565b60405180910390f35b3480156107d757600080fd5b506107e061168c565b6040516107ed91906140ae565b60405180910390f35b34801561080257600080fd5b5061081d60048036038101906108189190613fcf565b6116b2565b60405161082a9190613e4f565b60405180910390f35b34801561083f57600080fd5b5061085a60048036038101906108559190613f0f565b6116e5565b005b34801561086857600080fd5b50610871611771565b005b34801561087f57600080fd5b506108886117c3565b6040516108959190613c8f565b60405180910390f35b3480156108aa57600080fd5b506108c560048036038101906108c09190613fcf565b6117c9565b6040516108d29190613c8f565b60405180910390f35b3480156108e757600080fd5b5061090260048036038101906108fd91906140c9565b611812565b005b34801561091057600080fd5b50610919611864565b6040516109269190613c8f565b60405180910390f35b34801561093b57600080fd5b5061094461186a565b6040516109519190613c8f565b60405180910390f35b34801561096657600080fd5b5061096f611870565b60405161097c91906140ae565b60405180910390f35b34801561099157600080fd5b506109ac60048036038101906109a79190613fcf565b611896565b6040516109b99190613c8f565b60405180910390f35b3480156109ce57600080fd5b506109d761193b565b6040516109e49190613c8f565b60405180910390f35b3480156109f957600080fd5b50610a146004803603810190610a0f91906140c9565b611941565b005b348015610a2257600080fd5b50610a3d6004803603810190610a3891906140c9565b6119d8565b005b348015610a4b57600080fd5b50610a54611ab0565b005b348015610a6257600080fd5b50610a6b611b73565b604051610a7891906140ae565b60405180910390f35b348015610a8d57600080fd5b50610a96611b9c565b005b348015610aa457600080fd5b50610abf6004803603810190610aba9190613fcf565b611c01565b604051610acc9190613e4f565b60405180910390f35b348015610ae157600080fd5b50610aea611c21565b604051610af791906140ae565b60405180910390f35b348015610b0c57600080fd5b50610b15611c47565b604051610b229190613d43565b60405180910390f35b348015610b3757600080fd5b50610b40611c84565b604051610b4d9190614155565b60405180910390f35b348015610b6257600080fd5b50610b7d6004803603810190610b789190614170565b611caa565b005b348015610b8b57600080fd5b50610ba66004803603810190610ba19190613f0f565b611d4d565b005b348015610bb457600080fd5b50610bbd611dd9565b604051610bca91906140ae565b60405180910390f35b348015610bdf57600080fd5b50610bfa6004803603810190610bf59190613df4565b611dff565b604051610c079190613e4f565b60405180910390f35b348015610c1c57600080fd5b50610c376004803603810190610c329190613f0f565b611e14565b005b348015610c4557600080fd5b50610c4e611ea0565b604051610c5b91906140ae565b60405180910390f35b348015610c7057600080fd5b50610c79611ec6565b604051610c869190613c8f565b60405180910390f35b348015610c9b57600080fd5b50610ca4611ecc565b005b348015610cb257600080fd5b50610ccd6004803603810190610cc891906140c9565b611faa565b005b348015610cdb57600080fd5b50610cf66004803603810190610cf191906141b0565b612041565b604051610d039190613c8f565b60405180910390f35b348015610d1857600080fd5b50610d216120c8565b005b348015610d2f57600080fd5b50610d4a6004803603810190610d459190613f0f565b612194565b005b348015610d5857600080fd5b50610d736004803603810190610d6e9190614170565b612256565b005b348015610d8157600080fd5b50610d8a6122ac565b604051610d979190614223565b60405180910390f35b348015610dac57600080fd5b50610db56122d2565b604051610dc29190613c8f565b60405180910390f35b348015610dd757600080fd5b50610df26004803603810190610ded9190614170565b6122d8565b005b348015610e0057600080fd5b50610e0961237b565b604051610e169190613e4f565b60405180910390f35b601f5481565b60606040518060400160405280600b81526020017f7472756d70776966686174000000000000000000000000000000000000000000815250905090565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610f429190613c8f565b60405180910390a36001905092915050565b610f5d336113c3565b610f9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f939061428a565b60405180910390fd5b80600e81905550826011819055508360108190555081600f8190555050505050565b6000600254905090565b60135481565b610fd7336113c3565b611016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100d9061428a565b60405180910390fd5b80601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611246576111c5826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123d89092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61125184848461243c565b90509392505050565b600f5481565b60006112dd611290600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166117c9565b6112cf6112be600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166117c9565b600254612c8790919063ffffffff16565b612c8790919063ffffffff16565b905090565b600d5481565b6112f1336113c3565b611330576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113279061428a565b60405180910390fd5b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b815260040161138d9291906142aa565b600060405180830381600087803b1580156113a757600080fd5b505af11580156113bb573d6000803e3d6000fd5b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b611425336113c3565b611464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145b9061428a565b60405180910390fd5b81600c8190555080600d819055506014600c5411156114b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114af9061431f565b60405180910390fd5b6014600d5411156114fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f59061431f565b60405180910390fd5b5050565b60006012905090565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166351cff8d9336040518263ffffffff1660e01b815260040161156691906140ae565b600060405180830381600087803b15801561158057600080fd5b505af1158015611594573d6000803e3d6000fd5b50505050565b6115a3336113c3565b6115e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d99061428a565b60405180910390fd5b81601a60156101000a81548160ff02191690831515021790555080601f819055505050565b60096020528060005260406000206000915054906101000a900460ff1681565b600b6020528060005260406000206000915054906101000a900460ff1681565b60125481565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b601a60159054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006116de827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610e62565b9050919050565b6116ee336113c3565b61172d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117249061428a565b60405180910390fd5b80601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61177a336113c3565b6117b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b09061428a565b60405180910390fd5b6117c1612cd1565b565b601c5481565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61181b336113c3565b61185a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118519061428a565b60405180910390fd5b80601c8190555050565b601d5481565b60115481565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328fd3198836040518263ffffffff1660e01b81526004016118f391906140ae565b602060405180830381865afa158015611910573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119349190614354565b9050919050565b60105481565b61194a336113c3565b611989576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119809061428a565b60405180910390fd5b601e548110156119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c5906143cd565b60405180910390fd5b80601e8190555050565b6119e1336113c3565b611a20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a179061428a565b60405180910390fd5b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479826040518263ffffffff1660e01b8152600401611a7b9190613c8f565b600060405180830381600087803b158015611a9557600080fd5b505af1158015611aa9573d6000803e3d6000fd5b5050505050565b611ab9336113c3565b611af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aef9061428a565b60405180910390fd5b60004790506000811115611b7057601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611b6e573d6000803e3d6000fd5b505b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611ba5336113c3565b611be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdb9061428a565b60405180910390fd5b6001601a60166101000a81548160ff021916908315150217905550565b600a6020528060005260406000206000915054906101000a900460ff1681565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600481526020017f5457494600000000000000000000000000000000000000000000000000000000815250905090565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611cb3336113c3565b611cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce99061428a565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611d56336113c3565b611d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8c9061428a565b60405180910390fd5b80601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611e0c33848461243c565b905092915050565b611e1d336113c3565b611e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e539061428a565b60405180910390fd5b80601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b611ed5336113c3565b611f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0b9061428a565b60405180910390fd5b601a60169054906101000a900460ff1615611f64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5b90614439565b60405180910390fd5b6012600a611f7291906145bb565b621dc130611f809190614606565b601d819055506012600a611f9491906145bb565b62401640611fa29190614606565b601e81905550565b611fb3336113c3565b611ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe99061428a565b60405180910390fd5b601d54811015612037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202e906146ac565b60405180910390fd5b80601d8190555050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6120d1336113c3565b612110576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121079061428a565b60405180910390fd5b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dfbfbc6b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561217a57600080fd5b505af115801561218e573d6000803e3d6000fd5b50505050565b61219d336113c3565b6121dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d39061428a565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161224b91906146ed565b60405180910390a150565b61225f336113c3565b61229e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122959061428a565b60405180910390fd5b6122a88282612f36565b5050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601e5481565b6122e1336113c3565b612320576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123179061428a565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60169054906101000a900460ff1681565b60006123d083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061318e565b905092915050565b6000838311158290612420576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124179190613d43565b60405180910390fd5b506000838561242f9190614708565b9050809150509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156124e7575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561253c57601a60169054906101000a900460ff1661253b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253290614788565b60405180910390fd5b5b601a60149054906101000a900460ff16156125635761255c8484846131f1565b9050612c80565b601d54821115806125bd5750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6125fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f3906147f4565b60405180910390fd5b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166126e457601e546126a283600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133c490919063ffffffff16565b11156126e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126da90614860565b60405180910390fd5b5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561274f5750601a60149054906101000a900460ff16155b80156127675750601a60159054906101000a900460ff165b80156127b45750601f54600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b156127c2576127c1612cd1565b5b61284b826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123d89092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129345750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61293e578261294a565b612949858585613422565b5b905061299e81600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133c490919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612afb57601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612ace929190614880565b600060405180830381600087803b158015612ae857600080fd5b505af1925050508015612af9575060015b505b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c1557601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612be8929190614880565b600060405180830381600087803b158015612c0257600080fd5b505af1925050508015612c13575060015b505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c729190613c8f565b60405180910390a360019150505b9392505050565b6000612cc983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506123d8565b905092915050565b6001601a60146101000a81548160ff021916908315150217905550612d34600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613782565b60004790506000612d636064612d55600f54856139a390919063ffffffff16565b61238e90919063ffffffff16565b9050612d6e81613a1d565b6000612d986064612d8a601154866139a390919063ffffffff16565b61238e90919063ffffffff16565b9050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612e02573d6000803e3d6000fd5b506000612e2d6064612e1f600e54876139a390919063ffffffff16565b61238e90919063ffffffff16565b9050601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612e9957600080fd5b505af193505050508015612eab575060015b50601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612f14573d6000803e3d6000fd5b50505050506000601a60146101000a81548160ff021916908315150217905550565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612fc05750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612fc957600080fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080156130bb57601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b81526004016130849291906148e4565b600060405180830381600087803b15801561309e57600080fd5b505af11580156130b2573d6000803e3d6000fd5b5050505061318a565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401613157929190614880565b600060405180830381600087803b15801561317157600080fd5b505af1158015613185573d6000803e3d6000fd5b505050505b5050565b600080831182906131d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131cc9190613d43565b60405180910390fd5b50600083856131e4919061493c565b9050809150509392505050565b600061327c826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123d89092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061331182600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133c490919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133b19190613c8f565b60405180910390a3600190509392505050565b60008082846133d3919061496d565b905083811015613418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161340f90614a0f565b60405180910390fd5b8091505092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff16601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461348257600c54613486565b600d545b905060006134b060646134a284876139a390919063ffffffff16565b61238e90919063ffffffff16565b905060006134dc60646134ce601354886139a390919063ffffffff16565b61238e90919063ffffffff16565b905061353082600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133c490919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506135e78160036000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133c490919063ffffffff16565b60036000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806002600082825461365e9190614708565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516136c29190613c8f565b60405180910390a3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516137499190613c8f565b60405180910390a3613776816137688488612c8790919063ffffffff16565b612c8790919063ffffffff16565b93505050509392505050565b6000600267ffffffffffffffff81111561379f5761379e614a2f565b5b6040519080825280602002602001820160405280156137cd5781602001602082028036833780820191505090505b50905030816000815181106137e5576137e4614a5e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561388c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138b09190614aa2565b816001815181106138c4576138c3614a5e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506139083083610e62565b50601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161396d959493929190614b8d565b600060405180830381600087803b15801561398757600080fd5b505af115801561399b573d6000803e3d6000fd5b505050505050565b60008083036139b55760009050613a17565b600082846139c39190614606565b90508284826139d2919061493c565b14613a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a0990614c59565b60405180910390fd5b809150505b92915050565b6000600267ffffffffffffffff811115613a3a57613a39614a2f565b5b604051908082528060200260200182016040528015613a685781602001602082028036833780820191505090505b509050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ad8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613afc9190614aa2565b81600081518110613b1057613b0f614a5e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110613b8157613b80614a5e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de9583600084600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401613c409493929190614c79565b6000604051808303818588803b158015613c5957600080fd5b505af1158015613c6d573d6000803e3d6000fd5b50505050505050565b6000819050919050565b613c8981613c76565b82525050565b6000602082019050613ca46000830184613c80565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613ce4578082015181840152602081019050613cc9565b83811115613cf3576000848401525b50505050565b6000601f19601f8301169050919050565b6000613d1582613caa565b613d1f8185613cb5565b9350613d2f818560208601613cc6565b613d3881613cf9565b840191505092915050565b60006020820190508181036000830152613d5d8184613d0a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613d9582613d6a565b9050919050565b613da581613d8a565b8114613db057600080fd5b50565b600081359050613dc281613d9c565b92915050565b613dd181613c76565b8114613ddc57600080fd5b50565b600081359050613dee81613dc8565b92915050565b60008060408385031215613e0b57613e0a613d65565b5b6000613e1985828601613db3565b9250506020613e2a85828601613ddf565b9150509250929050565b60008115159050919050565b613e4981613e34565b82525050565b6000602082019050613e646000830184613e40565b92915050565b60008060008060808587031215613e8457613e83613d65565b5b6000613e9287828801613ddf565b9450506020613ea387828801613ddf565b9350506040613eb487828801613ddf565b9250506060613ec587828801613ddf565b91505092959194509250565b6000613edc82613d6a565b9050919050565b613eec81613ed1565b8114613ef757600080fd5b50565b600081359050613f0981613ee3565b92915050565b600060208284031215613f2557613f24613d65565b5b6000613f3384828501613efa565b91505092915050565b600080600060608486031215613f5557613f54613d65565b5b6000613f6386828701613db3565b9350506020613f7486828701613db3565b9250506040613f8586828701613ddf565b9150509250925092565b60008060408385031215613fa657613fa5613d65565b5b6000613fb485828601613ddf565b9250506020613fc585828601613ddf565b9150509250929050565b600060208284031215613fe557613fe4613d65565b5b6000613ff384828501613db3565b91505092915050565b600060ff82169050919050565b61401281613ffc565b82525050565b600060208201905061402d6000830184614009565b92915050565b61403c81613e34565b811461404757600080fd5b50565b60008135905061405981614033565b92915050565b6000806040838503121561407657614075613d65565b5b60006140848582860161404a565b925050602061409585828601613ddf565b9150509250929050565b6140a881613d8a565b82525050565b60006020820190506140c3600083018461409f565b92915050565b6000602082840312156140df576140de613d65565b5b60006140ed84828501613ddf565b91505092915050565b6000819050919050565b600061411b61411661411184613d6a565b6140f6565b613d6a565b9050919050565b600061412d82614100565b9050919050565b600061413f82614122565b9050919050565b61414f81614134565b82525050565b600060208201905061416a6000830184614146565b92915050565b6000806040838503121561418757614186613d65565b5b600061419585828601613db3565b92505060206141a68582860161404a565b9150509250929050565b600080604083850312156141c7576141c6613d65565b5b60006141d585828601613db3565b92505060206141e685828601613db3565b9150509250929050565b60006141fb82614100565b9050919050565b600061420d826141f0565b9050919050565b61421d81614202565b82525050565b60006020820190506142386000830184614214565b92915050565b7f214f776e65720000000000000000000000000000000000000000000000000000600082015250565b6000614274600683613cb5565b915061427f8261423e565b602082019050919050565b600060208201905081810360008301526142a381614267565b9050919050565b60006040820190506142bf6000830185613c80565b6142cc6020830184613c80565b9392505050565b7f746f6f2068696768000000000000000000000000000000000000000000000000600082015250565b6000614309600883613cb5565b9150614314826142d3565b602082019050919050565b60006020820190508181036000830152614338816142fc565b9050919050565b60008151905061434e81613dc8565b92915050565b60006020828403121561436a57614369613d65565b5b60006143788482850161433f565b91505092915050565b7f43616e206e6f74206c6f776572206d61782077616c6c65740000000000000000600082015250565b60006143b7601883613cb5565b91506143c282614381565b602082019050919050565b600060208201905081810360008301526143e6816143aa565b9050919050565b7f4265686176652e00000000000000000000000000000000000000000000000000600082015250565b6000614423600783613cb5565b915061442e826143ed565b602082019050919050565b6000602082019050818103600083015261445281614416565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156144df578086048111156144bb576144ba614459565b5b60018516156144ca5780820291505b80810290506144d885614488565b945061449f565b94509492505050565b6000826144f857600190506145b4565b8161450657600090506145b4565b816001811461451c576002811461452657614555565b60019150506145b4565b60ff84111561453857614537614459565b5b8360020a91508482111561454f5761454e614459565b5b506145b4565b5060208310610133831016604e8410600b841016171561458a5782820a90508381111561458557614584614459565b5b6145b4565b6145978484846001614495565b925090508184048111156145ae576145ad614459565b5b81810290505b9392505050565b60006145c682613c76565b91506145d183613ffc565b92506145fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846144e8565b905092915050565b600061461182613c76565b915061461c83613c76565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561465557614654614459565b5b828202905092915050565b7f43616e206e6f74206c6f776572206d6178207478000000000000000000000000600082015250565b6000614696601483613cb5565b91506146a182614660565b602082019050919050565b600060208201905081810360008301526146c581614689565b9050919050565b60006146d7826141f0565b9050919050565b6146e7816146cc565b82525050565b600060208201905061470260008301846146de565b92915050565b600061471382613c76565b915061471e83613c76565b92508282101561473157614730614459565b5b828203905092915050565b7f686f6c6420757220686f7273657320626967206775792e000000000000000000600082015250565b6000614772601783613cb5565b915061477d8261473c565b602082019050919050565b600060208201905081810360008301526147a181614765565b9050919050565b7f7478000000000000000000000000000000000000000000000000000000000000600082015250565b60006147de600283613cb5565b91506147e9826147a8565b602082019050919050565b6000602082019050818103600083015261480d816147d1565b9050919050565b7f77616c6c65740000000000000000000000000000000000000000000000000000600082015250565b600061484a600683613cb5565b915061485582614814565b602082019050919050565b600060208201905081810360008301526148798161483d565b9050919050565b6000604082019050614895600083018561409f565b6148a26020830184613c80565b9392505050565b6000819050919050565b60006148ce6148c96148c4846148a9565b6140f6565b613c76565b9050919050565b6148de816148b3565b82525050565b60006040820190506148f9600083018561409f565b61490660208301846148d5565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061494782613c76565b915061495283613c76565b9250826149625761496161490d565b5b828204905092915050565b600061497882613c76565b915061498383613c76565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156149b8576149b7614459565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006149f9601b83613cb5565b9150614a04826149c3565b602082019050919050565b60006020820190508181036000830152614a28816149ec565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614a9c81613d9c565b92915050565b600060208284031215614ab857614ab7613d65565b5b6000614ac684828501614a8d565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614b0481613d8a565b82525050565b6000614b168383614afb565b60208301905092915050565b6000602082019050919050565b6000614b3a82614acf565b614b448185614ada565b9350614b4f83614aeb565b8060005b83811015614b80578151614b678882614b0a565b9750614b7283614b22565b925050600181019050614b53565b5085935050505092915050565b600060a082019050614ba26000830188613c80565b614baf60208301876148d5565b8181036040830152614bc18186614b2f565b9050614bd0606083018561409f565b614bdd6080830184613c80565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c43602183613cb5565b9150614c4e82614be7565b604082019050919050565b60006020820190508181036000830152614c7281614c36565b9050919050565b6000608082019050614c8e60008301876148d5565b8181036020830152614ca08186614b2f565b9050614caf604083018561409f565b614cbc6060830184613c80565b9594505050505056fea2646970667358221220ca764464a3eff832660292dfb44751e1025ff9577e340a7c50b7a6cbeb2ca96264736f6c634300080d003360806040526ec097ce7bc90715b34b9f1000000000600b55610708600c556000600d5534801561002e57600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073851f679a5edfb16e7cf1ad157c6995b7e7f333f2600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506120f6806101286000396000f3fe60806040526004361061010d5760003560e01c80638c21cd5211610095578063dfbfbc6b11610064578063dfbfbc6b14610361578063e2d2e21914610378578063efca2eed146103a3578063ffb2c479146103ce578063ffd49c84146103f75761011c565b80638c21cd52146102b0578063997664d7146102ed578063ce7c2ac214610318578063d0e30db0146103575761011c565b80632d48e896116100dc5780632d48e896146101dd5780633a98ef39146102065780634fab0ae81461023157806351cff8d91461025c578063570bc31a146102855761011c565b806311ce023d1461012157806314b6ca961461014c57806326987b601461017557806328fd3198146101a05761011c565b3661011c5761011a610422565b005b600080fd5b34801561012d57600080fd5b5061013661080a565b604051610143919061184f565b60405180910390f35b34801561015857600080fd5b50610173600480360381019061016e91906118f9565b610810565b005b34801561018157600080fd5b5061018a610acf565b604051610197919061184f565b60405180910390f35b3480156101ac57600080fd5b506101c760048036038101906101c29190611939565b610ad5565b6040516101d4919061184f565b60405180910390f35b3480156101e957600080fd5b5061020460048036038101906101ff9190611966565b610bee565b005b34801561021257600080fd5b5061021b610c58565b604051610228919061184f565b60405180910390f35b34801561023d57600080fd5b50610246610c5e565b604051610253919061184f565b60405180910390f35b34801561026857600080fd5b50610283600480360381019061027e9190611939565b610c64565b005b34801561029157600080fd5b5061029a610cc8565b6040516102a791906119b5565b60405180910390f35b3480156102bc57600080fd5b506102d760048036038101906102d29190611939565b610cee565b6040516102e491906119eb565b60405180910390f35b3480156102f957600080fd5b50610302610d5b565b60405161030f919061184f565b60405180910390f35b34801561032457600080fd5b5061033f600480360381019061033a9190611939565b610d61565b60405161034e93929190611a06565b60405180910390f35b61035f610422565b005b34801561036d57600080fd5b50610376610d8b565b005b34801561038457600080fd5b5061038d610f3b565b60405161039a919061184f565b60405180910390f35b3480156103af57600080fd5b506103b8610f41565b6040516103c5919061184f565b60405180910390f35b3480156103da57600080fd5b506103f560048036038101906103f09190611a3d565b610f47565b005b34801561040357600080fd5b5061040c611082565b604051610419919061184f565b60405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161047f91906119b5565b602060405180830381865afa15801561049c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c09190611a7f565b90506000600267ffffffffffffffff8111156104df576104de611aac565b5b60405190808252806020026020018201604052801561050d5781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561057d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a19190611af0565b816000815181106105b5576105b4611b1d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061062657610625611b1d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b81526004016106c39493929190611c4f565b6000604051808303818588803b1580156106dc57600080fd5b505af11580156106f0573d6000803e3d6000fd5b505050505060006107a583600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161075691906119b5565b602060405180830381865afa158015610773573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107979190611a7f565b61108890919063ffffffff16565b90506107bc816008546110d290919063ffffffff16565b6008819055506107ff6107ee6007546107e084600b5461113090919063ffffffff16565b6111aa90919063ffffffff16565b600a546110d290919063ffffffff16565b600a81905550505050565b600b5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461086857600080fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156108bd576108bc826111f4565b5b60008111801561090f57506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156109225761091d82611487565b610984565b60008114801561097457506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b156109835761098282611536565b5b5b6109ed816109df600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015460075461108890919063ffffffff16565b6110d290919063ffffffff16565b60078190555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550610a85600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461173d565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600e5481565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015403610b295760009050610be9565b6000610b76600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461173d565b90506000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050808211610bd157600092505050610be9565b610be4818361108890919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c4657600080fd5b81600c8190555080600d819055505050565b60075481565b600d5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cbc57600080fd5b610cc5816111f4565b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600042600c54600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d3e9190611cca565b108015610d545750600d54610d5283610ad5565b115b9050919050565b60085481565b60066020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610de357600080fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e4091906119b5565b602060405180830381865afa158015610e5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e819190611a7f565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb739b024f0ce98e1b9d1b99709c478966144e7b1ab7836040518363ffffffff1660e01b8152600401610ef4929190611d20565b6020604051808303816000875af1158015610f13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f379190611d75565b5050565b600a5481565b60095481565b6000600380549050905060008103610f5f575061107f565b60008060005a90505b8482108015610f7657508383105b1561107a5783600e5410610f8d576000600e819055505b610fd66003600e5481548110610fa657610fa5611b1d565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610cee565b15611025576110246003600e5481548110610ff457610ff3611b1d565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166111f4565b5b61104a61103b5a8361108890919063ffffffff16565b836110d290919063ffffffff16565b91505a9050600e600081548092919061106290611da2565b9190505550828061107290611da2565b935050610f68565b505050505b50565b600c5481565b60006110ca83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061176f565b905092915050565b60008082846110e19190611cca565b905083811015611126576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111d90611e47565b60405180910390fd5b8091505092915050565b600080830361114257600090506111a4565b600082846111509190611e67565b905082848261115f9190611ef0565b1461119f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119690611f93565b60405180910390fd5b809150505b92915050565b60006111ec83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506117d3565b905092915050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154031561148457600061124a82610ad5565b905060008111156114825761126a816009546110d290919063ffffffff16565b600981905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016112cd929190611d20565b6020604051808303816000875af11580156112ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113109190611d75565b5042600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113aa81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546110d290919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018190555061143b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461173d565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600380549050600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6003600160038054905061154a9190611fb3565b8154811061155b5761155a611b1d565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815481106115d9576115d8611b1d565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460046000600360016003805490506116799190611fb3565b8154811061168a57611689611b1d565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600380548061170557611704611fe7565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b6000611768600b5461175a600a548561113090919063ffffffff16565b6111aa90919063ffffffff16565b9050919050565b60008383111582906117b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ae919061209e565b60405180910390fd5b50600083856117c69190611fb3565b9050809150509392505050565b6000808311829061181a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611811919061209e565b60405180910390fd5b50600083856118299190611ef0565b9050809150509392505050565b6000819050919050565b61184981611836565b82525050565b60006020820190506118646000830184611840565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061189a8261186f565b9050919050565b6118aa8161188f565b81146118b557600080fd5b50565b6000813590506118c7816118a1565b92915050565b6118d681611836565b81146118e157600080fd5b50565b6000813590506118f3816118cd565b92915050565b600080604083850312156119105761190f61186a565b5b600061191e858286016118b8565b925050602061192f858286016118e4565b9150509250929050565b60006020828403121561194f5761194e61186a565b5b600061195d848285016118b8565b91505092915050565b6000806040838503121561197d5761197c61186a565b5b600061198b858286016118e4565b925050602061199c858286016118e4565b9150509250929050565b6119af8161188f565b82525050565b60006020820190506119ca60008301846119a6565b92915050565b60008115159050919050565b6119e5816119d0565b82525050565b6000602082019050611a0060008301846119dc565b92915050565b6000606082019050611a1b6000830186611840565b611a286020830185611840565b611a356040830184611840565b949350505050565b600060208284031215611a5357611a5261186a565b5b6000611a61848285016118e4565b91505092915050565b600081519050611a79816118cd565b92915050565b600060208284031215611a9557611a9461186a565b5b6000611aa384828501611a6a565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050611aea816118a1565b92915050565b600060208284031215611b0657611b0561186a565b5b6000611b1484828501611adb565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000819050919050565b6000611b7b611b76611b7184611b4c565b611b56565b611836565b9050919050565b611b8b81611b60565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611bc68161188f565b82525050565b6000611bd88383611bbd565b60208301905092915050565b6000602082019050919050565b6000611bfc82611b91565b611c068185611b9c565b9350611c1183611bad565b8060005b83811015611c42578151611c298882611bcc565b9750611c3483611be4565b925050600181019050611c15565b5085935050505092915050565b6000608082019050611c646000830187611b82565b8181036020830152611c768186611bf1565b9050611c8560408301856119a6565b611c926060830184611840565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611cd582611836565b9150611ce083611836565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611d1557611d14611c9b565b5b828201905092915050565b6000604082019050611d3560008301856119a6565b611d426020830184611840565b9392505050565b611d52816119d0565b8114611d5d57600080fd5b50565b600081519050611d6f81611d49565b92915050565b600060208284031215611d8b57611d8a61186a565b5b6000611d9984828501611d60565b91505092915050565b6000611dad82611836565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611ddf57611dde611c9b565b5b600182019050919050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000611e31601b83611dea565b9150611e3c82611dfb565b602082019050919050565b60006020820190508181036000830152611e6081611e24565b9050919050565b6000611e7282611836565b9150611e7d83611836565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611eb657611eb5611c9b565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611efb82611836565b9150611f0683611836565b925082611f1657611f15611ec1565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000611f7d602183611dea565b9150611f8882611f21565b604082019050919050565b60006020820190508181036000830152611fac81611f70565b9050919050565b6000611fbe82611836565b9150611fc983611836565b925082821015611fdc57611fdb611c9b565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600081519050919050565b60005b8381101561203f578082015181840152602081019050612024565b8381111561204e576000848401525b50505050565b6000601f19601f8301169050919050565b600061207082612016565b61207a8185611dea565b935061208a818560208601612021565b61209381612054565b840191505092915050565b600060208201905081810360008301526120b88184612065565b90509291505056fea264697066735822122058047022730a03fd153998eba7566e2165a658c3939c3d639e9340a25c1cca9264736f6c634300080d00330000000000000000000000000c6ac3fcea667fd6c62483ce1dbbce6f6ce0fb1f
Deployed Bytecode
0x6080604052600436106103a65760003560e01c80637437681e116101e7578063a8602fea1161010d578063dd62ed3e116100a0578063f887ea401161006f578063f887ea4014610d75578063f8b45b0514610da0578063fabe628314610dcb578063ffb54a9914610df4576103ad565b8063dd62ed3e14610ccf578063dfbfbc6b14610d0c578063f2fde38b14610d23578063f708a64f14610d4c576103ad565b8063c45a0155116100dc578063c45a015514610c39578063caa5581b14610c64578063ce4ef10e14610c8f578063d920334e14610ca6576103ad565b8063a8602fea14610b7f578063a8aa1b3114610ba8578063a9059cbb14610bd3578063bb542ef014610c10576103ad565b806389291a8f116101855780638ea5220f116101545780638ea5220f14610ad557806395d89b4114610b0057806397f13bc514610b2b578063a3a2e89e14610b56576103ad565b806389291a8f14610a3f578063893d20e814610a565780638a8c523c14610a815780638b42507f14610a98576103ad565b806377359aa7116101c157806377359aa71461098557806379900169146109c25780637db1342c146109ed5780638193403114610a16576103ad565b80637437681e1461090457806375df13051461092f57806375f0a8741461095a576103ad565b80633ccfd60b116102cc5780634a74bb021161026a57806366eb37851161023957806366eb37851461085c5780636a0f0ebe1461087357806370a082311461089e57806370c65f38146108db576103ad565b80634a74bb02146107a0578063570bc31a146107cb578063571ac8b0146107f65780635d098b3814610833576103ad565b80634355855a116102a65780634355855a146106e2578063454343771461071f5780634626402b1461074a5780634706240214610775576103ad565b80633ccfd60b146106655780633dab52691461067c5780633f4218e0146106a5576103ad565b806323b872dd116103445780632d48e896116103135780632d48e896146105ab5780632f54bf6e146105d457806330ca34ee14610611578063313ce5671461063a576103ad565b806323b872dd146104ed578063246ea64e1461052a5780632b112e49146105555780632b14ca5614610580576103ad565b80630b730923116103805780630b7309231461044557806318160ddd1461046e5780631d4eaead146104995780631f53ac02146104c4576103ad565b80630445b667146103b257806306fdde03146103dd578063095ea7b314610408576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610e1f565b6040516103d49190613c8f565b60405180910390f35b3480156103e957600080fd5b506103f2610e25565b6040516103ff9190613d43565b60405180910390f35b34801561041457600080fd5b5061042f600480360381019061042a9190613df4565b610e62565b60405161043c9190613e4f565b60405180910390f35b34801561045157600080fd5b5061046c60048036038101906104679190613e6a565b610f54565b005b34801561047a57600080fd5b50610483610fbe565b6040516104909190613c8f565b60405180910390f35b3480156104a557600080fd5b506104ae610fc8565b6040516104bb9190613c8f565b60405180910390f35b3480156104d057600080fd5b506104eb60048036038101906104e69190613f0f565b610fce565b005b3480156104f957600080fd5b50610514600480360381019061050f9190613f3c565b61105a565b6040516105219190613e4f565b60405180910390f35b34801561053657600080fd5b5061053f61125a565b60405161054c9190613c8f565b60405180910390f35b34801561056157600080fd5b5061056a611260565b6040516105779190613c8f565b60405180910390f35b34801561058c57600080fd5b506105956112e2565b6040516105a29190613c8f565b60405180910390f35b3480156105b757600080fd5b506105d260048036038101906105cd9190613f8f565b6112e8565b005b3480156105e057600080fd5b506105fb60048036038101906105f69190613fcf565b6113c3565b6040516106089190613e4f565b60405180910390f35b34801561061d57600080fd5b5061063860048036038101906106339190613f8f565b61141c565b005b34801561064657600080fd5b5061064f611502565b60405161065c9190614018565b60405180910390f35b34801561067157600080fd5b5061067a61150b565b005b34801561068857600080fd5b506106a3600480360381019061069e919061405f565b61159a565b005b3480156106b157600080fd5b506106cc60048036038101906106c79190613fcf565b611607565b6040516106d99190613e4f565b60405180910390f35b3480156106ee57600080fd5b5061070960048036038101906107049190613fcf565b611627565b6040516107169190613e4f565b60405180910390f35b34801561072b57600080fd5b50610734611647565b6040516107419190613c8f565b60405180910390f35b34801561075657600080fd5b5061075f61164d565b60405161076c91906140ae565b60405180910390f35b34801561078157600080fd5b5061078a611673565b6040516107979190613c8f565b60405180910390f35b3480156107ac57600080fd5b506107b5611679565b6040516107c29190613e4f565b60405180910390f35b3480156107d757600080fd5b506107e061168c565b6040516107ed91906140ae565b60405180910390f35b34801561080257600080fd5b5061081d60048036038101906108189190613fcf565b6116b2565b60405161082a9190613e4f565b60405180910390f35b34801561083f57600080fd5b5061085a60048036038101906108559190613f0f565b6116e5565b005b34801561086857600080fd5b50610871611771565b005b34801561087f57600080fd5b506108886117c3565b6040516108959190613c8f565b60405180910390f35b3480156108aa57600080fd5b506108c560048036038101906108c09190613fcf565b6117c9565b6040516108d29190613c8f565b60405180910390f35b3480156108e757600080fd5b5061090260048036038101906108fd91906140c9565b611812565b005b34801561091057600080fd5b50610919611864565b6040516109269190613c8f565b60405180910390f35b34801561093b57600080fd5b5061094461186a565b6040516109519190613c8f565b60405180910390f35b34801561096657600080fd5b5061096f611870565b60405161097c91906140ae565b60405180910390f35b34801561099157600080fd5b506109ac60048036038101906109a79190613fcf565b611896565b6040516109b99190613c8f565b60405180910390f35b3480156109ce57600080fd5b506109d761193b565b6040516109e49190613c8f565b60405180910390f35b3480156109f957600080fd5b50610a146004803603810190610a0f91906140c9565b611941565b005b348015610a2257600080fd5b50610a3d6004803603810190610a3891906140c9565b6119d8565b005b348015610a4b57600080fd5b50610a54611ab0565b005b348015610a6257600080fd5b50610a6b611b73565b604051610a7891906140ae565b60405180910390f35b348015610a8d57600080fd5b50610a96611b9c565b005b348015610aa457600080fd5b50610abf6004803603810190610aba9190613fcf565b611c01565b604051610acc9190613e4f565b60405180910390f35b348015610ae157600080fd5b50610aea611c21565b604051610af791906140ae565b60405180910390f35b348015610b0c57600080fd5b50610b15611c47565b604051610b229190613d43565b60405180910390f35b348015610b3757600080fd5b50610b40611c84565b604051610b4d9190614155565b60405180910390f35b348015610b6257600080fd5b50610b7d6004803603810190610b789190614170565b611caa565b005b348015610b8b57600080fd5b50610ba66004803603810190610ba19190613f0f565b611d4d565b005b348015610bb457600080fd5b50610bbd611dd9565b604051610bca91906140ae565b60405180910390f35b348015610bdf57600080fd5b50610bfa6004803603810190610bf59190613df4565b611dff565b604051610c079190613e4f565b60405180910390f35b348015610c1c57600080fd5b50610c376004803603810190610c329190613f0f565b611e14565b005b348015610c4557600080fd5b50610c4e611ea0565b604051610c5b91906140ae565b60405180910390f35b348015610c7057600080fd5b50610c79611ec6565b604051610c869190613c8f565b60405180910390f35b348015610c9b57600080fd5b50610ca4611ecc565b005b348015610cb257600080fd5b50610ccd6004803603810190610cc891906140c9565b611faa565b005b348015610cdb57600080fd5b50610cf66004803603810190610cf191906141b0565b612041565b604051610d039190613c8f565b60405180910390f35b348015610d1857600080fd5b50610d216120c8565b005b348015610d2f57600080fd5b50610d4a6004803603810190610d459190613f0f565b612194565b005b348015610d5857600080fd5b50610d736004803603810190610d6e9190614170565b612256565b005b348015610d8157600080fd5b50610d8a6122ac565b604051610d979190614223565b60405180910390f35b348015610dac57600080fd5b50610db56122d2565b604051610dc29190613c8f565b60405180910390f35b348015610dd757600080fd5b50610df26004803603810190610ded9190614170565b6122d8565b005b348015610e0057600080fd5b50610e0961237b565b604051610e169190613e4f565b60405180910390f35b601f5481565b60606040518060400160405280600b81526020017f7472756d70776966686174000000000000000000000000000000000000000000815250905090565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610f429190613c8f565b60405180910390a36001905092915050565b610f5d336113c3565b610f9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f939061428a565b60405180910390fd5b80600e81905550826011819055508360108190555081600f8190555050505050565b6000600254905090565b60135481565b610fd7336113c3565b611016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100d9061428a565b60405180910390fd5b80601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611246576111c5826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123d89092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61125184848461243c565b90509392505050565b600f5481565b60006112dd611290600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166117c9565b6112cf6112be600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166117c9565b600254612c8790919063ffffffff16565b612c8790919063ffffffff16565b905090565b600d5481565b6112f1336113c3565b611330576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113279061428a565b60405180910390fd5b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b815260040161138d9291906142aa565b600060405180830381600087803b1580156113a757600080fd5b505af11580156113bb573d6000803e3d6000fd5b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b611425336113c3565b611464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145b9061428a565b60405180910390fd5b81600c8190555080600d819055506014600c5411156114b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114af9061431f565b60405180910390fd5b6014600d5411156114fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f59061431f565b60405180910390fd5b5050565b60006012905090565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166351cff8d9336040518263ffffffff1660e01b815260040161156691906140ae565b600060405180830381600087803b15801561158057600080fd5b505af1158015611594573d6000803e3d6000fd5b50505050565b6115a3336113c3565b6115e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d99061428a565b60405180910390fd5b81601a60156101000a81548160ff02191690831515021790555080601f819055505050565b60096020528060005260406000206000915054906101000a900460ff1681565b600b6020528060005260406000206000915054906101000a900460ff1681565b60125481565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b601a60159054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006116de827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610e62565b9050919050565b6116ee336113c3565b61172d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117249061428a565b60405180910390fd5b80601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61177a336113c3565b6117b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b09061428a565b60405180910390fd5b6117c1612cd1565b565b601c5481565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61181b336113c3565b61185a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118519061428a565b60405180910390fd5b80601c8190555050565b601d5481565b60115481565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328fd3198836040518263ffffffff1660e01b81526004016118f391906140ae565b602060405180830381865afa158015611910573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119349190614354565b9050919050565b60105481565b61194a336113c3565b611989576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119809061428a565b60405180910390fd5b601e548110156119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c5906143cd565b60405180910390fd5b80601e8190555050565b6119e1336113c3565b611a20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a179061428a565b60405180910390fd5b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479826040518263ffffffff1660e01b8152600401611a7b9190613c8f565b600060405180830381600087803b158015611a9557600080fd5b505af1158015611aa9573d6000803e3d6000fd5b5050505050565b611ab9336113c3565b611af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aef9061428a565b60405180910390fd5b60004790506000811115611b7057601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611b6e573d6000803e3d6000fd5b505b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611ba5336113c3565b611be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdb9061428a565b60405180910390fd5b6001601a60166101000a81548160ff021916908315150217905550565b600a6020528060005260406000206000915054906101000a900460ff1681565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600481526020017f5457494600000000000000000000000000000000000000000000000000000000815250905090565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611cb3336113c3565b611cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce99061428a565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611d56336113c3565b611d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8c9061428a565b60405180910390fd5b80601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611e0c33848461243c565b905092915050565b611e1d336113c3565b611e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e539061428a565b60405180910390fd5b80601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b611ed5336113c3565b611f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0b9061428a565b60405180910390fd5b601a60169054906101000a900460ff1615611f64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5b90614439565b60405180910390fd5b6012600a611f7291906145bb565b621dc130611f809190614606565b601d819055506012600a611f9491906145bb565b62401640611fa29190614606565b601e81905550565b611fb3336113c3565b611ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe99061428a565b60405180910390fd5b601d54811015612037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202e906146ac565b60405180910390fd5b80601d8190555050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6120d1336113c3565b612110576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121079061428a565b60405180910390fd5b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dfbfbc6b6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561217a57600080fd5b505af115801561218e573d6000803e3d6000fd5b50505050565b61219d336113c3565b6121dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d39061428a565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161224b91906146ed565b60405180910390a150565b61225f336113c3565b61229e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122959061428a565b60405180910390fd5b6122a88282612f36565b5050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601e5481565b6122e1336113c3565b612320576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123179061428a565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60169054906101000a900460ff1681565b60006123d083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061318e565b905092915050565b6000838311158290612420576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124179190613d43565b60405180910390fd5b506000838561242f9190614708565b9050809150509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156124e7575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561253c57601a60169054906101000a900460ff1661253b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253290614788565b60405180910390fd5b5b601a60149054906101000a900460ff16156125635761255c8484846131f1565b9050612c80565b601d54821115806125bd5750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6125fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f3906147f4565b60405180910390fd5b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166126e457601e546126a283600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133c490919063ffffffff16565b11156126e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126da90614860565b60405180910390fd5b5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561274f5750601a60149054906101000a900460ff16155b80156127675750601a60159054906101000a900460ff165b80156127b45750601f54600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b156127c2576127c1612cd1565b5b61284b826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123d89092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129345750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61293e578261294a565b612949858585613422565b5b905061299e81600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133c490919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612afb57601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612ace929190614880565b600060405180830381600087803b158015612ae857600080fd5b505af1925050508015612af9575060015b505b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c1557601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612be8929190614880565b600060405180830381600087803b158015612c0257600080fd5b505af1925050508015612c13575060015b505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c729190613c8f565b60405180910390a360019150505b9392505050565b6000612cc983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506123d8565b905092915050565b6001601a60146101000a81548160ff021916908315150217905550612d34600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613782565b60004790506000612d636064612d55600f54856139a390919063ffffffff16565b61238e90919063ffffffff16565b9050612d6e81613a1d565b6000612d986064612d8a601154866139a390919063ffffffff16565b61238e90919063ffffffff16565b9050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612e02573d6000803e3d6000fd5b506000612e2d6064612e1f600e54876139a390919063ffffffff16565b61238e90919063ffffffff16565b9050601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612e9957600080fd5b505af193505050508015612eab575060015b50601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612f14573d6000803e3d6000fd5b50505050506000601a60146101000a81548160ff021916908315150217905550565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612fc05750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612fc957600080fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080156130bb57601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b81526004016130849291906148e4565b600060405180830381600087803b15801561309e57600080fd5b505af11580156130b2573d6000803e3d6000fd5b5050505061318a565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401613157929190614880565b600060405180830381600087803b15801561317157600080fd5b505af1158015613185573d6000803e3d6000fd5b505050505b5050565b600080831182906131d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131cc9190613d43565b60405180910390fd5b50600083856131e4919061493c565b9050809150509392505050565b600061327c826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123d89092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061331182600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133c490919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133b19190613c8f565b60405180910390a3600190509392505050565b60008082846133d3919061496d565b905083811015613418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161340f90614a0f565b60405180910390fd5b8091505092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff16601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461348257600c54613486565b600d545b905060006134b060646134a284876139a390919063ffffffff16565b61238e90919063ffffffff16565b905060006134dc60646134ce601354886139a390919063ffffffff16565b61238e90919063ffffffff16565b905061353082600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133c490919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506135e78160036000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133c490919063ffffffff16565b60036000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806002600082825461365e9190614708565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516136c29190613c8f565b60405180910390a3600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516137499190613c8f565b60405180910390a3613776816137688488612c8790919063ffffffff16565b612c8790919063ffffffff16565b93505050509392505050565b6000600267ffffffffffffffff81111561379f5761379e614a2f565b5b6040519080825280602002602001820160405280156137cd5781602001602082028036833780820191505090505b50905030816000815181106137e5576137e4614a5e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561388c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138b09190614aa2565b816001815181106138c4576138c3614a5e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506139083083610e62565b50601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161396d959493929190614b8d565b600060405180830381600087803b15801561398757600080fd5b505af115801561399b573d6000803e3d6000fd5b505050505050565b60008083036139b55760009050613a17565b600082846139c39190614606565b90508284826139d2919061493c565b14613a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a0990614c59565b60405180910390fd5b809150505b92915050565b6000600267ffffffffffffffff811115613a3a57613a39614a2f565b5b604051908082528060200260200182016040528015613a685781602001602082028036833780820191505090505b509050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ad8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613afc9190614aa2565b81600081518110613b1057613b0f614a5e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110613b8157613b80614a5e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de9583600084600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401613c409493929190614c79565b6000604051808303818588803b158015613c5957600080fd5b505af1158015613c6d573d6000803e3d6000fd5b50505050505050565b6000819050919050565b613c8981613c76565b82525050565b6000602082019050613ca46000830184613c80565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613ce4578082015181840152602081019050613cc9565b83811115613cf3576000848401525b50505050565b6000601f19601f8301169050919050565b6000613d1582613caa565b613d1f8185613cb5565b9350613d2f818560208601613cc6565b613d3881613cf9565b840191505092915050565b60006020820190508181036000830152613d5d8184613d0a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613d9582613d6a565b9050919050565b613da581613d8a565b8114613db057600080fd5b50565b600081359050613dc281613d9c565b92915050565b613dd181613c76565b8114613ddc57600080fd5b50565b600081359050613dee81613dc8565b92915050565b60008060408385031215613e0b57613e0a613d65565b5b6000613e1985828601613db3565b9250506020613e2a85828601613ddf565b9150509250929050565b60008115159050919050565b613e4981613e34565b82525050565b6000602082019050613e646000830184613e40565b92915050565b60008060008060808587031215613e8457613e83613d65565b5b6000613e9287828801613ddf565b9450506020613ea387828801613ddf565b9350506040613eb487828801613ddf565b9250506060613ec587828801613ddf565b91505092959194509250565b6000613edc82613d6a565b9050919050565b613eec81613ed1565b8114613ef757600080fd5b50565b600081359050613f0981613ee3565b92915050565b600060208284031215613f2557613f24613d65565b5b6000613f3384828501613efa565b91505092915050565b600080600060608486031215613f5557613f54613d65565b5b6000613f6386828701613db3565b9350506020613f7486828701613db3565b9250506040613f8586828701613ddf565b9150509250925092565b60008060408385031215613fa657613fa5613d65565b5b6000613fb485828601613ddf565b9250506020613fc585828601613ddf565b9150509250929050565b600060208284031215613fe557613fe4613d65565b5b6000613ff384828501613db3565b91505092915050565b600060ff82169050919050565b61401281613ffc565b82525050565b600060208201905061402d6000830184614009565b92915050565b61403c81613e34565b811461404757600080fd5b50565b60008135905061405981614033565b92915050565b6000806040838503121561407657614075613d65565b5b60006140848582860161404a565b925050602061409585828601613ddf565b9150509250929050565b6140a881613d8a565b82525050565b60006020820190506140c3600083018461409f565b92915050565b6000602082840312156140df576140de613d65565b5b60006140ed84828501613ddf565b91505092915050565b6000819050919050565b600061411b61411661411184613d6a565b6140f6565b613d6a565b9050919050565b600061412d82614100565b9050919050565b600061413f82614122565b9050919050565b61414f81614134565b82525050565b600060208201905061416a6000830184614146565b92915050565b6000806040838503121561418757614186613d65565b5b600061419585828601613db3565b92505060206141a68582860161404a565b9150509250929050565b600080604083850312156141c7576141c6613d65565b5b60006141d585828601613db3565b92505060206141e685828601613db3565b9150509250929050565b60006141fb82614100565b9050919050565b600061420d826141f0565b9050919050565b61421d81614202565b82525050565b60006020820190506142386000830184614214565b92915050565b7f214f776e65720000000000000000000000000000000000000000000000000000600082015250565b6000614274600683613cb5565b915061427f8261423e565b602082019050919050565b600060208201905081810360008301526142a381614267565b9050919050565b60006040820190506142bf6000830185613c80565b6142cc6020830184613c80565b9392505050565b7f746f6f2068696768000000000000000000000000000000000000000000000000600082015250565b6000614309600883613cb5565b9150614314826142d3565b602082019050919050565b60006020820190508181036000830152614338816142fc565b9050919050565b60008151905061434e81613dc8565b92915050565b60006020828403121561436a57614369613d65565b5b60006143788482850161433f565b91505092915050565b7f43616e206e6f74206c6f776572206d61782077616c6c65740000000000000000600082015250565b60006143b7601883613cb5565b91506143c282614381565b602082019050919050565b600060208201905081810360008301526143e6816143aa565b9050919050565b7f4265686176652e00000000000000000000000000000000000000000000000000600082015250565b6000614423600783613cb5565b915061442e826143ed565b602082019050919050565b6000602082019050818103600083015261445281614416565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156144df578086048111156144bb576144ba614459565b5b60018516156144ca5780820291505b80810290506144d885614488565b945061449f565b94509492505050565b6000826144f857600190506145b4565b8161450657600090506145b4565b816001811461451c576002811461452657614555565b60019150506145b4565b60ff84111561453857614537614459565b5b8360020a91508482111561454f5761454e614459565b5b506145b4565b5060208310610133831016604e8410600b841016171561458a5782820a90508381111561458557614584614459565b5b6145b4565b6145978484846001614495565b925090508184048111156145ae576145ad614459565b5b81810290505b9392505050565b60006145c682613c76565b91506145d183613ffc565b92506145fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846144e8565b905092915050565b600061461182613c76565b915061461c83613c76565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561465557614654614459565b5b828202905092915050565b7f43616e206e6f74206c6f776572206d6178207478000000000000000000000000600082015250565b6000614696601483613cb5565b91506146a182614660565b602082019050919050565b600060208201905081810360008301526146c581614689565b9050919050565b60006146d7826141f0565b9050919050565b6146e7816146cc565b82525050565b600060208201905061470260008301846146de565b92915050565b600061471382613c76565b915061471e83613c76565b92508282101561473157614730614459565b5b828203905092915050565b7f686f6c6420757220686f7273657320626967206775792e000000000000000000600082015250565b6000614772601783613cb5565b915061477d8261473c565b602082019050919050565b600060208201905081810360008301526147a181614765565b9050919050565b7f7478000000000000000000000000000000000000000000000000000000000000600082015250565b60006147de600283613cb5565b91506147e9826147a8565b602082019050919050565b6000602082019050818103600083015261480d816147d1565b9050919050565b7f77616c6c65740000000000000000000000000000000000000000000000000000600082015250565b600061484a600683613cb5565b915061485582614814565b602082019050919050565b600060208201905081810360008301526148798161483d565b9050919050565b6000604082019050614895600083018561409f565b6148a26020830184613c80565b9392505050565b6000819050919050565b60006148ce6148c96148c4846148a9565b6140f6565b613c76565b9050919050565b6148de816148b3565b82525050565b60006040820190506148f9600083018561409f565b61490660208301846148d5565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061494782613c76565b915061495283613c76565b9250826149625761496161490d565b5b828204905092915050565b600061497882613c76565b915061498383613c76565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156149b8576149b7614459565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006149f9601b83613cb5565b9150614a04826149c3565b602082019050919050565b60006020820190508181036000830152614a28816149ec565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614a9c81613d9c565b92915050565b600060208284031215614ab857614ab7613d65565b5b6000614ac684828501614a8d565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614b0481613d8a565b82525050565b6000614b168383614afb565b60208301905092915050565b6000602082019050919050565b6000614b3a82614acf565b614b448185614ada565b9350614b4f83614aeb565b8060005b83811015614b80578151614b678882614b0a565b9750614b7283614b22565b925050600181019050614b53565b5085935050505092915050565b600060a082019050614ba26000830188613c80565b614baf60208301876148d5565b8181036040830152614bc18186614b2f565b9050614bd0606083018561409f565b614bdd6080830184613c80565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c43602183613cb5565b9150614c4e82614be7565b604082019050919050565b60006020820190508181036000830152614c7281614c36565b9050919050565b6000608082019050614c8e60008301876148d5565b8181036020830152614ca08186614b2f565b9050614caf604083018561409f565b614cbc6060830184613c80565b9594505050505056fea2646970667358221220ca764464a3eff832660292dfb44751e1025ff9577e340a7c50b7a6cbeb2ca96264736f6c634300080d0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000c6ac3fcea667fd6c62483ce1dbbce6f6ce0fb1f
-----Decoded View---------------
Arg [0] : _owner (address): 0x0C6AC3FCEA667fD6C62483cE1DBbce6f6ce0fB1f
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000c6ac3fcea667fd6c62483ce1dbbce6f6ce0fb1f
Deployed Bytecode Sourcemap
15870:13115:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17740:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22556:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23081:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19423:347;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22238:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17017:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20413:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23659:420;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16866:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22088:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16790:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21210:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6981:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19150:265;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22348:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28776:87;;;;;;;;;;;;;:::i;:::-;;20979:223;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16596:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16700:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16976:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17222:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16757:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17325:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15949:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23337:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20544:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28132:74;;;;;;;;;;;;;:::i;:::-;;17464:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22758:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21966:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17634:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16936:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17258:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28575:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16899:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19942:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28447:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28214:225;;;;;;;;;;;;;:::i;:::-;;22658:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19061:81;;;;;;;;;;;;;:::i;:::-;;16646:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17191:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22450:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17412:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20122:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20699:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17101:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23467:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20850:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17127:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16826:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18826:187;;;;;;;;;;;;;:::i;:::-;;19778:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22885:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28871:111;;;;;;;;;;;;;:::i;:::-;;7092:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21803:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17070:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17685:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20252:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17372:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17740:53;;;;:::o;22556:94::-;22604:13;22637:5;;;;;;;;;;;;;;;;;22630:12;;22556:94;:::o;23081:248::-;23183:4;23240:6;23205:11;:23;23217:10;23205:23;;;;;;;;;;;;;;;:32;23229:7;23205:32;;;;;;;;;;;;;;;:41;;;;23283:7;23262:37;;23271:10;23262:37;;;23292:6;23262:37;;;;;;:::i;:::-;;;;;;;;23317:4;23310:11;;23081:248;;;;:::o;19423:347::-;6871:19;6879:10;6871:7;:19::i;:::-;6863:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;19637:17:::1;19621:13;:33;;;;19679:15;19665:11;:29;;;;19718:14;19705:10;:27;;;;19752:10;19743:6;:19;;;;19423:347:::0;;;;:::o;22238:102::-;22293:7;22320:12;;22313:19;;22238:102;:::o;17017:26::-;;;;:::o;20413:123::-;6871:19;6879:10;6871:7;:19::i;:::-;6863:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20515:12:::1;20495:9;;:33;;;;;;;;;;;;;;;;;;20413:123:::0;:::o;23659:420::-;23793:4;23849:17;23814:11;:19;23826:6;23814:19;;;;;;;;;;;;;;;:31;23834:10;23814:31;;;;;;;;;;;;;;;;:52;23810:206;;23917:87;23971:6;23917:87;;;;;;;;;;;;;;;;;:11;:19;23929:6;23917:19;;;;;;;;;;;;;;;:31;23937:10;23917:31;;;;;;;;;;;;;;;;:53;;:87;;;;;:::i;:::-;23883:11;:19;23895:6;23883:19;;;;;;;;;;;;;;;:31;23903:10;23883:31;;;;;;;;;;;;;;;:121;;;;23810:206;24035:36;24045:6;24053:9;24064:6;24035:9;:36::i;:::-;24028:43;;23659:420;;;;;:::o;16866:26::-;;;;:::o;22088:142::-;22141:7;22168:54;22206:15;22216:4;;;;;;;;;;;22206:9;:15::i;:::-;22168:33;22185:15;22195:4;;;;;;;;;;;22185:9;:15::i;:::-;22168:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;22161:61;;22088:142;:::o;16790:27::-;;;;:::o;21210:222::-;6871:19;6879:10;6871:7;:19::i;:::-;6863:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;21348:18:::1;;;;;;;;;;;:42;;;21391:12;21405:18;21348:76;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21210:222:::0;;:::o;6981:103::-;7036:4;7071:5;;;;;;;;;;;7060:16;;:7;:16;;;7053:23;;6981:103;;;:::o;19150:265::-;6871:19;6879:10;6871:7;:19::i;:::-;6863:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;19276:9:::1;19267:6;:18;;;;19306:10;19296:7;:20;;;;19347:2;19337:6;;:12;;19329:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;19392:2;19381:7;;:13;;19373:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;19150:265:::0;;:::o;22348:94::-;22400:5;16176:2;22418:16;;22348:94;:::o;28776:87::-;28816:18;;;;;;;;;;;:27;;;28844:10;28816:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28776:87::o;20979:223::-;6871:19;6879:10;6871:7;:19::i;:::-;6863:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;21137:14:::1;21113:21;;:38;;;;;;;;;;;;;;;;;;21178:16;21162:13;:32;;;;20979:223:::0;;:::o;16596:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;16700:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;16976:34::-;;;;:::o;17222:29::-;;;;;;;;;;;;;:::o;16757:26::-;;;;:::o;17325:40::-;;;;;;;;;;;;;:::o;15949:70::-;;;;;;;;;;;;;:::o;23337:122::-;23392:4;23416:35;23424:7;23433:17;23416:7;:35::i;:::-;23409:42;;23337:122;;;:::o;20544:147::-;6871:19;6879:10;6871:7;:19::i;:::-;6863:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20664:18:::1;20638:15;;:45;;;;;;;;;;;;;;;;;;20544:147:::0;:::o;28132:74::-;6871:19;6879:10;6871:7;:19::i;:::-;6863:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;28188:10:::1;:8;:10::i;:::-;28132:74::o:0;17464:41::-;;;;:::o;22758:119::-;22824:7;22851:9;:18;22861:7;22851:18;;;;;;;;;;;;;;;;22844:25;;22758:119;;;:::o;21966:114::-;6871:19;6879:10;6871:7;:19::i;:::-;6863:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;22066:6:::1;22041:22;:31;;;;21966:114:::0;:::o;17634:44::-;;;;:::o;16936:31::-;;;;:::o;17258:30::-;;;;;;;;;;;;;:::o;28575:193::-;28679:7;28711:18;;;;;;;;;;;:36;;;28748:11;28711:49;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28704:56;;28575:193;;;:::o;16899:30::-;;;;:::o;19942:172::-;6871:19;6879:10;6871:7;:19::i;:::-;6863:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20037:9:::1;;20025:8;:21;;20017:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;20098:8;20086:9;:20;;;;19942:172:::0;:::o;28447:120::-;6871:19;6879:10;6871:7;:19::i;:::-;6863:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;28522:18:::1;;;;;;;;;;;:26;;;28549:9;28522:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28447:120:::0;:::o;28214:225::-;6871:19;6879:10;6871:7;:19::i;:::-;6863:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;28269:26:::1;28298:21;28269:50;;28355:1;28334:18;:22;28330:102;;;28381:9;;;;;;;;;;;28373:27;;:47;28401:18;28373:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;28330:102;28258:181;28214:225::o:0;22658:92::-;22710:7;22737:5;;;;;;;;;;;22730:12;;22658:92;:::o;19061:81::-;6871:19;6879:10;6871:7;:19::i;:::-;6863:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;19130:4:::1;19116:11;;:18;;;;;;;;;;;;;;;;;;19061:81::o:0;16646:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;17191:24::-;;;;;;;;;;;;;:::o;22450:98::-;22500:13;22533:7;;;;;;;;;;;;;;;;;22526:14;;22450:98;:::o;17412:45::-;;;;;;;;;;;;;:::o;20122:122::-;6871:19;6879:10;6871:7;:19::i;:::-;6863:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20230:6:::1;20208:11;:19;20220:6;20208:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;20122:122:::0;;:::o;20699:143::-;6871:19;6879:10;6871:7;:19::i;:::-;6863:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20816:17:::1;20791:14;;:43;;;;;;;;;;;;;;;;;;20699:143:::0;:::o;17101:19::-;;;;;;;;;;;;;:::o;23467:184::-;23574:4;23603:40;23613:10;23625:9;23636:6;23603:9;:40::i;:::-;23596:47;;23467:184;;;;:::o;20850:121::-;6871:19;6879:10;6871:7;:19::i;:::-;6863:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20949:14:::1;20936:10;;:27;;;;;;;;;;;;;;;;;;20850:121:::0;:::o;17127:22::-;;;;;;;;;;;;;:::o;16826:33::-;;;;:::o;18826:187::-;6871:19;6879:10;6871:7;:19::i;:::-;6863:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18884:11:::1;;;;;;;;;;;18883:12;18875:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;16176:2;18941;:13;;;;:::i;:::-;18928:9;:27;;;;:::i;:::-;18920:5;:35;;;;16176:2;18991;:13;;;;:::i;:::-;18978:9;:27;;;;:::i;:::-;18966:9;:39;;;;18826:187::o:0;19778:156::-;6871:19;6879:10;6871:7;:19::i;:::-;6863:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;19869:5:::1;;19857:8;:17;;19849:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;19918:8;19910:5;:16;;;;19778:156:::0;:::o;22885:188::-;23005:7;23037:11;:19;23049:6;23037:19;;;;;;;;;;;;;;;:28;23057:7;23037:28;;;;;;;;;;;;;;;;23030:35;;22885:188;;;;:::o;28871:111::-;6871:19;6879:10;6871:7;:19::i;:::-;6863:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;28933:18:::1;;;;;;;;;;;:39;;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28871:111::o:0;7092:136::-;6871:19;6879:10;6871:7;:19::i;:::-;6863:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;7176:3:::1;7168:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;7195:25;7216:3;7195:25;;;;;;:::i;:::-;;;;;;;;7092:136:::0;:::o;21803:155::-;6871:19;6879:10;6871:7;:19::i;:::-;6863:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;21914:36:::1;21935:6;21943;21914:20;:36::i;:::-;21803:155:::0;;:::o;17070:24::-;;;;;;;;;;;;;:::o;17685:48::-;;;;:::o;20252:153::-;6871:19;6879:10;6871:7;:19::i;:::-;6863:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20391:6:::1;20365:15;:23;20381:6;20365:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20252:153:::0;;:::o;17372:31::-;;;;;;;;;;;;;:::o;5002:132::-;5060:7;5087:39;5091:1;5094;5087:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5080:46;;5002:132;;;;:::o;4510:226::-;4630:7;4663:1;4658;:6;;4666:12;4650:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4690:9;4706:1;4702;:5;;;;:::i;:::-;4690:17;;4727:1;4720:8;;;4510:226;;;;;:::o;24087:1578::-;24209:4;24240:5;;;;;;;;;;;24230:15;;:6;:15;;;;:37;;;;;24262:5;;;;;;;;;;24249:18;;:9;:18;;;;24230:37;24226:103;;;24290:11;;;;;;;;;;;24282:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;24226:103;24388:16;;;;;;;;;;;24384:97;;;24428:41;24443:6;24451:9;24462:6;24428:14;:41::i;:::-;24421:48;;;;24384:97;24511:5;;24501:6;:15;;:42;;;;24520:15;:23;24536:6;24520:23;;;;;;;;;;;;;;;;;;;;;;;;;24501:42;24493:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;24568:15;:26;24584:9;24568:26;;;;;;;;;;;;;;;;;;;;;;;;;24563:124;;24655:9;;24619:32;24644:6;24619:9;:20;24629:9;24619:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;:45;;24611:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24563:124;24731:4;;;;;;;;;;;24717:18;;:10;:18;;;;:52;;;;;24753:16;;;;;;;;;;;24752:17;24717:52;:90;;;;;24786:21;;;;;;;;;;;24717:90;:148;;;;;24852:13;;24824:9;:24;24842:4;24824:24;;;;;;;;;;;;;;;;:41;;24717:148;24699:215;;;24892:10;:8;:10::i;:::-;24699:215;24946:90;24982:6;24946:90;;;;;;;;;;;;;;;;;:9;:17;24956:6;24946:17;;;;;;;;;;;;;;;;:21;;:90;;;;;:::i;:::-;24926:9;:17;24936:6;24926:17;;;;;;;;;;;;;;;:110;;;;25049:19;25072:11;:19;25084:6;25072:19;;;;;;;;;;;;;;;;;;;;;;;;;25071:20;:47;;;;;25096:11;:22;25108:9;25096:22;;;;;;;;;;;;;;;;;;;;;;;;;25095:23;25071:47;:119;;25184:6;25071:119;;;25134:34;25142:6;25150:9;25161:6;25134:7;:34::i;:::-;25071:119;25049:141;;25224:37;25249:11;25224:9;:20;25234:9;25224:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;25201:9;:20;25211:9;25201:20;;;;;;;;;;;;;;;:60;;;;25308:16;:24;25325:6;25308:24;;;;;;;;;;;;;;;;;;;;;;;;;25303:127;;25353:18;;;;;;;;;;;:27;;;25381:6;25389:9;:17;25399:6;25389:17;;;;;;;;;;;;;;;;25353:54;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25349:70;25303:127;25447:16;:27;25464:9;25447:27;;;;;;;;;;;;;;;;;;;;;;;;;25442:136;;25495:18;;;;;;;;;;;:27;;;25523:9;25534;:20;25544:9;25534:20;;;;;;;;;;;;;;;;25495:60;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25491:76;25442:136;25612:9;25595:40;;25604:6;25595:40;;;25623:11;25595:40;;;;;;:::i;:::-;;;;;;;;25653:4;25646:11;;;24087:1578;;;;;;:::o;4366:136::-;4424:7;4451:43;4455:1;4458;4451:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4444:50;;4366:136;;;;:::o;27482:642::-;17567:4;17548:16;;:23;;;;;;;;;;;;;;;;;;27534:42:::1;27551:9;:24;27569:4;27551:24;;;;;;;;;;;;;;;;27534:16;:42::i;:::-;27589:23;27615:21;27589:47;;27649:18;27670:36;27702:3;27670:27;27690:6;;27670:15;:19;;:27;;;;:::i;:::-;:31;;:36;;;;:::i;:::-;27649:57;;27717:26;27732:10;27717:14;:26::i;:::-;27756:23;27782:41;27819:3;27782:32;27802:11;;27782:15;:19;;:32;;;;:::i;:::-;:36;;:41;;;;:::i;:::-;27756:67;;27842:15;;;;;;;;;;;27834:33;;:50;27868:15;27834:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;27897:25;27925:43;27964:3;27925:34;27945:13;;27925:15;:19;;:34;;;;:::i;:::-;:38;;:43;;;;:::i;:::-;27897:71;;27983:18;;;;;;;;;;;:26;;;28017:17;27983:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;27979:70:::0;28069:14:::1;;;;;;;;;;;28061:32;;:55;28094:21;28061:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;27523:601;;;;17613:5:::0;17594:16;;:24;;;;;;;;;;;;;;;;;;27482:642::o;21440:355::-;21545:4;21527:23;;:6;:23;;;;:41;;;;;21564:4;;;;;;;;;;;21554:14;;:6;:14;;;;21527:41;21519:50;;;;;;21607:6;21580:16;:24;21597:6;21580:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;21628:6;21624:164;;;21651:18;;;;;;;;;;;:27;;;21679:6;21687:1;21651:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21624:164;;;21722:18;;;;;;;;;;;:27;;;21750:6;21758:9;:17;21768:6;21758:17;;;;;;;;;;;;;;;;21722:54;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21624:164;21440:355;;:::o;5142:379::-;5262:7;5361:1;5357;:5;5364:12;5349:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5388:9;5404:1;5400;:5;;;;:::i;:::-;5388:17;;5512:1;5505:8;;;5142:379;;;;;:::o;25673:401::-;25800:4;25837:90;25873:6;25837:90;;;;;;;;;;;;;;;;;:9;:17;25847:6;25837:17;;;;;;;;;;;;;;;;:21;;:90;;;;;:::i;:::-;25817:9;:17;25827:6;25817:17;;;;;;;;;;;;;;;:110;;;;25961:32;25986:6;25961:9;:20;25971:9;25961:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;25938:9;:20;25948:9;25938:20;;;;;;;;;;;;;;;:55;;;;26026:9;26009:35;;26018:6;26009:35;;;26037:6;26009:35;;;;;;:::i;:::-;;;;;;;;26062:4;26055:11;;25673:401;;;;;:::o;4177:181::-;4235:7;4255:9;4271:1;4267;:5;;;;:::i;:::-;4255:17;;4296:1;4291;:6;;4283:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;4349:1;4342:8;;;4177:181;;;;:::o;26082:620::-;26186:7;26202:21;26234:9;26226:17;;:4;;;;;;;;;;;:17;;;:36;;26256:6;;26226:36;;;26246:7;;26226:36;26202:60;;26269:17;26289:34;26319:3;26289:25;26300:13;26289:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;26269:54;;26330:18;26351:28;26375:3;26351:19;26362:7;;26351:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;26330:49;;26415:39;26444:9;26415;:24;26433:4;26415:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;26388:9;:24;26406:4;26388:24;;;;;;;;;;;;;;;:66;;;;26479:31;26499:10;26479:9;:15;26489:4;;;;;;;;;;;26479:15;;;;;;;;;;;;;;;;:19;;:31;;;;:::i;:::-;26461:9;:15;26471:4;;;;;;;;;;;26461:15;;;;;;;;;;;;;;;:49;;;;26533:10;26517:12;;:26;;;;;;;:::i;:::-;;;;;;;;26582:4;26557:42;;26566:6;26557:42;;;26589:9;26557:42;;;;;;:::i;:::-;;;;;;;;26628:4;;;;;;;;;;;26611:34;;26620:6;26611:34;;;26634:10;26611:34;;;;;;:::i;:::-;;;;;;;;26661:37;26687:10;26661:21;26672:9;26661:6;:10;;:21;;;;:::i;:::-;:25;;:37;;;;:::i;:::-;26654:44;;;;;26082:620;;;;;:::o;26712:458::-;26778:21;26816:1;26802:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26778:40;;26847:4;26829;26834:1;26829:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;26873:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26863:4;26868:1;26863:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;26899:35;26915:4;26922:11;26899:7;:35::i;:::-;;26947:6;;;;;;;;;;;:57;;;27019:11;27045:1;27089:4;27116;27136:15;26947:215;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26767:403;26712:458;:::o;4744:250::-;4802:7;4831:1;4826;:6;4822:47;;4856:1;4849:8;;;;4822:47;4881:9;4897:1;4893;:5;;;;:::i;:::-;4881:17;;4926:1;4921;4917;:5;;;;:::i;:::-;:10;4909:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;4985:1;4978:8;;;4744:250;;;;;:::o;27178:296::-;27237:21;27275:1;27261:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27237:40;;27298:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27288:4;27293:1;27288:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27340:10;;;;;;;;;;;27322:4;27327:1;27322:7;;;;;;;;:::i;:::-;;;;;;;:29;;;;;;;;;;;27362:6;;;;;;;;;;;:57;;;27427:6;27435:1;27438:4;27444;;;;;;;;;;;27450:15;27362:104;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27226:248;27178:296;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:307::-;790:1;800:113;814:6;811:1;808:13;800:113;;;899:1;894:3;890:11;884:18;880:1;875:3;871:11;864:39;836:2;833:1;829:10;824:15;;800:113;;;931:6;928:1;925:13;922:101;;;1011:1;1002:6;997:3;993:16;986:27;922:101;771:258;722:307;;;:::o;1035:102::-;1076:6;1127:2;1123:7;1118:2;1111:5;1107:14;1103:28;1093:38;;1035:102;;;:::o;1143:364::-;1231:3;1259:39;1292:5;1259:39;:::i;:::-;1314:71;1378:6;1373:3;1314:71;:::i;:::-;1307:78;;1394:52;1439:6;1434:3;1427:4;1420:5;1416:16;1394:52;:::i;:::-;1471:29;1493:6;1471:29;:::i;:::-;1466:3;1462:39;1455:46;;1235:272;1143:364;;;;:::o;1513:313::-;1626:4;1664:2;1653:9;1649:18;1641:26;;1713:9;1707:4;1703:20;1699:1;1688:9;1684:17;1677:47;1741:78;1814:4;1805:6;1741:78;:::i;:::-;1733:86;;1513:313;;;;:::o;1913:117::-;2022:1;2019;2012:12;2159:126;2196:7;2236:42;2229:5;2225:54;2214:65;;2159:126;;;:::o;2291:96::-;2328:7;2357:24;2375:5;2357:24;:::i;:::-;2346:35;;2291:96;;;:::o;2393:122::-;2466:24;2484:5;2466:24;:::i;:::-;2459:5;2456:35;2446:63;;2505:1;2502;2495:12;2446:63;2393:122;:::o;2521:139::-;2567:5;2605:6;2592:20;2583:29;;2621:33;2648:5;2621:33;:::i;:::-;2521:139;;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:765::-;3932:6;3940;3948;3956;4005:3;3993:9;3984:7;3980:23;3976:33;3973:120;;;4012:79;;:::i;:::-;3973:120;4132:1;4157:53;4202:7;4193:6;4182:9;4178:22;4157:53;:::i;:::-;4147:63;;4103:117;4259:2;4285:53;4330:7;4321:6;4310:9;4306:22;4285:53;:::i;:::-;4275:63;;4230:118;4387:2;4413:53;4458:7;4449:6;4438:9;4434:22;4413:53;:::i;:::-;4403:63;;4358:118;4515:2;4541:53;4586:7;4577:6;4566:9;4562:22;4541:53;:::i;:::-;4531:63;;4486:118;3846:765;;;;;;;:::o;4617:104::-;4662:7;4691:24;4709:5;4691:24;:::i;:::-;4680:35;;4617:104;;;:::o;4727:138::-;4808:32;4834:5;4808:32;:::i;:::-;4801:5;4798:43;4788:71;;4855:1;4852;4845:12;4788:71;4727:138;:::o;4871:155::-;4925:5;4963:6;4950:20;4941:29;;4979:41;5014:5;4979:41;:::i;:::-;4871:155;;;;:::o;5032:345::-;5099:6;5148:2;5136:9;5127:7;5123:23;5119:32;5116:119;;;5154:79;;:::i;:::-;5116:119;5274:1;5299:61;5352:7;5343:6;5332:9;5328:22;5299:61;:::i;:::-;5289:71;;5245:125;5032:345;;;;:::o;5383:619::-;5460:6;5468;5476;5525:2;5513:9;5504:7;5500:23;5496:32;5493:119;;;5531:79;;:::i;:::-;5493:119;5651:1;5676:53;5721:7;5712:6;5701:9;5697:22;5676:53;:::i;:::-;5666:63;;5622:117;5778:2;5804:53;5849:7;5840:6;5829:9;5825:22;5804:53;:::i;:::-;5794:63;;5749:118;5906:2;5932:53;5977:7;5968:6;5957:9;5953:22;5932:53;:::i;:::-;5922:63;;5877:118;5383:619;;;;;:::o;6008:474::-;6076:6;6084;6133:2;6121:9;6112:7;6108:23;6104:32;6101:119;;;6139:79;;:::i;:::-;6101:119;6259:1;6284:53;6329:7;6320:6;6309:9;6305:22;6284:53;:::i;:::-;6274:63;;6230:117;6386:2;6412:53;6457:7;6448:6;6437:9;6433:22;6412:53;:::i;:::-;6402:63;;6357:118;6008:474;;;;;:::o;6488:329::-;6547:6;6596:2;6584:9;6575:7;6571:23;6567:32;6564:119;;;6602:79;;:::i;:::-;6564:119;6722:1;6747:53;6792:7;6783:6;6772:9;6768:22;6747:53;:::i;:::-;6737:63;;6693:117;6488:329;;;;:::o;6823:86::-;6858:7;6898:4;6891:5;6887:16;6876:27;;6823:86;;;:::o;6915:112::-;6998:22;7014:5;6998:22;:::i;:::-;6993:3;6986:35;6915:112;;:::o;7033:214::-;7122:4;7160:2;7149:9;7145:18;7137:26;;7173:67;7237:1;7226:9;7222:17;7213:6;7173:67;:::i;:::-;7033:214;;;;:::o;7253:116::-;7323:21;7338:5;7323:21;:::i;:::-;7316:5;7313:32;7303:60;;7359:1;7356;7349:12;7303:60;7253:116;:::o;7375:133::-;7418:5;7456:6;7443:20;7434:29;;7472:30;7496:5;7472:30;:::i;:::-;7375:133;;;;:::o;7514:468::-;7579:6;7587;7636:2;7624:9;7615:7;7611:23;7607:32;7604:119;;;7642:79;;:::i;:::-;7604:119;7762:1;7787:50;7829:7;7820:6;7809:9;7805:22;7787:50;:::i;:::-;7777:60;;7733:114;7886:2;7912:53;7957:7;7948:6;7937:9;7933:22;7912:53;:::i;:::-;7902:63;;7857:118;7514:468;;;;;:::o;7988:118::-;8075:24;8093:5;8075:24;:::i;:::-;8070:3;8063:37;7988:118;;:::o;8112:222::-;8205:4;8243:2;8232:9;8228:18;8220:26;;8256:71;8324:1;8313:9;8309:17;8300:6;8256:71;:::i;:::-;8112:222;;;;:::o;8340:329::-;8399:6;8448:2;8436:9;8427:7;8423:23;8419:32;8416:119;;;8454:79;;:::i;:::-;8416:119;8574:1;8599:53;8644:7;8635:6;8624:9;8620:22;8599:53;:::i;:::-;8589:63;;8545:117;8340:329;;;;:::o;8675:60::-;8703:3;8724:5;8717:12;;8675:60;;;:::o;8741:142::-;8791:9;8824:53;8842:34;8851:24;8869:5;8851:24;:::i;:::-;8842:34;:::i;:::-;8824:53;:::i;:::-;8811:66;;8741:142;;;:::o;8889:134::-;8947:9;8980:37;9011:5;8980:37;:::i;:::-;8967:50;;8889:134;;;:::o;9029:170::-;9115:9;9148:45;9187:5;9148:45;:::i;:::-;9135:58;;9029:170;;;:::o;9205:203::-;9328:73;9395:5;9328:73;:::i;:::-;9323:3;9316:86;9205:203;;:::o;9414:294::-;9543:4;9581:2;9570:9;9566:18;9558:26;;9594:107;9698:1;9687:9;9683:17;9674:6;9594:107;:::i;:::-;9414:294;;;;:::o;9714:468::-;9779:6;9787;9836:2;9824:9;9815:7;9811:23;9807:32;9804:119;;;9842:79;;:::i;:::-;9804:119;9962:1;9987:53;10032:7;10023:6;10012:9;10008:22;9987:53;:::i;:::-;9977:63;;9933:117;10089:2;10115:50;10157:7;10148:6;10137:9;10133:22;10115:50;:::i;:::-;10105:60;;10060:115;9714:468;;;;;:::o;10188:474::-;10256:6;10264;10313:2;10301:9;10292:7;10288:23;10284:32;10281:119;;;10319:79;;:::i;:::-;10281:119;10439:1;10464:53;10509:7;10500:6;10489:9;10485:22;10464:53;:::i;:::-;10454:63;;10410:117;10566:2;10592:53;10637:7;10628:6;10617:9;10613:22;10592:53;:::i;:::-;10582:63;;10537:118;10188:474;;;;;:::o;10668:126::-;10718:9;10751:37;10782:5;10751:37;:::i;:::-;10738:50;;10668:126;;;:::o;10800:144::-;10868:9;10901:37;10932:5;10901:37;:::i;:::-;10888:50;;10800:144;;;:::o;10950:167::-;11055:55;11104:5;11055:55;:::i;:::-;11050:3;11043:68;10950:167;;:::o;11123:258::-;11234:4;11272:2;11261:9;11257:18;11249:26;;11285:89;11371:1;11360:9;11356:17;11347:6;11285:89;:::i;:::-;11123:258;;;;:::o;11387:156::-;11527:8;11523:1;11515:6;11511:14;11504:32;11387:156;:::o;11549:365::-;11691:3;11712:66;11776:1;11771:3;11712:66;:::i;:::-;11705:73;;11787:93;11876:3;11787:93;:::i;:::-;11905:2;11900:3;11896:12;11889:19;;11549:365;;;:::o;11920:419::-;12086:4;12124:2;12113:9;12109:18;12101:26;;12173:9;12167:4;12163:20;12159:1;12148:9;12144:17;12137:47;12201:131;12327:4;12201:131;:::i;:::-;12193:139;;11920:419;;;:::o;12345:332::-;12466:4;12504:2;12493:9;12489:18;12481:26;;12517:71;12585:1;12574:9;12570:17;12561:6;12517:71;:::i;:::-;12598:72;12666:2;12655:9;12651:18;12642:6;12598:72;:::i;:::-;12345:332;;;;;:::o;12683:158::-;12823:10;12819:1;12811:6;12807:14;12800:34;12683:158;:::o;12847:365::-;12989:3;13010:66;13074:1;13069:3;13010:66;:::i;:::-;13003:73;;13085:93;13174:3;13085:93;:::i;:::-;13203:2;13198:3;13194:12;13187:19;;12847:365;;;:::o;13218:419::-;13384:4;13422:2;13411:9;13407:18;13399:26;;13471:9;13465:4;13461:20;13457:1;13446:9;13442:17;13435:47;13499:131;13625:4;13499:131;:::i;:::-;13491:139;;13218:419;;;:::o;13643:143::-;13700:5;13731:6;13725:13;13716:22;;13747:33;13774:5;13747:33;:::i;:::-;13643:143;;;;:::o;13792:351::-;13862:6;13911:2;13899:9;13890:7;13886:23;13882:32;13879:119;;;13917:79;;:::i;:::-;13879:119;14037:1;14062:64;14118:7;14109:6;14098:9;14094:22;14062:64;:::i;:::-;14052:74;;14008:128;13792:351;;;;:::o;14149:174::-;14289:26;14285:1;14277:6;14273:14;14266:50;14149:174;:::o;14329:366::-;14471:3;14492:67;14556:2;14551:3;14492:67;:::i;:::-;14485:74;;14568:93;14657:3;14568:93;:::i;:::-;14686:2;14681:3;14677:12;14670:19;;14329:366;;;:::o;14701:419::-;14867:4;14905:2;14894:9;14890:18;14882:26;;14954:9;14948:4;14944:20;14940:1;14929:9;14925:17;14918:47;14982:131;15108:4;14982:131;:::i;:::-;14974:139;;14701:419;;;:::o;15126:157::-;15266:9;15262:1;15254:6;15250:14;15243:33;15126:157;:::o;15289:365::-;15431:3;15452:66;15516:1;15511:3;15452:66;:::i;:::-;15445:73;;15527:93;15616:3;15527:93;:::i;:::-;15645:2;15640:3;15636:12;15629:19;;15289:365;;;:::o;15660:419::-;15826:4;15864:2;15853:9;15849:18;15841:26;;15913:9;15907:4;15903:20;15899:1;15888:9;15884:17;15877:47;15941:131;16067:4;15941:131;:::i;:::-;15933:139;;15660:419;;;:::o;16085:180::-;16133:77;16130:1;16123:88;16230:4;16227:1;16220:15;16254:4;16251:1;16244:15;16271:102;16313:8;16360:5;16357:1;16353:13;16332:34;;16271:102;;;:::o;16379:848::-;16440:5;16447:4;16471:6;16462:15;;16495:5;16486:14;;16509:712;16530:1;16520:8;16517:15;16509:712;;;16625:4;16620:3;16616:14;16610:4;16607:24;16604:50;;;16634:18;;:::i;:::-;16604:50;16684:1;16674:8;16670:16;16667:451;;;17099:4;17092:5;17088:16;17079:25;;16667:451;17149:4;17143;17139:15;17131:23;;17179:32;17202:8;17179:32;:::i;:::-;17167:44;;16509:712;;;16379:848;;;;;;;:::o;17233:1073::-;17287:5;17478:8;17468:40;;17499:1;17490:10;;17501:5;;17468:40;17527:4;17517:36;;17544:1;17535:10;;17546:5;;17517:36;17613:4;17661:1;17656:27;;;;17697:1;17692:191;;;;17606:277;;17656:27;17674:1;17665:10;;17676:5;;;17692:191;17737:3;17727:8;17724:17;17721:43;;;17744:18;;:::i;:::-;17721:43;17793:8;17790:1;17786:16;17777:25;;17828:3;17821:5;17818:14;17815:40;;;17835:18;;:::i;:::-;17815:40;17868:5;;;17606:277;;17992:2;17982:8;17979:16;17973:3;17967:4;17964:13;17960:36;17942:2;17932:8;17929:16;17924:2;17918:4;17915:12;17911:35;17895:111;17892:246;;;18048:8;18042:4;18038:19;18029:28;;18083:3;18076:5;18073:14;18070:40;;;18090:18;;:::i;:::-;18070:40;18123:5;;17892:246;18163:42;18201:3;18191:8;18185:4;18182:1;18163:42;:::i;:::-;18148:57;;;;18237:4;18232:3;18228:14;18221:5;18218:25;18215:51;;;18246:18;;:::i;:::-;18215:51;18295:4;18288:5;18284:16;18275:25;;17233:1073;;;;;;:::o;18312:281::-;18370:5;18394:23;18412:4;18394:23;:::i;:::-;18386:31;;18438:25;18454:8;18438:25;:::i;:::-;18426:37;;18482:104;18519:66;18509:8;18503:4;18482:104;:::i;:::-;18473:113;;18312:281;;;;:::o;18599:348::-;18639:7;18662:20;18680:1;18662:20;:::i;:::-;18657:25;;18696:20;18714:1;18696:20;:::i;:::-;18691:25;;18884:1;18816:66;18812:74;18809:1;18806:81;18801:1;18794:9;18787:17;18783:105;18780:131;;;18891:18;;:::i;:::-;18780:131;18939:1;18936;18932:9;18921:20;;18599:348;;;;:::o;18953:170::-;19093:22;19089:1;19081:6;19077:14;19070:46;18953:170;:::o;19129:366::-;19271:3;19292:67;19356:2;19351:3;19292:67;:::i;:::-;19285:74;;19368:93;19457:3;19368:93;:::i;:::-;19486:2;19481:3;19477:12;19470:19;;19129:366;;;:::o;19501:419::-;19667:4;19705:2;19694:9;19690:18;19682:26;;19754:9;19748:4;19744:20;19740:1;19729:9;19725:17;19718:47;19782:131;19908:4;19782:131;:::i;:::-;19774:139;;19501:419;;;:::o;19926:134::-;19984:9;20017:37;20048:5;20017:37;:::i;:::-;20004:50;;19926:134;;;:::o;20066:147::-;20161:45;20200:5;20161:45;:::i;:::-;20156:3;20149:58;20066:147;;:::o;20219:238::-;20320:4;20358:2;20347:9;20343:18;20335:26;;20371:79;20447:1;20436:9;20432:17;20423:6;20371:79;:::i;:::-;20219:238;;;;:::o;20463:191::-;20503:4;20523:20;20541:1;20523:20;:::i;:::-;20518:25;;20557:20;20575:1;20557:20;:::i;:::-;20552:25;;20596:1;20593;20590:8;20587:34;;;20601:18;;:::i;:::-;20587:34;20646:1;20643;20639:9;20631:17;;20463:191;;;;:::o;20660:173::-;20800:25;20796:1;20788:6;20784:14;20777:49;20660:173;:::o;20839:366::-;20981:3;21002:67;21066:2;21061:3;21002:67;:::i;:::-;20995:74;;21078:93;21167:3;21078:93;:::i;:::-;21196:2;21191:3;21187:12;21180:19;;20839:366;;;:::o;21211:419::-;21377:4;21415:2;21404:9;21400:18;21392:26;;21464:9;21458:4;21454:20;21450:1;21439:9;21435:17;21428:47;21492:131;21618:4;21492:131;:::i;:::-;21484:139;;21211:419;;;:::o;21636:152::-;21776:4;21772:1;21764:6;21760:14;21753:28;21636:152;:::o;21794:365::-;21936:3;21957:66;22021:1;22016:3;21957:66;:::i;:::-;21950:73;;22032:93;22121:3;22032:93;:::i;:::-;22150:2;22145:3;22141:12;22134:19;;21794:365;;;:::o;22165:419::-;22331:4;22369:2;22358:9;22354:18;22346:26;;22418:9;22412:4;22408:20;22404:1;22393:9;22389:17;22382:47;22446:131;22572:4;22446:131;:::i;:::-;22438:139;;22165:419;;;:::o;22590:156::-;22730:8;22726:1;22718:6;22714:14;22707:32;22590:156;:::o;22752:365::-;22894:3;22915:66;22979:1;22974:3;22915:66;:::i;:::-;22908:73;;22990:93;23079:3;22990:93;:::i;:::-;23108:2;23103:3;23099:12;23092:19;;22752:365;;;:::o;23123:419::-;23289:4;23327:2;23316:9;23312:18;23304:26;;23376:9;23370:4;23366:20;23362:1;23351:9;23347:17;23340:47;23404:131;23530:4;23404:131;:::i;:::-;23396:139;;23123:419;;;:::o;23548:332::-;23669:4;23707:2;23696:9;23692:18;23684:26;;23720:71;23788:1;23777:9;23773:17;23764:6;23720:71;:::i;:::-;23801:72;23869:2;23858:9;23854:18;23845:6;23801:72;:::i;:::-;23548:332;;;;;:::o;23886:85::-;23931:7;23960:5;23949:16;;23886:85;;;:::o;23977:158::-;24035:9;24068:61;24086:42;24095:32;24121:5;24095:32;:::i;:::-;24086:42;:::i;:::-;24068:61;:::i;:::-;24055:74;;23977:158;;;:::o;24141:147::-;24236:45;24275:5;24236:45;:::i;:::-;24231:3;24224:58;24141:147;;:::o;24294:348::-;24423:4;24461:2;24450:9;24446:18;24438:26;;24474:71;24542:1;24531:9;24527:17;24518:6;24474:71;:::i;:::-;24555:80;24631:2;24620:9;24616:18;24607:6;24555:80;:::i;:::-;24294:348;;;;;:::o;24648:180::-;24696:77;24693:1;24686:88;24793:4;24790:1;24783:15;24817:4;24814:1;24807:15;24834:185;24874:1;24891:20;24909:1;24891:20;:::i;:::-;24886:25;;24925:20;24943:1;24925:20;:::i;:::-;24920:25;;24964:1;24954:35;;24969:18;;:::i;:::-;24954:35;25011:1;25008;25004:9;24999:14;;24834:185;;;;:::o;25025:305::-;25065:3;25084:20;25102:1;25084:20;:::i;:::-;25079:25;;25118:20;25136:1;25118:20;:::i;:::-;25113:25;;25272:1;25204:66;25200:74;25197:1;25194:81;25191:107;;;25278:18;;:::i;:::-;25191:107;25322:1;25319;25315:9;25308:16;;25025:305;;;;:::o;25336:177::-;25476:29;25472:1;25464:6;25460:14;25453:53;25336:177;:::o;25519:366::-;25661:3;25682:67;25746:2;25741:3;25682:67;:::i;:::-;25675:74;;25758:93;25847:3;25758:93;:::i;:::-;25876:2;25871:3;25867:12;25860:19;;25519:366;;;:::o;25891:419::-;26057:4;26095:2;26084:9;26080:18;26072:26;;26144:9;26138:4;26134:20;26130:1;26119:9;26115:17;26108:47;26172:131;26298:4;26172:131;:::i;:::-;26164:139;;25891:419;;;:::o;26316:180::-;26364:77;26361:1;26354:88;26461:4;26458:1;26451:15;26485:4;26482:1;26475:15;26502:180;26550:77;26547:1;26540:88;26647:4;26644:1;26637:15;26671:4;26668:1;26661:15;26688:143;26745:5;26776:6;26770:13;26761:22;;26792:33;26819:5;26792:33;:::i;:::-;26688:143;;;;:::o;26837:351::-;26907:6;26956:2;26944:9;26935:7;26931:23;26927:32;26924:119;;;26962:79;;:::i;:::-;26924:119;27082:1;27107:64;27163:7;27154:6;27143:9;27139:22;27107:64;:::i;:::-;27097:74;;27053:128;26837:351;;;;:::o;27194:114::-;27261:6;27295:5;27289:12;27279:22;;27194:114;;;:::o;27314:184::-;27413:11;27447:6;27442:3;27435:19;27487:4;27482:3;27478:14;27463:29;;27314:184;;;;:::o;27504:132::-;27571:4;27594:3;27586:11;;27624:4;27619:3;27615:14;27607:22;;27504:132;;;:::o;27642:108::-;27719:24;27737:5;27719:24;:::i;:::-;27714:3;27707:37;27642:108;;:::o;27756:179::-;27825:10;27846:46;27888:3;27880:6;27846:46;:::i;:::-;27924:4;27919:3;27915:14;27901:28;;27756:179;;;;:::o;27941:113::-;28011:4;28043;28038:3;28034:14;28026:22;;27941:113;;;:::o;28090:732::-;28209:3;28238:54;28286:5;28238:54;:::i;:::-;28308:86;28387:6;28382:3;28308:86;:::i;:::-;28301:93;;28418:56;28468:5;28418:56;:::i;:::-;28497:7;28528:1;28513:284;28538:6;28535:1;28532:13;28513:284;;;28614:6;28608:13;28641:63;28700:3;28685:13;28641:63;:::i;:::-;28634:70;;28727:60;28780:6;28727:60;:::i;:::-;28717:70;;28573:224;28560:1;28557;28553:9;28548:14;;28513:284;;;28517:14;28813:3;28806:10;;28214:608;;;28090:732;;;;:::o;28828:831::-;29091:4;29129:3;29118:9;29114:19;29106:27;;29143:71;29211:1;29200:9;29196:17;29187:6;29143:71;:::i;:::-;29224:80;29300:2;29289:9;29285:18;29276:6;29224:80;:::i;:::-;29351:9;29345:4;29341:20;29336:2;29325:9;29321:18;29314:48;29379:108;29482:4;29473:6;29379:108;:::i;:::-;29371:116;;29497:72;29565:2;29554:9;29550:18;29541:6;29497:72;:::i;:::-;29579:73;29647:3;29636:9;29632:19;29623:6;29579:73;:::i;:::-;28828:831;;;;;;;;:::o;29665:220::-;29805:34;29801:1;29793:6;29789:14;29782:58;29874:3;29869:2;29861:6;29857:15;29850:28;29665:220;:::o;29891:366::-;30033:3;30054:67;30118:2;30113:3;30054:67;:::i;:::-;30047:74;;30130:93;30219:3;30130:93;:::i;:::-;30248:2;30243:3;30239:12;30232:19;;29891:366;;;:::o;30263:419::-;30429:4;30467:2;30456:9;30452:18;30444:26;;30516:9;30510:4;30506:20;30502:1;30491:9;30487:17;30480:47;30544:131;30670:4;30544:131;:::i;:::-;30536:139;;30263:419;;;:::o;30688:720::-;30923:4;30961:3;30950:9;30946:19;30938:27;;30975:79;31051:1;31040:9;31036:17;31027:6;30975:79;:::i;:::-;31101:9;31095:4;31091:20;31086:2;31075:9;31071:18;31064:48;31129:108;31232:4;31223:6;31129:108;:::i;:::-;31121:116;;31247:72;31315:2;31304:9;31300:18;31291:6;31247:72;:::i;:::-;31329;31397:2;31386:9;31382:18;31373:6;31329:72;:::i;:::-;30688:720;;;;;;;:::o
Swarm Source
ipfs://58047022730a03fd153998eba7566e2165a658c3939c3d639e9340a25c1cca92
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.