ETH Price: $3,323.01 (-4.17%)

Token

DOGEI (DOGEI)
 

Overview

Max Total Supply

420,690,000,000,000 DOGEI

Holders

22

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
3,971,015,193,027.445508642 DOGEI

Value
$0.00
0x7993ee3e839d7f0b67ad51856a522f4f3e7ae813
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
dogei

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-06-11
*/

/*

TELEGRAM: https://t.me/Dogeioneth
TWITTER: Https://x.com/DogeiOnEth


*/

// SPDX-License-Identifier: Unlicensed
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 private _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 dogei is Context, IERC20, Ownable {

using SafeMath for uint256;

string private constant _name = "DOGEI";
string private constant _symbol = "DOGEI";
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 = 420690000000000 * 10**9;
uint256 private _rTotal = (MAX - (MAX % _tTotal));
uint256 private _tFeeTotal;
uint256 private _redisFeeOnBuy = 0;
uint256 private _taxFeeOnBuy = 20;
uint256 private _redisFeeOnSell = 0;
uint256 private _taxFeeOnSell = 45;

//Original Fee
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(0x1c2869098e9Df69C8Ca6a3c4097e571ac0bE035d);
address payable private _marketingAddress = payable(0x10D3DE4CbCA619CE86bD0a403764CEA8A1a6425C);

IUniswapV2Router02 public uniswapV2Router;
address public uniswapV2Pair;

bool private tradingOpen = true;
bool private inSwap = false;
bool private swapEnabled = true;

uint256 public _maxTxAmount = 6310350000000 * 10**9;
uint256 public _maxWalletSize = 6310350000000 * 10**9;
uint256 public _swapTokensAtAmount = 6310350000000 * 10**9;

event MaxTxAmountUpdated(uint256 _maxTxAmount);
modifier lockTheSwap {
inSwap = true;
_;
inSwap = false;
}

constructor() {

_rOwned[_msgSender()] = _rTotal;

IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
uniswapV2Router = _uniswapV2Router;
uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
.createPair(address(this), _uniswapV2Router.WETH());

_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");

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);
}

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 _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 _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 {
_redisFeeOnBuy = redisFeeOnBuy;
_redisFeeOnSell = redisFeeOnSell;
_taxFeeOnBuy = taxFeeOnBuy;
_taxFeeOnSell = taxFeeOnSell;
}

//Set minimum tokens required to swap.
function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
_swapTokensAtAmount = swapTokensAtAmount;
}

//Set minimum tokens required to swap.
function toggleSwap(bool _swapEnabled) public onlyOwner {
swapEnabled = _swapEnabled;
}

//Set maximum transaction
function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
_maxTxAmount = maxTxAmount;
}

function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
_maxWalletSize = maxWalletSize;
}

function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
for(uint256 i = 0; i < accounts.length; i++) {
_isExcludedFromFee[accounts[i]] = excluded;
}
}

}

Contract Security Audit

Contract ABI

