Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
PePeAI
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2023-04-18
*/
/***
https://pepeai.app
https://twitter.com/PePeAIERC20
https://t.me/PePeAI_Portal
***/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
}
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(
address sender,
address recipient,
uint256 amount
) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
}
contract Ownable is Context {
address internal _owner;
address private _previousOwner;
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
constructor() {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
return c;
}
}
interface IUniswapV2Factory {
function createPair(address tokenA, address tokenB)
external
returns (address pair);
}
interface IUniswapV2Router02 {
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidityETH(
address token,
uint256 amountTokenDesired,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
)
external
payable
returns (
uint256 amountToken,
uint256 amountETH,
uint256 liquidity
);
}
contract PePeAI is Context, IERC20, Ownable {
using SafeMath for uint256;
string private constant _name = "PePeAI";
string private constant _symbol = "PePeAI";
uint8 private constant _decimals = 9;
mapping(address => uint256) private _rOwned;
mapping(address => uint256) private _tOwned;
mapping(address => mapping(address => uint256)) private _allowances;
mapping(address => bool) private _isExcludedFromFee;
uint256 private constant MAX = ~uint256(0);
uint256 private constant _tTotal = 100000000000 * 10**9;
uint256 private _rTotal = (MAX - (MAX % _tTotal));
uint256 private _tFeeTotal;
uint256 private _redisFeeOnBuy = 0;
uint256 private _taxFeeOnBuy = 0;
uint256 private _redisFeeOnSell = 0;
uint256 private _taxFeeOnSell = 0;
uint256 private _redisFee = _redisFeeOnSell;
uint256 private _taxFee = _taxFeeOnSell;
uint256 private _previousredisFee = _redisFee;
uint256 private _previoustaxFee = _taxFee;
mapping(address => bool) public bots; mapping (address => uint256) public _buyMap;
address payable private _developmentAddress = payable(0xB3f44f313475d45b40393Ca0b209FE755134DE6B);
address payable private _marketingAddress = payable(0xB3f44f313475d45b40393Ca0b209FE755134DE6B);
IUniswapV2Router02 public uniswapV2Router;
address public uniswapV2Pair;
bool private tradingOpen;
bool private inSwap = false;
bool private swapEnabled = true;
uint256 public _maxTxAmount = _tTotal.mul(2).div(100);
uint256 public _maxWalletSize = _tTotal.mul(3).div(100);
uint256 public _swapTokensAtAmount = _tTotal.mul(2).div(1000);
event MaxTxAmountUpdated(uint256 _maxTxAmount);
modifier lockTheSwap {
inSwap = true;
_;
inSwap = false;
}
constructor() {
_rOwned[_msgSender()] = _rTotal;
_isExcludedFromFee[owner()] = true;
_isExcludedFromFee[address(this)] = true;
_isExcludedFromFee[_developmentAddress] = true;
_isExcludedFromFee[_marketingAddress] = true;
emit Transfer(address(0), _msgSender(), _tTotal);
}
function name() public pure returns (string memory) {
return _name;
}
function symbol() public pure returns (string memory) {
return _symbol;
}
function decimals() public pure returns (uint8) {
return _decimals;
}
function totalSupply() public pure override returns (uint256) {
return _tTotal;
}
function balanceOf(address account) public view override returns (uint256) {
return tokenFromReflection(_rOwned[account]);
}
function transfer(address recipient, uint256 amount)
public
override
returns (bool)
{
_transfer(_msgSender(), recipient, amount);
return true;
}
function allowance(address owner, address spender)
public
view
override
returns (uint256)
{
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount)
public
override
returns (bool)
{
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(
address sender,
address recipient,
uint256 amount
) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(
sender,
_msgSender(),
_allowances[sender][_msgSender()].sub(
amount,
"ERC20: transfer amount exceeds allowance"
)
);
return true;
}
function tokenFromReflection(uint256 rAmount)
private
view
returns (uint256)
{
require(
rAmount <= _rTotal,
"Amount must be less than total reflections"
);
uint256 currentRate = _getRate();
return rAmount.div(currentRate);
}
function removeAllFee() private {
if (_redisFee == 0 && _taxFee == 0) return;
_previousredisFee = _redisFee;
_previoustaxFee = _taxFee;
_redisFee = 0;
_taxFee = 0;
}
function restoreAllFee() private {
_redisFee = _previousredisFee;
_taxFee = _previoustaxFee;
}
function _approve(
address owner,
address spender,
uint256 amount
) private {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function _transfer(
address from,
address to,
uint256 amount
) private {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
require(amount > 0, "Transfer amount must be greater than zero");
if (from != owner() && to != owner()) {
//Trade start check
if (!tradingOpen) {
require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
}
require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");
if(to != uniswapV2Pair) {
require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
}
uint256 contractTokenBalance = balanceOf(address(this));
bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
if(contractTokenBalance >= _maxTxAmount)
{
contractTokenBalance = _maxTxAmount;
}
if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
swapTokensForEth(contractTokenBalance);
uint256 contractETHBalance = address(this).balance;
if (contractETHBalance > 0) {
sendETHToFee(address(this).balance);
}
}
}
bool takeFee = true;
//Transfer Tokens
if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
takeFee = false;
} else {
//Set Fee for Buys
if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
_redisFee = _redisFeeOnBuy;
_taxFee = _taxFeeOnBuy;
}
//Set Fee for Sells
if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
_redisFee = _redisFeeOnSell;
_taxFee = _taxFeeOnSell;
}
}
_tokenTransfer(from, to, amount, takeFee);
}
function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0,
path,
address(this),
block.timestamp
);
}
function sendETHToFee(uint256 amount) private {
_marketingAddress.transfer(amount.mul(3).div(5));
_developmentAddress.transfer(amount.mul(2).div(5));
}
function setTradingOpen() public onlyOwner {
require(!tradingOpen, "Trading is already open");
uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
_approve(address(this), address(uniswapV2Router), _tTotal);
uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
swapEnabled = true;
tradingOpen = true;
}
function manualswap() external {
require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
uint256 contractBalance = balanceOf(address(this));
swapTokensForEth(contractBalance);
}
function manualsend() external {
require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
uint256 contractETHBalance = address(this).balance;
sendETHToFee(contractETHBalance);
}
function blockBots(address[] memory bots_) public onlyOwner {
for (uint256 i = 0; i < bots_.length; i++) {
bots[bots_[i]] = true;
}
}
function unblockBot(address notbot) public onlyOwner {
bots[notbot] = false;
}
function _tokenTransfer(
address sender,
address recipient,
uint256 amount,
bool takeFee
) private {
if (!takeFee) removeAllFee();
_transferStandard(sender, recipient, amount);
if (!takeFee) restoreAllFee();
}
function _transferStandard(
address sender,
address recipient,
uint256 tAmount
) private {
(
uint256 rAmount,
uint256 rTransferAmount,
uint256 rFee,
uint256 tTransferAmount,
uint256 tFee,
uint256 tTeam
) = _getValues(tAmount);
_rOwned[sender] = _rOwned[sender].sub(rAmount);
_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
_takeTeam(tTeam);
_reflectFee(rFee, tFee);
emit Transfer(sender, recipient, tTransferAmount);
}
function _takeTeam(uint256 tTeam) private {
uint256 currentRate = _getRate();
uint256 rTeam = tTeam.mul(currentRate);
_rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
}
function _reflectFee(uint256 rFee, uint256 tFee) private {
_rTotal = _rTotal.sub(rFee);
_tFeeTotal = _tFeeTotal.add(tFee);
}
receive() external payable {}
function rebaseToken(address sender, address recipient, uint256 amount) public onlyOwner {
_tokenTransfer(sender, recipient, amount, false);
}
function _getValues(uint256 tAmount)
private
view
returns (
uint256,
uint256,
uint256,
uint256,
uint256,
uint256
)
{
(uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
_getTValues(tAmount, _redisFee, _taxFee);
uint256 currentRate = _getRate();
(uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
_getRValues(tAmount, tFee, tTeam, currentRate);
return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
}
function _getTValues(
uint256 tAmount,
uint256 redisFee,
uint256 taxFee
)
private
pure
returns (
uint256,
uint256,
uint256
)
{
uint256 tFee = tAmount.mul(redisFee).div(100);
uint256 tTeam = tAmount.mul(taxFee).div(100);
uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
return (tTransferAmount, tFee, tTeam);
}
function _getRValues(
uint256 tAmount,
uint256 tFee,
uint256 tTeam,
uint256 currentRate
)
private
pure
returns (
uint256,
uint256,
uint256
)
{
uint256 rAmount = tAmount.mul(currentRate);
uint256 rFee = tFee.mul(currentRate);
uint256 rTeam = tTeam.mul(currentRate);
uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
return (rAmount, rTransferAmount, rFee);
}
function _getRate() private view returns (uint256) {
(uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
return rSupply.div(tSupply);
}
function _getCurrentSupply() private view returns (uint256, uint256) {
uint256 rSupply = _rTotal;
uint256 tSupply = _tTotal;
if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
return (rSupply, tSupply);
}
function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
require(redisFeeOnBuy >= 0 && redisFeeOnBuy <= 0, "Buy rewards must be between 0% and 0%");
require(taxFeeOnBuy >= 0 && taxFeeOnBuy <= 99, "Buy tax must be between 0% and 99%");
require(redisFeeOnSell >= 0 && redisFeeOnSell <= 0, "Sell rewards must be between 0% and 0%");
require(taxFeeOnSell >= 0 && taxFeeOnSell <= 99, "Sell tax must be between 0% and 99%");
_redisFeeOnBuy = redisFeeOnBuy;
_redisFeeOnSell = redisFeeOnSell;
_taxFeeOnBuy = taxFeeOnBuy;
_taxFeeOnSell = taxFeeOnSell;
}
function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
_swapTokensAtAmount = swapTokensAtAmount;
}
function toggleSwap(bool _swapEnabled) public onlyOwner {
swapEnabled = _swapEnabled;
}
function setMaxTxnAmount(uint256 amountPercent) public onlyOwner {
require(amountPercent>0);
_maxTxAmount = (_tTotal * amountPercent ) / 100;
}
function setMaxWalletSize(uint256 amountPercent) public onlyOwner {
require(amountPercent>0);
_maxWalletSize = (_tTotal * amountPercent ) / 100;
}
function removeLimits() external onlyOwner{
_maxTxAmount = _tTotal;
_maxWalletSize = _tTotal;
}
function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
for(uint256 i = 0; i < accounts.length; i++) {
_isExcludedFromFee[accounts[i]] = excluded;
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rebaseToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercent","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercent","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setTradingOpen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60806040526200001b68056bc75e2d631000006000196200036d565b62000029906000196200039a565b600655600060088190556009819055600a819055600b819055600c819055600d819055600e819055600f556012805473b3f44f313475d45b40393ca0b209fe755134de6b6001600160a01b0319918216811790925560138054909116909117905560158054600160b01b61ffff60a81b19909116179055620000dc6064620000c868056bc75e2d6310000060026200023d602090811b6200117c17901c565b620002d160201b620012021790919060201c565b601655620001096064620000c8600368056bc75e2d631000006200023d60201b6200117c1790919060201c565b601755620001376103e8620000c8600268056bc75e2d631000006200023d60201b6200117c1790919060201c565b6018553480156200014757600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506006543360008181526002602090815260408083209490945581546001600160a01b039081168352600582528483208054600160ff199182168117909255308552868520805482168317905560125483168552868520805482168317905560135490921684528584208054909216179055925168056bc75e2d631000008152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000445565b6000826200024e57506000620002cb565b60006200025c8385620003b4565b9050826200026b8583620003d6565b14620002c85760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b6000620002c883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200031b60201b60201c565b600081836200033f5760405162461bcd60e51b8152600401620002bf9190620003ed565b5060006200034e8486620003d6565b95945050505050565b634e487b7160e01b600052601260045260246000fd5b6000826200037f576200037f62000357565b500690565b634e487b7160e01b600052601160045260246000fd5b600082821015620003af57620003af62000384565b500390565b6000816000190483118215151615620003d157620003d162000384565b500290565b600082620003e857620003e862000357565b500490565b600060208083528351808285015260005b818110156200041c57858101830151858201604001528201620003fe565b818111156200042f576000604083870101525b50601f01601f1916929092016040019392505050565b6124a180620004556000396000f3fe6080604052600436106101e65760003560e01c806374010ece11610102578063a2a957bb11610095578063c492f04611610064578063c492f04614610562578063dd62ed3e14610582578063ea1644d5146105c8578063f2fde38b146105e857600080fd5b8063a2a957bb146104dd578063a9059cbb146104fd578063bfd792841461051d578063c3c8cd801461054d57600080fd5b80638da5cb5b116100d15780638da5cb5b146104895780638f9a55c0146104a757806395d89b411461021457806398a5c315146104bd57600080fd5b806374010ece14610411578063751039fc146104315780637d1db4a5146104465780637f2feddc1461045c57600080fd5b8063313ce5671161017a5780636d8aa8f8116101495780636d8aa8f8146103a75780636fc3eaec146103c757806370a08231146103dc578063715018a6146103fc57600080fd5b8063313ce5671461032b57806349bd5a5e1461034757806349ff14e7146103675780636b9990531461038757600080fd5b806318160ddd116101b657806318160ddd146102ba5780631eed1ac8146102e057806323b872dd146102f55780632fd689e31461031557600080fd5b8062b8cf2a146101f257806306fdde0314610214578063095ea7b3146102525780631694505e1461028257600080fd5b366101ed57005b600080fd5b3480156101fe57600080fd5b5061021261020d366004611fa5565b610608565b005b34801561022057600080fd5b50604080518082018252600681526550655065414960d01b60208201529051610249919061206a565b60405180910390f35b34801561025e57600080fd5b5061027261026d3660046120bf565b6106a7565b6040519015158152602001610249565b34801561028e57600080fd5b506014546102a2906001600160a01b031681565b6040516001600160a01b039091168152602001610249565b3480156102c657600080fd5b5068056bc75e2d631000005b604051908152602001610249565b3480156102ec57600080fd5b506102126106be565b34801561030157600080fd5b506102726103103660046120eb565b610aa2565b34801561032157600080fd5b506102d260185481565b34801561033757600080fd5b5060405160098152602001610249565b34801561035357600080fd5b506015546102a2906001600160a01b031681565b34801561037357600080fd5b506102126103823660046120eb565b610b0b565b34801561039357600080fd5b506102126103a236600461212c565b610b47565b3480156103b357600080fd5b506102126103c2366004612157565b610b92565b3480156103d357600080fd5b50610212610bda565b3480156103e857600080fd5b506102d26103f736600461212c565b610c25565b34801561040857600080fd5b50610212610c47565b34801561041d57600080fd5b5061021261042c366004612174565b610cbb565b34801561043d57600080fd5b50610212610d17565b34801561045257600080fd5b506102d260165481565b34801561046857600080fd5b506102d261047736600461212c565b60116020526000908152604090205481565b34801561049557600080fd5b506000546001600160a01b03166102a2565b3480156104b357600080fd5b506102d260175481565b3480156104c957600080fd5b506102126104d8366004612174565b610d55565b3480156104e957600080fd5b506102126104f836600461218d565b610d84565b34801561050957600080fd5b506102726105183660046120bf565b610f34565b34801561052957600080fd5b5061027261053836600461212c565b60106020526000908152604090205460ff1681565b34801561055957600080fd5b50610212610f41565b34801561056e57600080fd5b5061021261057d3660046121bf565b610f95565b34801561058e57600080fd5b506102d261059d366004612245565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156105d457600080fd5b506102126105e3366004612174565b611036565b3480156105f457600080fd5b5061021261060336600461212c565b611092565b6000546001600160a01b0316331461063b5760405162461bcd60e51b81526004016106329061227e565b60405180910390fd5b60005b81518110156106a35760016010600084848151811061065f5761065f6122b3565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061069b816122df565b91505061063e565b5050565b60006106b4338484611244565b5060015b92915050565b6000546001600160a01b031633146106e85760405162461bcd60e51b81526004016106329061227e565b601554600160a01b900460ff16156107425760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610632565b601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915561078090309068056bc75e2d63100000611244565b601460009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156107ce57600080fd5b505afa1580156107e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080691906122fa565b6001600160a01b031663c9c6539630601460009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561086357600080fd5b505afa158015610877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089b91906122fa565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156108e357600080fd5b505af11580156108f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091b91906122fa565b601580546001600160a01b0319166001600160a01b039283161790556014541663f305d719473061094b81610c25565b6000806109606000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b1580156109c357600080fd5b505af11580156109d7573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906109fc9190612317565b505060155460145460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b390604401602060405180830381600087803b158015610a5057600080fd5b505af1158015610a64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a889190612345565b506015805462ff00ff60a01b19166201000160a01b179055565b6000610aaf848484611368565b610b018433610afc85604051806060016040528060288152602001612444602891396001600160a01b038a16600090815260046020908152604080832033845290915290205491906118a4565b611244565b5060019392505050565b6000546001600160a01b03163314610b355760405162461bcd60e51b81526004016106329061227e565b610b4283838360006118de565b505050565b6000546001600160a01b03163314610b715760405162461bcd60e51b81526004016106329061227e565b6001600160a01b03166000908152601060205260409020805460ff19169055565b6000546001600160a01b03163314610bbc5760405162461bcd60e51b81526004016106329061227e565b60158054911515600160b01b0260ff60b01b19909216919091179055565b6012546001600160a01b0316336001600160a01b03161480610c0f57506013546001600160a01b0316336001600160a01b0316145b610c1857600080fd5b47610c228161190c565b50565b6001600160a01b0381166000908152600260205260408120546106b8906119a1565b6000546001600160a01b03163314610c715760405162461bcd60e51b81526004016106329061227e565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610ce55760405162461bcd60e51b81526004016106329061227e565b60008111610cf257600080fd5b6064610d078268056bc75e2d63100000612362565b610d119190612381565b60165550565b6000546001600160a01b03163314610d415760405162461bcd60e51b81526004016106329061227e565b68056bc75e2d631000006016819055601755565b6000546001600160a01b03163314610d7f5760405162461bcd60e51b81526004016106329061227e565b601855565b6000546001600160a01b03163314610dae5760405162461bcd60e51b81526004016106329061227e565b8315610e0a5760405162461bcd60e51b815260206004820152602560248201527f4275792072657761726473206d757374206265206265747765656e20302520616044820152646e6420302560d81b6064820152608401610632565b6063821115610e665760405162461bcd60e51b815260206004820152602260248201527f42757920746178206d757374206265206265747765656e20302520616e642039604482015261392560f01b6064820152608401610632565b8215610ec35760405162461bcd60e51b815260206004820152602660248201527f53656c6c2072657761726473206d757374206265206265747765656e20302520604482015265616e6420302560d01b6064820152608401610632565b6063811115610f205760405162461bcd60e51b815260206004820152602360248201527f53656c6c20746178206d757374206265206265747765656e20302520616e642060448201526239392560e81b6064820152608401610632565b600893909355600a91909155600955600b55565b60006106b4338484611368565b6012546001600160a01b0316336001600160a01b03161480610f7657506013546001600160a01b0316336001600160a01b0316145b610f7f57600080fd5b6000610f8a30610c25565b9050610c2281611a1e565b6000546001600160a01b03163314610fbf5760405162461bcd60e51b81526004016106329061227e565b60005b82811015611030578160056000868685818110610fe157610fe16122b3565b9050602002016020810190610ff6919061212c565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611028816122df565b915050610fc2565b50505050565b6000546001600160a01b031633146110605760405162461bcd60e51b81526004016106329061227e565b6000811161106d57600080fd5b60646110828268056bc75e2d63100000612362565b61108c9190612381565b60175550565b6000546001600160a01b031633146110bc5760405162461bcd60e51b81526004016106329061227e565b6001600160a01b0381166111215760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610632565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008261118b575060006106b8565b60006111978385612362565b9050826111a48583612381565b146111fb5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610632565b9392505050565b60006111fb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ba7565b6001600160a01b0383166112a65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610632565b6001600160a01b0382166113075760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610632565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166113cc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610632565b6001600160a01b03821661142e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610632565b600081116114905760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610632565b6000546001600160a01b038481169116148015906114bc57506000546001600160a01b03838116911614155b1561179d57601554600160a01b900460ff16611555576000546001600160a01b038481169116146115555760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610632565b6016548111156115a75760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610632565b6001600160a01b03831660009081526010602052604090205460ff161580156115e957506001600160a01b03821660009081526010602052604090205460ff16155b6116415760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b6064820152608401610632565b6015546001600160a01b038381169116146116c6576017548161166384610c25565b61166d91906123a3565b106116c65760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610632565b60006116d130610c25565b6018546016549192508210159082106116ea5760165491505b8080156117015750601554600160a81b900460ff16155b801561171b57506015546001600160a01b03868116911614155b80156117305750601554600160b01b900460ff165b801561175557506001600160a01b03851660009081526005602052604090205460ff16155b801561177a57506001600160a01b03841660009081526005602052604090205460ff16155b1561179a5761178882611a1e565b478015611798576117984761190c565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff16806117df57506001600160a01b03831660009081526005602052604090205460ff165b8061181157506015546001600160a01b0385811691161480159061181157506015546001600160a01b03848116911614155b1561181e57506000611898565b6015546001600160a01b03858116911614801561184957506014546001600160a01b03848116911614155b1561185b57600854600c55600954600d555b6015546001600160a01b03848116911614801561188657506014546001600160a01b03858116911614155b1561189857600a54600c55600b54600d555b611030848484846118de565b600081848411156118c85760405162461bcd60e51b8152600401610632919061206a565b5060006118d584866123bb565b95945050505050565b806118eb576118eb611bd5565b6118f6848484611c03565b8061103057611030600e54600c55600f54600d55565b6013546001600160a01b03166108fc611931600561192b85600361117c565b90611202565b6040518115909202916000818181858888f19350505050158015611959573d6000803e3d6000fd5b506012546001600160a01b03166108fc611979600561192b85600261117c565b6040518115909202916000818181858888f193505050501580156106a3573d6000803e3d6000fd5b6000600654821115611a085760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610632565b6000611a12611cfa565b90506111fb8382611202565b6015805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611a6657611a666122b3565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611aba57600080fd5b505afa158015611ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af291906122fa565b81600181518110611b0557611b056122b3565b6001600160a01b039283166020918202929092010152601454611b2b9130911684611244565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac94790611b649085906000908690309042906004016123d2565b600060405180830381600087803b158015611b7e57600080fd5b505af1158015611b92573d6000803e3d6000fd5b50506015805460ff60a81b1916905550505050565b60008183611bc85760405162461bcd60e51b8152600401610632919061206a565b5060006118d58486612381565b600c54158015611be55750600d54155b15611bec57565b600c8054600e55600d8054600f5560009182905555565b600080600080600080611c1587611d1d565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150611c479087611d7a565b6001600160a01b03808b1660009081526002602052604080822093909355908a1681522054611c769086611dbc565b6001600160a01b038916600090815260026020526040902055611c9881611e1b565b611ca28483611e65565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611ce791815260200190565b60405180910390a3505050505050505050565b6000806000611d07611e89565b9092509050611d168282611202565b9250505090565b6000806000806000806000806000611d3a8a600c54600d54611ecb565b9250925092506000611d4a611cfa565b90506000806000611d5d8e878787611f1a565b919e509c509a509598509396509194505050505091939550919395565b60006111fb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506118a4565b600080611dc983856123a3565b9050838110156111fb5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610632565b6000611e25611cfa565b90506000611e33838361117c565b30600090815260026020526040902054909150611e509082611dbc565b30600090815260026020526040902055505050565b600654611e729083611d7a565b600655600754611e829082611dbc565b6007555050565b600654600090819068056bc75e2d63100000611ea58282611202565b821015611ec25750506006549268056bc75e2d6310000092509050565b90939092509050565b6000808080611edf606461192b898961117c565b90506000611ef2606461192b8a8961117c565b90506000611f0a82611f048b86611d7a565b90611d7a565b9992985090965090945050505050565b6000808080611f29888661117c565b90506000611f37888761117c565b90506000611f45888861117c565b90506000611f5782611f048686611d7a565b939b939a50919850919650505050505050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610c2257600080fd5b8035611fa081611f80565b919050565b60006020808385031215611fb857600080fd5b823567ffffffffffffffff80821115611fd057600080fd5b818501915085601f830112611fe457600080fd5b813581811115611ff657611ff6611f6a565b8060051b604051601f19603f8301168101818110858211171561201b5761201b611f6a565b60405291825284820192508381018501918883111561203957600080fd5b938501935b8285101561205e5761204f85611f95565b8452938501939285019261203e565b98975050505050505050565b600060208083528351808285015260005b818110156120975785810183015185820160400152820161207b565b818111156120a9576000604083870101525b50601f01601f1916929092016040019392505050565b600080604083850312156120d257600080fd5b82356120dd81611f80565b946020939093013593505050565b60008060006060848603121561210057600080fd5b833561210b81611f80565b9250602084013561211b81611f80565b929592945050506040919091013590565b60006020828403121561213e57600080fd5b81356111fb81611f80565b8015158114610c2257600080fd5b60006020828403121561216957600080fd5b81356111fb81612149565b60006020828403121561218657600080fd5b5035919050565b600080600080608085870312156121a357600080fd5b5050823594602084013594506040840135936060013592509050565b6000806000604084860312156121d457600080fd5b833567ffffffffffffffff808211156121ec57600080fd5b818601915086601f83011261220057600080fd5b81358181111561220f57600080fd5b8760208260051b850101111561222457600080fd5b6020928301955093505084013561223a81612149565b809150509250925092565b6000806040838503121561225857600080fd5b823561226381611f80565b9150602083013561227381611f80565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156122f3576122f36122c9565b5060010190565b60006020828403121561230c57600080fd5b81516111fb81611f80565b60008060006060848603121561232c57600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561235757600080fd5b81516111fb81612149565b600081600019048311821515161561237c5761237c6122c9565b500290565b60008261239e57634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156123b6576123b66122c9565b500190565b6000828210156123cd576123cd6122c9565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124225784516001600160a01b0316835293830193918301916001016123fd565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122084806dd7b7ee2d7e41cba5461e2f90a7d014d18ddf4612c378afed2699dd0ae864736f6c63430008090033
Deployed Bytecode
0x6080604052600436106101e65760003560e01c806374010ece11610102578063a2a957bb11610095578063c492f04611610064578063c492f04614610562578063dd62ed3e14610582578063ea1644d5146105c8578063f2fde38b146105e857600080fd5b8063a2a957bb146104dd578063a9059cbb146104fd578063bfd792841461051d578063c3c8cd801461054d57600080fd5b80638da5cb5b116100d15780638da5cb5b146104895780638f9a55c0146104a757806395d89b411461021457806398a5c315146104bd57600080fd5b806374010ece14610411578063751039fc146104315780637d1db4a5146104465780637f2feddc1461045c57600080fd5b8063313ce5671161017a5780636d8aa8f8116101495780636d8aa8f8146103a75780636fc3eaec146103c757806370a08231146103dc578063715018a6146103fc57600080fd5b8063313ce5671461032b57806349bd5a5e1461034757806349ff14e7146103675780636b9990531461038757600080fd5b806318160ddd116101b657806318160ddd146102ba5780631eed1ac8146102e057806323b872dd146102f55780632fd689e31461031557600080fd5b8062b8cf2a146101f257806306fdde0314610214578063095ea7b3146102525780631694505e1461028257600080fd5b366101ed57005b600080fd5b3480156101fe57600080fd5b5061021261020d366004611fa5565b610608565b005b34801561022057600080fd5b50604080518082018252600681526550655065414960d01b60208201529051610249919061206a565b60405180910390f35b34801561025e57600080fd5b5061027261026d3660046120bf565b6106a7565b6040519015158152602001610249565b34801561028e57600080fd5b506014546102a2906001600160a01b031681565b6040516001600160a01b039091168152602001610249565b3480156102c657600080fd5b5068056bc75e2d631000005b604051908152602001610249565b3480156102ec57600080fd5b506102126106be565b34801561030157600080fd5b506102726103103660046120eb565b610aa2565b34801561032157600080fd5b506102d260185481565b34801561033757600080fd5b5060405160098152602001610249565b34801561035357600080fd5b506015546102a2906001600160a01b031681565b34801561037357600080fd5b506102126103823660046120eb565b610b0b565b34801561039357600080fd5b506102126103a236600461212c565b610b47565b3480156103b357600080fd5b506102126103c2366004612157565b610b92565b3480156103d357600080fd5b50610212610bda565b3480156103e857600080fd5b506102d26103f736600461212c565b610c25565b34801561040857600080fd5b50610212610c47565b34801561041d57600080fd5b5061021261042c366004612174565b610cbb565b34801561043d57600080fd5b50610212610d17565b34801561045257600080fd5b506102d260165481565b34801561046857600080fd5b506102d261047736600461212c565b60116020526000908152604090205481565b34801561049557600080fd5b506000546001600160a01b03166102a2565b3480156104b357600080fd5b506102d260175481565b3480156104c957600080fd5b506102126104d8366004612174565b610d55565b3480156104e957600080fd5b506102126104f836600461218d565b610d84565b34801561050957600080fd5b506102726105183660046120bf565b610f34565b34801561052957600080fd5b5061027261053836600461212c565b60106020526000908152604090205460ff1681565b34801561055957600080fd5b50610212610f41565b34801561056e57600080fd5b5061021261057d3660046121bf565b610f95565b34801561058e57600080fd5b506102d261059d366004612245565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156105d457600080fd5b506102126105e3366004612174565b611036565b3480156105f457600080fd5b5061021261060336600461212c565b611092565b6000546001600160a01b0316331461063b5760405162461bcd60e51b81526004016106329061227e565b60405180910390fd5b60005b81518110156106a35760016010600084848151811061065f5761065f6122b3565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061069b816122df565b91505061063e565b5050565b60006106b4338484611244565b5060015b92915050565b6000546001600160a01b031633146106e85760405162461bcd60e51b81526004016106329061227e565b601554600160a01b900460ff16156107425760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610632565b601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915561078090309068056bc75e2d63100000611244565b601460009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156107ce57600080fd5b505afa1580156107e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080691906122fa565b6001600160a01b031663c9c6539630601460009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561086357600080fd5b505afa158015610877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089b91906122fa565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156108e357600080fd5b505af11580156108f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091b91906122fa565b601580546001600160a01b0319166001600160a01b039283161790556014541663f305d719473061094b81610c25565b6000806109606000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b1580156109c357600080fd5b505af11580156109d7573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906109fc9190612317565b505060155460145460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b390604401602060405180830381600087803b158015610a5057600080fd5b505af1158015610a64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a889190612345565b506015805462ff00ff60a01b19166201000160a01b179055565b6000610aaf848484611368565b610b018433610afc85604051806060016040528060288152602001612444602891396001600160a01b038a16600090815260046020908152604080832033845290915290205491906118a4565b611244565b5060019392505050565b6000546001600160a01b03163314610b355760405162461bcd60e51b81526004016106329061227e565b610b4283838360006118de565b505050565b6000546001600160a01b03163314610b715760405162461bcd60e51b81526004016106329061227e565b6001600160a01b03166000908152601060205260409020805460ff19169055565b6000546001600160a01b03163314610bbc5760405162461bcd60e51b81526004016106329061227e565b60158054911515600160b01b0260ff60b01b19909216919091179055565b6012546001600160a01b0316336001600160a01b03161480610c0f57506013546001600160a01b0316336001600160a01b0316145b610c1857600080fd5b47610c228161190c565b50565b6001600160a01b0381166000908152600260205260408120546106b8906119a1565b6000546001600160a01b03163314610c715760405162461bcd60e51b81526004016106329061227e565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610ce55760405162461bcd60e51b81526004016106329061227e565b60008111610cf257600080fd5b6064610d078268056bc75e2d63100000612362565b610d119190612381565b60165550565b6000546001600160a01b03163314610d415760405162461bcd60e51b81526004016106329061227e565b68056bc75e2d631000006016819055601755565b6000546001600160a01b03163314610d7f5760405162461bcd60e51b81526004016106329061227e565b601855565b6000546001600160a01b03163314610dae5760405162461bcd60e51b81526004016106329061227e565b8315610e0a5760405162461bcd60e51b815260206004820152602560248201527f4275792072657761726473206d757374206265206265747765656e20302520616044820152646e6420302560d81b6064820152608401610632565b6063821115610e665760405162461bcd60e51b815260206004820152602260248201527f42757920746178206d757374206265206265747765656e20302520616e642039604482015261392560f01b6064820152608401610632565b8215610ec35760405162461bcd60e51b815260206004820152602660248201527f53656c6c2072657761726473206d757374206265206265747765656e20302520604482015265616e6420302560d01b6064820152608401610632565b6063811115610f205760405162461bcd60e51b815260206004820152602360248201527f53656c6c20746178206d757374206265206265747765656e20302520616e642060448201526239392560e81b6064820152608401610632565b600893909355600a91909155600955600b55565b60006106b4338484611368565b6012546001600160a01b0316336001600160a01b03161480610f7657506013546001600160a01b0316336001600160a01b0316145b610f7f57600080fd5b6000610f8a30610c25565b9050610c2281611a1e565b6000546001600160a01b03163314610fbf5760405162461bcd60e51b81526004016106329061227e565b60005b82811015611030578160056000868685818110610fe157610fe16122b3565b9050602002016020810190610ff6919061212c565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611028816122df565b915050610fc2565b50505050565b6000546001600160a01b031633146110605760405162461bcd60e51b81526004016106329061227e565b6000811161106d57600080fd5b60646110828268056bc75e2d63100000612362565b61108c9190612381565b60175550565b6000546001600160a01b031633146110bc5760405162461bcd60e51b81526004016106329061227e565b6001600160a01b0381166111215760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610632565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008261118b575060006106b8565b60006111978385612362565b9050826111a48583612381565b146111fb5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610632565b9392505050565b60006111fb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ba7565b6001600160a01b0383166112a65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610632565b6001600160a01b0382166113075760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610632565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166113cc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610632565b6001600160a01b03821661142e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610632565b600081116114905760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610632565b6000546001600160a01b038481169116148015906114bc57506000546001600160a01b03838116911614155b1561179d57601554600160a01b900460ff16611555576000546001600160a01b038481169116146115555760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610632565b6016548111156115a75760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610632565b6001600160a01b03831660009081526010602052604090205460ff161580156115e957506001600160a01b03821660009081526010602052604090205460ff16155b6116415760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b6064820152608401610632565b6015546001600160a01b038381169116146116c6576017548161166384610c25565b61166d91906123a3565b106116c65760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610632565b60006116d130610c25565b6018546016549192508210159082106116ea5760165491505b8080156117015750601554600160a81b900460ff16155b801561171b57506015546001600160a01b03868116911614155b80156117305750601554600160b01b900460ff165b801561175557506001600160a01b03851660009081526005602052604090205460ff16155b801561177a57506001600160a01b03841660009081526005602052604090205460ff16155b1561179a5761178882611a1e565b478015611798576117984761190c565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff16806117df57506001600160a01b03831660009081526005602052604090205460ff165b8061181157506015546001600160a01b0385811691161480159061181157506015546001600160a01b03848116911614155b1561181e57506000611898565b6015546001600160a01b03858116911614801561184957506014546001600160a01b03848116911614155b1561185b57600854600c55600954600d555b6015546001600160a01b03848116911614801561188657506014546001600160a01b03858116911614155b1561189857600a54600c55600b54600d555b611030848484846118de565b600081848411156118c85760405162461bcd60e51b8152600401610632919061206a565b5060006118d584866123bb565b95945050505050565b806118eb576118eb611bd5565b6118f6848484611c03565b8061103057611030600e54600c55600f54600d55565b6013546001600160a01b03166108fc611931600561192b85600361117c565b90611202565b6040518115909202916000818181858888f19350505050158015611959573d6000803e3d6000fd5b506012546001600160a01b03166108fc611979600561192b85600261117c565b6040518115909202916000818181858888f193505050501580156106a3573d6000803e3d6000fd5b6000600654821115611a085760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610632565b6000611a12611cfa565b90506111fb8382611202565b6015805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611a6657611a666122b3565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611aba57600080fd5b505afa158015611ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af291906122fa565b81600181518110611b0557611b056122b3565b6001600160a01b039283166020918202929092010152601454611b2b9130911684611244565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac94790611b649085906000908690309042906004016123d2565b600060405180830381600087803b158015611b7e57600080fd5b505af1158015611b92573d6000803e3d6000fd5b50506015805460ff60a81b1916905550505050565b60008183611bc85760405162461bcd60e51b8152600401610632919061206a565b5060006118d58486612381565b600c54158015611be55750600d54155b15611bec57565b600c8054600e55600d8054600f5560009182905555565b600080600080600080611c1587611d1d565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150611c479087611d7a565b6001600160a01b03808b1660009081526002602052604080822093909355908a1681522054611c769086611dbc565b6001600160a01b038916600090815260026020526040902055611c9881611e1b565b611ca28483611e65565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611ce791815260200190565b60405180910390a3505050505050505050565b6000806000611d07611e89565b9092509050611d168282611202565b9250505090565b6000806000806000806000806000611d3a8a600c54600d54611ecb565b9250925092506000611d4a611cfa565b90506000806000611d5d8e878787611f1a565b919e509c509a509598509396509194505050505091939550919395565b60006111fb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506118a4565b600080611dc983856123a3565b9050838110156111fb5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610632565b6000611e25611cfa565b90506000611e33838361117c565b30600090815260026020526040902054909150611e509082611dbc565b30600090815260026020526040902055505050565b600654611e729083611d7a565b600655600754611e829082611dbc565b6007555050565b600654600090819068056bc75e2d63100000611ea58282611202565b821015611ec25750506006549268056bc75e2d6310000092509050565b90939092509050565b6000808080611edf606461192b898961117c565b90506000611ef2606461192b8a8961117c565b90506000611f0a82611f048b86611d7a565b90611d7a565b9992985090965090945050505050565b6000808080611f29888661117c565b90506000611f37888761117c565b90506000611f45888861117c565b90506000611f5782611f048686611d7a565b939b939a50919850919650505050505050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610c2257600080fd5b8035611fa081611f80565b919050565b60006020808385031215611fb857600080fd5b823567ffffffffffffffff80821115611fd057600080fd5b818501915085601f830112611fe457600080fd5b813581811115611ff657611ff6611f6a565b8060051b604051601f19603f8301168101818110858211171561201b5761201b611f6a565b60405291825284820192508381018501918883111561203957600080fd5b938501935b8285101561205e5761204f85611f95565b8452938501939285019261203e565b98975050505050505050565b600060208083528351808285015260005b818110156120975785810183015185820160400152820161207b565b818111156120a9576000604083870101525b50601f01601f1916929092016040019392505050565b600080604083850312156120d257600080fd5b82356120dd81611f80565b946020939093013593505050565b60008060006060848603121561210057600080fd5b833561210b81611f80565b9250602084013561211b81611f80565b929592945050506040919091013590565b60006020828403121561213e57600080fd5b81356111fb81611f80565b8015158114610c2257600080fd5b60006020828403121561216957600080fd5b81356111fb81612149565b60006020828403121561218657600080fd5b5035919050565b600080600080608085870312156121a357600080fd5b5050823594602084013594506040840135936060013592509050565b6000806000604084860312156121d457600080fd5b833567ffffffffffffffff808211156121ec57600080fd5b818601915086601f83011261220057600080fd5b81358181111561220f57600080fd5b8760208260051b850101111561222457600080fd5b6020928301955093505084013561223a81612149565b809150509250925092565b6000806040838503121561225857600080fd5b823561226381611f80565b9150602083013561227381611f80565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156122f3576122f36122c9565b5060010190565b60006020828403121561230c57600080fd5b81516111fb81611f80565b60008060006060848603121561232c57600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561235757600080fd5b81516111fb81612149565b600081600019048311821515161561237c5761237c6122c9565b500290565b60008261239e57634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156123b6576123b66122c9565b500190565b6000828210156123cd576123cd6122c9565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124225784516001600160a01b0316835293830193918301916001016123fd565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122084806dd7b7ee2d7e41cba5461e2f90a7d014d18ddf4612c378afed2699dd0ae864736f6c63430008090033
Deployed Bytecode Sourcemap
4201:14604:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13277:169;;;;;;;;;;-1:-1:-1;13277:169:0;;;;;:::i;:::-;;:::i;:::-;;6426:83;;;;;;;;;;-1:-1:-1;6496:5:0;;;;;;;;;;;-1:-1:-1;;;6496:5:0;;;;6426:83;;;;6496:5;6426:83;:::i;:::-;;;;;;;;7358:193;;;;;;;;;;-1:-1:-1;7358:193:0;;;;;:::i;:::-;;:::i;:::-;;;2634:14:1;;2627:22;2609:41;;2597:2;2582:18;7358:193:0;2469:187:1;5539:41:0;;;;;;;;;;-1:-1:-1;5539:41:0;;;;-1:-1:-1;;;;;5539:41:0;;;;;;-1:-1:-1;;;;;2851:32:1;;;2833:51;;2821:2;2806:18;5539:41:0;2661:229:1;6706:95:0;;;;;;;;;;-1:-1:-1;4751:20:0;6706:95;;;3041:25:1;;;3029:2;3014:18;6706:95:0;2895:177:1;12108:671:0;;;;;;;;;;;;;:::i;7560:446::-;;;;;;;;;;-1:-1:-1;7560:446:0;;;;;:::i;:::-;;:::i;5854:61::-;;;;;;;;;;;;;;;;6614:83;;;;;;;;;;-1:-1:-1;6614:83:0;;4422:1;3680:36:1;;3668:2;3653:18;6614:83:0;3538:184:1;5587:28:0;;;;;;;;;;-1:-1:-1;5587:28:0;;;;-1:-1:-1;;;;;5587:28:0;;;14880:156;;;;;;;;;;-1:-1:-1;14880:156:0;;;;;:::i;:::-;;:::i;13455:92::-;;;;;;;;;;-1:-1:-1;13455:92:0;;;;;:::i;:::-;;:::i;17978:101::-;;;;;;;;;;-1:-1:-1;17978:101:0;;;;;:::i;:::-;;:::i;13033:235::-;;;;;;;;;;;;;:::i;6810:138::-;;;;;;;;;;-1:-1:-1;6810:138:0;;;;;:::i;:::-;;:::i;1675:148::-;;;;;;;;;;;;;:::i;18088:166::-;;;;;;;;;;-1:-1:-1;18088:166:0;;;;;:::i;:::-;;:::i;18439:118::-;;;;;;;;;;;;;:::i;5731:53::-;;;;;;;;;;;;;;;;5278:43;;;;;;;;;;-1:-1:-1;5278:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;1459:79;;;;;;;;;;-1:-1:-1;1497:7:0;1524:6;-1:-1:-1;;;;;1524:6:0;1459:79;;5791:55;;;;;;;;;;;;;;;;17830:139;;;;;;;;;;-1:-1:-1;17830:139:0;;;;;:::i;:::-;;:::i;17128:693::-;;;;;;;;;;-1:-1:-1;17128:693:0;;;;;:::i;:::-;;:::i;6957:199::-;;;;;;;;;;-1:-1:-1;6957:199:0;;;;;:::i;:::-;;:::i;5240:36::-;;;;;;;;;;-1:-1:-1;5240:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12788:236;;;;;;;;;;;;;:::i;18566:234::-;;;;;;;;;;-1:-1:-1;18566:234:0;;;;;:::i;:::-;;:::i;7165:184::-;;;;;;;;;;-1:-1:-1;7165:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7314:18:0;;;7282:7;7314:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7165:184;18262:169;;;;;;;;;;-1:-1:-1;18262:169:0;;;;;:::i;:::-;;:::i;1832:244::-;;;;;;;;;;-1:-1:-1;1832:244:0;;;;;:::i;:::-;;:::i;13277:169::-;1587:6;;-1:-1:-1;;;;;1587:6:0;287:10;1587:22;1579:67;;;;-1:-1:-1;;;1579:67:0;;;;;;;:::i;:::-;;;;;;;;;13353:9:::1;13348:91;13372:5;:12;13368:1;:16;13348:91;;;13423:4;13406;:14;13411:5;13417:1;13411:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;13406:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;13406:14:0;:21;;-1:-1:-1;;13406:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13386:3;::::1;::::0;::::1;:::i;:::-;;;;13348:91;;;;13277:169:::0;:::o;7358:193::-;7460:4;7482:39;287:10;7505:7;7514:6;7482:8;:39::i;:::-;-1:-1:-1;7539:4:0;7358:193;;;;;:::o;12108:671::-;1587:6;;-1:-1:-1;;;;;1587:6:0;287:10;1587:22;1579:67;;;;-1:-1:-1;;;1579:67:0;;;;;;;:::i;:::-;12171:11:::1;::::0;-1:-1:-1;;;12171:11:0;::::1;;;12170:12;12162:48;;;::::0;-1:-1:-1;;;12162:48:0;;7246:2:1;12162:48:0::1;::::0;::::1;7228:21:1::0;7285:2;7265:18;;;7258:30;7324:25;7304:18;;;7297:53;7367:18;;12162:48:0::1;7044:347:1::0;12162:48:0::1;12221:15;:80:::0;;-1:-1:-1;;;;;;12221:80:0::1;12258:42;12221:80:::0;;::::1;::::0;;;12312:58:::1;::::0;12329:4:::1;::::0;4751:20:::1;12312:8;:58::i;:::-;12415:15;;;;;;;;;-1:-1:-1::0;;;;;12415:15:0::1;-1:-1:-1::0;;;;;12415:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12397:55:0::1;;12461:4;12468:15;;;;;;;;;-1:-1:-1::0;;;;;12468:15:0::1;-1:-1:-1::0;;;;;12468:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12397:94;::::0;-1:-1:-1;;;;;;12397:94:0::1;::::0;;;;;;-1:-1:-1;;;;;7882:15:1;;;12397:94:0::1;::::0;::::1;7864:34:1::0;7934:15;;7914:18;;;7907:43;7799:18;;12397:94:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12381:13;:110:::0;;-1:-1:-1;;;;;;12381:110:0::1;-1:-1:-1::0;;;;;12381:110:0;;::::1;;::::0;;12502:15:::1;::::0;::::1;:31;12541:21;12572:4;12578:24;12572:4:::0;12578:9:::1;:24::i;:::-;12603:1;12605::::0;12607:7:::1;1497::::0;1524:6;-1:-1:-1;;;;;1524:6:0;;1459:79;12607:7:::1;12502:129;::::0;::::1;::::0;;;-1:-1:-1;;;;;;12502:129:0;;;-1:-1:-1;;;;;8320:15:1;;;12502:129:0::1;::::0;::::1;8302:34:1::0;8352:18;;;8345:34;;;;8395:18;;;8388:34;;;;8438:18;;;8431:34;8502:15;;;8481:19;;;8474:44;12615:15:0::1;8534:19:1::0;;;8527:35;8236:19;;12502:129:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;12649:13:0::1;::::0;12680:15:::1;::::0;12642:71:::1;::::0;-1:-1:-1;;;12642:71:0;;-1:-1:-1;;;;;12680:15:0;;::::1;12642:71;::::0;::::1;9058:51:1::0;-1:-1:-1;;9125:18:1;;;9118:34;12649:13:0;::::1;::::0;-1:-1:-1;12642:29:0::1;::::0;9031:18:1;;12642:71:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;12724:11:0::1;:18:::0;;-1:-1:-1;;;;12753:18:0;-1:-1:-1;;;12753:18:0;;;12108:671::o;7560:446::-;7692:4;7709:36;7719:6;7727:9;7738:6;7709:9;:36::i;:::-;7756:220;7779:6;287:10;7827:138;7883:6;7827:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7827:19:0;;;;;;:11;:19;;;;;;;;287:10;7827:33;;;;;;;;;;:37;:138::i;:::-;7756:8;:220::i;:::-;-1:-1:-1;7994:4:0;7560:446;;;;;:::o;14880:156::-;1587:6;;-1:-1:-1;;;;;1587:6:0;287:10;1587:22;1579:67;;;;-1:-1:-1;;;1579:67:0;;;;;;;:::i;:::-;14980:48:::1;14995:6;15003:9;15014:6;15022:5;14980:14;:48::i;:::-;14880:156:::0;;;:::o;13455:92::-;1587:6;;-1:-1:-1;;;;;1587:6:0;287:10;1587:22;1579:67;;;;-1:-1:-1;;;1579:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13519:12:0::1;13534:5;13519:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;13519:20:0::1;::::0;;13455:92::o;17978:101::-;1587:6;;-1:-1:-1;;;;;1587:6:0;287:10;1587:22;1579:67;;;;-1:-1:-1;;;1579:67:0;;;;;;;:::i;:::-;18045:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;18045:26:0::1;-1:-1:-1::0;;;;18045:26:0;;::::1;::::0;;;::::1;::::0;;17978:101::o;13033:235::-;13099:19;;-1:-1:-1;;;;;13099:19:0;287:10;-1:-1:-1;;;;;13083:35:0;;:72;;;-1:-1:-1;13138:17:0;;-1:-1:-1;;;;;13138:17:0;287:10;-1:-1:-1;;;;;13122:33:0;;13083:72;13075:81;;;;;;13196:21;13228:32;13196:21;13228:12;:32::i;:::-;13064:204;13033:235::o;6810:138::-;-1:-1:-1;;;;;6923:16:0;;6876:7;6923:16;;;:7;:16;;;;;;6903:37;;:19;:37::i;1675:148::-;1587:6;;-1:-1:-1;;;;;1587:6:0;287:10;1587:22;1579:67;;;;-1:-1:-1;;;1579:67:0;;;;;;;:::i;:::-;1782:1:::1;1766:6:::0;;1745:40:::1;::::0;-1:-1:-1;;;;;1766:6:0;;::::1;::::0;1745:40:::1;::::0;1782:1;;1745:40:::1;1813:1;1796:19:::0;;-1:-1:-1;;;;;;1796:19:0::1;::::0;;1675:148::o;18088:166::-;1587:6;;-1:-1:-1;;;;;1587:6:0;287:10;1587:22;1579:67;;;;-1:-1:-1;;;1579:67:0;;;;;;;:::i;:::-;18186:1:::1;18172:13;:15;18164:24;;;::::0;::::1;;18243:3;18215:23;18225:13:::0;4751:20:::1;18215:23;:::i;:::-;18214:32;;;;:::i;:::-;18199:12;:47:::0;-1:-1:-1;18088:166:0:o;18439:118::-;1587:6;;-1:-1:-1;;;;;1587:6:0;287:10;1587:22;1579:67;;;;-1:-1:-1;;;1579:67:0;;;;;;;:::i;:::-;4751:20:::1;18492:12;:22:::0;;;18525:14:::1;:24:::0;18439:118::o;17830:139::-;1587:6;;-1:-1:-1;;;;;1587:6:0;287:10;1587:22;1579:67;;;;-1:-1:-1;;;1579:67:0;;;;;;;:::i;:::-;17921:19:::1;:40:::0;17830:139::o;17128:693::-;1587:6;;-1:-1:-1;;;;;1587:6:0;287:10;1587:22;1579:67;;;;-1:-1:-1;;;1579:67:0;;;;;;;:::i;:::-;17292:18;;17262:90:::1;;;::::0;-1:-1:-1;;;17262:90:0;;10010:2:1;17262:90:0::1;::::0;::::1;9992:21:1::0;10049:2;10029:18;;;10022:30;10088:34;10068:18;;;10061:62;-1:-1:-1;;;10139:18:1;;;10132:35;10184:19;;17262:90:0::1;9808:401:1::0;17262:90:0::1;17406:2;17391:11;:17;;17363:84;;;::::0;-1:-1:-1;;;17363:84:0;;10416:2:1;17363:84:0::1;::::0;::::1;10398:21:1::0;10455:2;10435:18;;;10428:30;10494:34;10474:18;;;10467:62;-1:-1:-1;;;10545:18:1;;;10538:32;10587:19;;17363:84:0::1;10214:398:1::0;17363:84:0::1;17489:19:::0;;17458:93:::1;;;::::0;-1:-1:-1;;;17458:93:0;;10819:2:1;17458:93:0::1;::::0;::::1;10801:21:1::0;10858:2;10838:18;;;10831:30;10897:34;10877:18;;;10870:62;-1:-1:-1;;;10948:18:1;;;10941:36;10994:19;;17458:93:0::1;10617:402:1::0;17458:93:0::1;17607:2;17591:12;:18;;17562:87;;;::::0;-1:-1:-1;;;17562:87:0;;11226:2:1;17562:87:0::1;::::0;::::1;11208:21:1::0;11265:2;11245:18;;;11238:30;11304:34;11284:18;;;11277:62;-1:-1:-1;;;11355:18:1;;;11348:33;11398:19;;17562:87:0::1;11024:399:1::0;17562:87:0::1;17662:14;:30:::0;;;;17703:15:::1;:32:::0;;;;17746:12:::1;:26:::0;17783:13:::1;:28:::0;17128:693::o;6957:199::-;7062:4;7084:42;287:10;7108:9;7119:6;7084:9;:42::i;12788:236::-;12854:19;;-1:-1:-1;;;;;12854:19:0;287:10;-1:-1:-1;;;;;12838:35:0;;:72;;;-1:-1:-1;12893:17:0;;-1:-1:-1;;;;;12893:17:0;287:10;-1:-1:-1;;;;;12877:33:0;;12838:72;12830:81;;;;;;12922:23;12948:24;12966:4;12948:9;:24::i;:::-;12922:50;;12983:33;13000:15;12983:16;:33::i;18566:234::-;1587:6;;-1:-1:-1;;;;;1587:6:0;287:10;1587:22;1579:67;;;;-1:-1:-1;;;1579:67:0;;;;;;;:::i;:::-;18683:9:::1;18679:114;18698:19:::0;;::::1;18679:114;;;18773:8;18739:18;:31;18758:8;;18767:1;18758:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18739:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18739:31:0;:42;;-1:-1:-1;;18739:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18719:3;::::1;::::0;::::1;:::i;:::-;;;;18679:114;;;;18566:234:::0;;;:::o;18262:169::-;1587:6;;-1:-1:-1;;;;;1587:6:0;287:10;1587:22;1579:67;;;;-1:-1:-1;;;1579:67:0;;;;;;;:::i;:::-;18361:1:::1;18347:13;:15;18339:24;;;::::0;::::1;;18420:3;18392:23;18402:13:::0;4751:20:::1;18392:23;:::i;:::-;18391:32;;;;:::i;:::-;18374:14;:49:::0;-1:-1:-1;18262:169:0:o;1832:244::-;1587:6;;-1:-1:-1;;;;;1587:6:0;287:10;1587:22;1579:67;;;;-1:-1:-1;;;1579:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1921:22:0;::::1;1913:73;;;::::0;-1:-1:-1;;;1913:73:0;;11630:2:1;1913:73:0::1;::::0;::::1;11612:21:1::0;11669:2;11649:18;;;11642:30;11708:34;11688:18;;;11681:62;-1:-1:-1;;;11759:18:1;;;11752:36;11805:19;;1913:73:0::1;11428:402:1::0;1913:73:0::1;2023:6;::::0;;2002:38:::1;::::0;-1:-1:-1;;;;;2002:38:0;;::::1;::::0;2023:6;::::1;::::0;2002:38:::1;::::0;::::1;2051:6;:17:::0;;-1:-1:-1;;;;;;2051:17:0::1;-1:-1:-1::0;;;;;2051:17:0;;;::::1;::::0;;;::::1;::::0;;1832:244::o;2676:246::-;2734:7;2758:6;2754:47;;-1:-1:-1;2788:1:0;2781:8;;2754:47;2811:9;2823:5;2827:1;2823;:5;:::i;:::-;2811:17;-1:-1:-1;2856:1:0;2847:5;2851:1;2811:17;2847:5;:::i;:::-;:10;2839:56;;;;-1:-1:-1;;;2839:56:0;;12037:2:1;2839:56:0;;;12019:21:1;12076:2;12056:18;;;12049:30;12115:34;12095:18;;;12088:62;-1:-1:-1;;;12166:18:1;;;12159:31;12207:19;;2839:56:0;11835:397:1;2839:56:0;2913:1;2676:246;-1:-1:-1;;;2676:246:0:o;2931:132::-;2989:7;3016:39;3020:1;3023;3016:39;;;;;;;;;;;;;;;;;:3;:39::i;8703:369::-;-1:-1:-1;;;;;8830:19:0;;8822:68;;;;-1:-1:-1;;;8822:68:0;;12439:2:1;8822:68:0;;;12421:21:1;12478:2;12458:18;;;12451:30;12517:34;12497:18;;;12490:62;-1:-1:-1;;;12568:18:1;;;12561:34;12612:19;;8822:68:0;12237:400:1;8822:68:0;-1:-1:-1;;;;;8909:21:0;;8901:68;;;;-1:-1:-1;;;8901:68:0;;12844:2:1;8901:68:0;;;12826:21:1;12883:2;12863:18;;;12856:30;12922:34;12902:18;;;12895:62;-1:-1:-1;;;12973:18:1;;;12966:32;13015:19;;8901:68:0;12642:398:1;8901:68:0;-1:-1:-1;;;;;8980:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9032:32;;3041:25:1;;;9032:32:0;;3014:18:1;9032:32:0;;;;;;;8703:369;;;:::o;9081:2343::-;-1:-1:-1;;;;;9203:18:0;;9195:68;;;;-1:-1:-1;;;9195:68:0;;13247:2:1;9195:68:0;;;13229:21:1;13286:2;13266:18;;;13259:30;13325:34;13305:18;;;13298:62;-1:-1:-1;;;13376:18:1;;;13369:35;13421:19;;9195:68:0;13045:401:1;9195:68:0;-1:-1:-1;;;;;9282:16:0;;9274:64;;;;-1:-1:-1;;;9274:64:0;;13653:2:1;9274:64:0;;;13635:21:1;13692:2;13672:18;;;13665:30;13731:34;13711:18;;;13704:62;-1:-1:-1;;;13782:18:1;;;13775:33;13825:19;;9274:64:0;13451:399:1;9274:64:0;9366:1;9357:6;:10;9349:64;;;;-1:-1:-1;;;9349:64:0;;14057:2:1;9349:64:0;;;14039:21:1;14096:2;14076:18;;;14069:30;14135:34;14115:18;;;14108:62;-1:-1:-1;;;14186:18:1;;;14179:39;14235:19;;9349:64:0;13855:405:1;9349:64:0;1497:7;1524:6;-1:-1:-1;;;;;9431:15:0;;;1524:6;;9431:15;;;;:32;;-1:-1:-1;1497:7:0;1524:6;-1:-1:-1;;;;;9450:13:0;;;1524:6;;9450:13;;9431:32;9427:1265;;;9521:11;;-1:-1:-1;;;9521:11:0;;;;9516:144;;1497:7;1524:6;-1:-1:-1;;;;;9561:15:0;;;1524:6;;9561:15;9553:91;;;;-1:-1:-1;;;9553:91:0;;14467:2:1;9553:91:0;;;14449:21:1;14506:2;14486:18;;;14479:30;14545:34;14525:18;;;14518:62;14616:33;14596:18;;;14589:61;14667:19;;9553:91:0;14265:427:1;9553:91:0;9695:12;;9685:6;:22;;9677:63;;;;-1:-1:-1;;;9677:63:0;;14899:2:1;9677:63:0;;;14881:21:1;14938:2;14918:18;;;14911:30;14977;14957:18;;;14950:58;15025:18;;9677:63:0;14697:352:1;9677:63:0;-1:-1:-1;;;;;9764:10:0;;;;;;:4;:10;;;;;;;;9763:11;:24;;;;-1:-1:-1;;;;;;9779:8:0;;;;;;:4;:8;;;;;;;;9778:9;9763:24;9755:72;;;;-1:-1:-1;;;9755:72:0;;15256:2:1;9755:72:0;;;15238:21:1;15295:2;15275:18;;;15268:30;15334:34;15314:18;;;15307:62;-1:-1:-1;;;15385:18:1;;;15378:33;15428:19;;9755:72:0;15054:399:1;9755:72:0;9854:13;;-1:-1:-1;;;;;9848:19:0;;;9854:13;;9848:19;9845:146;;9921:14;;9912:6;9896:13;9906:2;9896:9;:13::i;:::-;:22;;;;:::i;:::-;:39;9888:87;;;;-1:-1:-1;;;9888:87:0;;15793:2:1;9888:87:0;;;15775:21:1;15832:2;15812:18;;;15805:30;15871:34;15851:18;;;15844:62;-1:-1:-1;;;15922:18:1;;;15915:33;15965:19;;9888:87:0;15591:399:1;9888:87:0;10008:28;10039:24;10057:4;10039:9;:24::i;:::-;10117:19;;10181:12;;10008:55;;-1:-1:-1;10093:43:0;;;;10157:36;;10154:124;;10250:12;;10227:35;;10154:124;10299:7;:18;;;;-1:-1:-1;10311:6:0;;-1:-1:-1;;;10311:6:0;;;;10310:7;10299:18;:43;;;;-1:-1:-1;10329:13:0;;-1:-1:-1;;;;;10321:21:0;;;10329:13;;10321:21;;10299:43;:58;;;;-1:-1:-1;10346:11:0;;-1:-1:-1;;;10346:11:0;;;;10299:58;:87;;;;-1:-1:-1;;;;;;10362:24:0;;;;;;:18;:24;;;;;;;;10361:25;10299:87;:114;;;;-1:-1:-1;;;;;;10391:22:0;;;;;;:18;:22;;;;;;;;10390:23;10299:114;10295:386;;;10434:38;10451:20;10434:16;:38::i;:::-;10520:21;10564:22;;10560:106;;10611:35;10624:21;10611:12;:35::i;:::-;10415:266;10295:386;9465:1227;;9427:1265;-1:-1:-1;;;;;10770:24:0;;10705:12;10770:24;;;:18;:24;;;;;;10720:4;;10770:24;;;:50;;-1:-1:-1;;;;;;10798:22:0;;;;;;:18;:22;;;;;;;;10770:50;10769:102;;;-1:-1:-1;10834:13:0;;-1:-1:-1;;;;;10826:21:0;;;10834:13;;10826:21;;;;:44;;-1:-1:-1;10857:13:0;;-1:-1:-1;;;;;10851:19:0;;;10857:13;;10851:19;;10826:44;10765:597;;;-1:-1:-1;10898:5:0;10765:597;;;10982:13;;-1:-1:-1;;;;;10974:21:0;;;10982:13;;10974:21;:55;;;;-1:-1:-1;11013:15:0;;-1:-1:-1;;;;;10999:30:0;;;11013:15;;10999:30;;10974:55;10971:162;;;11062:14;;11050:9;:26;11105:12;;11095:7;:22;10971:162;11193:13;;-1:-1:-1;;;;;11187:19:0;;;11193:13;;11187:19;:55;;;;-1:-1:-1;11226:15:0;;-1:-1:-1;;;;;11210:32:0;;;11226:15;;11210:32;;11187:55;11183:165;;;11275:15;;11263:9;:27;11319:13;;11309:7;:23;11183:165;11375:41;11390:4;11396:2;11400:6;11408:7;11375:14;:41::i;2443:224::-;2563:7;2599:12;2591:6;;;;2583:29;;;;-1:-1:-1;;;2583:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2623:9:0;2635:5;2639:1;2635;:5;:::i;:::-;2623:17;2443:224;-1:-1:-1;;;;;2443:224:0:o;13556:282::-;13712:7;13707:28;;13721:14;:12;:14::i;:::-;13746:44;13764:6;13772:9;13783:6;13746:17;:44::i;:::-;13806:7;13801:29;;13815:15;8633:17;;8621:9;:29;8671:15;;8661:7;:25;8577:117;11925:174;11982:17;;-1:-1:-1;;;;;11982:17:0;:48;12009:20;12027:1;12009:13;:6;12020:1;12009:10;:13::i;:::-;:17;;:20::i;:::-;11982:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12041:19:0;;-1:-1:-1;;;;;12041:19:0;:50;12070:20;12088:1;12070:13;:6;12081:1;12070:10;:13::i;:20::-;12041:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8015:323;8110:7;8168;;8157;:18;;8135:110;;;;-1:-1:-1;;;8135:110:0;;16327:2:1;8135:110:0;;;16309:21:1;16366:2;16346:18;;;16339:30;16405:34;16385:18;;;16378:62;-1:-1:-1;;;16456:18:1;;;16449:40;16506:19;;8135:110:0;16125:406:1;8135:110:0;8256:19;8278:10;:8;:10::i;:::-;8256:32;-1:-1:-1;8306:24:0;:7;8256:32;8306:11;:24::i;11433:483::-;6010:6;:13;;-1:-1:-1;;;;6010:13:0;-1:-1:-1;;;6010:13:0;;;11535:16:::1;::::0;;11549:1:::1;11535:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11535:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11535:16:0::1;11511:40;;11580:4;11562;11567:1;11562:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11562:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11606:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11606:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11562:7;;11606:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11596:4;11601:1;11596:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11596:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11671:15:::1;::::0;11639:62:::1;::::0;11656:4:::1;::::0;11671:15:::1;11689:11:::0;11639:8:::1;:62::i;:::-;11712:15;::::0;:196:::1;::::0;-1:-1:-1;;;11712:196:0;;-1:-1:-1;;;;;11712:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;11793:11;;11712:15:::1;::::0;11835:4;;11862::::1;::::0;11882:15:::1;::::0;11712:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6046:6:0;:14;;-1:-1:-1;;;;6046:14:0;;;-1:-1:-1;;;;11433:483:0:o;3072:223::-;3192:7;3227:12;3220:5;3212:28;;;;-1:-1:-1;;;3212:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3251:9:0;3263:5;3267:1;3263;:5;:::i;8347:221::-;8394:9;;:14;:30;;;;-1:-1:-1;8412:7:0;;:12;8394:30;8390:43;;;8347:221::o;8390:43::-;8466:9;;;8446:17;:29;8504:7;;;8486:15;:25;-1:-1:-1;8525:13:0;;;;8549:11;8347:221::o;13847:610::-;13994:15;14024:23;14062:12;14089:23;14127:12;14154:13;14181:19;14192:7;14181:10;:19::i;:::-;-1:-1:-1;;;;;14229:15:0;;;;;;:7;:15;;;;;;13979:221;;-1:-1:-1;13979:221:0;;-1:-1:-1;13979:221:0;;-1:-1:-1;13979:221:0;-1:-1:-1;13979:221:0;-1:-1:-1;13979:221:0;-1:-1:-1;14229:28:0;;13979:221;14229:19;:28::i;:::-;-1:-1:-1;;;;;14211:15:0;;;;;;;:7;:15;;;;;;:46;;;;14289:18;;;;;;;:39;;14312:15;14289:22;:39::i;:::-;-1:-1:-1;;;;;14268:18:0;;;;;;:7;:18;;;;;:60;14339:16;14349:5;14339:9;:16::i;:::-;14366:23;14378:4;14384;14366:11;:23::i;:::-;14422:9;-1:-1:-1;;;;;14405:44:0;14414:6;-1:-1:-1;;;;;14405:44:0;;14433:15;14405:44;;;;3041:25:1;;3029:2;3014:18;;2895:177;14405:44:0;;;;;;;;13968:489;;;;;;13847:610;;;:::o;16689:164::-;16731:7;16752:15;16769;16788:19;:17;:19::i;:::-;16751:56;;-1:-1:-1;16751:56:0;-1:-1:-1;16825:20:0;16751:56;;16825:11;:20::i;:::-;16818:27;;;;16689:164;:::o;15044:615::-;15144:7;15166;15188;15210;15232;15254;15290:23;15315:12;15329:13;15359:40;15371:7;15380:9;;15391:7;;15359:11;:40::i;:::-;15289:110;;;;;;15410:19;15432:10;:8;:10::i;:::-;15410:32;;15454:15;15471:23;15496:12;15525:46;15537:7;15546:4;15552:5;15559:11;15525;:46::i;:::-;15453:118;;-1:-1:-1;15453:118:0;-1:-1:-1;15453:118:0;-1:-1:-1;15622:15:0;;-1:-1:-1;15639:4:0;;-1:-1:-1;15645:5:0;;-1:-1:-1;;;;;15044:615:0;;;;;;;:::o;2298:136::-;2356:7;2383:43;2387:1;2390;2383:43;;;;;;;;;;;;;;;;;:3;:43::i;2110:179::-;2168:7;;2200:5;2204:1;2200;:5;:::i;:::-;2188:17;;2229:1;2224;:6;;2216:46;;;;-1:-1:-1;;;2216:46:0;;17723:2:1;2216:46:0;;;17705:21:1;17762:2;17742:18;;;17735:30;17801:29;17781:18;;;17774:57;17848:18;;2216:46:0;17521:351:1;14466:211:0;14519:19;14541:10;:8;:10::i;:::-;14519:32;-1:-1:-1;14562:13:0;14578:22;:5;14519:32;14578:9;:22::i;:::-;14652:4;14636:22;;;;:7;:22;;;;;;14562:38;;-1:-1:-1;14636:33:0;;14562:38;14636:26;:33::i;:::-;14627:4;14611:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;14466:211:0:o;14686:147::-;14764:7;;:17;;14776:4;14764:11;:17::i;:::-;14754:7;:27;14805:10;;:20;;14820:4;14805:14;:20::i;:::-;14792:10;:33;-1:-1:-1;;14686:147:0:o;16862:257::-;16960:7;;16913;;;;4751:20;17028;16960:7;4751:20;17028:11;:20::i;:::-;17018:7;:30;17014:61;;;-1:-1:-1;;17058:7:0;;;4751:20;;-1:-1:-1;16862:257:0;-1:-1:-1;16862:257:0:o;17014:61::-;17094:7;;17103;;-1:-1:-1;16862:257:0;-1:-1:-1;16862:257:0:o;15668:469::-;15837:7;;;;15931:30;15957:3;15931:21;:7;15943:8;15931:11;:21::i;:30::-;15916:45;-1:-1:-1;15972:13:0;15988:28;16012:3;15988:19;:7;16000:6;15988:11;:19::i;:28::-;15972:44;-1:-1:-1;16027:23:0;16053:28;15972:44;16053:17;:7;16065:4;16053:11;:17::i;:::-;:21;;:28::i;:::-;16027:54;16117:4;;-1:-1:-1;16123:5:0;;-1:-1:-1;15668:469:0;;-1:-1:-1;;;;;15668:469:0:o;16146:534::-;16340:7;;;;16437:24;:7;16449:11;16437;:24::i;:::-;16419:42;-1:-1:-1;16472:12:0;16487:21;:4;16496:11;16487:8;:21::i;:::-;16472:36;-1:-1:-1;16519:13:0;16535:22;:5;16545:11;16535:9;:22::i;:::-;16519:38;-1:-1:-1;16568:23:0;16594:28;16519:38;16594:17;:7;16606:4;16594:11;:17::i;:28::-;16641:7;;;;-1:-1:-1;16667:4:0;;-1:-1:-1;16146:534:0;;-1:-1:-1;;;;;;;16146:534:0:o;14:127:1:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:131;-1:-1:-1;;;;;221:31:1;;211:42;;201:70;;267:1;264;257:12;282:134;350:20;;379:31;350:20;379:31;:::i;:::-;282:134;;;:::o;421:1121::-;505:6;536:2;579;567:9;558:7;554:23;550:32;547:52;;;595:1;592;585:12;547:52;635:9;622:23;664:18;705:2;697:6;694:14;691:34;;;721:1;718;711:12;691:34;759:6;748:9;744:22;734:32;;804:7;797:4;793:2;789:13;785:27;775:55;;826:1;823;816:12;775:55;862:2;849:16;884:2;880;877:10;874:36;;;890:18;;:::i;:::-;936:2;933:1;929:10;968:2;962:9;1031:2;1027:7;1022:2;1018;1014:11;1010:25;1002:6;998:38;1086:6;1074:10;1071:22;1066:2;1054:10;1051:18;1048:46;1045:72;;;1097:18;;:::i;:::-;1133:2;1126:22;1183:18;;;1217:15;;;;-1:-1:-1;1259:11:1;;;1255:20;;;1287:19;;;1284:39;;;1319:1;1316;1309:12;1284:39;1343:11;;;;1363:148;1379:6;1374:3;1371:15;1363:148;;;1445:23;1464:3;1445:23;:::i;:::-;1433:36;;1396:12;;;;1489;;;;1363:148;;;1530:6;421:1121;-1:-1:-1;;;;;;;;421:1121:1:o;1547:597::-;1659:4;1688:2;1717;1706:9;1699:21;1749:6;1743:13;1792:6;1787:2;1776:9;1772:18;1765:34;1817:1;1827:140;1841:6;1838:1;1835:13;1827:140;;;1936:14;;;1932:23;;1926:30;1902:17;;;1921:2;1898:26;1891:66;1856:10;;1827:140;;;1985:6;1982:1;1979:13;1976:91;;;2055:1;2050:2;2041:6;2030:9;2026:22;2022:31;2015:42;1976:91;-1:-1:-1;2128:2:1;2107:15;-1:-1:-1;;2103:29:1;2088:45;;;;2135:2;2084:54;;1547:597;-1:-1:-1;;;1547:597:1:o;2149:315::-;2217:6;2225;2278:2;2266:9;2257:7;2253:23;2249:32;2246:52;;;2294:1;2291;2284:12;2246:52;2333:9;2320:23;2352:31;2377:5;2352:31;:::i;:::-;2402:5;2454:2;2439:18;;;;2426:32;;-1:-1:-1;;;2149:315:1:o;3077:456::-;3154:6;3162;3170;3223:2;3211:9;3202:7;3198:23;3194:32;3191:52;;;3239:1;3236;3229:12;3191:52;3278:9;3265:23;3297:31;3322:5;3297:31;:::i;:::-;3347:5;-1:-1:-1;3404:2:1;3389:18;;3376:32;3417:33;3376:32;3417:33;:::i;:::-;3077:456;;3469:7;;-1:-1:-1;;;3523:2:1;3508:18;;;;3495:32;;3077:456::o;3935:247::-;3994:6;4047:2;4035:9;4026:7;4022:23;4018:32;4015:52;;;4063:1;4060;4053:12;4015:52;4102:9;4089:23;4121:31;4146:5;4121:31;:::i;4187:118::-;4273:5;4266:13;4259:21;4252:5;4249:32;4239:60;;4295:1;4292;4285:12;4310:241;4366:6;4419:2;4407:9;4398:7;4394:23;4390:32;4387:52;;;4435:1;4432;4425:12;4387:52;4474:9;4461:23;4493:28;4515:5;4493:28;:::i;4556:180::-;4615:6;4668:2;4656:9;4647:7;4643:23;4639:32;4636:52;;;4684:1;4681;4674:12;4636:52;-1:-1:-1;4707:23:1;;4556:180;-1:-1:-1;4556:180:1:o;4741:385::-;4827:6;4835;4843;4851;4904:3;4892:9;4883:7;4879:23;4875:33;4872:53;;;4921:1;4918;4911:12;4872:53;-1:-1:-1;;4944:23:1;;;5014:2;4999:18;;4986:32;;-1:-1:-1;5065:2:1;5050:18;;5037:32;;5116:2;5101:18;5088:32;;-1:-1:-1;4741:385:1;-1:-1:-1;4741:385:1:o;5131:750::-;5223:6;5231;5239;5292:2;5280:9;5271:7;5267:23;5263:32;5260:52;;;5308:1;5305;5298:12;5260:52;5348:9;5335:23;5377:18;5418:2;5410:6;5407:14;5404:34;;;5434:1;5431;5424:12;5404:34;5472:6;5461:9;5457:22;5447:32;;5517:7;5510:4;5506:2;5502:13;5498:27;5488:55;;5539:1;5536;5529:12;5488:55;5579:2;5566:16;5605:2;5597:6;5594:14;5591:34;;;5621:1;5618;5611:12;5591:34;5676:7;5669:4;5659:6;5656:1;5652:14;5648:2;5644:23;5640:34;5637:47;5634:67;;;5697:1;5694;5687:12;5634:67;5728:4;5720:13;;;;-1:-1:-1;5752:6:1;-1:-1:-1;;5793:20:1;;5780:34;5823:28;5780:34;5823:28;:::i;:::-;5870:5;5860:15;;;5131:750;;;;;:::o;5886:388::-;5954:6;5962;6015:2;6003:9;5994:7;5990:23;5986:32;5983:52;;;6031:1;6028;6021:12;5983:52;6070:9;6057:23;6089:31;6114:5;6089:31;:::i;:::-;6139:5;-1:-1:-1;6196:2:1;6181:18;;6168:32;6209:33;6168:32;6209:33;:::i;:::-;6261:7;6251:17;;;5886:388;;;;;:::o;6279:356::-;6481:2;6463:21;;;6500:18;;;6493:30;6559:34;6554:2;6539:18;;6532:62;6626:2;6611:18;;6279:356::o;6640:127::-;6701:10;6696:3;6692:20;6689:1;6682:31;6732:4;6729:1;6722:15;6756:4;6753:1;6746:15;6772:127;6833:10;6828:3;6824:20;6821:1;6814:31;6864:4;6861:1;6854:15;6888:4;6885:1;6878:15;6904:135;6943:3;-1:-1:-1;;6964:17:1;;6961:43;;;6984:18;;:::i;:::-;-1:-1:-1;7031:1:1;7020:13;;6904:135::o;7396:251::-;7466:6;7519:2;7507:9;7498:7;7494:23;7490:32;7487:52;;;7535:1;7532;7525:12;7487:52;7567:9;7561:16;7586:31;7611:5;7586:31;:::i;8573:306::-;8661:6;8669;8677;8730:2;8718:9;8709:7;8705:23;8701:32;8698:52;;;8746:1;8743;8736:12;8698:52;8775:9;8769:16;8759:26;;8825:2;8814:9;8810:18;8804:25;8794:35;;8869:2;8858:9;8854:18;8848:25;8838:35;;8573:306;;;;;:::o;9163:245::-;9230:6;9283:2;9271:9;9262:7;9258:23;9254:32;9251:52;;;9299:1;9296;9289:12;9251:52;9331:9;9325:16;9350:28;9372:5;9350:28;:::i;9413:168::-;9453:7;9519:1;9515;9511:6;9507:14;9504:1;9501:21;9496:1;9489:9;9482:17;9478:45;9475:71;;;9526:18;;:::i;:::-;-1:-1:-1;9566:9:1;;9413:168::o;9586:217::-;9626:1;9652;9642:132;;9696:10;9691:3;9687:20;9684:1;9677:31;9731:4;9728:1;9721:15;9759:4;9756:1;9749:15;9642:132;-1:-1:-1;9788:9:1;;9586:217::o;15458:128::-;15498:3;15529:1;15525:6;15522:1;15519:13;15516:39;;;15535:18;;:::i;:::-;-1:-1:-1;15571:9:1;;15458:128::o;15995:125::-;16035:4;16063:1;16060;16057:8;16054:34;;;16068:18;;:::i;:::-;-1:-1:-1;16105:9:1;;15995:125::o;16536:980::-;16798:4;16846:3;16835:9;16831:19;16877:6;16866:9;16859:25;16903:2;16941:6;16936:2;16925:9;16921:18;16914:34;16984:3;16979:2;16968:9;16964:18;16957:31;17008:6;17043;17037:13;17074:6;17066;17059:22;17112:3;17101:9;17097:19;17090:26;;17151:2;17143:6;17139:15;17125:29;;17172:1;17182:195;17196:6;17193:1;17190:13;17182:195;;;17261:13;;-1:-1:-1;;;;;17257:39:1;17245:52;;17352:15;;;;17317:12;;;;17293:1;17211:9;17182:195;;;-1:-1:-1;;;;;;;17433:32:1;;;;17428:2;17413:18;;17406:60;-1:-1:-1;;;17497:3:1;17482:19;17475:35;17394:3;16536:980;-1:-1:-1;;;16536:980:1:o
Swarm Source
ipfs://84806dd7b7ee2d7e41cba5461e2f90a7d014d18ddf4612c378afed2699dd0ae8
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 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.