ERC-20
Source Code
Overview
Max Total Supply
420,690,000,000,000 MATO
Holders
931
Transfers
-
0
Market
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
| # | Exchange | Pair | Price | 24H Volume | % Volume |
|---|
Contract Name:
MatoTheMouse
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2025-05-10
*/
/*
https://t.me/matocoineth
*/
// 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 MatoTheMouse is Context, IERC20, Ownable {
using SafeMath for uint256;
string private constant _name = "Mato The Mouse";
string private constant _symbol = "MATO";
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 = 0;
uint256 private _redisFeeOnSell = 0;
uint256 private _taxFeeOnSell = 0;
//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(0xC79F18864503222039F22498c41eDa8e29c8bA4a);
address payable private _marketingAddress = payable(0xC79F18864503222039F22498c41eDa8e29c8bA4a);
IUniswapV2Router02 public uniswapV2Router;
address public uniswapV2Pair;
bool private tradingOpen = true;
bool private inSwap = false;
bool private swapEnabled = true;
uint256 public _maxTxAmount = 8300000000000 * 10**9;
uint256 public _maxWalletSize = 8300000000000 * 10**9;
uint256 public _swapTokensAtAmount = 8300000000000 * 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
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","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"}]Contract Creation Code
6080604052695915a68d88da6a0800005f1961001b91906106ee565b5f19610027919061074b565b6006555f6008555f6009555f600a555f600b55600a54600c55600b54600d55600c54600e55600d54600f5573c79f18864503222039f22498c41eda8e29c8ba4a60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c79f18864503222039f22498c41eda8e29c8ba4a60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560146101000a81548160ff0219169083151502179055505f6015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff0219169083151502179055506901c1f1a388b71e3000006016556901c1f1a388b71e3000006017556901c1f1a388b71e30000060185534801561017e575f80fd5b505f61018e61068a60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f61023e61068a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561031c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061034091906107dc565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103c991906107dc565b6040518363ffffffff1660e01b81526004016103e6929190610816565b6020604051808303815f875af1158015610402573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061042691906107dc565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f61047861069160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061061661068a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef695915a68d88da6a08000060405161067c919061084c565b60405180910390a350610865565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6106f8826106b8565b9150610703836106b8565b925082610713576107126106c1565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610755826106b8565b9150610760836106b8565b92508282039050818111156107785761077761071e565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6107ab82610782565b9050919050565b6107bb816107a1565b81146107c5575f80fd5b50565b5f815190506107d6816107b2565b92915050565b5f602082840312156107f1576107f061077e565b5b5f6107fe848285016107c8565b91505092915050565b610810816107a1565b82525050565b5f6040820190506108295f830185610807565b6108366020830184610807565b9392505050565b610846816106b8565b82525050565b5f60208201905061085f5f83018461083d565b92915050565b61358b806108725f395ff3fe60806040526004361061019f575f3560e01c80637d1db4a5116100eb578063a9059cbb11610089578063c492f04611610063578063c492f04614610598578063dd62ed3e146105c0578063ea1644d5146105fc578063f2fde38b14610624576101a6565b8063a9059cbb1461050a578063bfd7928414610546578063c3c8cd8014610582576101a6565b80638f9a55c0116100c55780638f9a55c01461046657806395d89b411461049057806398a5c315146104ba578063a2a957bb146104e2576101a6565b80637d1db4a5146103d65780637f2feddc146104005780638da5cb5b1461043c576101a6565b8063313ce567116101585780636fc3eaec116101325780636fc3eaec1461034657806370a082311461035c578063715018a61461039857806374010ece146103ae576101a6565b8063313ce567146102ca57806349bd5a5e146102f45780636d8aa8f81461031e576101a6565b806306fdde03146101aa578063095ea7b3146101d45780631694505e1461021057806318160ddd1461023a57806323b872dd146102645780632fd689e3146102a0576101a6565b366101a657005b5f80fd5b3480156101b5575f80fd5b506101be61064c565b6040516101cb91906126de565b60405180910390f35b3480156101df575f80fd5b506101fa60048036038101906101f59190612793565b610689565b60405161020791906127eb565b60405180910390f35b34801561021b575f80fd5b506102246106a6565b604051610231919061285f565b60405180910390f35b348015610245575f80fd5b5061024e6106cb565b60405161025b9190612887565b60405180910390f35b34801561026f575f80fd5b5061028a600480360381019061028591906128a0565b6106dc565b60405161029791906127eb565b60405180910390f35b3480156102ab575f80fd5b506102b46107b0565b6040516102c19190612887565b60405180910390f35b3480156102d5575f80fd5b506102de6107b6565b6040516102eb919061290b565b60405180910390f35b3480156102ff575f80fd5b506103086107be565b6040516103159190612933565b60405180910390f35b348015610329575f80fd5b50610344600480360381019061033f9190612976565b6107e3565b005b348015610351575f80fd5b5061035a610894565b005b348015610367575f80fd5b50610382600480360381019061037d91906129a1565b610961565b60405161038f9190612887565b60405180910390f35b3480156103a3575f80fd5b506103ac6109af565b005b3480156103b9575f80fd5b506103d460048036038101906103cf91906129cc565b610afd565b005b3480156103e1575f80fd5b506103ea610b9b565b6040516103f79190612887565b60405180910390f35b34801561040b575f80fd5b50610426600480360381019061042191906129a1565b610ba1565b6040516104339190612887565b60405180910390f35b348015610447575f80fd5b50610450610bb6565b60405161045d9190612933565b60405180910390f35b348015610471575f80fd5b5061047a610bdd565b6040516104879190612887565b60405180910390f35b34801561049b575f80fd5b506104a4610be3565b6040516104b191906126de565b60405180910390f35b3480156104c5575f80fd5b506104e060048036038101906104db91906129cc565b610c20565b005b3480156104ed575f80fd5b50610508600480360381019061050391906129f7565b610cbe565b005b348015610515575f80fd5b50610530600480360381019061052b9190612793565b610d74565b60405161053d91906127eb565b60405180910390f35b348015610551575f80fd5b5061056c600480360381019061056791906129a1565b610d91565b60405161057991906127eb565b60405180910390f35b34801561058d575f80fd5b50610596610dae565b005b3480156105a3575f80fd5b506105be60048036038101906105b99190612abc565b610e83565b005b3480156105cb575f80fd5b506105e660048036038101906105e19190612b19565b610fb2565b6040516105f39190612887565b60405180910390f35b348015610607575f80fd5b50610622600480360381019061061d91906129cc565b611034565b005b34801561062f575f80fd5b5061064a600480360381019061064591906129a1565b6110d2565b005b60606040518060400160405280600e81526020017f4d61746f20546865204d6f757365000000000000000000000000000000000000815250905090565b5f61069c61069561128f565b8484611296565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f695915a68d88da6a080000905090565b5f6106e8848484611459565b6107a5846106f461128f565b6107a08560405180606001604052806028815260200161352e6028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61075761128f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611bdc9092919063ffffffff16565b611296565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107eb61128f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086e90612ba1565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108d461128f565b73ffffffffffffffffffffffffffffffffffffffff161480610949575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661093161128f565b73ffffffffffffffffffffffffffffffffffffffff16145b610951575f80fd5b5f47905061095e81611c3e565b50565b5f6109a860025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ca6565b9050919050565b6109b761128f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3a90612ba1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b0561128f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8890612ba1565b60405180910390fd5b8060168190555050565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600481526020017f4d41544f00000000000000000000000000000000000000000000000000000000815250905090565b610c2861128f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cab90612ba1565b60405180910390fd5b8060188190555050565b610cc661128f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990612ba1565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f610d87610d8061128f565b8484611459565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dee61128f565b73ffffffffffffffffffffffffffffffffffffffff161480610e63575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e4b61128f565b73ffffffffffffffffffffffffffffffffffffffff16145b610e6b575f80fd5b5f610e7530610961565b9050610e8081611d12565b50565b610e8b61128f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0e90612ba1565b60405180910390fd5b5f5b83839050811015610fac578160055f868685818110610f3b57610f3a612bbf565b5b9050602002016020810190610f5091906129a1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610f19565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61103c61128f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bf90612ba1565b60405180910390fd5b8060178190555050565b6110da61128f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611166576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115d90612ba1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cb90612c5c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb90612cea565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611372576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136990612d78565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161144c9190612887565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114be90612e06565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152c90612e94565b60405180910390fd5b5f8111611577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156e90612f22565b60405180910390fd5b61157f610bb6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115ed57506115bd610bb6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156118e957601560149054906101000a900460ff1661167c5761160e610bb6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461167b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167290612fb0565b60405180910390fd5b5b6016548111156116c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b890613018565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461176d576017548161172284610961565b61172c9190613063565b1061176c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176390613106565b60405180910390fd5b5b5f61177730610961565b90505f601854821015905060165482106117915760165491505b8080156117a9575060158054906101000a900460ff16155b8015611802575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561181a5750601560169054906101000a900460ff165b801561186d575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156118c0575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156118e6576118ce82611d12565b5f4790505f8111156118e4576118e347611c3e565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611989575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611a3a575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a39575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611a47575f9050611bca565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611af0575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b0857600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611bb1575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611bc957600a54600c81905550600b54600d819055505b5b611bd684848484611f7b565b50505050565b5f838311158290611c23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1a91906126de565b60405180910390fd5b505f8385611c319190613124565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611ca2573d5f803e3d5ffd5b5050565b5f600654821115611cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce3906131c7565b60405180910390fd5b5f611cf5611fa8565b9050611d0a8184611fd190919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611d4857611d476131e5565b5b604051908082528060200260200182016040528015611d765781602001602082028036833780820191505090505b50905030815f81518110611d8d57611d8c612bbf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e31573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e559190613226565b81600181518110611e6957611e68612bbf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611ecf3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611296565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611f31959493929190613341565b5f604051808303815f87803b158015611f48575f80fd5b505af1158015611f5a573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b80611f8957611f8861201a565b5b611f94848484612053565b80611fa257611fa1612213565b5b50505050565b5f805f611fb3612227565b91509150611fca8183611fd190919063ffffffff16565b9250505090565b5f61201283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612289565b905092915050565b5f600c5414801561202c57505f600d54145b61205157600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f80612062876122ea565b9550955095509550955095506120be8660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461234a90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061214f8560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461239390919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612199816123f0565b6121a384836124a7565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516122009190612887565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f695915a68d88da6a080000905061225c695915a68d88da6a080000600654611fd190919063ffffffff16565b82101561227c57600654695915a68d88da6a080000935093505050612285565b81819350935050505b9091565b5f80831182906122cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c691906126de565b60405180910390fd5b505f83856122dd91906133c6565b9050809150509392505050565b5f805f805f805f805f6123028a600c54600d546124e1565b9250925092505f612311611fa8565b90505f805f6123228e878787612573565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61238b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bdc565b905092915050565b5f8082846123a19190613063565b9050838110156123e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123dd90613440565b60405180910390fd5b8091505092915050565b5f6123f9611fa8565b90505f61240f82846125f790919063ffffffff16565b90506124618160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461239390919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6124bc8260065461234a90919063ffffffff16565b6006819055506124d78160075461239390919063ffffffff16565b6007819055505050565b5f805f8061250b60646124fd888a6125f790919063ffffffff16565b611fd190919063ffffffff16565b90505f6125346064612526888b6125f790919063ffffffff16565b611fd190919063ffffffff16565b90505f61255c8261254e858c61234a90919063ffffffff16565b61234a90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061258a85896125f790919063ffffffff16565b90505f6125a086896125f790919063ffffffff16565b90505f6125b687896125f790919063ffffffff16565b90505f6125de826125d0858761234a90919063ffffffff16565b61234a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612607575f9050612668565b5f8284612614919061345e565b905082848261262391906133c6565b14612663576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265a9061350f565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6126b08261266e565b6126ba8185612678565b93506126ca818560208601612688565b6126d381612696565b840191505092915050565b5f6020820190508181035f8301526126f681846126a6565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61272f82612706565b9050919050565b61273f81612725565b8114612749575f80fd5b50565b5f8135905061275a81612736565b92915050565b5f819050919050565b61277281612760565b811461277c575f80fd5b50565b5f8135905061278d81612769565b92915050565b5f80604083850312156127a9576127a86126fe565b5b5f6127b68582860161274c565b92505060206127c78582860161277f565b9150509250929050565b5f8115159050919050565b6127e5816127d1565b82525050565b5f6020820190506127fe5f8301846127dc565b92915050565b5f819050919050565b5f61282761282261281d84612706565b612804565b612706565b9050919050565b5f6128388261280d565b9050919050565b5f6128498261282e565b9050919050565b6128598161283f565b82525050565b5f6020820190506128725f830184612850565b92915050565b61288181612760565b82525050565b5f60208201905061289a5f830184612878565b92915050565b5f805f606084860312156128b7576128b66126fe565b5b5f6128c48682870161274c565b93505060206128d58682870161274c565b92505060406128e68682870161277f565b9150509250925092565b5f60ff82169050919050565b612905816128f0565b82525050565b5f60208201905061291e5f8301846128fc565b92915050565b61292d81612725565b82525050565b5f6020820190506129465f830184612924565b92915050565b612955816127d1565b811461295f575f80fd5b50565b5f813590506129708161294c565b92915050565b5f6020828403121561298b5761298a6126fe565b5b5f61299884828501612962565b91505092915050565b5f602082840312156129b6576129b56126fe565b5b5f6129c38482850161274c565b91505092915050565b5f602082840312156129e1576129e06126fe565b5b5f6129ee8482850161277f565b91505092915050565b5f805f8060808587031215612a0f57612a0e6126fe565b5b5f612a1c8782880161277f565b9450506020612a2d8782880161277f565b9350506040612a3e8782880161277f565b9250506060612a4f8782880161277f565b91505092959194509250565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612a7c57612a7b612a5b565b5b8235905067ffffffffffffffff811115612a9957612a98612a5f565b5b602083019150836020820283011115612ab557612ab4612a63565b5b9250929050565b5f805f60408486031215612ad357612ad26126fe565b5b5f84013567ffffffffffffffff811115612af057612aef612702565b5b612afc86828701612a67565b93509350506020612b0f86828701612962565b9150509250925092565b5f8060408385031215612b2f57612b2e6126fe565b5b5f612b3c8582860161274c565b9250506020612b4d8582860161274c565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612b8b602083612678565b9150612b9682612b57565b602082019050919050565b5f6020820190508181035f830152612bb881612b7f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612c46602683612678565b9150612c5182612bec565b604082019050919050565b5f6020820190508181035f830152612c7381612c3a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612cd4602483612678565b9150612cdf82612c7a565b604082019050919050565b5f6020820190508181035f830152612d0181612cc8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612d62602283612678565b9150612d6d82612d08565b604082019050919050565b5f6020820190508181035f830152612d8f81612d56565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612df0602583612678565b9150612dfb82612d96565b604082019050919050565b5f6020820190508181035f830152612e1d81612de4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612e7e602383612678565b9150612e8982612e24565b604082019050919050565b5f6020820190508181035f830152612eab81612e72565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612f0c602983612678565b9150612f1782612eb2565b604082019050919050565b5f6020820190508181035f830152612f3981612f00565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f612f9a603f83612678565b9150612fa582612f40565b604082019050919050565b5f6020820190508181035f830152612fc781612f8e565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f613002601c83612678565b915061300d82612fce565b602082019050919050565b5f6020820190508181035f83015261302f81612ff6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61306d82612760565b915061307883612760565b92508282019050808211156130905761308f613036565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f6130f0602383612678565b91506130fb82613096565b604082019050919050565b5f6020820190508181035f83015261311d816130e4565b9050919050565b5f61312e82612760565b915061313983612760565b925082820390508181111561315157613150613036565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f6131b1602a83612678565b91506131bc82613157565b604082019050919050565b5f6020820190508181035f8301526131de816131a5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061322081612736565b92915050565b5f6020828403121561323b5761323a6126fe565b5b5f61324884828501613212565b91505092915050565b5f819050919050565b5f61327461326f61326a84613251565b612804565b612760565b9050919050565b6132848161325a565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6132bc81612725565b82525050565b5f6132cd83836132b3565b60208301905092915050565b5f602082019050919050565b5f6132ef8261328a565b6132f98185613294565b9350613304836132a4565b805f5b8381101561333457815161331b88826132c2565b9750613326836132d9565b925050600181019050613307565b5085935050505092915050565b5f60a0820190506133545f830188612878565b613361602083018761327b565b818103604083015261337381866132e5565b90506133826060830185612924565b61338f6080830184612878565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6133d082612760565b91506133db83612760565b9250826133eb576133ea613399565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61342a601b83612678565b9150613435826133f6565b602082019050919050565b5f6020820190508181035f8301526134578161341e565b9050919050565b5f61346882612760565b915061347383612760565b925082820261348181612760565b9150828204841483151761349857613497613036565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6134f9602183612678565b91506135048261349f565b604082019050919050565b5f6020820190508181035f830152613526816134ed565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203fbca77b9e8f7527afa65387be5acd4fd69e29a143d31a1fe97fcf3d823a089b64736f6c634300081a0033
Deployed Bytecode
0x60806040526004361061019f575f3560e01c80637d1db4a5116100eb578063a9059cbb11610089578063c492f04611610063578063c492f04614610598578063dd62ed3e146105c0578063ea1644d5146105fc578063f2fde38b14610624576101a6565b8063a9059cbb1461050a578063bfd7928414610546578063c3c8cd8014610582576101a6565b80638f9a55c0116100c55780638f9a55c01461046657806395d89b411461049057806398a5c315146104ba578063a2a957bb146104e2576101a6565b80637d1db4a5146103d65780637f2feddc146104005780638da5cb5b1461043c576101a6565b8063313ce567116101585780636fc3eaec116101325780636fc3eaec1461034657806370a082311461035c578063715018a61461039857806374010ece146103ae576101a6565b8063313ce567146102ca57806349bd5a5e146102f45780636d8aa8f81461031e576101a6565b806306fdde03146101aa578063095ea7b3146101d45780631694505e1461021057806318160ddd1461023a57806323b872dd146102645780632fd689e3146102a0576101a6565b366101a657005b5f80fd5b3480156101b5575f80fd5b506101be61064c565b6040516101cb91906126de565b60405180910390f35b3480156101df575f80fd5b506101fa60048036038101906101f59190612793565b610689565b60405161020791906127eb565b60405180910390f35b34801561021b575f80fd5b506102246106a6565b604051610231919061285f565b60405180910390f35b348015610245575f80fd5b5061024e6106cb565b60405161025b9190612887565b60405180910390f35b34801561026f575f80fd5b5061028a600480360381019061028591906128a0565b6106dc565b60405161029791906127eb565b60405180910390f35b3480156102ab575f80fd5b506102b46107b0565b6040516102c19190612887565b60405180910390f35b3480156102d5575f80fd5b506102de6107b6565b6040516102eb919061290b565b60405180910390f35b3480156102ff575f80fd5b506103086107be565b6040516103159190612933565b60405180910390f35b348015610329575f80fd5b50610344600480360381019061033f9190612976565b6107e3565b005b348015610351575f80fd5b5061035a610894565b005b348015610367575f80fd5b50610382600480360381019061037d91906129a1565b610961565b60405161038f9190612887565b60405180910390f35b3480156103a3575f80fd5b506103ac6109af565b005b3480156103b9575f80fd5b506103d460048036038101906103cf91906129cc565b610afd565b005b3480156103e1575f80fd5b506103ea610b9b565b6040516103f79190612887565b60405180910390f35b34801561040b575f80fd5b50610426600480360381019061042191906129a1565b610ba1565b6040516104339190612887565b60405180910390f35b348015610447575f80fd5b50610450610bb6565b60405161045d9190612933565b60405180910390f35b348015610471575f80fd5b5061047a610bdd565b6040516104879190612887565b60405180910390f35b34801561049b575f80fd5b506104a4610be3565b6040516104b191906126de565b60405180910390f35b3480156104c5575f80fd5b506104e060048036038101906104db91906129cc565b610c20565b005b3480156104ed575f80fd5b50610508600480360381019061050391906129f7565b610cbe565b005b348015610515575f80fd5b50610530600480360381019061052b9190612793565b610d74565b60405161053d91906127eb565b60405180910390f35b348015610551575f80fd5b5061056c600480360381019061056791906129a1565b610d91565b60405161057991906127eb565b60405180910390f35b34801561058d575f80fd5b50610596610dae565b005b3480156105a3575f80fd5b506105be60048036038101906105b99190612abc565b610e83565b005b3480156105cb575f80fd5b506105e660048036038101906105e19190612b19565b610fb2565b6040516105f39190612887565b60405180910390f35b348015610607575f80fd5b50610622600480360381019061061d91906129cc565b611034565b005b34801561062f575f80fd5b5061064a600480360381019061064591906129a1565b6110d2565b005b60606040518060400160405280600e81526020017f4d61746f20546865204d6f757365000000000000000000000000000000000000815250905090565b5f61069c61069561128f565b8484611296565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f695915a68d88da6a080000905090565b5f6106e8848484611459565b6107a5846106f461128f565b6107a08560405180606001604052806028815260200161352e6028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61075761128f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611bdc9092919063ffffffff16565b611296565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107eb61128f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086e90612ba1565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108d461128f565b73ffffffffffffffffffffffffffffffffffffffff161480610949575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661093161128f565b73ffffffffffffffffffffffffffffffffffffffff16145b610951575f80fd5b5f47905061095e81611c3e565b50565b5f6109a860025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ca6565b9050919050565b6109b761128f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3a90612ba1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b0561128f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8890612ba1565b60405180910390fd5b8060168190555050565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600481526020017f4d41544f00000000000000000000000000000000000000000000000000000000815250905090565b610c2861128f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cab90612ba1565b60405180910390fd5b8060188190555050565b610cc661128f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990612ba1565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f610d87610d8061128f565b8484611459565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dee61128f565b73ffffffffffffffffffffffffffffffffffffffff161480610e63575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e4b61128f565b73ffffffffffffffffffffffffffffffffffffffff16145b610e6b575f80fd5b5f610e7530610961565b9050610e8081611d12565b50565b610e8b61128f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0e90612ba1565b60405180910390fd5b5f5b83839050811015610fac578160055f868685818110610f3b57610f3a612bbf565b5b9050602002016020810190610f5091906129a1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610f19565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61103c61128f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bf90612ba1565b60405180910390fd5b8060178190555050565b6110da61128f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611166576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115d90612ba1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cb90612c5c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb90612cea565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611372576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136990612d78565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161144c9190612887565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114be90612e06565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152c90612e94565b60405180910390fd5b5f8111611577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156e90612f22565b60405180910390fd5b61157f610bb6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115ed57506115bd610bb6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156118e957601560149054906101000a900460ff1661167c5761160e610bb6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461167b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167290612fb0565b60405180910390fd5b5b6016548111156116c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b890613018565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461176d576017548161172284610961565b61172c9190613063565b1061176c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176390613106565b60405180910390fd5b5b5f61177730610961565b90505f601854821015905060165482106117915760165491505b8080156117a9575060158054906101000a900460ff16155b8015611802575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561181a5750601560169054906101000a900460ff165b801561186d575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156118c0575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156118e6576118ce82611d12565b5f4790505f8111156118e4576118e347611c3e565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611989575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611a3a575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a39575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611a47575f9050611bca565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611af0575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b0857600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611bb1575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611bc957600a54600c81905550600b54600d819055505b5b611bd684848484611f7b565b50505050565b5f838311158290611c23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1a91906126de565b60405180910390fd5b505f8385611c319190613124565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611ca2573d5f803e3d5ffd5b5050565b5f600654821115611cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce3906131c7565b60405180910390fd5b5f611cf5611fa8565b9050611d0a8184611fd190919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611d4857611d476131e5565b5b604051908082528060200260200182016040528015611d765781602001602082028036833780820191505090505b50905030815f81518110611d8d57611d8c612bbf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e31573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e559190613226565b81600181518110611e6957611e68612bbf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611ecf3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611296565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611f31959493929190613341565b5f604051808303815f87803b158015611f48575f80fd5b505af1158015611f5a573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b80611f8957611f8861201a565b5b611f94848484612053565b80611fa257611fa1612213565b5b50505050565b5f805f611fb3612227565b91509150611fca8183611fd190919063ffffffff16565b9250505090565b5f61201283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612289565b905092915050565b5f600c5414801561202c57505f600d54145b61205157600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f80612062876122ea565b9550955095509550955095506120be8660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461234a90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061214f8560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461239390919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612199816123f0565b6121a384836124a7565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516122009190612887565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f695915a68d88da6a080000905061225c695915a68d88da6a080000600654611fd190919063ffffffff16565b82101561227c57600654695915a68d88da6a080000935093505050612285565b81819350935050505b9091565b5f80831182906122cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c691906126de565b60405180910390fd5b505f83856122dd91906133c6565b9050809150509392505050565b5f805f805f805f805f6123028a600c54600d546124e1565b9250925092505f612311611fa8565b90505f805f6123228e878787612573565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61238b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bdc565b905092915050565b5f8082846123a19190613063565b9050838110156123e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123dd90613440565b60405180910390fd5b8091505092915050565b5f6123f9611fa8565b90505f61240f82846125f790919063ffffffff16565b90506124618160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461239390919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6124bc8260065461234a90919063ffffffff16565b6006819055506124d78160075461239390919063ffffffff16565b6007819055505050565b5f805f8061250b60646124fd888a6125f790919063ffffffff16565b611fd190919063ffffffff16565b90505f6125346064612526888b6125f790919063ffffffff16565b611fd190919063ffffffff16565b90505f61255c8261254e858c61234a90919063ffffffff16565b61234a90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061258a85896125f790919063ffffffff16565b90505f6125a086896125f790919063ffffffff16565b90505f6125b687896125f790919063ffffffff16565b90505f6125de826125d0858761234a90919063ffffffff16565b61234a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612607575f9050612668565b5f8284612614919061345e565b905082848261262391906133c6565b14612663576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265a9061350f565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6126b08261266e565b6126ba8185612678565b93506126ca818560208601612688565b6126d381612696565b840191505092915050565b5f6020820190508181035f8301526126f681846126a6565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61272f82612706565b9050919050565b61273f81612725565b8114612749575f80fd5b50565b5f8135905061275a81612736565b92915050565b5f819050919050565b61277281612760565b811461277c575f80fd5b50565b5f8135905061278d81612769565b92915050565b5f80604083850312156127a9576127a86126fe565b5b5f6127b68582860161274c565b92505060206127c78582860161277f565b9150509250929050565b5f8115159050919050565b6127e5816127d1565b82525050565b5f6020820190506127fe5f8301846127dc565b92915050565b5f819050919050565b5f61282761282261281d84612706565b612804565b612706565b9050919050565b5f6128388261280d565b9050919050565b5f6128498261282e565b9050919050565b6128598161283f565b82525050565b5f6020820190506128725f830184612850565b92915050565b61288181612760565b82525050565b5f60208201905061289a5f830184612878565b92915050565b5f805f606084860312156128b7576128b66126fe565b5b5f6128c48682870161274c565b93505060206128d58682870161274c565b92505060406128e68682870161277f565b9150509250925092565b5f60ff82169050919050565b612905816128f0565b82525050565b5f60208201905061291e5f8301846128fc565b92915050565b61292d81612725565b82525050565b5f6020820190506129465f830184612924565b92915050565b612955816127d1565b811461295f575f80fd5b50565b5f813590506129708161294c565b92915050565b5f6020828403121561298b5761298a6126fe565b5b5f61299884828501612962565b91505092915050565b5f602082840312156129b6576129b56126fe565b5b5f6129c38482850161274c565b91505092915050565b5f602082840312156129e1576129e06126fe565b5b5f6129ee8482850161277f565b91505092915050565b5f805f8060808587031215612a0f57612a0e6126fe565b5b5f612a1c8782880161277f565b9450506020612a2d8782880161277f565b9350506040612a3e8782880161277f565b9250506060612a4f8782880161277f565b91505092959194509250565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612a7c57612a7b612a5b565b5b8235905067ffffffffffffffff811115612a9957612a98612a5f565b5b602083019150836020820283011115612ab557612ab4612a63565b5b9250929050565b5f805f60408486031215612ad357612ad26126fe565b5b5f84013567ffffffffffffffff811115612af057612aef612702565b5b612afc86828701612a67565b93509350506020612b0f86828701612962565b9150509250925092565b5f8060408385031215612b2f57612b2e6126fe565b5b5f612b3c8582860161274c565b9250506020612b4d8582860161274c565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612b8b602083612678565b9150612b9682612b57565b602082019050919050565b5f6020820190508181035f830152612bb881612b7f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612c46602683612678565b9150612c5182612bec565b604082019050919050565b5f6020820190508181035f830152612c7381612c3a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612cd4602483612678565b9150612cdf82612c7a565b604082019050919050565b5f6020820190508181035f830152612d0181612cc8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612d62602283612678565b9150612d6d82612d08565b604082019050919050565b5f6020820190508181035f830152612d8f81612d56565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612df0602583612678565b9150612dfb82612d96565b604082019050919050565b5f6020820190508181035f830152612e1d81612de4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612e7e602383612678565b9150612e8982612e24565b604082019050919050565b5f6020820190508181035f830152612eab81612e72565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612f0c602983612678565b9150612f1782612eb2565b604082019050919050565b5f6020820190508181035f830152612f3981612f00565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f612f9a603f83612678565b9150612fa582612f40565b604082019050919050565b5f6020820190508181035f830152612fc781612f8e565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f613002601c83612678565b915061300d82612fce565b602082019050919050565b5f6020820190508181035f83015261302f81612ff6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61306d82612760565b915061307883612760565b92508282019050808211156130905761308f613036565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f6130f0602383612678565b91506130fb82613096565b604082019050919050565b5f6020820190508181035f83015261311d816130e4565b9050919050565b5f61312e82612760565b915061313983612760565b925082820390508181111561315157613150613036565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f6131b1602a83612678565b91506131bc82613157565b604082019050919050565b5f6020820190508181035f8301526131de816131a5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061322081612736565b92915050565b5f6020828403121561323b5761323a6126fe565b5b5f61324884828501613212565b91505092915050565b5f819050919050565b5f61327461326f61326a84613251565b612804565b612760565b9050919050565b6132848161325a565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6132bc81612725565b82525050565b5f6132cd83836132b3565b60208301905092915050565b5f602082019050919050565b5f6132ef8261328a565b6132f98185613294565b9350613304836132a4565b805f5b8381101561333457815161331b88826132c2565b9750613326836132d9565b925050600181019050613307565b5085935050505092915050565b5f60a0820190506133545f830188612878565b613361602083018761327b565b818103604083015261337381866132e5565b90506133826060830185612924565b61338f6080830184612878565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6133d082612760565b91506133db83612760565b9250826133eb576133ea613399565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61342a601b83612678565b9150613435826133f6565b602082019050919050565b5f6020820190508181035f8301526134578161341e565b9050919050565b5f61346882612760565b915061347383612760565b925082820261348181612760565b9150828204841483151761349857613497613036565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6134f9602183612678565b91506135048261349f565b604082019050919050565b5f6020820190508181035f830152613526816134ed565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203fbca77b9e8f7527afa65387be5acd4fd69e29a143d31a1fe97fcf3d823a089b64736f6c634300081a0033
Deployed Bytecode Sourcemap
3404:10453:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5675:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6416:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4660:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5904:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6565:302;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4947:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5829:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4704:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13323:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10068:207;;;;;;;;;;;;;:::i;:::-;;5991:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1387:128;;;;;;;;;;;;;:::i;:::-;;13443:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4837:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4414:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1213:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4891:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5750:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13152:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12853:255;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6121:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4376:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9856:208;;;;;;;;;;;;;:::i;:::-;;13650:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6276:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13543:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1519:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5675:71;5712:13;5737:5;;;;;;;;;;;;;;;;;5730:12;;5675:71;:::o;6416:145::-;6494:4;6504:39;6513:12;:10;:12::i;:::-;6527:7;6536:6;6504:8;:39::i;:::-;6553:4;6546:11;;6416:145;;;;:::o;4660:41::-;;;;;;;;;;;;;:::o;5904:83::-;5957:7;3921:23;5969:14;;5904:83;:::o;6565:302::-;6669:4;6678:36;6688:6;6696:9;6707:6;6678:9;:36::i;:::-;6717:132;6728:6;6737:12;:10;:12::i;:::-;6752:94;6792:6;6752:94;;;;;;;;;;;;;;;;;:11;:19;6764:6;6752:19;;;;;;;;;;;;;;;:33;6772:12;:10;:12::i;:::-;6752:33;;;;;;;;;;;;;;;;:37;;:94;;;;;:::i;:::-;6717:8;:132::i;:::-;6859:4;6852:11;;6565:302;;;;;:::o;4947:58::-;;;;:::o;5829:71::-;5870:5;3619:1;5880:16;;5829:71;:::o;4704:28::-;;;;;;;;;;;;;:::o;13323:89::-;1326:12;:10;:12::i;:::-;1316:22;;:6;;;;;;;;;;:22;;;1308:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13396:12:::1;13382:11;;:26;;;;;;;;;;;;;;;;;;13323:89:::0;:::o;10068:207::-;10126:19;;;;;;;;;;;10110:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;10165:17;;;;;;;;;;;10149:33;;:12;:10;:12::i;:::-;:33;;;10110:72;10102:81;;;;;;10186:26;10215:21;10186:50;;10239:32;10252:18;10239:12;:32::i;:::-;10099:176;10068:207::o;5991:126::-;6057:7;6076:37;6096:7;:16;6104:7;6096:16;;;;;;;;;;;;;;;;6076:19;:37::i;:::-;6069:44;;5991:126;;;:::o;1387:128::-;1326:12;:10;:12::i;:::-;1316:22;;:6;;;;;;;;;;:22;;;1308:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1486:1:::1;1449:40;;1470:6;::::0;::::1;;;;;;;;1449:40;;;;;;;;;;;;1509:1;1492:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1387:128::o:0;13443:96::-;1326:12;:10;:12::i;:::-;1316:22;;:6;;;;;;;;;;:22;;;1308:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13524:11:::1;13509:12;:26;;;;13443:96:::0;:::o;4837:51::-;;;;:::o;4414:43::-;;;;;;;;;;;;;;;;;:::o;1213:67::-;1251:7;1270:6;;;;;;;;;;;1263:13;;1213:67;:::o;4891:53::-;;;;:::o;5750:75::-;5789:13;5814:7;;;;;;;;;;;;;;;;;5807:14;;5750:75;:::o;13152:127::-;1326:12;:10;:12::i;:::-;1316:22;;:6;;;;;;;;;;:22;;;1308:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13257:18:::1;13235:19;:40;;;;13152:127:::0;:::o;12853:255::-;1326:12;:10;:12::i;:::-;1316:22;;:6;;;;;;;;;;:22;;;1308:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12996:13:::1;12979:14;:30;;;;13030:14;13012:15;:32;;;;13062:11;13047:12;:26;;;;13092:12;13076:13;:28;;;;12853:255:::0;;;;:::o;6121:151::-;6202:4;6212:42;6222:12;:10;:12::i;:::-;6236:9;6247:6;6212:9;:42::i;:::-;6264:4;6257:11;;6121:151;;;;:::o;4376:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;9856:208::-;9914:19;;;;;;;;;;;9898:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;9953:17;;;;;;;;;;;9937:33;;:12;:10;:12::i;:::-;:33;;;9898:72;9890:81;;;;;;9974:23;10000:24;10018:4;10000:9;:24::i;:::-;9974:50;;10027:33;10044:15;10027:16;:33::i;:::-;9887:177;9856:208::o;13650:202::-;1326:12;:10;:12::i;:::-;1316:22;;:6;;;;;;;;;;:22;;;1308:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13759:9:::1;13755:94;13778:8;;:15;;13774:1;:19;13755:94;;;13837:8;13803:18;:31;13822:8;;13831:1;13822:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;13803:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;13795:3;;;;;;;13755:94;;;;13650:202:::0;;;:::o;6276:136::-;6361:7;6381:11;:18;6393:5;6381:18;;;;;;;;;;;;;;;:27;6400:7;6381:27;;;;;;;;;;;;;;;;6374:34;;6276:136;;;;:::o;13543:103::-;1326:12;:10;:12::i;:::-;1316:22;;:6;;;;;;;;;;:22;;;1308:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13629:13:::1;13612:14;:30;;;;13543:103:::0;:::o;1519:216::-;1326:12;:10;:12::i;:::-;1316:22;;:6;;;;;;;;;;:22;;;1308:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1620:1:::1;1600:22;;:8;:22;;::::0;1592:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1702:8;1673:38;;1694:6;::::0;::::1;;;;;;;;1673:38;;;;;;;;;;;;1723:8;1714:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1519:216:::0;:::o;140:86::-;193:7;212:10;205:17;;140:86;:::o;7390:305::-;7498:1;7481:19;;:5;:19;;;7473:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7571:1;7552:21;;:7;:21;;;7544:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7645:6;7615:11;:18;7627:5;7615:18;;;;;;;;;;;;;;;:27;7634:7;7615:27;;;;;;;;;;;;;;;:36;;;;7675:7;7659:32;;7668:5;7659:32;;;7684:6;7659:32;;;;;;:::i;:::-;;;;;;;;7390:305;;;:::o;7699:1687::-;7801:1;7785:18;;:4;:18;;;7777:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7870:1;7856:16;;:2;:16;;;7848:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7932:1;7923:6;:10;7915:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7996:7;:5;:7::i;:::-;7988:15;;:4;:15;;;;:32;;;;;8013:7;:5;:7::i;:::-;8007:13;;:2;:13;;;;7988:32;7984:876;;;8053:11;;;;;;;;;;;8048:116;;8085:7;:5;:7::i;:::-;8077:15;;:4;:15;;;8069:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;8048:116;8186:12;;8176:6;:22;;8168:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;8245:13;;;;;;;;;;;8239:19;;:2;:19;;;8236:118;;8296:14;;8287:6;8271:13;8281:2;8271:9;:13::i;:::-;:22;;;;:::i;:::-;:39;8263:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;8236:118;8358:28;8389:24;8407:4;8389:9;:24::i;:::-;8358:55;;8416:12;8455:19;;8431:20;:43;;8416:58;;8506:12;;8482:20;:36;8479:84;;8547:12;;8524:35;;8479:84;8571:7;:18;;;;;8583:6;;;;;;;;;;8582:7;8571:18;:43;;;;;8601:13;;;;;;;;;;;8593:21;;:4;:21;;;;8571:43;:58;;;;;8618:11;;;;;;;;;;;8571:58;:87;;;;;8634:18;:24;8653:4;8634:24;;;;;;;;;;;;;;;;;;;;;;;;;8633:25;8571:87;:114;;;;;8663:18;:22;8682:2;8663:22;;;;;;;;;;;;;;;;;;;;;;;;;8662:23;8571:114;8567:290;;;8690:38;8707:20;8690:16;:38::i;:::-;8731:26;8760:21;8731:50;;8809:1;8788:18;:22;8784:70;;;8815:35;8828:21;8815:12;:35::i;:::-;8784:70;8687:170;8567:290;8022:838;;7984:876;8864:12;8879:4;8864:19;;8912:18;:24;8931:4;8912:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;8940:18;:22;8959:2;8940:22;;;;;;;;;;;;;;;;;;;;;;;;;8912:50;8911:102;;;;8976:13;;;;;;;;;;;8968:21;;:4;:21;;;;:44;;;;;8999:13;;;;;;;;;;;8993:19;;:2;:19;;;;8968:44;8911:102;8907:430;;;9028:5;9018:15;;8907:430;;;9079:13;;;;;;;;;;;9071:21;;:4;:21;;;:55;;;;;9110:15;;;;;;;;;;;9096:30;;:2;:30;;;;9071:55;9068:118;;;9143:14;;9131:9;:26;;;;9170:12;;9160:7;:22;;;;9068:118;9221:13;;;;;;;;;;;9215:19;;:2;:19;;;:55;;;;;9254:15;;;;;;;;;;;9238:32;;:4;:32;;;;9215:55;9211:121;;;9287:15;;9275:9;:27;;;;9315:13;;9305:7;:23;;;;9211:121;8907:430;9341:41;9356:4;9362:2;9366:6;9374:7;9341:14;:41::i;:::-;7774:1612;7699:1687;;;:::o;2047:168::-;2139:7;2164:1;2159;:6;;2167:12;2151:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2183:9;2199:1;2195;:5;;;;:::i;:::-;2183:17;;2210:1;2203:8;;;2047:168;;;;;:::o;9765:87::-;9814:17;;;;;;;;;;;:26;;:34;9841:6;9814:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9765:87;:::o;6871:235::-;6942:7;6976;;6965;:18;;6955:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;7036:19;7058:10;:8;:10::i;:::-;7036:32;;7078:24;7090:11;7078:7;:11;;:24;;;;:::i;:::-;7071:31;;;6871:235;;;:::o;9390:371::-;5092:4;5083:6;;:13;;;;;;;;;;;;;;;;;;9460:21:::1;9498:1;9484:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9460:40;;9521:4;9503;9508:1;9503:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9539:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9529:4;9534:1;9529:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;9564:62;9581:4;9596:15;;;;;;;;;;;9614:11;9564:8;:62::i;:::-;9629:15;;;;;;;;;;;:66;;;9698:11;9712:1;9716:4;9731;9739:15;9629:128;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9457:304;5112:5:::0;5103:6;;:14;;;;;;;;;;;;;;;;;;9390:371;:::o;10279:218::-;10391:7;10386:28;;10400:14;:12;:14::i;:::-;10386:28;10417:44;10435:6;10443:9;10454:6;10417:17;:44::i;:::-;10469:7;10464:29;;10478:15;:13;:15::i;:::-;10464:29;10279:218;;;;:::o;12480:144::-;12522:7;12535:15;12552;12571:19;:17;:19::i;:::-;12534:56;;;;12600:20;12612:7;12600;:11;;:20;;;;:::i;:::-;12593:27;;;;12480:144;:::o;2413:120::-;2471:7;2490:39;2494:1;2497;2490:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2483:46;;2413:120;;;;:::o;7110:175::-;7162:1;7149:9;;:14;:30;;;;;7178:1;7167:7;;:12;7149:30;7181:7;7145:43;7212:9;;7192:17;:29;;;;7242:7;;7224:15;:25;;;;7266:1;7254:9;:13;;;;7280:1;7270:7;:11;;;;7110:175;:::o;10501:450::-;10600:15;10618:23;10644:12;10659:23;10685:12;10700:13;10719:19;10730:7;10719:10;:19::i;:::-;10597:141;;;;;;;;;;;;10759:28;10779:7;10759;:15;10767:6;10759:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;10741:7;:15;10749:6;10741:15;;;;;;;;;;;;;;;:46;;;;10811:39;10834:15;10811:7;:18;10819:9;10811:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;10790:7;:18;10798:9;10790:18;;;;;;;;;;;;;;;:60;;;;10853:16;10863:5;10853:9;:16::i;:::-;10872:23;10884:4;10890;10872:11;:23::i;:::-;10920:9;10903:44;;10912:6;10903:44;;;10931:15;10903:44;;;;;;:::i;:::-;;;;;;;;10594:357;;;;;;10501:450;;;:::o;7289:97::-;7337:17;;7325:9;:29;;;;7367:15;;7357:7;:25;;;;7289:97::o;12628:221::-;12679:7;12688;12700:15;12718:7;;12700:25;;12728:15;3921:23;12728:25;;12770:20;3921:23;12770:7;;:11;;:20;;;;:::i;:::-;12760:7;:30;12756:61;;;12800:7;;3921:23;12792:25;;;;;;;;12756:61;12828:7;12837;12820:25;;;;;;12628:221;;;:::o;2537:167::-;2629:7;2653:1;2649;:5;2656:12;2641:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2672:9;2688:1;2684;:5;;;;:::i;:::-;2672:17;;2699:1;2692:8;;;2537:167;;;;;:::o;11306:447::-;11370:7;11380;11390;11400;11410;11420;11436:23;11461:12;11475:13;11493:40;11505:7;11514:9;;11525:7;;11493:11;:40::i;:::-;11435:98;;;;;;11536:19;11558:10;:8;:10::i;:::-;11536:32;;11572:15;11589:23;11614:12;11631:46;11643:7;11652:4;11658:5;11665:11;11631;:46::i;:::-;11571:106;;;;;;11688:7;11697:15;11714:4;11720:15;11737:4;11743:5;11680:69;;;;;;;;;;;;;;;;;;;11306:447;;;;;;;:::o;1919:124::-;1977:7;1996:43;2000:1;2003;1996:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1989:50;;1919:124;;;;:::o;1764:151::-;1822:7;1834:9;1850:1;1846;:5;;;;:::i;:::-;1834:17;;1867:1;1862;:6;;1854:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1910:1;1903:8;;;1764:151;;;;:::o;10955:183::-;11000:19;11022:10;:8;:10::i;:::-;11000:32;;11035:13;11051:22;11061:11;11051:5;:9;;:22;;;;:::i;:::-;11035:38;;11101:33;11128:5;11101:7;:22;11117:4;11101:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;11076:7;:22;11092:4;11076:22;;;;;;;;;;;;;;;:58;;;;10997:141;;10955:183;:::o;11142:127::-;11212:17;11224:4;11212:7;;:11;;:17;;;;:::i;:::-;11202:7;:27;;;;11245:20;11260:4;11245:10;;:14;;:20;;;;:::i;:::-;11232:10;:33;;;;11142:127;;:::o;11757:333::-;11862:7;11872;11882;11897:12;11912:30;11938:3;11912:21;11924:8;11912:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;11897:45;;11945:13;11961:28;11985:3;11961:19;11973:6;11961:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;11945:44;;11992:23;12018:28;12040:5;12018:17;12030:4;12018:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;11992:54;;12057:15;12074:4;12080:5;12049:37;;;;;;;;;11757:333;;;;;;;:::o;12094:382::-;12216:7;12226;12236;12251:15;12269:24;12281:11;12269:7;:11;;:24;;;;:::i;:::-;12251:42;;12296:12;12311:21;12320:11;12311:4;:8;;:21;;;;:::i;:::-;12296:36;;12335:13;12351:22;12361:11;12351:5;:9;;:22;;;;:::i;:::-;12335:38;;12376:23;12402:28;12424:5;12402:17;12414:4;12402:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;12376:54;;12441:7;12450:15;12467:4;12433:39;;;;;;;;;;12094:382;;;;;;;;:::o;2219:190::-;2277:7;2298:1;2293;:6;2289:27;;2311:1;2304:8;;;;2289:27;2318:9;2334:1;2330;:5;;;;:::i;:::-;2318:17;;2355:1;2350;2346;:5;;;;:::i;:::-;:10;2338:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2404:1;2397:8;;;2219: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://3fbca77b9e8f7527afa65387be5acd4fd69e29a143d31a1fe97fcf3d823a089b
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.
Add Token to MetaMask (Web3)