[{"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":"","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":[],"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":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","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":"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":[],"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"}]

6080604052695915a68d88da6a0800005f1961001b91906106f0565b5f19610027919061074d565b6006555f60085560146009555f600a55602d600b55600a54600c55600b54600d55600c54600e55600d54600f55731c2869098e9df69c8ca6a3c4097e571ac0be035d60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507310d3de4cbca619ce86bd0a403764cea8a1a6425c60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560146101000a81548160ff0219169083151502179055505f6015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555069015615b2c355323b000060165569015615b2c355323b000060175569015615b2c355323b0000601855348015610180575f80fd5b505f61019061068c60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f61024061068c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561031e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061034291906107de565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103cb91906107de565b6040518363ffffffff1660e01b81526004016103e8929190610818565b6020604051808303815f875af1158015610404573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061042891906107de565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f61047a61069360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061061861068c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef695915a68d88da6a08000060405161067e919061084e565b60405180910390a350610867565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6106fa826106ba565b9150610705836106ba565b925082610715576107146106c3565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610757826106ba565b9150610762836106ba565b925082820390508181111561077a57610779610720565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6107ad82610784565b9050919050565b6107bd816107a3565b81146107c7575f80fd5b50565b5f815190506107d8816107b4565b92915050565b5f602082840312156107f3576107f2610780565b5b5f610800848285016107ca565b91505092915050565b610812816107a3565b82525050565b5f60408201905061082b5f830185610809565b6108386020830184610809565b9392505050565b610848816106ba565b82525050565b5f6020820190506108615f83018461083f565b92915050565b61358b806108745f395ff3fe60806040526004361061019f575f3560e01c80637d1db4a5116100eb578063a9059cbb11610089578063c492f04611610063578063c492f04614610598578063dd62ed3e146105c0578063ea1644d5146105fc578063f2fde38b14610624576101a6565b8063a9059cbb1461050a578063bfd7928414610546578063c3c8cd8014610582576101a6565b80638f9a55c0116100c55780638f9a55c01461046657806395d89b411461049057806398a5c315146104ba578063a2a957bb146104e2576101a6565b80637d1db4a5146103d65780637f2feddc146104005780638da5cb5b1461043c576101a6565b8063313ce567116101585780636fc3eaec116101325780636fc3eaec1461034657806370a082311461035c578063715018a61461039857806374010ece146103ae576101a6565b8063313ce567146102ca57806349bd5a5e146102f45780636d8aa8f81461031e576101a6565b806306fdde03146101aa578063095ea7b3146101d45780631694505e1461021057806318160ddd1461023a57806323b872dd146102645780632fd689e3146102a0576101a6565b366101a657005b5f80fd5b3480156101b5575f80fd5b506101be61064c565b6040516101cb91906126de565b60405180910390f35b3480156101df575f80fd5b506101fa60048036038101906101f59190612793565b610689565b60405161020791906127eb565b60405180910390f35b34801561021b575f80fd5b506102246106a6565b604051610231919061285f565b60405180910390f35b348015610245575f80fd5b5061024e6106cb565b60405161025b9190612887565b60405180910390f35b34801561026f575f80fd5b5061028a600480360381019061028591906128a0565b6106dc565b60405161029791906127eb565b60405180910390f35b3480156102ab575f80fd5b506102b46107b0565b6040516102c19190612887565b60405180910390f35b3480156102d5575f80fd5b506102de6107b6565b6040516102eb919061290b565b60405180910390f35b3480156102ff575f80fd5b506103086107be565b6040516103159190612933565b60405180910390f35b348015610329575f80fd5b50610344600480360381019061033f9190612976565b6107e3565b005b348015610351575f80fd5b5061035a610894565b005b348015610367575f80fd5b50610382600480360381019061037d91906129a1565b610961565b60405161038f9190612887565b60405180910390f35b3480156103a3575f80fd5b506103ac6109af565b005b3480156103b9575f80fd5b506103d460048036038101906103cf91906129cc565b610afd565b005b3480156103e1575f80fd5b506103ea610b9b565b6040516103f79190612887565b60405180910390f35b34801561040b575f80fd5b50610426600480360381019061042191906129a1565b610ba1565b6040516104339190612887565b60405180910390f35b348015610447575f80fd5b50610450610bb6565b60405161045d9190612933565b60405180910390f35b348015610471575f80fd5b5061047a610bdd565b6040516104879190612887565b60405180910390f35b34801561049b575f80fd5b506104a4610be3565b6040516104b191906126de565b60405180910390f35b3480156104c5575f80fd5b506104e060048036038101906104db91906129cc565b610c20565b005b3480156104ed575f80fd5b50610508600480360381019061050391906129f7565b610cbe565b005b348015610515575f80fd5b50610530600480360381019061052b9190612793565b610d74565b60405161053d91906127eb565b60405180910390f35b348015610551575f80fd5b5061056c600480360381019061056791906129a1565b610d91565b60405161057991906127eb565b60405180910390f35b34801561058d575f80fd5b50610596610dae565b005b3480156105a3575f80fd5b506105be60048036038101906105b99190612abc565b610e83565b005b3480156105cb575f80fd5b506105e660048036038101906105e19190612b19565b610fb2565b6040516105f39190612887565b60405180910390f35b348015610607575f80fd5b50610622600480360381019061061d91906129cc565b611034565b005b34801561062f575f80fd5b5061064a600480360381019061064591906129a1565b6110d2565b005b60606040518060400160405280600581526020017f444f474549000000000000000000000000000000000000000000000000000000815250905090565b5f61069c61069561128f565b8484611296565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f695915a68d88da6a080000905090565b5f6106e8848484611459565b6107a5846106f461128f565b6107a08560405180606001604052806028815260200161352e6028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61075761128f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611bdc9092919063ffffffff16565b611296565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107eb61128f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086e90612ba1565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108d461128f565b73ffffffffffffffffffffffffffffffffffffffff161480610949575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661093161128f565b73ffffffffffffffffffffffffffffffffffffffff16145b610951575f80fd5b5f47905061095e81611c3e565b50565b5f6109a860025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ca6565b9050919050565b6109b761128f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3a90612ba1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b0561128f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8890612ba1565b60405180910390fd5b8060168190555050565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600581526020017f444f474549000000000000000000000000000000000000000000000000000000815250905090565b610c2861128f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cab90612ba1565b60405180910390fd5b8060188190555050565b610cc661128f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990612ba1565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f610d87610d8061128f565b8484611459565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dee61128f565b73ffffffffffffffffffffffffffffffffffffffff161480610e63575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e4b61128f565b73ffffffffffffffffffffffffffffffffffffffff16145b610e6b575f80fd5b5f610e7530610961565b9050610e8081611d12565b50565b610e8b61128f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0e90612ba1565b60405180910390fd5b5f5b83839050811015610fac578160055f868685818110610f3b57610f3a612bbf565b5b9050602002016020810190610f5091906129a1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610f19565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61103c61128f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bf90612ba1565b60405180910390fd5b8060178190555050565b6110da61128f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611166576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115d90612ba1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cb90612c5c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb90612cea565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611372576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136990612d78565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161144c9190612887565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114be90612e06565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152c90612e94565b60405180910390fd5b5f8111611577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156e90612f22565b60405180910390fd5b61157f610bb6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115ed57506115bd610bb6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156118e957601560149054906101000a900460ff1661167c5761160e610bb6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461167b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167290612fb0565b60405180910390fd5b5b6016548111156116c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b890613018565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461176d576017548161172284610961565b61172c9190613063565b1061176c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176390613106565b60405180910390fd5b5b5f61177730610961565b90505f601854821015905060165482106117915760165491505b8080156117a9575060158054906101000a900460ff16155b8015611802575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561181a5750601560169054906101000a900460ff165b801561186d575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156118c0575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156118e6576118ce82611d12565b5f4790505f8111156118e4576118e347611c3e565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611989575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611a3a575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a39575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611a47575f9050611bca565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611af0575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b0857600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611bb1575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611bc957600a54600c81905550600b54600d819055505b5b611bd684848484611f7b565b50505050565b5f838311158290611c23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1a91906126de565b60405180910390fd5b505f8385611c319190613124565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611ca2573d5f803e3d5ffd5b5050565b5f600654821115611cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce3906131c7565b60405180910390fd5b5f611cf5611fa8565b9050611d0a8184611fd190919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611d4857611d476131e5565b5b604051908082528060200260200182016040528015611d765781602001602082028036833780820191505090505b50905030815f81518110611d8d57611d8c612bbf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e31573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e559190613226565b81600181518110611e6957611e68612bbf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611ecf3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611296565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611f31959493929190613341565b5f604051808303815f87803b158015611f48575f80fd5b505af1158015611f5a573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b80611f8957611f8861201a565b5b611f94848484612053565b80611fa257611fa1612213565b5b50505050565b5f805f611fb3612227565b91509150611fca8183611fd190919063ffffffff16565b9250505090565b5f61201283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612289565b905092915050565b5f600c5414801561202c57505f600d54145b61205157600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f80612062876122ea565b9550955095509550955095506120be8660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461234a90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061214f8560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461239390919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612199816123f0565b6121a384836124a7565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516122009190612887565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f695915a68d88da6a080000905061225c695915a68d88da6a080000600654611fd190919063ffffffff16565b82101561227c57600654695915a68d88da6a080000935093505050612285565b81819350935050505b9091565b5f80831182906122cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c691906126de565b60405180910390fd5b505f83856122dd91906133c6565b9050809150509392505050565b5f805f805f805f805f6123028a600c54600d546124e1565b9250925092505f612311611fa8565b90505f805f6123228e878787612573565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61238b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bdc565b905092915050565b5f8082846123a19190613063565b9050838110156123e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123dd90613440565b60405180910390fd5b8091505092915050565b5f6123f9611fa8565b90505f61240f82846125f790919063ffffffff16565b90506124618160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461239390919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6124bc8260065461234a90919063ffffffff16565b6006819055506124d78160075461239390919063ffffffff16565b6007819055505050565b5f805f8061250b60646124fd888a6125f790919063ffffffff16565b611fd190919063ffffffff16565b90505f6125346064612526888b6125f790919063ffffffff16565b611fd190919063ffffffff16565b90505f61255c8261254e858c61234a90919063ffffffff16565b61234a90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061258a85896125f790919063ffffffff16565b90505f6125a086896125f790919063ffffffff16565b90505f6125b687896125f790919063ffffffff16565b90505f6125de826125d0858761234a90919063ffffffff16565b61234a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612607575f9050612668565b5f8284612614919061345e565b905082848261262391906133c6565b14612663576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265a9061350f565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6126b08261266e565b6126ba8185612678565b93506126ca818560208601612688565b6126d381612696565b840191505092915050565b5f6020820190508181035f8301526126f681846126a6565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61272f82612706565b9050919050565b61273f81612725565b8114612749575f80fd5b50565b5f8135905061275a81612736565b92915050565b5f819050919050565b61277281612760565b811461277c575f80fd5b50565b5f8135905061278d81612769565b92915050565b5f80604083850312156127a9576127a86126fe565b5b5f6127b68582860161274c565b92505060206127c78582860161277f565b9150509250929050565b5f8115159050919050565b6127e5816127d1565b82525050565b5f6020820190506127fe5f8301846127dc565b92915050565b5f819050919050565b5f61282761282261281d84612706565b612804565b612706565b9050919050565b5f6128388261280d565b9050919050565b5f6128498261282e565b9050919050565b6128598161283f565b82525050565b5f6020820190506128725f830184612850565b92915050565b61288181612760565b82525050565b5f60208201905061289a5f830184612878565b92915050565b5f805f606084860312156128b7576128b66126fe565b5b5f6128c48682870161274c565b93505060206128d58682870161274c565b92505060406128e68682870161277f565b9150509250925092565b5f60ff82169050919050565b612905816128f0565b82525050565b5f60208201905061291e5f8301846128fc565b92915050565b61292d81612725565b82525050565b5f6020820190506129465f830184612924565b92915050565b612955816127d1565b811461295f575f80fd5b50565b5f813590506129708161294c565b92915050565b5f6020828403121561298b5761298a6126fe565b5b5f61299884828501612962565b91505092915050565b5f602082840312156129b6576129b56126fe565b5b5f6129c38482850161274c565b91505092915050565b5f602082840312156129e1576129e06126fe565b5b5f6129ee8482850161277f565b91505092915050565b5f805f8060808587031215612a0f57612a0e6126fe565b5b5f612a1c8782880161277f565b9450506020612a2d8782880161277f565b9350506040612a3e8782880161277f565b9250506060612a4f8782880161277f565b91505092959194509250565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612a7c57612a7b612a5b565b5b8235905067ffffffffffffffff811115612a9957612a98612a5f565b5b602083019150836020820283011115612ab557612ab4612a63565b5b9250929050565b5f805f60408486031215612ad357612ad26126fe565b5b5f84013567ffffffffffffffff811115612af057612aef612702565b5b612afc86828701612a67565b93509350506020612b0f86828701612962565b9150509250925092565b5f8060408385031215612b2f57612b2e6126fe565b5b5f612b3c8582860161274c565b9250506020612b4d8582860161274c565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612b8b602083612678565b9150612b9682612b57565b602082019050919050565b5f6020820190508181035f830152612bb881612b7f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612c46602683612678565b9150612c5182612bec565b604082019050919050565b5f6020820190508181035f830152612c7381612c3a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612cd4602483612678565b9150612cdf82612c7a565b604082019050919050565b5f6020820190508181035f830152612d0181612cc8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612d62602283612678565b9150612d6d82612d08565b604082019050919050565b5f6020820190508181035f830152612d8f81612d56565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612df0602583612678565b9150612dfb82612d96565b604082019050919050565b5f6020820190508181035f830152612e1d81612de4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612e7e602383612678565b9150612e8982612e24565b604082019050919050565b5f6020820190508181035f830152612eab81612e72565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612f0c602983612678565b9150612f1782612eb2565b604082019050919050565b5f6020820190508181035f830152612f3981612f00565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f612f9a603f83612678565b9150612fa582612f40565b604082019050919050565b5f6020820190508181035f830152612fc781612f8e565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f613002601c83612678565b915061300d82612fce565b602082019050919050565b5f6020820190508181035f83015261302f81612ff6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61306d82612760565b915061307883612760565b92508282019050808211156130905761308f613036565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f6130f0602383612678565b91506130fb82613096565b604082019050919050565b5f6020820190508181035f83015261311d816130e4565b9050919050565b5f61312e82612760565b915061313983612760565b925082820390508181111561315157613150613036565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f6131b1602a83612678565b91506131bc82613157565b604082019050919050565b5f6020820190508181035f8301526131de816131a5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061322081612736565b92915050565b5f6020828403121561323b5761323a6126fe565b5b5f61324884828501613212565b91505092915050565b5f819050919050565b5f61327461326f61326a84613251565b612804565b612760565b9050919050565b6132848161325a565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6132bc81612725565b82525050565b5f6132cd83836132b3565b60208301905092915050565b5f602082019050919050565b5f6132ef8261328a565b6132f98185613294565b9350613304836132a4565b805f5b8381101561333457815161331b88826132c2565b9750613326836132d9565b925050600181019050613307565b5085935050505092915050565b5f60a0820190506133545f830188612878565b613361602083018761327b565b818103604083015261337381866132e5565b90506133826060830185612924565b61338f6080830184612878565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6133d082612760565b91506133db83612760565b9250826133eb576133ea613399565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61342a601b83612678565b9150613435826133f6565b602082019050919050565b5f6020820190508181035f8301526134578161341e565b9050919050565b5f61346882612760565b915061347383612760565b925082820261348181612760565b9150828204841483151761349857613497613036565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6134f9602183612678565b91506135048261349f565b604082019050919050565b5f6020820190508181035f830152613526816134ed565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202af43bd46c47d1e19480a129049aef813430750aff174d682ea40edb328116fe64736f6c634300081a0033

Deployed Bytecode

0x60806040526004361061019f575f3560e01c80637d1db4a5116100eb578063a9059cbb11610089578063c492f04611610063578063c492f04614610598578063dd62ed3e146105c0578063ea1644d5146105fc578063f2fde38b14610624576101a6565b8063a9059cbb1461050a578063bfd7928414610546578063c3c8cd8014610582576101a6565b80638f9a55c0116100c55780638f9a55c01461046657806395d89b411461049057806398a5c315146104ba578063a2a957bb146104e2576101a6565b80637d1db4a5146103d65780637f2feddc146104005780638da5cb5b1461043c576101a6565b8063313ce567116101585780636fc3eaec116101325780636fc3eaec1461034657806370a082311461035c578063715018a61461039857806374010ece146103ae576101a6565b8063313ce567146102ca57806349bd5a5e146102f45780636d8aa8f81461031e576101a6565b806306fdde03146101aa578063095ea7b3146101d45780631694505e1461021057806318160ddd1461023a57806323b872dd146102645780632fd689e3146102a0576101a6565b366101a657005b5f80fd5b3480156101b5575f80fd5b506101be61064c565b6040516101cb91906126de565b60405180910390f35b3480156101df575f80fd5b506101fa60048036038101906101f59190612793565b610689565b60405161020791906127eb565b60405180910390f35b34801561021b575f80fd5b506102246106a6565b604051610231919061285f565b60405180910390f35b348015610245575f80fd5b5061024e6106cb565b60405161025b9190612887565b60405180910390f35b34801561026f575f80fd5b5061028a600480360381019061028591906128a0565b6106dc565b60405161029791906127eb565b60405180910390f35b3480156102ab575f80fd5b506102b46107b0565b6040516102c19190612887565b60405180910390f35b3480156102d5575f80fd5b506102de6107b6565b6040516102eb919061290b565b60405180910390f35b3480156102ff575f80fd5b506103086107be565b6040516103159190612933565b60405180910390f35b348015610329575f80fd5b50610344600480360381019061033f9190612976565b6107e3565b005b348015610351575f80fd5b5061035a610894565b005b348015610367575f80fd5b50610382600480360381019061037d91906129a1565b610961565b60405161038f9190612887565b60405180910390f35b3480156103a3575f80fd5b506103ac6109af565b005b3480156103b9575f80fd5b506103d460048036038101906103cf91906129cc565b610afd565b005b3480156103e1575f80fd5b506103ea610b9b565b6040516103f79190612887565b60405180910390f35b34801561040b575f80fd5b50610426600480360381019061042191906129a1565b610ba1565b6040516104339190612887565b60405180910390f35b348015610447575f80fd5b50610450610bb6565b60405161045d9190612933565b60405180910390f35b348015610471575f80fd5b5061047a610bdd565b6040516104879190612887565b60405180910390f35b34801561049b575f80fd5b506104a4610be3565b6040516104b191906126de565b60405180910390f35b3480156104c5575f80fd5b506104e060048036038101906104db91906129cc565b610c20565b005b3480156104ed575f80fd5b50610508600480360381019061050391906129f7565b610cbe565b005b348015610515575f80fd5b50610530600480360381019061052b9190612793565b610d74565b60405161053d91906127eb565b60405180910390f35b348015610551575f80fd5b5061056c600480360381019061056791906129a1565b610d91565b60405161057991906127eb565b60405180910390f35b34801561058d575f80fd5b50610596610dae565b005b3480156105a3575f80fd5b506105be60048036038101906105b99190612abc565b610e83565b005b3480156105cb575f80fd5b506105e660048036038101906105e19190612b19565b610fb2565b6040516105f39190612887565b60405180910390f35b348015610607575f80fd5b50610622600480360381019061061d91906129cc565b611034565b005b34801561062f575f80fd5b5061064a600480360381019061064591906129a1565b6110d2565b005b60606040518060400160405280600581526020017f444f474549000000000000000000000000000000000000000000000000000000815250905090565b5f61069c61069561128f565b8484611296565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f695915a68d88da6a080000905090565b5f6106e8848484611459565b6107a5846106f461128f565b6107a08560405180606001604052806028815260200161352e6028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61075761128f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611bdc9092919063ffffffff16565b611296565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107eb61128f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086e90612ba1565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108d461128f565b73ffffffffffffffffffffffffffffffffffffffff161480610949575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661093161128f565b73ffffffffffffffffffffffffffffffffffffffff16145b610951575f80fd5b5f47905061095e81611c3e565b50565b5f6109a860025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ca6565b9050919050565b6109b761128f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3a90612ba1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b0561128f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8890612ba1565b60405180910390fd5b8060168190555050565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600581526020017f444f474549000000000000000000000000000000000000000000000000000000815250905090565b610c2861128f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cab90612ba1565b60405180910390fd5b8060188190555050565b610cc661128f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990612ba1565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f610d87610d8061128f565b8484611459565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dee61128f565b73ffffffffffffffffffffffffffffffffffffffff161480610e63575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e4b61128f565b73ffffffffffffffffffffffffffffffffffffffff16145b610e6b575f80fd5b5f610e7530610961565b9050610e8081611d12565b50565b610e8b61128f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0e90612ba1565b60405180910390fd5b5f5b83839050811015610fac578160055f868685818110610f3b57610f3a612bbf565b5b9050602002016020810190610f5091906129a1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610f19565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61103c61128f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bf90612ba1565b60405180910390fd5b8060178190555050565b6110da61128f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611166576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115d90612ba1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cb90612c5c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb90612cea565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611372576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136990612d78565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161144c9190612887565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114be90612e06565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152c90612e94565b60405180910390fd5b5f8111611577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156e90612f22565b60405180910390fd5b61157f610bb6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115ed57506115bd610bb6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156118e957601560149054906101000a900460ff1661167c5761160e610bb6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461167b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167290612fb0565b60405180910390fd5b5b6016548111156116c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b890613018565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461176d576017548161172284610961565b61172c9190613063565b1061176c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176390613106565b60405180910390fd5b5b5f61177730610961565b90505f601854821015905060165482106117915760165491505b8080156117a9575060158054906101000a900460ff16155b8015611802575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561181a5750601560169054906101000a900460ff165b801561186d575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156118c0575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156118e6576118ce82611d12565b5f4790505f8111156118e4576118e347611c3e565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611989575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611a3a575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a39575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611a47575f9050611bca565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611af0575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b0857600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611bb1575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611bc957600a54600c81905550600b54600d819055505b5b611bd684848484611f7b565b50505050565b5f838311158290611c23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1a91906126de565b60405180910390fd5b505f8385611c319190613124565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611ca2573d5f803e3d5ffd5b5050565b5f600654821115611cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce3906131c7565b60405180910390fd5b5f611cf5611fa8565b9050611d0a8184611fd190919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611d4857611d476131e5565b5b604051908082528060200260200182016040528015611d765781602001602082028036833780820191505090505b50905030815f81518110611d8d57611d8c612bbf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e31573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e559190613226565b81600181518110611e6957611e68612bbf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611ecf3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611296565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611f31959493929190613341565b5f604051808303815f87803b158015611f48575f80fd5b505af1158015611f5a573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b80611f8957611f8861201a565b5b611f94848484612053565b80611fa257611fa1612213565b5b50505050565b5f805f611fb3612227565b91509150611fca8183611fd190919063ffffffff16565b9250505090565b5f61201283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612289565b905092915050565b5f600c5414801561202c57505f600d54145b61205157600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f80612062876122ea565b9550955095509550955095506120be8660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461234a90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061214f8560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461239390919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612199816123f0565b6121a384836124a7565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516122009190612887565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f695915a68d88da6a080000905061225c695915a68d88da6a080000600654611fd190919063ffffffff16565b82101561227c57600654695915a68d88da6a080000935093505050612285565b81819350935050505b9091565b5f80831182906122cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c691906126de565b60405180910390fd5b505f83856122dd91906133c6565b9050809150509392505050565b5f805f805f805f805f6123028a600c54600d546124e1565b9250925092505f612311611fa8565b90505f805f6123228e878787612573565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61238b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bdc565b905092915050565b5f8082846123a19190613063565b9050838110156123e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123dd90613440565b60405180910390fd5b8091505092915050565b5f6123f9611fa8565b90505f61240f82846125f790919063ffffffff16565b90506124618160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461239390919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6124bc8260065461234a90919063ffffffff16565b6006819055506124d78160075461239390919063ffffffff16565b6007819055505050565b5f805f8061250b60646124fd888a6125f790919063ffffffff16565b611fd190919063ffffffff16565b90505f6125346064612526888b6125f790919063ffffffff16565b611fd190919063ffffffff16565b90505f61255c8261254e858c61234a90919063ffffffff16565b61234a90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061258a85896125f790919063ffffffff16565b90505f6125a086896125f790919063ffffffff16565b90505f6125b687896125f790919063ffffffff16565b90505f6125de826125d0858761234a90919063ffffffff16565b61234a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612607575f9050612668565b5f8284612614919061345e565b905082848261262391906133c6565b14612663576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265a9061350f565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6126b08261266e565b6126ba8185612678565b93506126ca818560208601612688565b6126d381612696565b840191505092915050565b5f6020820190508181035f8301526126f681846126a6565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61272f82612706565b9050919050565b61273f81612725565b8114612749575f80fd5b50565b5f8135905061275a81612736565b92915050565b5f819050919050565b61277281612760565b811461277c575f80fd5b50565b5f8135905061278d81612769565b92915050565b5f80604083850312156127a9576127a86126fe565b5b5f6127b68582860161274c565b92505060206127c78582860161277f565b9150509250929050565b5f8115159050919050565b6127e5816127d1565b82525050565b5f6020820190506127fe5f8301846127dc565b92915050565b5f819050919050565b5f61282761282261281d84612706565b612804565b612706565b9050919050565b5f6128388261280d565b9050919050565b5f6128498261282e565b9050919050565b6128598161283f565b82525050565b5f6020820190506128725f830184612850565b92915050565b61288181612760565b82525050565b5f60208201905061289a5f830184612878565b92915050565b5f805f606084860312156128b7576128b66126fe565b5b5f6128c48682870161274c565b93505060206128d58682870161274c565b92505060406128e68682870161277f565b9150509250925092565b5f60ff82169050919050565b612905816128f0565b82525050565b5f60208201905061291e5f8301846128fc565b92915050565b61292d81612725565b82525050565b5f6020820190506129465f830184612924565b92915050565b612955816127d1565b811461295f575f80fd5b50565b5f813590506129708161294c565b92915050565b5f6020828403121561298b5761298a6126fe565b5b5f61299884828501612962565b91505092915050565b5f602082840312156129b6576129b56126fe565b5b5f6129c38482850161274c565b91505092915050565b5f602082840312156129e1576129e06126fe565b5b5f6129ee8482850161277f565b91505092915050565b5f805f8060808587031215612a0f57612a0e6126fe565b5b5f612a1c8782880161277f565b9450506020612a2d8782880161277f565b9350506040612a3e8782880161277f565b9250506060612a4f8782880161277f565b91505092959194509250565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612a7c57612a7b612a5b565b5b8235905067ffffffffffffffff811115612a9957612a98612a5f565b5b602083019150836020820283011115612ab557612ab4612a63565b5b9250929050565b5f805f60408486031215612ad357612ad26126fe565b5b5f84013567ffffffffffffffff811115612af057612aef612702565b5b612afc86828701612a67565b93509350506020612b0f86828701612962565b9150509250925092565b5f8060408385031215612b2f57612b2e6126fe565b5b5f612b3c8582860161274c565b9250506020612b4d8582860161274c565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612b8b602083612678565b9150612b9682612b57565b602082019050919050565b5f6020820190508181035f830152612bb881612b7f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612c46602683612678565b9150612c5182612bec565b604082019050919050565b5f6020820190508181035f830152612c7381612c3a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612cd4602483612678565b9150612cdf82612c7a565b604082019050919050565b5f6020820190508181035f830152612d0181612cc8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612d62602283612678565b9150612d6d82612d08565b604082019050919050565b5f6020820190508181035f830152612d8f81612d56565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612df0602583612678565b9150612dfb82612d96565b604082019050919050565b5f6020820190508181035f830152612e1d81612de4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612e7e602383612678565b9150612e8982612e24565b604082019050919050565b5f6020820190508181035f830152612eab81612e72565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612f0c602983612678565b9150612f1782612eb2565b604082019050919050565b5f6020820190508181035f830152612f3981612f00565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f612f9a603f83612678565b9150612fa582612f40565b604082019050919050565b5f6020820190508181035f830152612fc781612f8e565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f613002601c83612678565b915061300d82612fce565b602082019050919050565b5f6020820190508181035f83015261302f81612ff6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61306d82612760565b915061307883612760565b92508282019050808211156130905761308f613036565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f6130f0602383612678565b91506130fb82613096565b604082019050919050565b5f6020820190508181035f83015261311d816130e4565b9050919050565b5f61312e82612760565b915061313983612760565b925082820390508181111561315157613150613036565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f6131b1602a83612678565b91506131bc82613157565b604082019050919050565b5f6020820190508181035f8301526131de816131a5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061322081612736565b92915050565b5f6020828403121561323b5761323a6126fe565b5b5f61324884828501613212565b91505092915050565b5f819050919050565b5f61327461326f61326a84613251565b612804565b612760565b9050919050565b6132848161325a565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6132bc81612725565b82525050565b5f6132cd83836132b3565b60208301905092915050565b5f602082019050919050565b5f6132ef8261328a565b6132f98185613294565b9350613304836132a4565b805f5b8381101561333457815161331b88826132c2565b9750613326836132d9565b925050600181019050613307565b5085935050505092915050565b5f60a0820190506133545f830188612878565b613361602083018761327b565b818103604083015261337381866132e5565b90506133826060830185612924565b61338f6080830184612878565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6133d082612760565b91506133db83612760565b9250826133eb576133ea613399565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61342a601b83612678565b9150613435826133f6565b602082019050919050565b5f6020820190508181035f8301526134578161341e565b9050919050565b5f61346882612760565b915061347383612760565b925082820261348181612760565b9150828204841483151761349857613497613036565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6134f9602183612678565b91506135048261349f565b604082019050919050565b5f6020820190508181035f830152613526816134ed565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202af43bd46c47d1e19480a129049aef813430750aff174d682ea40edb328116fe64736f6c634300081a0033

Deployed Bytecode Sourcemap

3446:10440:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5704:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6445:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4689:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5933:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6594:302;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4976:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5858:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4733:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13352:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10097:207;;;;;;;;;;;;;:::i;:::-;;6020:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1429:128;;;;;;;;;;;;;:::i;:::-;;13472:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4866:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4443:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1255:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4920:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5779:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13181:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12882:255;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6150:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4405:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9885:208;;;;;;;;;;;;;:::i;:::-;;13679:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6305:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13572:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1561:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5704:71;5741:13;5766:5;;;;;;;;;;;;;;;;;5759:12;;5704:71;:::o;6445:145::-;6523:4;6533:39;6542:12;:10;:12::i;:::-;6556:7;6565:6;6533:8;:39::i;:::-;6582:4;6575:11;;6445:145;;;;:::o;4689:41::-;;;;;;;;;;;;;:::o;5933:83::-;5986:7;3948:23;5998:14;;5933:83;:::o;6594:302::-;6698:4;6707:36;6717:6;6725:9;6736:6;6707:9;:36::i;:::-;6746:132;6757:6;6766:12;:10;:12::i;:::-;6781:94;6821:6;6781:94;;;;;;;;;;;;;;;;;:11;:19;6793:6;6781:19;;;;;;;;;;;;;;;:33;6801:12;:10;:12::i;:::-;6781:33;;;;;;;;;;;;;;;;:37;;:94;;;;;:::i;:::-;6746:8;:132::i;:::-;6888:4;6881:11;;6594:302;;;;;:::o;4976:58::-;;;;:::o;5858:71::-;5899:5;3646:1;5909:16;;5858:71;:::o;4733:28::-;;;;;;;;;;;;;:::o;13352:89::-;1368:12;:10;:12::i;:::-;1358:22;;:6;;;;;;;;;;:22;;;1350:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13425:12:::1;13411:11;;:26;;;;;;;;;;;;;;;;;;13352:89:::0;:::o;10097:207::-;10155:19;;;;;;;;;;;10139:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;10194:17;;;;;;;;;;;10178:33;;:12;:10;:12::i;:::-;:33;;;10139:72;10131:81;;;;;;10215:26;10244:21;10215:50;;10268:32;10281:18;10268:12;:32::i;:::-;10128:176;10097:207::o;6020:126::-;6086:7;6105:37;6125:7;:16;6133:7;6125:16;;;;;;;;;;;;;;;;6105:19;:37::i;:::-;6098:44;;6020:126;;;:::o;1429:128::-;1368:12;:10;:12::i;:::-;1358:22;;:6;;;;;;;;;;:22;;;1350:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1528:1:::1;1491:40;;1512:6;::::0;::::1;;;;;;;;1491:40;;;;;;;;;;;;1551:1;1534:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1429:128::o:0;13472:96::-;1368:12;:10;:12::i;:::-;1358:22;;:6;;;;;;;;;;:22;;;1350:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13553:11:::1;13538:12;:26;;;;13472:96:::0;:::o;4866:51::-;;;;:::o;4443:43::-;;;;;;;;;;;;;;;;;:::o;1255:67::-;1293:7;1312:6;;;;;;;;;;;1305:13;;1255:67;:::o;4920:53::-;;;;:::o;5779:75::-;5818:13;5843:7;;;;;;;;;;;;;;;;;5836:14;;5779:75;:::o;13181:127::-;1368:12;:10;:12::i;:::-;1358:22;;:6;;;;;;;;;;:22;;;1350:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13286:18:::1;13264:19;:40;;;;13181:127:::0;:::o;12882:255::-;1368:12;:10;:12::i;:::-;1358:22;;:6;;;;;;;;;;:22;;;1350:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13025:13:::1;13008:14;:30;;;;13059:14;13041:15;:32;;;;13091:11;13076:12;:26;;;;13121:12;13105:13;:28;;;;12882:255:::0;;;;:::o;6150:151::-;6231:4;6241:42;6251:12;:10;:12::i;:::-;6265:9;6276:6;6241:9;:42::i;:::-;6293:4;6286:11;;6150:151;;;;:::o;4405:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;9885:208::-;9943:19;;;;;;;;;;;9927:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;9982:17;;;;;;;;;;;9966:33;;:12;:10;:12::i;:::-;:33;;;9927:72;9919:81;;;;;;10003:23;10029:24;10047:4;10029:9;:24::i;:::-;10003:50;;10056:33;10073:15;10056:16;:33::i;:::-;9916:177;9885:208::o;13679:202::-;1368:12;:10;:12::i;:::-;1358:22;;:6;;;;;;;;;;:22;;;1350:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13788:9:::1;13784:94;13807:8;;:15;;13803:1;:19;13784:94;;;13866:8;13832:18;:31;13851:8;;13860:1;13851:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;13832:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;13824:3;;;;;;;13784:94;;;;13679:202:::0;;;:::o;6305:136::-;6390:7;6410:11;:18;6422:5;6410:18;;;;;;;;;;;;;;;:27;6429:7;6410:27;;;;;;;;;;;;;;;;6403:34;;6305:136;;;;:::o;13572:103::-;1368:12;:10;:12::i;:::-;1358:22;;:6;;;;;;;;;;:22;;;1350:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13658:13:::1;13641:14;:30;;;;13572:103:::0;:::o;1561:216::-;1368:12;:10;:12::i;:::-;1358:22;;:6;;;;;;;;;;:22;;;1350:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1662:1:::1;1642:22;;:8;:22;;::::0;1634:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1744:8;1715:38;;1736:6;::::0;::::1;;;;;;;;1715:38;;;;;;;;;;;;1765:8;1756:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1561:216:::0;:::o;182:86::-;235:7;254:10;247:17;;182:86;:::o;7419:305::-;7527:1;7510:19;;:5;:19;;;7502:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7600:1;7581:21;;:7;:21;;;7573:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7674:6;7644:11;:18;7656:5;7644:18;;;;;;;;;;;;;;;:27;7663:7;7644:27;;;;;;;;;;;;;;;:36;;;;7704:7;7688:32;;7697:5;7688:32;;;7713:6;7688:32;;;;;;:::i;:::-;;;;;;;;7419:305;;;:::o;7728:1687::-;7830:1;7814:18;;:4;:18;;;7806:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7899:1;7885:16;;:2;:16;;;7877:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7961:1;7952:6;:10;7944:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8025:7;:5;:7::i;:::-;8017:15;;:4;:15;;;;:32;;;;;8042:7;:5;:7::i;:::-;8036:13;;:2;:13;;;;8017:32;8013:876;;;8082:11;;;;;;;;;;;8077:116;;8114:7;:5;:7::i;:::-;8106:15;;:4;:15;;;8098:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;8077:116;8215:12;;8205:6;:22;;8197:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;8274:13;;;;;;;;;;;8268:19;;:2;:19;;;8265:118;;8325:14;;8316:6;8300:13;8310:2;8300:9;:13::i;:::-;:22;;;;:::i;:::-;:39;8292:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;8265:118;8387:28;8418:24;8436:4;8418:9;:24::i;:::-;8387:55;;8445:12;8484:19;;8460:20;:43;;8445:58;;8535:12;;8511:20;:36;8508:84;;8576:12;;8553:35;;8508:84;8600:7;:18;;;;;8612:6;;;;;;;;;;8611:7;8600:18;:43;;;;;8630:13;;;;;;;;;;;8622:21;;:4;:21;;;;8600:43;:58;;;;;8647:11;;;;;;;;;;;8600:58;:87;;;;;8663:18;:24;8682:4;8663:24;;;;;;;;;;;;;;;;;;;;;;;;;8662:25;8600:87;:114;;;;;8692:18;:22;8711:2;8692:22;;;;;;;;;;;;;;;;;;;;;;;;;8691:23;8600:114;8596:290;;;8719:38;8736:20;8719:16;:38::i;:::-;8760:26;8789:21;8760:50;;8838:1;8817:18;:22;8813:70;;;8844:35;8857:21;8844:12;:35::i;:::-;8813:70;8716:170;8596:290;8051:838;;8013:876;8893:12;8908:4;8893:19;;8941:18;:24;8960:4;8941:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;8969:18;:22;8988:2;8969:22;;;;;;;;;;;;;;;;;;;;;;;;;8941:50;8940:102;;;;9005:13;;;;;;;;;;;8997:21;;:4;:21;;;;:44;;;;;9028:13;;;;;;;;;;;9022:19;;:2;:19;;;;8997:44;8940:102;8936:430;;;9057:5;9047:15;;8936:430;;;9108:13;;;;;;;;;;;9100:21;;:4;:21;;;:55;;;;;9139:15;;;;;;;;;;;9125:30;;:2;:30;;;;9100:55;9097:118;;;9172:14;;9160:9;:26;;;;9199:12;;9189:7;:22;;;;9097:118;9250:13;;;;;;;;;;;9244:19;;:2;:19;;;:55;;;;;9283:15;;;;;;;;;;;9267:32;;:4;:32;;;;9244:55;9240:121;;;9316:15;;9304:9;:27;;;;9344:13;;9334:7;:23;;;;9240:121;8936:430;9370:41;9385:4;9391:2;9395:6;9403:7;9370:14;:41::i;:::-;7803:1612;7728:1687;;;:::o;2089:168::-;2181:7;2206:1;2201;:6;;2209:12;2193:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2225:9;2241:1;2237;:5;;;;:::i;:::-;2225:17;;2252:1;2245:8;;;2089:168;;;;;:::o;9794:87::-;9843:17;;;;;;;;;;;:26;;:34;9870:6;9843:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9794:87;:::o;6900:235::-;6971:7;7005;;6994;:18;;6984:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;7065:19;7087:10;:8;:10::i;:::-;7065:32;;7107:24;7119:11;7107:7;:11;;:24;;;;:::i;:::-;7100:31;;;6900:235;;;:::o;9419:371::-;5121:4;5112:6;;:13;;;;;;;;;;;;;;;;;;9489:21:::1;9527:1;9513:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9489:40;;9550:4;9532;9537:1;9532:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9568:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9558:4;9563:1;9558:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;9593:62;9610:4;9625:15;;;;;;;;;;;9643:11;9593:8;:62::i;:::-;9658:15;;;;;;;;;;;:66;;;9727:11;9741:1;9745:4;9760;9768:15;9658:128;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9486:304;5141:5:::0;5132:6;;:14;;;;;;;;;;;;;;;;;;9419:371;:::o;10308:218::-;10420:7;10415:28;;10429:14;:12;:14::i;:::-;10415:28;10446:44;10464:6;10472:9;10483:6;10446:17;:44::i;:::-;10498:7;10493:29;;10507:15;:13;:15::i;:::-;10493:29;10308:218;;;;:::o;12509:144::-;12551:7;12564:15;12581;12600:19;:17;:19::i;:::-;12563:56;;;;12629:20;12641:7;12629;:11;;:20;;;;:::i;:::-;12622:27;;;;12509:144;:::o;2455:120::-;2513:7;2532:39;2536:1;2539;2532:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2525:46;;2455:120;;;;:::o;7139:175::-;7191:1;7178:9;;:14;:30;;;;;7207:1;7196:7;;:12;7178:30;7210:7;7174:43;7241:9;;7221:17;:29;;;;7271:7;;7253:15;:25;;;;7295:1;7283:9;:13;;;;7309:1;7299:7;:11;;;;7139:175;:::o;10530:450::-;10629:15;10647:23;10673:12;10688:23;10714:12;10729:13;10748:19;10759:7;10748:10;:19::i;:::-;10626:141;;;;;;;;;;;;10788:28;10808:7;10788;:15;10796:6;10788:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;10770:7;:15;10778:6;10770:15;;;;;;;;;;;;;;;:46;;;;10840:39;10863:15;10840:7;:18;10848:9;10840:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;10819:7;:18;10827:9;10819:18;;;;;;;;;;;;;;;:60;;;;10882:16;10892:5;10882:9;:16::i;:::-;10901:23;10913:4;10919;10901:11;:23::i;:::-;10949:9;10932:44;;10941:6;10932:44;;;10960:15;10932:44;;;;;;:::i;:::-;;;;;;;;10623:357;;;;;;10530:450;;;:::o;7318:97::-;7366:17;;7354:9;:29;;;;7396:15;;7386:7;:25;;;;7318:97::o;12657:221::-;12708:7;12717;12729:15;12747:7;;12729:25;;12757:15;3948:23;12757:25;;12799:20;3948:23;12799:7;;:11;;:20;;;;:::i;:::-;12789:7;:30;12785:61;;;12829:7;;3948:23;12821:25;;;;;;;;12785:61;12857:7;12866;12849:25;;;;;;12657:221;;;:::o;2579:167::-;2671:7;2695:1;2691;:5;2698:12;2683:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2714:9;2730:1;2726;:5;;;;:::i;:::-;2714:17;;2741:1;2734:8;;;2579:167;;;;;:::o;11335:447::-;11399:7;11409;11419;11429;11439;11449;11465:23;11490:12;11504:13;11522:40;11534:7;11543:9;;11554:7;;11522:11;:40::i;:::-;11464:98;;;;;;11565:19;11587:10;:8;:10::i;:::-;11565:32;;11601:15;11618:23;11643:12;11660:46;11672:7;11681:4;11687:5;11694:11;11660;:46::i;:::-;11600:106;;;;;;11717:7;11726:15;11743:4;11749:15;11766:4;11772:5;11709:69;;;;;;;;;;;;;;;;;;;11335:447;;;;;;;:::o;1961:124::-;2019:7;2038:43;2042:1;2045;2038:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2031:50;;1961:124;;;;:::o;1806:151::-;1864:7;1876:9;1892:1;1888;:5;;;;:::i;:::-;1876:17;;1909:1;1904;:6;;1896:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1952:1;1945:8;;;1806:151;;;;:::o;10984:183::-;11029:19;11051:10;:8;:10::i;:::-;11029:32;;11064:13;11080:22;11090:11;11080:5;:9;;:22;;;;:::i;:::-;11064:38;;11130:33;11157:5;11130:7;:22;11146:4;11130:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;11105:7;:22;11121:4;11105:22;;;;;;;;;;;;;;;:58;;;;11026:141;;10984:183;:::o;11171:127::-;11241:17;11253:4;11241:7;;:11;;:17;;;;:::i;:::-;11231:7;:27;;;;11274:20;11289:4;11274:10;;:14;;:20;;;;:::i;:::-;11261:10;:33;;;;11171:127;;:::o;11786:333::-;11891:7;11901;11911;11926:12;11941:30;11967:3;11941:21;11953:8;11941:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;11926:45;;11974:13;11990:28;12014:3;11990:19;12002:6;11990:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;11974:44;;12021:23;12047:28;12069:5;12047:17;12059:4;12047:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;12021:54;;12086:15;12103:4;12109:5;12078:37;;;;;;;;;11786:333;;;;;;;:::o;12123:382::-;12245:7;12255;12265;12280:15;12298:24;12310:11;12298:7;:11;;:24;;;;:::i;:::-;12280:42;;12325:12;12340:21;12349:11;12340:4;:8;;:21;;;;:::i;:::-;12325:36;;12364:13;12380:22;12390:11;12380:5;:9;;:22;;;;:::i;:::-;12364:38;;12405:23;12431:28;12453:5;12431:17;12443:4;12431:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;12405:54;;12470:7;12479:15;12496:4;12462:39;;;;;;;;;;12123:382;;;;;;;;:::o;2261:190::-;2319:7;2340:1;2335;:6;2331:27;;2353:1;2346:8;;;;2331:27;2360:9;2376:1;2372;:5;;;;:::i;:::-;2360:17;;2397:1;2392;2388;:5;;;;:::i;:::-;:10;2380:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2446:1;2439:8;;;2261:190;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:60::-;3367:3;3388:5;3381:12;;3339:60;;;:::o;3405:142::-;3455:9;3488:53;3506:34;3515:24;3533:5;3515:24;:::i;:::-;3506:34;:::i;:::-;3488:53;:::i;:::-;3475:66;;3405:142;;;:::o;3553:126::-;3603:9;3636:37;3667:5;3636:37;:::i;:::-;3623:50;;3553:126;;;:::o;3685:152::-;3761:9;3794:37;3825:5;3794:37;:::i;:::-;3781:50;;3685:152;;;:::o;3843:183::-;3956:63;4013:5;3956:63;:::i;:::-;3951:3;3944:76;3843:183;;:::o;4032:274::-;4151:4;4189:2;4178:9;4174:18;4166:26;;4202:97;4296:1;4285:9;4281:17;4272:6;4202:97;:::i;:::-;4032:274;;;;:::o;4312:118::-;4399:24;4417:5;4399:24;:::i;:::-;4394:3;4387:37;4312:118;;:::o;4436:222::-;4529:4;4567:2;4556:9;4552:18;4544:26;;4580:71;4648:1;4637:9;4633:17;4624:6;4580:71;:::i;:::-;4436:222;;;;:::o;4664:619::-;4741:6;4749;4757;4806:2;4794:9;4785:7;4781:23;4777:32;4774:119;;;4812:79;;:::i;:::-;4774:119;4932:1;4957:53;5002:7;4993:6;4982:9;4978:22;4957:53;:::i;:::-;4947:63;;4903:117;5059:2;5085:53;5130:7;5121:6;5110:9;5106:22;5085:53;:::i;:::-;5075:63;;5030:118;5187:2;5213:53;5258:7;5249:6;5238:9;5234:22;5213:53;:::i;:::-;5203:63;;5158:118;4664:619;;;;;:::o;5289:86::-;5324:7;5364:4;5357:5;5353:16;5342:27;;5289:86;;;:::o;5381:112::-;5464:22;5480:5;5464:22;:::i;:::-;5459:3;5452:35;5381:112;;:::o;5499:214::-;5588:4;5626:2;5615:9;5611:18;5603:26;;5639:67;5703:1;5692:9;5688:17;5679:6;5639:67;:::i;:::-;5499:214;;;;:::o;5719:118::-;5806:24;5824:5;5806:24;:::i;:::-;5801:3;5794:37;5719:118;;:::o;5843:222::-;5936:4;5974:2;5963:9;5959:18;5951:26;;5987:71;6055:1;6044:9;6040:17;6031:6;5987:71;:::i;:::-;5843:222;;;;:::o;6071:116::-;6141:21;6156:5;6141:21;:::i;:::-;6134:5;6131:32;6121:60;;6177:1;6174;6167:12;6121:60;6071:116;:::o;6193:133::-;6236:5;6274:6;6261:20;6252:29;;6290:30;6314:5;6290:30;:::i;:::-;6193:133;;;;:::o;6332:323::-;6388:6;6437:2;6425:9;6416:7;6412:23;6408:32;6405:119;;;6443:79;;:::i;:::-;6405:119;6563:1;6588:50;6630:7;6621:6;6610:9;6606:22;6588:50;:::i;:::-;6578:60;;6534:114;6332:323;;;;:::o;6661:329::-;6720:6;6769:2;6757:9;6748:7;6744:23;6740:32;6737:119;;;6775:79;;:::i;:::-;6737:119;6895:1;6920:53;6965:7;6956:6;6945:9;6941:22;6920:53;:::i;:::-;6910:63;;6866:117;6661:329;;;;:::o;6996:::-;7055:6;7104:2;7092:9;7083:7;7079:23;7075:32;7072:119;;;7110:79;;:::i;:::-;7072:119;7230:1;7255:53;7300:7;7291:6;7280:9;7276:22;7255:53;:::i;:::-;7245:63;;7201:117;6996:329;;;;:::o;7331:765::-;7417:6;7425;7433;7441;7490:3;7478:9;7469:7;7465:23;7461:33;7458:120;;;7497:79;;:::i;:::-;7458:120;7617:1;7642:53;7687:7;7678:6;7667:9;7663:22;7642:53;:::i;:::-;7632:63;;7588:117;7744:2;7770:53;7815:7;7806:6;7795:9;7791:22;7770:53;:::i;:::-;7760:63;;7715:118;7872:2;7898:53;7943:7;7934:6;7923:9;7919:22;7898:53;:::i;:::-;7888:63;;7843:118;8000:2;8026:53;8071:7;8062:6;8051:9;8047:22;8026:53;:::i;:::-;8016:63;;7971:118;7331:765;;;;;;;:::o;8102:117::-;8211:1;8208;8201:12;8225:117;8334:1;8331;8324:12;8348:117;8457:1;8454;8447:12;8488:568;8561:8;8571:6;8621:3;8614:4;8606:6;8602:17;8598:27;8588:122;;8629:79;;:::i;:::-;8588:122;8742:6;8729:20;8719:30;;8772:18;8764:6;8761:30;8758:117;;;8794:79;;:::i;:::-;8758:117;8908:4;8900:6;8896:17;8884:29;;8962:3;8954:4;8946:6;8942:17;8932:8;8928:32;8925:41;8922:128;;;8969:79;;:::i;:::-;8922:128;8488:568;;;;;:::o;9062:698::-;9154:6;9162;9170;9219:2;9207:9;9198:7;9194:23;9190:32;9187:119;;;9225:79;;:::i;:::-;9187:119;9373:1;9362:9;9358:17;9345:31;9403:18;9395:6;9392:30;9389:117;;;9425:79;;:::i;:::-;9389:117;9538:80;9610:7;9601:6;9590:9;9586:22;9538:80;:::i;:::-;9520:98;;;;9316:312;9667:2;9693:50;9735:7;9726:6;9715:9;9711:22;9693:50;:::i;:::-;9683:60;;9638:115;9062:698;;;;;:::o;9766:474::-;9834:6;9842;9891:2;9879:9;9870:7;9866:23;9862:32;9859:119;;;9897:79;;:::i;:::-;9859:119;10017:1;10042:53;10087:7;10078:6;10067:9;10063:22;10042:53;:::i;:::-;10032:63;;9988:117;10144:2;10170:53;10215:7;10206:6;10195:9;10191:22;10170:53;:::i;:::-;10160:63;;10115:118;9766:474;;;;;:::o;10246:182::-;10386:34;10382:1;10374:6;10370:14;10363:58;10246:182;:::o;10434:366::-;10576:3;10597:67;10661:2;10656:3;10597:67;:::i;:::-;10590:74;;10673:93;10762:3;10673:93;:::i;:::-;10791:2;10786:3;10782:12;10775:19;;10434:366;;;:::o;10806:419::-;10972:4;11010:2;10999:9;10995:18;10987:26;;11059:9;11053:4;11049:20;11045:1;11034:9;11030:17;11023:47;11087:131;11213:4;11087:131;:::i;:::-;11079:139;;10806:419;;;:::o;11231:180::-;11279:77;11276:1;11269:88;11376:4;11373:1;11366:15;11400:4;11397:1;11390:15;11417:225;11557:34;11553:1;11545:6;11541:14;11534:58;11626:8;11621:2;11613:6;11609:15;11602:33;11417:225;:::o;11648:366::-;11790:3;11811:67;11875:2;11870:3;11811:67;:::i;:::-;11804:74;;11887:93;11976:3;11887:93;:::i;:::-;12005:2;12000:3;11996:12;11989:19;;11648:366;;;:::o;12020:419::-;12186:4;12224:2;12213:9;12209:18;12201:26;;12273:9;12267:4;12263:20;12259:1;12248:9;12244:17;12237:47;12301:131;12427:4;12301:131;:::i;:::-;12293:139;;12020:419;;;:::o;12445:223::-;12585:34;12581:1;12573:6;12569:14;12562:58;12654:6;12649:2;12641:6;12637:15;12630:31;12445:223;:::o;12674:366::-;12816:3;12837:67;12901:2;12896:3;12837:67;:::i;:::-;12830:74;;12913:93;13002:3;12913:93;:::i;:::-;13031:2;13026:3;13022:12;13015:19;;12674:366;;;:::o;13046:419::-;13212:4;13250:2;13239:9;13235:18;13227:26;;13299:9;13293:4;13289:20;13285:1;13274:9;13270:17;13263:47;13327:131;13453:4;13327:131;:::i;:::-;13319:139;;13046:419;;;:::o;13471:221::-;13611:34;13607:1;13599:6;13595:14;13588:58;13680:4;13675:2;13667:6;13663:15;13656:29;13471:221;:::o;13698:366::-;13840:3;13861:67;13925:2;13920:3;13861:67;:::i;:::-;13854:74;;13937:93;14026:3;13937:93;:::i;:::-;14055:2;14050:3;14046:12;14039:19;;13698:366;;;:::o;14070:419::-;14236:4;14274:2;14263:9;14259:18;14251:26;;14323:9;14317:4;14313:20;14309:1;14298:9;14294:17;14287:47;14351:131;14477:4;14351:131;:::i;:::-;14343:139;;14070:419;;;:::o;14495:224::-;14635:34;14631:1;14623:6;14619:14;14612:58;14704:7;14699:2;14691:6;14687:15;14680:32;14495:224;:::o;14725:366::-;14867:3;14888:67;14952:2;14947:3;14888:67;:::i;:::-;14881:74;;14964:93;15053:3;14964:93;:::i;:::-;15082:2;15077:3;15073:12;15066:19;;14725:366;;;:::o;15097:419::-;15263:4;15301:2;15290:9;15286:18;15278:26;;15350:9;15344:4;15340:20;15336:1;15325:9;15321:17;15314:47;15378:131;15504:4;15378:131;:::i;:::-;15370:139;;15097:419;;;:::o;15522:222::-;15662:34;15658:1;15650:6;15646:14;15639:58;15731:5;15726:2;15718:6;15714:15;15707:30;15522:222;:::o;15750:366::-;15892:3;15913:67;15977:2;15972:3;15913:67;:::i;:::-;15906:74;;15989:93;16078:3;15989:93;:::i;:::-;16107:2;16102:3;16098:12;16091:19;;15750:366;;;:::o;16122:419::-;16288:4;16326:2;16315:9;16311:18;16303:26;;16375:9;16369:4;16365:20;16361:1;16350:9;16346:17;16339:47;16403:131;16529:4;16403:131;:::i;:::-;16395:139;;16122:419;;;:::o;16547:228::-;16687:34;16683:1;16675:6;16671:14;16664:58;16756:11;16751:2;16743:6;16739:15;16732:36;16547:228;:::o;16781:366::-;16923:3;16944:67;17008:2;17003:3;16944:67;:::i;:::-;16937:74;;17020:93;17109:3;17020:93;:::i;:::-;17138:2;17133:3;17129:12;17122:19;;16781:366;;;:::o;17153:419::-;17319:4;17357:2;17346:9;17342:18;17334:26;;17406:9;17400:4;17396:20;17392:1;17381:9;17377:17;17370:47;17434:131;17560:4;17434:131;:::i;:::-;17426:139;;17153:419;;;:::o;17578:250::-;17718:34;17714:1;17706:6;17702:14;17695:58;17787:33;17782:2;17774:6;17770:15;17763:58;17578:250;:::o;17834:366::-;17976:3;17997:67;18061:2;18056:3;17997:67;:::i;:::-;17990:74;;18073:93;18162:3;18073:93;:::i;:::-;18191:2;18186:3;18182:12;18175:19;;17834:366;;;:::o;18206:419::-;18372:4;18410:2;18399:9;18395:18;18387:26;;18459:9;18453:4;18449:20;18445:1;18434:9;18430:17;18423:47;18487:131;18613:4;18487:131;:::i;:::-;18479:139;;18206:419;;;:::o;18631:178::-;18771:30;18767:1;18759:6;18755:14;18748:54;18631:178;:::o;18815:366::-;18957:3;18978:67;19042:2;19037:3;18978:67;:::i;:::-;18971:74;;19054:93;19143:3;19054:93;:::i;:::-;19172:2;19167:3;19163:12;19156:19;;18815:366;;;:::o;19187:419::-;19353:4;19391:2;19380:9;19376:18;19368:26;;19440:9;19434:4;19430:20;19426:1;19415:9;19411:17;19404:47;19468:131;19594:4;19468:131;:::i;:::-;19460:139;;19187:419;;;:::o;19612:180::-;19660:77;19657:1;19650:88;19757:4;19754:1;19747:15;19781:4;19778:1;19771:15;19798:191;19838:3;19857:20;19875:1;19857:20;:::i;:::-;19852:25;;19891:20;19909:1;19891:20;:::i;:::-;19886:25;;19934:1;19931;19927:9;19920:16;;19955:3;19952:1;19949:10;19946:36;;;19962:18;;:::i;:::-;19946:36;19798:191;;;;:::o;19995:222::-;20135:34;20131:1;20123:6;20119:14;20112:58;20204:5;20199:2;20191:6;20187:15;20180:30;19995:222;:::o;20223:366::-;20365:3;20386:67;20450:2;20445:3;20386:67;:::i;:::-;20379:74;;20462:93;20551:3;20462:93;:::i;:::-;20580:2;20575:3;20571:12;20564:19;;20223:366;;;:::o;20595:419::-;20761:4;20799:2;20788:9;20784:18;20776:26;;20848:9;20842:4;20838:20;20834:1;20823:9;20819:17;20812:47;20876:131;21002:4;20876:131;:::i;:::-;20868:139;;20595:419;;;:::o;21020:194::-;21060:4;21080:20;21098:1;21080:20;:::i;:::-;21075:25;;21114:20;21132:1;21114:20;:::i;:::-;21109:25;;21158:1;21155;21151:9;21143:17;;21182:1;21176:4;21173:11;21170:37;;;21187:18;;:::i;:::-;21170:37;21020:194;;;;:::o;21220:229::-;21360:34;21356:1;21348:6;21344:14;21337:58;21429:12;21424:2;21416:6;21412:15;21405:37;21220:229;:::o;21455:366::-;21597:3;21618:67;21682:2;21677:3;21618:67;:::i;:::-;21611:74;;21694:93;21783:3;21694:93;:::i;:::-;21812:2;21807:3;21803:12;21796:19;;21455:366;;;:::o;21827:419::-;21993:4;22031:2;22020:9;22016:18;22008:26;;22080:9;22074:4;22070:20;22066:1;22055:9;22051:17;22044:47;22108:131;22234:4;22108:131;:::i;:::-;22100:139;;21827:419;;;:::o;22252:180::-;22300:77;22297:1;22290:88;22397:4;22394:1;22387:15;22421:4;22418:1;22411:15;22438:143;22495:5;22526:6;22520:13;22511:22;;22542:33;22569:5;22542:33;:::i;:::-;22438:143;;;;:::o;22587:351::-;22657:6;22706:2;22694:9;22685:7;22681:23;22677:32;22674:119;;;22712:79;;:::i;:::-;22674:119;22832:1;22857:64;22913:7;22904:6;22893:9;22889:22;22857:64;:::i;:::-;22847:74;;22803:128;22587:351;;;;:::o;22944:85::-;22989:7;23018:5;23007:16;;22944:85;;;:::o;23035:158::-;23093:9;23126:61;23144:42;23153:32;23179:5;23153:32;:::i;:::-;23144:42;:::i;:::-;23126:61;:::i;:::-;23113:74;;23035:158;;;:::o;23199:147::-;23294:45;23333:5;23294:45;:::i;:::-;23289:3;23282:58;23199:147;;:::o;23352:114::-;23419:6;23453:5;23447:12;23437:22;;23352:114;;;:::o;23472:184::-;23571:11;23605:6;23600:3;23593:19;23645:4;23640:3;23636:14;23621:29;;23472:184;;;;:::o;23662:132::-;23729:4;23752:3;23744:11;;23782:4;23777:3;23773:14;23765:22;;23662:132;;;:::o;23800:108::-;23877:24;23895:5;23877:24;:::i;:::-;23872:3;23865:37;23800:108;;:::o;23914:179::-;23983:10;24004:46;24046:3;24038:6;24004:46;:::i;:::-;24082:4;24077:3;24073:14;24059:28;;23914:179;;;;:::o;24099:113::-;24169:4;24201;24196:3;24192:14;24184:22;;24099:113;;;:::o;24248:732::-;24367:3;24396:54;24444:5;24396:54;:::i;:::-;24466:86;24545:6;24540:3;24466:86;:::i;:::-;24459:93;;24576:56;24626:5;24576:56;:::i;:::-;24655:7;24686:1;24671:284;24696:6;24693:1;24690:13;24671:284;;;24772:6;24766:13;24799:63;24858:3;24843:13;24799:63;:::i;:::-;24792:70;;24885:60;24938:6;24885:60;:::i;:::-;24875:70;;24731:224;24718:1;24715;24711:9;24706:14;;24671:284;;;24675:14;24971:3;24964:10;;24372:608;;;24248:732;;;;:::o;24986:831::-;25249:4;25287:3;25276:9;25272:19;25264:27;;25301:71;25369:1;25358:9;25354:17;25345:6;25301:71;:::i;:::-;25382:80;25458:2;25447:9;25443:18;25434:6;25382:80;:::i;:::-;25509:9;25503:4;25499:20;25494:2;25483:9;25479:18;25472:48;25537:108;25640:4;25631:6;25537:108;:::i;:::-;25529:116;;25655:72;25723:2;25712:9;25708:18;25699:6;25655:72;:::i;:::-;25737:73;25805:3;25794:9;25790:19;25781:6;25737:73;:::i;:::-;24986:831;;;;;;;;:::o;25823:180::-;25871:77;25868:1;25861:88;25968:4;25965:1;25958:15;25992:4;25989:1;25982:15;26009:185;26049:1;26066:20;26084:1;26066:20;:::i;:::-;26061:25;;26100:20;26118:1;26100:20;:::i;:::-;26095:25;;26139:1;26129:35;;26144:18;;:::i;:::-;26129:35;26186:1;26183;26179:9;26174:14;;26009:185;;;;:::o;26200:177::-;26340:29;26336:1;26328:6;26324:14;26317:53;26200:177;:::o;26383:366::-;26525:3;26546:67;26610:2;26605:3;26546:67;:::i;:::-;26539:74;;26622:93;26711:3;26622:93;:::i;:::-;26740:2;26735:3;26731:12;26724:19;;26383:366;;;:::o;26755:419::-;26921:4;26959:2;26948:9;26944:18;26936:26;;27008:9;27002:4;26998:20;26994:1;26983:9;26979:17;26972:47;27036:131;27162:4;27036:131;:::i;:::-;27028:139;;26755:419;;;:::o;27180:410::-;27220:7;27243:20;27261:1;27243:20;:::i;:::-;27238:25;;27277:20;27295:1;27277:20;:::i;:::-;27272:25;;27332:1;27329;27325:9;27354:30;27372:11;27354:30;:::i;:::-;27343:41;;27533:1;27524:7;27520:15;27517:1;27514:22;27494:1;27487:9;27467:83;27444:139;;27563:18;;:::i;:::-;27444:139;27228:362;27180:410;;;;:::o;27596:220::-;27736:34;27732:1;27724:6;27720:14;27713:58;27805:3;27800:2;27792:6;27788:15;27781:28;27596:220;:::o;27822:366::-;27964:3;27985:67;28049:2;28044:3;27985:67;:::i;:::-;27978:74;;28061:93;28150:3;28061:93;:::i;:::-;28179:2;28174:3;28170:12;28163:19;;27822:366;;;:::o;28194:419::-;28360:4;28398:2;28387:9;28383:18;28375:26;;28447:9;28441:4;28437:20;28433:1;28422:9;28418:17;28411:47;28475:131;28601:4;28475:131;:::i;:::-;28467:139;;28194:419;;;:::o

Swarm Source

ipfs://2af43bd46c47d1e19480a129049aef813430750aff174d682ea40edb328116fe
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.