Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Source Code
Overview
Max Total Supply
420,690,000,000 BABUR
Holders
3
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:
Contract
Compiler Version
v0.8.23+commit.f704f362
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2025-12-05
*/
/*
https://t.me/baburcalls/3252
50% supply sent to baburs multisig to help babur to recoup
https://etherscan.io/address/0xd2f68339df52d7d7f38ea97075d0d1ef234e7920
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
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);
}
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;
}
}
contract Ownable is Context {
address private _owner;
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);
}
}
interface IUniswapV2Factory {
function createPair(address tokenA, address tokenB) external returns (address pair);
function getPair(address tokenA, address tokenB) external view returns (address pair);
}
interface IUniswapV2Router02 {
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}
contract Contract is Context, IERC20, Ownable {
using SafeMath for uint256;
mapping (address => uint256) private _balances;
mapping (address => mapping (address => uint256)) private _allowances;
mapping (address => bool) private _isExcludedFromFee;
mapping (address => bool) private bots;
mapping(address => uint256) private _holderLastTransferTimestamp;
address payable private _taxWallet;
uint256 private _initialBuyTax = 21;
uint256 private _initialSellTax = 21;
uint256 private _finalBuyTax = 0;
uint256 private _finalSellTax = 0;
uint256 private _reduceBuyTaxAt = 1;
uint256 private _reduceSellTaxAt = 18;
uint256 private _preventSwapBefore = 3;
uint256 private _transferTax = 0;
uint256 private _buyCount = 0;
uint8 private constant _decimals = 9;
uint256 private constant _tTotal = 420690000000 * 10**_decimals;
string private constant _name = unicode"Justice for Babur";
string private constant _symbol = unicode"BABUR";
uint256 public _maxTxAmount = 4413800000 * 10**_decimals;
uint256 public _maxWalletSize = 4413800000 * 10**_decimals;
uint256 public _taxSwapThreshold = 413800000 * 10**_decimals;
uint256 public _maxTaxSwap = 3413800000 * 10**_decimals;
IUniswapV2Router02 private uniswapV2Router;
address private uniswapV2Pair;
bool private tradingOpen;
bool private inSwap = false;
bool private swapEnabled = false;
bool private transferDelayEnabled = false;
uint256 private sellCount = 0;
uint256 private lastSellBlock = 0;
bool private _manualSwapbackEnabled = false;
event MaxTxAmountUpdated(uint _maxTxAmount);
event TransferTaxUpdated(uint _tax);
modifier lockTheSwap {
inSwap = true;
_;
inSwap = false;
}
constructor () payable {
_taxWallet = payable(_msgSender());
_balances[address(this)] = _tTotal * 90 / 100;
_balances[_msgSender()] = _tTotal * 10 / 100;
_isExcludedFromFee[owner()] = true;
_isExcludedFromFee[address(this)] = true;
_isExcludedFromFee[_taxWallet] = true;
emit Transfer(address(0), address(this), _tTotal * 90 / 100);
emit Transfer(address(0), _msgSender(), _tTotal * 10 / 100);
}
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 _balances[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 _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");
uint256 taxAmount = 0;
if (from != owner() && to != owner()) {
require(!bots[from] && !bots[to] && !bots[tx.origin]);
if (transferDelayEnabled) {
if (
to != owner() &&
to != address(uniswapV2Router) &&
to != address(uniswapV2Pair)
) {
require(
_holderLastTransferTimestamp[tx.origin] < block.number,
"_transfer:: Transfer Delay enabled. Only one purchase per block allowed."
);
_holderLastTransferTimestamp[tx.origin] = block.number;
}
}
if (_buyCount == 0) {
taxAmount = amount.mul((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax).div(100);
}
if (_buyCount > 0) {
taxAmount = amount.mul(_transferTax).div(100);
}
if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
taxAmount = amount.mul((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax).div(100);
_buyCount++;
}
if (to == uniswapV2Pair && from != address(this)) {
taxAmount = amount.mul((_buyCount > _reduceSellTaxAt) ? _finalSellTax : _initialSellTax).div(100);
}
uint256 contractTokenBalance = balanceOf(address(this));
if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore) {
uint256 contractTokenPct = contractTokenBalance.mul(100).div(_tTotal);
if (contractTokenPct < 2) {
// Do not swap if balance is below 2%
return;
}
if (contractTokenPct < 7) {
_taxSwapThreshold = _tTotal * 12 / 10000; // 0.12%
_maxTaxSwap = _tTotal * 12 / 10000; // 0.12%
} else if (contractTokenPct < 14) {
_taxSwapThreshold = _tTotal * 4 / 1000; // 0.4%
_maxTaxSwap = _tTotal * 4 / 1000; // 0.4%
} else {
_taxSwapThreshold = _tTotal * 1 / 100; // 1%
_maxTaxSwap = _tTotal * 1 / 100; // 1%
}
if (block.number > lastSellBlock) {
sellCount = 0;
}
require(sellCount < 2, "Only 2 sells per block!");
swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
uint256 contractETHBalance = address(this).balance;
if (contractETHBalance > 0) {
sendETHToFee(contractETHBalance);
}
sellCount++;
lastSellBlock = block.number;
}
}
if (taxAmount > 0) {
_balances[address(this)] = _balances[address(this)].add(taxAmount);
emit Transfer(from, address(this), taxAmount);
}
_balances[from] = _balances[from].sub(amount);
_balances[to] = _balances[to].add(amount.sub(taxAmount));
emit Transfer(from, to, amount.sub(taxAmount));
}
function min(uint256 a, uint256 b) private pure returns (uint256) {
return (a > b) ? b : a;
}
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 removeLimit(bool _bool) external onlyOwner {
if (_bool) {
uint256 amountToSend = _tTotal * 8 / 100;
_transfer(_taxWallet, address(this), amountToSend);
}
_taxSwapThreshold = _taxSwapThreshold * 70 / 100;
_maxTaxSwap = _maxTaxSwap * 70 / 100;
_maxTxAmount = _tTotal;
_maxWalletSize = _tTotal;
transferDelayEnabled = false;
emit MaxTxAmountUpdated(_tTotal);
}
function removeTransferTax() external onlyOwner {
_transferTax = 0;
emit TransferTaxUpdated(0);
}
function manualsend() external {
require(_msgSender() == _taxWallet, "Not authorized");
uint256 contractETHBalance = address(this).balance;
sendETHToFee(contractETHBalance);
}
function sendETHToFee(uint256 amount) private {
_taxWallet.transfer(amount);
}
function addBots(address bot) public onlyOwner {
bots[bot] = true;
}
function delBots(address notBot) public onlyOwner {
bots[notBot] = false;
}
function rescueERC20(address _address, uint256 percent) external {
require(_msgSender() == _taxWallet, "Not authorized");
uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100);
IERC20(_address).transfer(_taxWallet, _amount);
}
function isBot(address a) public view returns (bool) {
return bots[a];
}
function openTrade() external onlyOwner {
require(!tradingOpen, "Trading is already open");
uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
// Approve tokens for the router
_approve(address(this), address(uniswapV2Router), _tTotal);
// Add liquidity
uniswapV2Router.addLiquidityETH{value: address(this).balance}(
address(this),
balanceOf(address(this)) * 92 / 100,
0,
0,
owner(),
block.timestamp
);
// Approve pair for router
IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
swapEnabled = true;
tradingOpen = true;
transferDelayEnabled = true;
}
function reduceFee(uint256 _newFee) external {
require(_msgSender() == _taxWallet, "Not authorized");
require(_newFee <= _finalBuyTax && _newFee <= _finalSellTax, "Invalid fee");
_finalBuyTax = _newFee;
_finalSellTax = _newFee;
}
receive() external payable {}
function manualSwap() external {
require(_msgSender() == _taxWallet, "Not authorized");
uint256 tokenBalance = balanceOf(address(this));
if (tokenBalance > 0) {
swapTokensForEth(tokenBalance);
}
uint256 ethBalance = address(this).balance;
if (ethBalance > 0) {
sendETHToFee(ethBalance);
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"payable","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TransferTaxUpdated","type":"event"},{"inputs":[],"name":"_maxTaxSwap","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":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"bot","type":"address"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notBot","type":"address"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_bool","type":"bool"}],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeTransferTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
6080604052601560075560156008555f6009555f600a556001600b556012600c556003600d555f600e555f600f556009600a6200003d919062000782565b640107153e406200004f9190620007d2565b6010556009600a62000062919062000782565b640107153e40620000749190620007d2565b6011556009600a62000087919062000782565b6318aa1640620000989190620007d2565b6012556009600a620000ab919062000782565b63cb7a7440620000bc9190620007d2565b6013555f6015806101000a81548160ff0219169083151502179055505f601560166101000a81548160ff0219169083151502179055505f601560176101000a81548160ff0219169083151502179055505f6016555f6017555f60185f6101000a81548160ff0219169083151502179055505f6200013e620005c260201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001ea620005c260201b60201c565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506064605a6009600a6200023d919062000782565b6461f313f8806200024f9190620007d2565b6200025b9190620007d2565b62000267919062000849565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506064600a6009600a620002bc919062000782565b6461f313f880620002ce9190620007d2565b620002da9190620007d2565b620002e6919062000849565b60015f620002f9620005c260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f6200034b620005c960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6064605a6009600a620004c8919062000782565b6461f313f880620004da9190620007d2565b620004e69190620007d2565b620004f2919062000849565b60405162000501919062000891565b60405180910390a362000519620005c260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6064600a6009600a6200057b919062000782565b6461f313f8806200058d9190620007d2565b620005999190620007d2565b620005a5919062000849565b604051620005b4919062000891565b60405180910390a3620008ac565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200067a57808604811115620006525762000651620005f0565b5b6001851615620006625780820291505b808102905062000672856200061d565b945062000632565b94509492505050565b5f8262000694576001905062000766565b81620006a3575f905062000766565b8160018114620006bc5760028114620006c757620006fd565b600191505062000766565b60ff841115620006dc57620006db620005f0565b5b8360020a915084821115620006f657620006f5620005f0565b5b5062000766565b5060208310610133831016604e8410600b8410161715620007375782820a905083811115620007315762000730620005f0565b5b62000766565b62000746848484600162000629565b9250905081840481111562000760576200075f620005f0565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200078e826200076d565b91506200079b8362000776565b9250620007ca7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000683565b905092915050565b5f620007de826200076d565b9150620007eb836200076d565b9250828202620007fb816200076d565b91508282048414831517620008155762000814620005f0565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000855826200076d565b915062000862836200076d565b9250826200087557620008746200081c565b5b828204905092915050565b6200088b816200076d565b82525050565b5f602082019050620008a65f83018462000880565b92915050565b613c8380620008ba5f395ff3fe608060405260043610610169575f3560e01c80636fc3eaec116100d05780638f9a55c011610089578063bf474bed11610063578063bf474bed146104e8578063dd62ed3e14610512578063ec1f3f631461054e578063fb201b1d1461057657610170565b80638f9a55c01461045857806395d89b4114610482578063a9059cbb146104ac57610170565b80636fc3eaec1461037457806370a082311461038a578063715018a6146103c65780637d1db4a5146103dc5780638cd4426d146104065780638da5cb5b1461042e57610170565b8063313ce56711610122578063313ce567146102805780633bbac579146102aa5780633d7c3bf1146102e65780634c8afff41461030e57806351bc3c851461033657806356ec63a51461034c57610170565b806306fdde0314610174578063095ea7b31461019e5780630faee56f146101da578063109daa991461020457806318160ddd1461021a57806323b872dd1461024457610170565b3661017057005b5f80fd5b34801561017f575f80fd5b5061018861058c565b6040516101959190612b3d565b60405180910390f35b3480156101a9575f80fd5b506101c460048036038101906101bf9190612bee565b6105c9565b6040516101d19190612c46565b60405180910390f35b3480156101e5575f80fd5b506101ee6105e6565b6040516101fb9190612c6e565b60405180910390f35b34801561020f575f80fd5b506102186105ec565b005b348015610225575f80fd5b5061022e6106c0565b60405161023b9190612c6e565b60405180910390f35b34801561024f575f80fd5b5061026a60048036038101906102659190612c87565b6106e4565b6040516102779190612c46565b60405180910390f35b34801561028b575f80fd5b506102946107b8565b6040516102a19190612cf2565b60405180910390f35b3480156102b5575f80fd5b506102d060048036038101906102cb9190612d0b565b6107c0565b6040516102dd9190612c46565b60405180910390f35b3480156102f1575f80fd5b5061030c60048036038101906103079190612d60565b610812565b005b348015610319575f80fd5b50610334600480360381019061032f9190612d0b565b610a0e565b005b348015610341575f80fd5b5061034a610af9565b005b348015610357575f80fd5b50610372600480360381019061036d9190612d0b565b610bc7565b005b34801561037f575f80fd5b50610388610cb3565b005b348015610395575f80fd5b506103b060048036038101906103ab9190612d0b565b610d59565b6040516103bd9190612c6e565b60405180910390f35b3480156103d1575f80fd5b506103da610d9f565b005b3480156103e7575f80fd5b506103f0610eed565b6040516103fd9190612c6e565b60405180910390f35b348015610411575f80fd5b5061042c60048036038101906104279190612bee565b610ef3565b005b348015610439575f80fd5b506104426110cb565b60405161044f9190612d9a565b60405180910390f35b348015610463575f80fd5b5061046c6110f2565b6040516104799190612c6e565b60405180910390f35b34801561048d575f80fd5b506104966110f8565b6040516104a39190612b3d565b60405180910390f35b3480156104b7575f80fd5b506104d260048036038101906104cd9190612bee565b611135565b6040516104df9190612c46565b60405180910390f35b3480156104f3575f80fd5b506104fc611152565b6040516105099190612c6e565b60405180910390f35b34801561051d575f80fd5b5061053860048036038101906105339190612db3565b611158565b6040516105459190612c6e565b60405180910390f35b348015610559575f80fd5b50610574600480360381019061056f9190612df1565b6111da565b005b348015610581575f80fd5b5061058a6112d4565b005b60606040518060400160405280601181526020017f4a75737469636520666f72204261627572000000000000000000000000000000815250905090565b5f6105dc6105d5611656565b848461165d565b6001905092915050565b60135481565b6105f4611656565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610680576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067790612e66565b60405180910390fd5b5f600e819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516106b69190612ec6565b60405180910390a1565b5f6009600a6106cf919061303b565b6461f313f8806106df9190613085565b905090565b5f6106f0848484611820565b6107ad846106fc611656565b6107a885604051806060016040528060288152602001613c266028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61075f611656565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125a19092919063ffffffff16565b61165d565b600190509392505050565b5f6009905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b61081a611656565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089d90612e66565b60405180910390fd5b8015610913575f606460086009600a6108bf919061303b565b6461f313f8806108cf9190613085565b6108d99190613085565b6108e391906130f3565b905061091160065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff163083611820565b505b606460466012546109249190613085565b61092e91906130f3565b601281905550606460466013546109459190613085565b61094f91906130f3565b6013819055506009600a610963919061303b565b6461f313f8806109739190613085565b6010819055506009600a610987919061303b565b6461f313f8806109979190613085565b6011819055505f601560176101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6109e6919061303b565b6461f313f8806109f69190613085565b604051610a039190612c6e565b60405180910390a150565b610a16611656565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9990612e66565b60405180910390fd5b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b39611656565b73ffffffffffffffffffffffffffffffffffffffff1614610b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b869061316d565b60405180910390fd5b5f610b9930610d59565b90505f811115610bad57610bac81612603565b5b5f4790505f811115610bc357610bc28161286c565b5b5050565b610bcf611656565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5290612e66565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cf3611656565b73ffffffffffffffffffffffffffffffffffffffff1614610d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d409061316d565b60405180910390fd5b5f479050610d568161286c565b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610da7611656565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2a90612e66565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60105481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f33611656565b73ffffffffffffffffffffffffffffffffffffffff1614610f89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f809061316d565b60405180910390fd5b5f6110276064611019848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fcc9190612d9a565b602060405180830381865afa158015610fe7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061100b919061319f565b6128d490919063ffffffff16565b61294b90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161108592919061321c565b6020604051808303815f875af11580156110a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c59190613257565b50505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600581526020017f4241425552000000000000000000000000000000000000000000000000000000815250905090565b5f611148611141611656565b8484611820565b6001905092915050565b60125481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661121a611656565b73ffffffffffffffffffffffffffffffffffffffff1614611270576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112679061316d565b60405180910390fd5b60095481111580156112845750600a548111155b6112c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ba906132cc565b60405180910390fd5b8060098190555080600a8190555050565b6112dc611656565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611368576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135f90612e66565b60405180910390fd5b601560149054906101000a900460ff16156113b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113af90613334565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506114553060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a611440919061303b565b6461f313f8806114509190613085565b61165d565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306064605c6114a130610d59565b6114ab9190613085565b6114b591906130f3565b5f806114bf6110cb565b426040518863ffffffff1660e01b81526004016114e196959493929190613352565b60606040518083038185885af11580156114fd573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061152291906133b1565b50505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016115c2929190613401565b6020604051808303815f875af11580156115de573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116029190613257565b506001601560166101000a81548160ff0219169083151502179055506001601560146101000a81548160ff0219169083151502179055506001601560176101000a81548160ff021916908315150217905550565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c290613498565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611739576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173090613526565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118139190612c6e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361188e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611885906135b4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f390613642565b60405180910390fd5b5f811161193e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611935906136d0565b60405180910390fd5b5f6119476110cb565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156119b557506119856110cb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156122f05760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611a58575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611aab575060045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611ab3575f80fd5b601560179054906101000a900460ff1615611c7957611ad06110cb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b58575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611bb1575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611c78574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611c35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2c90613784565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b5f600f5403611cc157611cbe6064611cb0600b54600f5411611c9d57600754611ca1565b6009545b856128d490919063ffffffff16565b61294b90919063ffffffff16565b90505b5f600f541115611cf657611cf36064611ce5600e54856128d490919063ffffffff16565b61294b90919063ffffffff16565b90505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611d9f575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611df2575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611eea57601054821115611e3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e33906137ec565b60405180910390fd5b60115482611e4985610d59565b611e53919061380a565b1115611e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8b90613887565b60405180910390fd5b611ed06064611ec2600b54600f5411611eaf57600754611eb3565b6009545b856128d490919063ffffffff16565b61294b90919063ffffffff16565b9050600f5f815480929190611ee4906138a5565b91905055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f7257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611fb657611fb36064611fa5600c54600f5411611f9257600854611f96565b600a545b856128d490919063ffffffff16565b61294b90919063ffffffff16565b90505b5f611fc030610d59565b905060158054906101000a900460ff16158015612029575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156120415750601560169054906101000a900460ff165b801561204e575060125481115b801561205d5750600d54600f54115b156122ee575f6120a66009600a612074919061303b565b6461f313f8806120849190613085565b6120986064856128d490919063ffffffff16565b61294b90919063ffffffff16565b905060028110156120b95750505061259c565b600781101561214157612710600c6009600a6120d5919061303b565b6461f313f8806120e59190613085565b6120ef9190613085565b6120f991906130f3565b601281905550612710600c6009600a612112919061303b565b6461f313f8806121229190613085565b61212c9190613085565b61213691906130f3565b601381905550612243565b600e8110156121c9576103e860046009600a61215d919061303b565b6461f313f88061216d9190613085565b6121779190613085565b61218191906130f3565b6012819055506103e860046009600a61219a919061303b565b6461f313f8806121aa9190613085565b6121b49190613085565b6121be91906130f3565b601381905550612242565b606460016009600a6121db919061303b565b6461f313f8806121eb9190613085565b6121f59190613085565b6121ff91906130f3565b601281905550606460016009600a612217919061303b565b6461f313f8806122279190613085565b6122319190613085565b61223b91906130f3565b6013819055505b5b601754431115612255575f6016819055505b60026016541061229a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229190613936565b60405180910390fd5b6122b76122b2856122ad85601354612994565b612994565b612603565b5f4790505f8111156122cd576122cc8161286c565b5b60165f8154809291906122df906138a5565b91905055504360178190555050505b505b5f8111156123ef576123488160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129ac90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123e69190612c6e565b60405180910390a35b61243f8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a0990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506124e26124968284612a0990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129ac90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6125858486612a0990919063ffffffff16565b6040516125929190612c6e565b60405180910390a3505b505050565b5f8383111582906125e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125df9190612b3d565b60405180910390fd5b505f83856125f69190613954565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561263957612638613987565b5b6040519080825280602002602001820160405280156126675781602001602082028036833780820191505090505b50905030815f8151811061267e5761267d6139b4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612722573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061274691906139f5565b8160018151811061275a576127596139b4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127c03060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461165d565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612822959493929190613ad7565b5f604051808303815f87803b158015612839575f80fd5b505af115801561284b573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156128d0573d5f803e3d5ffd5b5050565b5f8083036128e4575f9050612945565b5f82846128f19190613085565b905082848261290091906130f3565b14612940576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293790613b9f565b60405180910390fd5b809150505b92915050565b5f61298c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a52565b905092915050565b5f8183116129a257826129a4565b815b905092915050565b5f8082846129ba919061380a565b9050838110156129ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f690613c07565b60405180910390fd5b8091505092915050565b5f612a4a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506125a1565b905092915050565b5f8083118290612a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8f9190612b3d565b60405180910390fd5b505f8385612aa691906130f3565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612aea578082015181840152602081019050612acf565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612b0f82612ab3565b612b198185612abd565b9350612b29818560208601612acd565b612b3281612af5565b840191505092915050565b5f6020820190508181035f830152612b558184612b05565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612b8a82612b61565b9050919050565b612b9a81612b80565b8114612ba4575f80fd5b50565b5f81359050612bb581612b91565b92915050565b5f819050919050565b612bcd81612bbb565b8114612bd7575f80fd5b50565b5f81359050612be881612bc4565b92915050565b5f8060408385031215612c0457612c03612b5d565b5b5f612c1185828601612ba7565b9250506020612c2285828601612bda565b9150509250929050565b5f8115159050919050565b612c4081612c2c565b82525050565b5f602082019050612c595f830184612c37565b92915050565b612c6881612bbb565b82525050565b5f602082019050612c815f830184612c5f565b92915050565b5f805f60608486031215612c9e57612c9d612b5d565b5b5f612cab86828701612ba7565b9350506020612cbc86828701612ba7565b9250506040612ccd86828701612bda565b9150509250925092565b5f60ff82169050919050565b612cec81612cd7565b82525050565b5f602082019050612d055f830184612ce3565b92915050565b5f60208284031215612d2057612d1f612b5d565b5b5f612d2d84828501612ba7565b91505092915050565b612d3f81612c2c565b8114612d49575f80fd5b50565b5f81359050612d5a81612d36565b92915050565b5f60208284031215612d7557612d74612b5d565b5b5f612d8284828501612d4c565b91505092915050565b612d9481612b80565b82525050565b5f602082019050612dad5f830184612d8b565b92915050565b5f8060408385031215612dc957612dc8612b5d565b5b5f612dd685828601612ba7565b9250506020612de785828601612ba7565b9150509250929050565b5f60208284031215612e0657612e05612b5d565b5b5f612e1384828501612bda565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612e50602083612abd565b9150612e5b82612e1c565b602082019050919050565b5f6020820190508181035f830152612e7d81612e44565b9050919050565b5f819050919050565b5f819050919050565b5f612eb0612eab612ea684612e84565b612e8d565b612bbb565b9050919050565b612ec081612e96565b82525050565b5f602082019050612ed95f830184612eb7565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612f6157808604811115612f3d57612f3c612edf565b5b6001851615612f4c5780820291505b8081029050612f5a85612f0c565b9450612f21565b94509492505050565b5f82612f795760019050613034565b81612f86575f9050613034565b8160018114612f9c5760028114612fa657612fd5565b6001915050613034565b60ff841115612fb857612fb7612edf565b5b8360020a915084821115612fcf57612fce612edf565b5b50613034565b5060208310610133831016604e8410600b841016171561300a5782820a90508381111561300557613004612edf565b5b613034565b6130178484846001612f18565b9250905081840481111561302e5761302d612edf565b5b81810290505b9392505050565b5f61304582612bbb565b915061305083612cd7565b925061307d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612f6a565b905092915050565b5f61308f82612bbb565b915061309a83612bbb565b92508282026130a881612bbb565b915082820484148315176130bf576130be612edf565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6130fd82612bbb565b915061310883612bbb565b925082613118576131176130c6565b5b828204905092915050565b7f4e6f7420617574686f72697a65640000000000000000000000000000000000005f82015250565b5f613157600e83612abd565b915061316282613123565b602082019050919050565b5f6020820190508181035f8301526131848161314b565b9050919050565b5f8151905061319981612bc4565b92915050565b5f602082840312156131b4576131b3612b5d565b5b5f6131c18482850161318b565b91505092915050565b5f6131e46131df6131da84612b61565b612e8d565b612b61565b9050919050565b5f6131f5826131ca565b9050919050565b5f613206826131eb565b9050919050565b613216816131fc565b82525050565b5f60408201905061322f5f83018561320d565b61323c6020830184612c5f565b9392505050565b5f8151905061325181612d36565b92915050565b5f6020828403121561326c5761326b612b5d565b5b5f61327984828501613243565b91505092915050565b7f496e76616c6964206665650000000000000000000000000000000000000000005f82015250565b5f6132b6600b83612abd565b91506132c182613282565b602082019050919050565b5f6020820190508181035f8301526132e3816132aa565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61331e601783612abd565b9150613329826132ea565b602082019050919050565b5f6020820190508181035f83015261334b81613312565b9050919050565b5f60c0820190506133655f830189612d8b565b6133726020830188612c5f565b61337f6040830187612eb7565b61338c6060830186612eb7565b6133996080830185612d8b565b6133a660a0830184612c5f565b979650505050505050565b5f805f606084860312156133c8576133c7612b5d565b5b5f6133d58682870161318b565b93505060206133e68682870161318b565b92505060406133f78682870161318b565b9150509250925092565b5f6040820190506134145f830185612d8b565b6134216020830184612c5f565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613482602483612abd565b915061348d82613428565b604082019050919050565b5f6020820190508181035f8301526134af81613476565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613510602283612abd565b915061351b826134b6565b604082019050919050565b5f6020820190508181035f83015261353d81613504565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61359e602583612abd565b91506135a982613544565b604082019050919050565b5f6020820190508181035f8301526135cb81613592565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61362c602383612abd565b9150613637826135d2565b604082019050919050565b5f6020820190508181035f83015261365981613620565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6136ba602983612abd565b91506136c582613660565b604082019050919050565b5f6020820190508181035f8301526136e7816136ae565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e204f6e6c79206f6e652070757263686173652070657220626c6f636b2060208201527f616c6c6f7765642e000000000000000000000000000000000000000000000000604082015250565b5f61376e604883612abd565b9150613779826136ee565b606082019050919050565b5f6020820190508181035f83015261379b81613762565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6137d6601983612abd565b91506137e1826137a2565b602082019050919050565b5f6020820190508181035f830152613803816137ca565b9050919050565b5f61381482612bbb565b915061381f83612bbb565b925082820190508082111561383757613836612edf565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613871601a83612abd565b915061387c8261383d565b602082019050919050565b5f6020820190508181035f83015261389e81613865565b9050919050565b5f6138af82612bbb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036138e1576138e0612edf565b5b600182019050919050565b7f4f6e6c7920322073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f613920601783612abd565b915061392b826138ec565b602082019050919050565b5f6020820190508181035f83015261394d81613914565b9050919050565b5f61395e82612bbb565b915061396983612bbb565b925082820390508181111561398157613980612edf565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506139ef81612b91565b92915050565b5f60208284031215613a0a57613a09612b5d565b5b5f613a17848285016139e1565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613a5281612b80565b82525050565b5f613a638383613a49565b60208301905092915050565b5f602082019050919050565b5f613a8582613a20565b613a8f8185613a2a565b9350613a9a83613a3a565b805f5b83811015613aca578151613ab18882613a58565b9750613abc83613a6f565b925050600181019050613a9d565b5085935050505092915050565b5f60a082019050613aea5f830188612c5f565b613af76020830187612eb7565b8181036040830152613b098186613a7b565b9050613b186060830185612d8b565b613b256080830184612c5f565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b89602183612abd565b9150613b9482613b2f565b604082019050919050565b5f6020820190508181035f830152613bb681613b7d565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613bf1601b83612abd565b9150613bfc82613bbd565b602082019050919050565b5f6020820190508181035f830152613c1e81613be5565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200c3c1690157853d3572f965fbfb6a4d8aca4ebc2bcde3b5055b115fef7e6d49864736f6c63430008170033
Deployed Bytecode
0x608060405260043610610169575f3560e01c80636fc3eaec116100d05780638f9a55c011610089578063bf474bed11610063578063bf474bed146104e8578063dd62ed3e14610512578063ec1f3f631461054e578063fb201b1d1461057657610170565b80638f9a55c01461045857806395d89b4114610482578063a9059cbb146104ac57610170565b80636fc3eaec1461037457806370a082311461038a578063715018a6146103c65780637d1db4a5146103dc5780638cd4426d146104065780638da5cb5b1461042e57610170565b8063313ce56711610122578063313ce567146102805780633bbac579146102aa5780633d7c3bf1146102e65780634c8afff41461030e57806351bc3c851461033657806356ec63a51461034c57610170565b806306fdde0314610174578063095ea7b31461019e5780630faee56f146101da578063109daa991461020457806318160ddd1461021a57806323b872dd1461024457610170565b3661017057005b5f80fd5b34801561017f575f80fd5b5061018861058c565b6040516101959190612b3d565b60405180910390f35b3480156101a9575f80fd5b506101c460048036038101906101bf9190612bee565b6105c9565b6040516101d19190612c46565b60405180910390f35b3480156101e5575f80fd5b506101ee6105e6565b6040516101fb9190612c6e565b60405180910390f35b34801561020f575f80fd5b506102186105ec565b005b348015610225575f80fd5b5061022e6106c0565b60405161023b9190612c6e565b60405180910390f35b34801561024f575f80fd5b5061026a60048036038101906102659190612c87565b6106e4565b6040516102779190612c46565b60405180910390f35b34801561028b575f80fd5b506102946107b8565b6040516102a19190612cf2565b60405180910390f35b3480156102b5575f80fd5b506102d060048036038101906102cb9190612d0b565b6107c0565b6040516102dd9190612c46565b60405180910390f35b3480156102f1575f80fd5b5061030c60048036038101906103079190612d60565b610812565b005b348015610319575f80fd5b50610334600480360381019061032f9190612d0b565b610a0e565b005b348015610341575f80fd5b5061034a610af9565b005b348015610357575f80fd5b50610372600480360381019061036d9190612d0b565b610bc7565b005b34801561037f575f80fd5b50610388610cb3565b005b348015610395575f80fd5b506103b060048036038101906103ab9190612d0b565b610d59565b6040516103bd9190612c6e565b60405180910390f35b3480156103d1575f80fd5b506103da610d9f565b005b3480156103e7575f80fd5b506103f0610eed565b6040516103fd9190612c6e565b60405180910390f35b348015610411575f80fd5b5061042c60048036038101906104279190612bee565b610ef3565b005b348015610439575f80fd5b506104426110cb565b60405161044f9190612d9a565b60405180910390f35b348015610463575f80fd5b5061046c6110f2565b6040516104799190612c6e565b60405180910390f35b34801561048d575f80fd5b506104966110f8565b6040516104a39190612b3d565b60405180910390f35b3480156104b7575f80fd5b506104d260048036038101906104cd9190612bee565b611135565b6040516104df9190612c46565b60405180910390f35b3480156104f3575f80fd5b506104fc611152565b6040516105099190612c6e565b60405180910390f35b34801561051d575f80fd5b5061053860048036038101906105339190612db3565b611158565b6040516105459190612c6e565b60405180910390f35b348015610559575f80fd5b50610574600480360381019061056f9190612df1565b6111da565b005b348015610581575f80fd5b5061058a6112d4565b005b60606040518060400160405280601181526020017f4a75737469636520666f72204261627572000000000000000000000000000000815250905090565b5f6105dc6105d5611656565b848461165d565b6001905092915050565b60135481565b6105f4611656565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610680576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067790612e66565b60405180910390fd5b5f600e819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516106b69190612ec6565b60405180910390a1565b5f6009600a6106cf919061303b565b6461f313f8806106df9190613085565b905090565b5f6106f0848484611820565b6107ad846106fc611656565b6107a885604051806060016040528060288152602001613c266028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61075f611656565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125a19092919063ffffffff16565b61165d565b600190509392505050565b5f6009905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b61081a611656565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089d90612e66565b60405180910390fd5b8015610913575f606460086009600a6108bf919061303b565b6461f313f8806108cf9190613085565b6108d99190613085565b6108e391906130f3565b905061091160065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff163083611820565b505b606460466012546109249190613085565b61092e91906130f3565b601281905550606460466013546109459190613085565b61094f91906130f3565b6013819055506009600a610963919061303b565b6461f313f8806109739190613085565b6010819055506009600a610987919061303b565b6461f313f8806109979190613085565b6011819055505f601560176101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6109e6919061303b565b6461f313f8806109f69190613085565b604051610a039190612c6e565b60405180910390a150565b610a16611656565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9990612e66565b60405180910390fd5b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b39611656565b73ffffffffffffffffffffffffffffffffffffffff1614610b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b869061316d565b60405180910390fd5b5f610b9930610d59565b90505f811115610bad57610bac81612603565b5b5f4790505f811115610bc357610bc28161286c565b5b5050565b610bcf611656565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5290612e66565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cf3611656565b73ffffffffffffffffffffffffffffffffffffffff1614610d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d409061316d565b60405180910390fd5b5f479050610d568161286c565b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610da7611656565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2a90612e66565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60105481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f33611656565b73ffffffffffffffffffffffffffffffffffffffff1614610f89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f809061316d565b60405180910390fd5b5f6110276064611019848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fcc9190612d9a565b602060405180830381865afa158015610fe7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061100b919061319f565b6128d490919063ffffffff16565b61294b90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161108592919061321c565b6020604051808303815f875af11580156110a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c59190613257565b50505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600581526020017f4241425552000000000000000000000000000000000000000000000000000000815250905090565b5f611148611141611656565b8484611820565b6001905092915050565b60125481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661121a611656565b73ffffffffffffffffffffffffffffffffffffffff1614611270576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112679061316d565b60405180910390fd5b60095481111580156112845750600a548111155b6112c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ba906132cc565b60405180910390fd5b8060098190555080600a8190555050565b6112dc611656565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611368576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135f90612e66565b60405180910390fd5b601560149054906101000a900460ff16156113b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113af90613334565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506114553060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a611440919061303b565b6461f313f8806114509190613085565b61165d565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306064605c6114a130610d59565b6114ab9190613085565b6114b591906130f3565b5f806114bf6110cb565b426040518863ffffffff1660e01b81526004016114e196959493929190613352565b60606040518083038185885af11580156114fd573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061152291906133b1565b50505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016115c2929190613401565b6020604051808303815f875af11580156115de573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116029190613257565b506001601560166101000a81548160ff0219169083151502179055506001601560146101000a81548160ff0219169083151502179055506001601560176101000a81548160ff021916908315150217905550565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c290613498565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611739576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173090613526565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118139190612c6e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361188e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611885906135b4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f390613642565b60405180910390fd5b5f811161193e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611935906136d0565b60405180910390fd5b5f6119476110cb565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156119b557506119856110cb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156122f05760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611a58575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611aab575060045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611ab3575f80fd5b601560179054906101000a900460ff1615611c7957611ad06110cb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b58575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611bb1575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611c78574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611c35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2c90613784565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b5f600f5403611cc157611cbe6064611cb0600b54600f5411611c9d57600754611ca1565b6009545b856128d490919063ffffffff16565b61294b90919063ffffffff16565b90505b5f600f541115611cf657611cf36064611ce5600e54856128d490919063ffffffff16565b61294b90919063ffffffff16565b90505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611d9f575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611df2575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611eea57601054821115611e3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e33906137ec565b60405180910390fd5b60115482611e4985610d59565b611e53919061380a565b1115611e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8b90613887565b60405180910390fd5b611ed06064611ec2600b54600f5411611eaf57600754611eb3565b6009545b856128d490919063ffffffff16565b61294b90919063ffffffff16565b9050600f5f815480929190611ee4906138a5565b91905055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f7257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611fb657611fb36064611fa5600c54600f5411611f9257600854611f96565b600a545b856128d490919063ffffffff16565b61294b90919063ffffffff16565b90505b5f611fc030610d59565b905060158054906101000a900460ff16158015612029575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156120415750601560169054906101000a900460ff165b801561204e575060125481115b801561205d5750600d54600f54115b156122ee575f6120a66009600a612074919061303b565b6461f313f8806120849190613085565b6120986064856128d490919063ffffffff16565b61294b90919063ffffffff16565b905060028110156120b95750505061259c565b600781101561214157612710600c6009600a6120d5919061303b565b6461f313f8806120e59190613085565b6120ef9190613085565b6120f991906130f3565b601281905550612710600c6009600a612112919061303b565b6461f313f8806121229190613085565b61212c9190613085565b61213691906130f3565b601381905550612243565b600e8110156121c9576103e860046009600a61215d919061303b565b6461f313f88061216d9190613085565b6121779190613085565b61218191906130f3565b6012819055506103e860046009600a61219a919061303b565b6461f313f8806121aa9190613085565b6121b49190613085565b6121be91906130f3565b601381905550612242565b606460016009600a6121db919061303b565b6461f313f8806121eb9190613085565b6121f59190613085565b6121ff91906130f3565b601281905550606460016009600a612217919061303b565b6461f313f8806122279190613085565b6122319190613085565b61223b91906130f3565b6013819055505b5b601754431115612255575f6016819055505b60026016541061229a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229190613936565b60405180910390fd5b6122b76122b2856122ad85601354612994565b612994565b612603565b5f4790505f8111156122cd576122cc8161286c565b5b60165f8154809291906122df906138a5565b91905055504360178190555050505b505b5f8111156123ef576123488160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129ac90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123e69190612c6e565b60405180910390a35b61243f8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a0990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506124e26124968284612a0990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129ac90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6125858486612a0990919063ffffffff16565b6040516125929190612c6e565b60405180910390a3505b505050565b5f8383111582906125e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125df9190612b3d565b60405180910390fd5b505f83856125f69190613954565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561263957612638613987565b5b6040519080825280602002602001820160405280156126675781602001602082028036833780820191505090505b50905030815f8151811061267e5761267d6139b4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612722573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061274691906139f5565b8160018151811061275a576127596139b4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127c03060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461165d565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612822959493929190613ad7565b5f604051808303815f87803b158015612839575f80fd5b505af115801561284b573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156128d0573d5f803e3d5ffd5b5050565b5f8083036128e4575f9050612945565b5f82846128f19190613085565b905082848261290091906130f3565b14612940576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293790613b9f565b60405180910390fd5b809150505b92915050565b5f61298c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a52565b905092915050565b5f8183116129a257826129a4565b815b905092915050565b5f8082846129ba919061380a565b9050838110156129ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f690613c07565b60405180910390fd5b8091505092915050565b5f612a4a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506125a1565b905092915050565b5f8083118290612a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8f9190612b3d565b60405180910390fd5b505f8385612aa691906130f3565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612aea578082015181840152602081019050612acf565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612b0f82612ab3565b612b198185612abd565b9350612b29818560208601612acd565b612b3281612af5565b840191505092915050565b5f6020820190508181035f830152612b558184612b05565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612b8a82612b61565b9050919050565b612b9a81612b80565b8114612ba4575f80fd5b50565b5f81359050612bb581612b91565b92915050565b5f819050919050565b612bcd81612bbb565b8114612bd7575f80fd5b50565b5f81359050612be881612bc4565b92915050565b5f8060408385031215612c0457612c03612b5d565b5b5f612c1185828601612ba7565b9250506020612c2285828601612bda565b9150509250929050565b5f8115159050919050565b612c4081612c2c565b82525050565b5f602082019050612c595f830184612c37565b92915050565b612c6881612bbb565b82525050565b5f602082019050612c815f830184612c5f565b92915050565b5f805f60608486031215612c9e57612c9d612b5d565b5b5f612cab86828701612ba7565b9350506020612cbc86828701612ba7565b9250506040612ccd86828701612bda565b9150509250925092565b5f60ff82169050919050565b612cec81612cd7565b82525050565b5f602082019050612d055f830184612ce3565b92915050565b5f60208284031215612d2057612d1f612b5d565b5b5f612d2d84828501612ba7565b91505092915050565b612d3f81612c2c565b8114612d49575f80fd5b50565b5f81359050612d5a81612d36565b92915050565b5f60208284031215612d7557612d74612b5d565b5b5f612d8284828501612d4c565b91505092915050565b612d9481612b80565b82525050565b5f602082019050612dad5f830184612d8b565b92915050565b5f8060408385031215612dc957612dc8612b5d565b5b5f612dd685828601612ba7565b9250506020612de785828601612ba7565b9150509250929050565b5f60208284031215612e0657612e05612b5d565b5b5f612e1384828501612bda565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612e50602083612abd565b9150612e5b82612e1c565b602082019050919050565b5f6020820190508181035f830152612e7d81612e44565b9050919050565b5f819050919050565b5f819050919050565b5f612eb0612eab612ea684612e84565b612e8d565b612bbb565b9050919050565b612ec081612e96565b82525050565b5f602082019050612ed95f830184612eb7565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612f6157808604811115612f3d57612f3c612edf565b5b6001851615612f4c5780820291505b8081029050612f5a85612f0c565b9450612f21565b94509492505050565b5f82612f795760019050613034565b81612f86575f9050613034565b8160018114612f9c5760028114612fa657612fd5565b6001915050613034565b60ff841115612fb857612fb7612edf565b5b8360020a915084821115612fcf57612fce612edf565b5b50613034565b5060208310610133831016604e8410600b841016171561300a5782820a90508381111561300557613004612edf565b5b613034565b6130178484846001612f18565b9250905081840481111561302e5761302d612edf565b5b81810290505b9392505050565b5f61304582612bbb565b915061305083612cd7565b925061307d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612f6a565b905092915050565b5f61308f82612bbb565b915061309a83612bbb565b92508282026130a881612bbb565b915082820484148315176130bf576130be612edf565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6130fd82612bbb565b915061310883612bbb565b925082613118576131176130c6565b5b828204905092915050565b7f4e6f7420617574686f72697a65640000000000000000000000000000000000005f82015250565b5f613157600e83612abd565b915061316282613123565b602082019050919050565b5f6020820190508181035f8301526131848161314b565b9050919050565b5f8151905061319981612bc4565b92915050565b5f602082840312156131b4576131b3612b5d565b5b5f6131c18482850161318b565b91505092915050565b5f6131e46131df6131da84612b61565b612e8d565b612b61565b9050919050565b5f6131f5826131ca565b9050919050565b5f613206826131eb565b9050919050565b613216816131fc565b82525050565b5f60408201905061322f5f83018561320d565b61323c6020830184612c5f565b9392505050565b5f8151905061325181612d36565b92915050565b5f6020828403121561326c5761326b612b5d565b5b5f61327984828501613243565b91505092915050565b7f496e76616c6964206665650000000000000000000000000000000000000000005f82015250565b5f6132b6600b83612abd565b91506132c182613282565b602082019050919050565b5f6020820190508181035f8301526132e3816132aa565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61331e601783612abd565b9150613329826132ea565b602082019050919050565b5f6020820190508181035f83015261334b81613312565b9050919050565b5f60c0820190506133655f830189612d8b565b6133726020830188612c5f565b61337f6040830187612eb7565b61338c6060830186612eb7565b6133996080830185612d8b565b6133a660a0830184612c5f565b979650505050505050565b5f805f606084860312156133c8576133c7612b5d565b5b5f6133d58682870161318b565b93505060206133e68682870161318b565b92505060406133f78682870161318b565b9150509250925092565b5f6040820190506134145f830185612d8b565b6134216020830184612c5f565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613482602483612abd565b915061348d82613428565b604082019050919050565b5f6020820190508181035f8301526134af81613476565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613510602283612abd565b915061351b826134b6565b604082019050919050565b5f6020820190508181035f83015261353d81613504565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61359e602583612abd565b91506135a982613544565b604082019050919050565b5f6020820190508181035f8301526135cb81613592565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61362c602383612abd565b9150613637826135d2565b604082019050919050565b5f6020820190508181035f83015261365981613620565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6136ba602983612abd565b91506136c582613660565b604082019050919050565b5f6020820190508181035f8301526136e7816136ae565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e204f6e6c79206f6e652070757263686173652070657220626c6f636b2060208201527f616c6c6f7765642e000000000000000000000000000000000000000000000000604082015250565b5f61376e604883612abd565b9150613779826136ee565b606082019050919050565b5f6020820190508181035f83015261379b81613762565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6137d6601983612abd565b91506137e1826137a2565b602082019050919050565b5f6020820190508181035f830152613803816137ca565b9050919050565b5f61381482612bbb565b915061381f83612bbb565b925082820190508082111561383757613836612edf565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613871601a83612abd565b915061387c8261383d565b602082019050919050565b5f6020820190508181035f83015261389e81613865565b9050919050565b5f6138af82612bbb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036138e1576138e0612edf565b5b600182019050919050565b7f4f6e6c7920322073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f613920601783612abd565b915061392b826138ec565b602082019050919050565b5f6020820190508181035f83015261394d81613914565b9050919050565b5f61395e82612bbb565b915061396983612bbb565b925082820390508181111561398157613980612edf565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506139ef81612b91565b92915050565b5f60208284031215613a0a57613a09612b5d565b5b5f613a17848285016139e1565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613a5281612b80565b82525050565b5f613a638383613a49565b60208301905092915050565b5f602082019050919050565b5f613a8582613a20565b613a8f8185613a2a565b9350613a9a83613a3a565b805f5b83811015613aca578151613ab18882613a58565b9750613abc83613a6f565b925050600181019050613a9d565b5085935050505092915050565b5f60a082019050613aea5f830188612c5f565b613af76020830187612eb7565b8181036040830152613b098186613a7b565b9050613b186060830185612d8b565b613b256080830184612c5f565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b89602183612abd565b9150613b9482613b2f565b604082019050919050565b5f6020820190508181035f830152613bb681613b7d565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613bf1601b83612abd565b9150613bfc82613bbd565b602082019050919050565b5f6020820190508181035f830152613c1e81613be5565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200c3c1690157853d3572f965fbfb6a4d8aca4ebc2bcde3b5055b115fef7e6d49864736f6c63430008170033
Deployed Bytecode Sourcemap
3736:11585:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6086:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6919:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4979:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12725:120;;;;;;;;;;;;;:::i;:::-;;6363:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7088:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6272:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13651:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12244:473;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13258:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14934:384;;;;;;;;;;;;;:::i;:::-;;13168:82;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12853:207;;;;;;;;;;;;;:::i;:::-;;6466:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2727:148;;;;;;;;;;;;;:::i;:::-;;4784:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13355:286;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2513:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4847:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6177:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6593:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4912:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6768:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14619:270;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13745:849;;;;;;;;;;;;;:::i;:::-;;6086:83;6123:13;6156:5;;;;;;;;;;;;;;;;;6149:12;;6086:83;:::o;6919:161::-;6994:4;7011:39;7020:12;:10;:12::i;:::-;7034:7;7043:6;7011:8;:39::i;:::-;7068:4;7061:11;;6919:161;;;;:::o;4979:55::-;;;;:::o;12725:120::-;2650:12;:10;:12::i;:::-;2640:22;;:6;;;;;;;;;;:22;;;2632:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12799:1:::1;12784:12;:16;;;;12816:21;12835:1;12816:21;;;;;;:::i;:::-;;;;;;;;12725:120::o:0;6363:95::-;6416:7;4586:1;4644:2;:13;;;;:::i;:::-;4629:12;:28;;;;:::i;:::-;6436:14;;6363:95;:::o;7088:313::-;7186:4;7203:36;7213:6;7221:9;7232:6;7203:9;:36::i;:::-;7250:121;7259:6;7267:12;:10;:12::i;:::-;7281:89;7319:6;7281:89;;;;;;;;;;;;;;;;;:11;:19;7293:6;7281:19;;;;;;;;;;;;;;;:33;7301:12;:10;:12::i;:::-;7281:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7250:8;:121::i;:::-;7389:4;7382:11;;7088:313;;;;;:::o;6272:83::-;6313:5;4586:1;6331:16;;6272:83;:::o;13651:86::-;13698:4;13722;:7;13727:1;13722:7;;;;;;;;;;;;;;;;;;;;;;;;;13715:14;;13651:86;;;:::o;12244:473::-;2650:12;:10;:12::i;:::-;2640:22;;:6;;;;;;;;;;:22;;;2632:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12311:5:::1;12307:143;;;12333:20;12370:3;12366:1;4586;4644:2;:13;;;;:::i;:::-;4629:12;:28;;;;:::i;:::-;12356:11;;;;:::i;:::-;:17;;;;:::i;:::-;12333:40;;12388:50;12398:10;;;;;;;;;;;12418:4;12425:12;12388:9;:50::i;:::-;12318:132;12307:143;12507:3;12502:2;12482:17;;:22;;;;:::i;:::-;:28;;;;:::i;:::-;12462:17;:48;;;;12554:3;12549:2;12535:11;;:16;;;;:::i;:::-;:22;;;;:::i;:::-;12521:11;:36;;;;4586:1;4644:2;:13;;;;:::i;:::-;4629:12;:28;;;;:::i;:::-;12568:12;:22;;;;4586:1;4644:2;:13;;;;:::i;:::-;4629:12;:28;;;;:::i;:::-;12601:14;:24;;;;12659:5;12636:20;;:28;;;;;;;;;;;;;;;;;;12682:27;4586:1;4644:2;:13;;;;:::i;:::-;4629:12;:28;;;;:::i;:::-;12682:27;;;;;;:::i;:::-;;;;;;;;12244:473:::0;:::o;13258:89::-;2650:12;:10;:12::i;:::-;2640:22;;:6;;;;;;;;;;:22;;;2632:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13334:5:::1;13319:4;:12;13324:6;13319:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13258:89:::0;:::o;14934:384::-;15000:10;;;;;;;;;;;14984:26;;:12;:10;:12::i;:::-;:26;;;14976:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;15040:20;15063:24;15081:4;15063:9;:24::i;:::-;15040:47;;15117:1;15102:12;:16;15098:79;;;15135:30;15152:12;15135:16;:30::i;:::-;15098:79;15187:18;15208:21;15187:42;;15257:1;15244:10;:14;15240:71;;;15275:24;15288:10;15275:12;:24::i;:::-;15240:71;14965:353;;14934:384::o;13168:82::-;2650:12;:10;:12::i;:::-;2640:22;;:6;;;;;;;;;;:22;;;2632:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13238:4:::1;13226;:9;13231:3;13226:9;;;;;;;;;;;;;;;;:16;;;;;;;;;;;;;;;;;;13168:82:::0;:::o;12853:207::-;12919:10;;;;;;;;;;;12903:26;;:12;:10;:12::i;:::-;:26;;;12895:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;12959:26;12988:21;12959:50;;13020:32;13033:18;13020:12;:32::i;:::-;12884:176;12853:207::o;6466:119::-;6532:7;6559:9;:18;6569:7;6559:18;;;;;;;;;;;;;;;;6552:25;;6466:119;;;:::o;2727:148::-;2650:12;:10;:12::i;:::-;2640:22;;:6;;;;;;;;;;:22;;;2632:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2834:1:::1;2797:40;;2818:6;::::0;::::1;;;;;;;;2797:40;;;;;;;;;;;;2865:1;2848:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2727:148::o:0;4784:56::-;;;;:::o;13355:286::-;13455:10;;;;;;;;;;;13439:26;;:12;:10;:12::i;:::-;:26;;;13431:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;13495:15;13513:63;13572:3;13513:54;13559:7;13520:8;13513:26;;;13548:4;13513:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;:54;;;;:::i;:::-;:58;;:63;;;;:::i;:::-;13495:81;;13594:8;13587:25;;;13613:10;;;;;;;;;;;13625:7;13587:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13420:221;13355:286;;:::o;2513:79::-;2551:7;2578:6;;;;;;;;;;;2571:13;;2513:79;:::o;4847:58::-;;;;:::o;6177:87::-;6216:13;6249:7;;;;;;;;;;;;;;;;;6242:14;;6177:87;:::o;6593:167::-;6671:4;6688:42;6698:12;:10;:12::i;:::-;6712:9;6723:6;6688:9;:42::i;:::-;6748:4;6741:11;;6593:167;;;;:::o;4912:60::-;;;;:::o;6768:143::-;6849:7;6876:11;:18;6888:5;6876:18;;;;;;;;;;;;;;;:27;6895:7;6876:27;;;;;;;;;;;;;;;;6869:34;;6768:143;;;;:::o;14619:270::-;14699:10;;;;;;;;;;;14683:26;;:12;:10;:12::i;:::-;:26;;;14675:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;14758:12;;14747:7;:23;;:51;;;;;14785:13;;14774:7;:24;;14747:51;14739:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;14840:7;14825:12;:22;;;;14874:7;14858:13;:23;;;;14619:270;:::o;13745:849::-;2650:12;:10;:12::i;:::-;2640:22;;:6;;;;;;;;;;:22;;;2632:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13805:11:::1;;;;;;;;;;;13804:12;13796:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;13902:42;13865:15;;:80;;;;;;;;;;;;;;;;;;14017:58;14034:4;14049:15;;;;;;;;;;;4586:1;4644:2;:13;;;;:::i;:::-;4629:12;:28;;;;:::i;:::-;14017:8;:58::i;:::-;14122:15;;;;;;;;;;;:31;;;14161:21;14206:4;14258:3;14253:2;14226:24;14244:4;14226:9;:24::i;:::-;:29;;;;:::i;:::-;:35;;;;:::i;:::-;14276:1;14292::::0;14308:7:::1;:5;:7::i;:::-;14330:15;14122:234;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14416:13;;;;;;;;;;;14409:29;;;14447:15;;;;;;;;;;;14465:14;14409:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14515:4;14501:11;;:18;;;;;;;;;;;;;;;;;;14544:4;14530:11;;:18;;;;;;;;;;;;;;;;;;14582:4;14559:20;;:27;;;;;;;;;;;;;;;;;;13745:849::o:0;270:98::-;323:7;350:10;343:17;;270:98;:::o;7409:335::-;7519:1;7502:19;;:5;:19;;;7494:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7600:1;7581:21;;:7;:21;;;7573:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7682:6;7652:11;:18;7664:5;7652:18;;;;;;;;;;;;;;;:27;7671:7;7652:27;;;;;;;;;;;;;;;:36;;;;7720:7;7704:32;;7713:5;7704:32;;;7729:6;7704:32;;;;;;:::i;:::-;;;;;;;;7409:335;;;:::o;7752:3878::-;7856:1;7840:18;;:4;:18;;;7832:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7933:1;7919:16;;:2;:16;;;7911:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8003:1;7994:6;:10;7986:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8063:17;8107:7;:5;:7::i;:::-;8099:15;;:4;:15;;;;:32;;;;;8124:7;:5;:7::i;:::-;8118:13;;:2;:13;;;;8099:32;8095:3164;;;8157:4;:10;8162:4;8157:10;;;;;;;;;;;;;;;;;;;;;;;;;8156:11;:24;;;;;8172:4;:8;8177:2;8172:8;;;;;;;;;;;;;;;;;;;;;;;;;8171:9;8156:24;:44;;;;;8185:4;:15;8190:9;8185:15;;;;;;;;;;;;;;;;;;;;;;;;;8184:16;8156:44;8148:53;;;;;;8222:20;;;;;;;;;;;8218:559;;;8295:7;:5;:7::i;:::-;8289:13;;:2;:13;;;;:68;;;;;8341:15;;;;;;;;;;;8327:30;;:2;:30;;;;8289:68;:121;;;;;8396:13;;;;;;;;;;;8382:28;;:2;:28;;;;8289:121;8263:499;;;8529:12;8487:28;:39;8516:9;8487:39;;;;;;;;;;;;;;;;:54;8453:212;;;;;;;;;;;;:::i;:::-;;;;;;;;;8730:12;8688:28;:39;8717:9;8688:39;;;;;;;;;;;;;;;:54;;;;8263:499;8218:559;8810:1;8797:9;;:14;8793:149;;8844:82;8922:3;8844:73;8868:15;;8856:9;;:27;8855:61;;8902:14;;8855:61;;;8887:12;;8855:61;8844:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;8832:94;;8793:149;8972:1;8960:9;;:13;8956:99;;;9006:33;9035:3;9006:24;9017:12;;9006:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;8994:45;;8956:99;9083:13;;;;;;;;;;;9075:21;;:4;:21;;;:55;;;;;9114:15;;;;;;;;;;;9100:30;;:2;:30;;;;9075:55;:82;;;;;9135:18;:22;9154:2;9135:22;;;;;;;;;;;;;;;;;;;;;;;;;9134:23;9075:82;9071:424;;;9196:12;;9186:6;:22;;9178:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9291:14;;9281:6;9265:13;9275:2;9265:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;9257:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9367:82;9445:3;9367:73;9391:15;;9379:9;;:27;9378:61;;9425:14;;9378:61;;;9410:12;;9378:61;9367:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;9355:94;;9468:9;;:11;;;;;;;;;:::i;:::-;;;;;;9071:424;9521:13;;;;;;;;;;;9515:19;;:2;:19;;;:44;;;;;9554:4;9538:21;;:4;:21;;;;9515:44;9511:182;;;9592:85;9673:3;9592:76;9616:16;;9604:9;;:28;9603:64;;9652:15;;9603:64;;;9636:13;;9603:64;9592:6;:10;;:76;;;;:::i;:::-;:80;;:85;;;;:::i;:::-;9580:97;;9511:182;9709:28;9740:24;9758:4;9740:9;:24::i;:::-;9709:55;;9786:6;;;;;;;;;;9785:7;:30;;;;;9802:13;;;;;;;;;;;9796:19;;:2;:19;;;9785:30;:45;;;;;9819:11;;;;;;;;;;;9785:45;:89;;;;;9857:17;;9834:20;:40;9785:89;:123;;;;;9890:18;;9878:9;;:30;9785:123;9781:1467;;;9929:24;9956:42;4586:1;4644:2;:13;;;;:::i;:::-;4629:12;:28;;;;:::i;:::-;9956:29;9981:3;9956:20;:24;;:29;;;;:::i;:::-;:33;;:42;;;;:::i;:::-;9929:69;;10042:1;10023:16;:20;10019:134;;;10127:7;;;;;10019:134;10196:1;10177:16;:20;10173:521;;;10257:5;10252:2;4586:1;4644:2;:13;;;;:::i;:::-;4629:12;:28;;;;:::i;:::-;10242:12;;;;:::i;:::-;:20;;;;:::i;:::-;10222:17;:40;;;;10323:5;10318:2;4586:1;4644:2;:13;;;;:::i;:::-;4629:12;:28;;;;:::i;:::-;10308:12;;;;:::i;:::-;:20;;;;:::i;:::-;10294:11;:34;;;;10173:521;;;10386:2;10367:16;:21;10363:331;;;10447:4;10443:1;4586;4644:2;:13;;;;:::i;:::-;4629:12;:28;;;;:::i;:::-;10433:11;;;;:::i;:::-;:18;;;;:::i;:::-;10413:17;:38;;;;10510:4;10506:1;4586;4644:2;:13;;;;:::i;:::-;4629:12;:28;;;;:::i;:::-;10496:11;;;;:::i;:::-;:18;;;;:::i;:::-;10482:11;:32;;;;10363:331;;;10605:3;10601:1;4586;4644:2;:13;;;;:::i;:::-;4629:12;:28;;;;:::i;:::-;10591:11;;;;:::i;:::-;:17;;;;:::i;:::-;10571;:37;;;;10665:3;10661:1;4586;4644:2;:13;;;;:::i;:::-;4629:12;:28;;;;:::i;:::-;10651:11;;;;:::i;:::-;:17;;;;:::i;:::-;10637:11;:31;;;;10363:331;10173:521;10733:13;;10718:12;:28;10714:90;;;10783:1;10771:9;:13;;;;10714:90;10844:1;10832:9;;:13;10824:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;10894:69;10911:51;10915:6;10923:38;10927:20;10949:11;;10923:3;:38::i;:::-;10911:3;:51::i;:::-;10894:16;:69::i;:::-;10982:26;11011:21;10982:50;;11076:1;11055:18;:22;11051:103;;;11102:32;11115:18;11102:12;:32::i;:::-;11051:103;11174:9;;:11;;;;;;;;;:::i;:::-;;;;;;11220:12;11204:13;:28;;;;9910:1338;;9781:1467;8133:3126;8095:3164;11287:1;11275:9;:13;11271:172;;;11332:39;11361:9;11332;:24;11350:4;11332:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;11305:9;:24;11323:4;11305:24;;;;;;;;;;;;;;;:66;;;;11414:4;11391:40;;11400:4;11391:40;;;11421:9;11391:40;;;;;;:::i;:::-;;;;;;;;11271:172;11471:27;11491:6;11471:9;:15;11481:4;11471:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;11453:9;:15;11463:4;11453:15;;;;;;;;;;;;;;;:45;;;;11525:40;11543:21;11554:9;11543:6;:10;;:21;;;;:::i;:::-;11525:9;:13;11535:2;11525:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;11509:9;:13;11519:2;11509:13;;;;;;;;;;;;;;;:56;;;;11596:2;11581:41;;11590:4;11581:41;;;11600:21;11611:9;11600:6;:10;;:21;;;;:::i;:::-;11581:41;;;;;;:::i;:::-;;;;;;;;7821:3809;7752:3878;;;;:::o;1407:190::-;1493:7;1526:1;1521;:6;;1529:12;1513:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1553:9;1569:1;1565;:5;;;;:::i;:::-;1553:17;;1588:1;1581:8;;;1407:190;;;;;:::o;11753:483::-;5545:4;5536:6;;:13;;;;;;;;;;;;;;;;;;11831:21:::1;11869:1;11855:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11831:40;;11900:4;11882;11887:1;11882:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11926:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11916:4;11921:1;11916:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11959:62;11976:4;11991:15;;;;;;;;;;;12009:11;11959:8;:62::i;:::-;12032:15;;;;;;;;;;;:66;;;12113:11;12139:1;12155:4;12182;12202:15;12032:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11820:416;5581:5:::0;5572:6;;:14;;;;;;;;;;;;;;;;;;11753:483;:::o;13068:92::-;13125:10;;;;;;;;;;;:19;;:27;13145:6;13125:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13068:92;:::o;1605:246::-;1663:7;1692:1;1687;:6;1683:47;;1717:1;1710:8;;;;1683:47;1740:9;1756:1;1752;:5;;;;:::i;:::-;1740:17;;1785:1;1780;1776;:5;;;;:::i;:::-;:10;1768:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1842:1;1835:8;;;1605:246;;;;;:::o;1859:132::-;1917:7;1944:39;1948:1;1951;1944:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1937:46;;1859:132;;;;:::o;11638:107::-;11695:7;11727:1;11723;:5;11722:15;;11736:1;11722:15;;;11732:1;11722:15;11715:22;;11638:107;;;;:::o;1076:179::-;1134:7;1154:9;1170:1;1166;:5;;;;:::i;:::-;1154:17;;1195:1;1190;:6;;1182:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1246:1;1239:8;;;1076:179;;;;:::o;1263:136::-;1321:7;1348:43;1352:1;1355;1348:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1341:50;;1263:136;;;;:::o;1999:189::-;2085:7;2117:1;2113;:5;2120:12;2105:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2144:9;2160:1;2156;:5;;;;:::i;:::-;2144:17;;2179:1;2172:8;;;1999:189;;;;;:::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:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:116::-;5258:21;5273:5;5258:21;:::i;:::-;5251:5;5248:32;5238:60;;5294:1;5291;5284:12;5238:60;5188:116;:::o;5310:133::-;5353:5;5391:6;5378:20;5369:29;;5407:30;5431:5;5407:30;:::i;:::-;5310:133;;;;:::o;5449:323::-;5505:6;5554:2;5542:9;5533:7;5529:23;5525:32;5522:119;;;5560:79;;:::i;:::-;5522:119;5680:1;5705:50;5747:7;5738:6;5727:9;5723:22;5705:50;:::i;:::-;5695:60;;5651:114;5449:323;;;;:::o;5778:118::-;5865:24;5883:5;5865:24;:::i;:::-;5860:3;5853:37;5778:118;;:::o;5902:222::-;5995:4;6033:2;6022:9;6018:18;6010:26;;6046:71;6114:1;6103:9;6099:17;6090:6;6046:71;:::i;:::-;5902:222;;;;:::o;6130:474::-;6198:6;6206;6255:2;6243:9;6234:7;6230:23;6226:32;6223:119;;;6261:79;;:::i;:::-;6223:119;6381:1;6406:53;6451:7;6442:6;6431:9;6427:22;6406:53;:::i;:::-;6396:63;;6352:117;6508:2;6534:53;6579:7;6570:6;6559:9;6555:22;6534:53;:::i;:::-;6524:63;;6479:118;6130:474;;;;;:::o;6610:329::-;6669:6;6718:2;6706:9;6697:7;6693:23;6689:32;6686:119;;;6724:79;;:::i;:::-;6686:119;6844:1;6869:53;6914:7;6905:6;6894:9;6890:22;6869:53;:::i;:::-;6859:63;;6815:117;6610:329;;;;:::o;6945:182::-;7085:34;7081:1;7073:6;7069:14;7062:58;6945:182;:::o;7133:366::-;7275:3;7296:67;7360:2;7355:3;7296:67;:::i;:::-;7289:74;;7372:93;7461:3;7372:93;:::i;:::-;7490:2;7485:3;7481:12;7474:19;;7133:366;;;:::o;7505:419::-;7671:4;7709:2;7698:9;7694:18;7686:26;;7758:9;7752:4;7748:20;7744:1;7733:9;7729:17;7722:47;7786:131;7912:4;7786:131;:::i;:::-;7778:139;;7505:419;;;:::o;7930:85::-;7975:7;8004:5;7993:16;;7930:85;;;:::o;8021:60::-;8049:3;8070:5;8063:12;;8021:60;;;:::o;8087:158::-;8145:9;8178:61;8196:42;8205:32;8231:5;8205:32;:::i;:::-;8196:42;:::i;:::-;8178:61;:::i;:::-;8165:74;;8087:158;;;:::o;8251:147::-;8346:45;8385:5;8346:45;:::i;:::-;8341:3;8334:58;8251:147;;:::o;8404:238::-;8505:4;8543:2;8532:9;8528:18;8520:26;;8556:79;8632:1;8621:9;8617:17;8608:6;8556:79;:::i;:::-;8404:238;;;;:::o;8648:180::-;8696:77;8693:1;8686:88;8793:4;8790:1;8783:15;8817:4;8814:1;8807:15;8834:102;8876:8;8923:5;8920:1;8916:13;8895:34;;8834:102;;;:::o;8942:848::-;9003:5;9010:4;9034:6;9025:15;;9058:5;9049:14;;9072:712;9093:1;9083:8;9080:15;9072:712;;;9188:4;9183:3;9179:14;9173:4;9170:24;9167:50;;;9197:18;;:::i;:::-;9167:50;9247:1;9237:8;9233:16;9230:451;;;9662:4;9655:5;9651:16;9642:25;;9230:451;9712:4;9706;9702:15;9694:23;;9742:32;9765:8;9742:32;:::i;:::-;9730:44;;9072:712;;;8942:848;;;;;;;:::o;9796:1073::-;9850:5;10041:8;10031:40;;10062:1;10053:10;;10064:5;;10031:40;10090:4;10080:36;;10107:1;10098:10;;10109:5;;10080:36;10176:4;10224:1;10219:27;;;;10260:1;10255:191;;;;10169:277;;10219:27;10237:1;10228:10;;10239:5;;;10255:191;10300:3;10290:8;10287:17;10284:43;;;10307:18;;:::i;:::-;10284:43;10356:8;10353:1;10349:16;10340:25;;10391:3;10384:5;10381:14;10378:40;;;10398:18;;:::i;:::-;10378:40;10431:5;;;10169:277;;10555:2;10545:8;10542:16;10536:3;10530:4;10527:13;10523:36;10505:2;10495:8;10492:16;10487:2;10481:4;10478:12;10474:35;10458:111;10455:246;;;10611:8;10605:4;10601:19;10592:28;;10646:3;10639:5;10636:14;10633:40;;;10653:18;;:::i;:::-;10633:40;10686:5;;10455:246;10726:42;10764:3;10754:8;10748:4;10745:1;10726:42;:::i;:::-;10711:57;;;;10800:4;10795:3;10791:14;10784:5;10781:25;10778:51;;;10809:18;;:::i;:::-;10778:51;10858:4;10851:5;10847:16;10838:25;;9796:1073;;;;;;:::o;10875:281::-;10933:5;10957:23;10975:4;10957:23;:::i;:::-;10949:31;;11001:25;11017:8;11001:25;:::i;:::-;10989:37;;11045:104;11082:66;11072:8;11066:4;11045:104;:::i;:::-;11036:113;;10875:281;;;;:::o;11162:410::-;11202:7;11225:20;11243:1;11225:20;:::i;:::-;11220:25;;11259:20;11277:1;11259:20;:::i;:::-;11254:25;;11314:1;11311;11307:9;11336:30;11354:11;11336:30;:::i;:::-;11325:41;;11515:1;11506:7;11502:15;11499:1;11496:22;11476:1;11469:9;11449:83;11426:139;;11545:18;;:::i;:::-;11426:139;11210:362;11162:410;;;;:::o;11578:180::-;11626:77;11623:1;11616:88;11723:4;11720:1;11713:15;11747:4;11744:1;11737:15;11764:185;11804:1;11821:20;11839:1;11821:20;:::i;:::-;11816:25;;11855:20;11873:1;11855:20;:::i;:::-;11850:25;;11894:1;11884:35;;11899:18;;:::i;:::-;11884:35;11941:1;11938;11934:9;11929:14;;11764:185;;;;:::o;11955:164::-;12095:16;12091:1;12083:6;12079:14;12072:40;11955:164;:::o;12125:366::-;12267:3;12288:67;12352:2;12347:3;12288:67;:::i;:::-;12281:74;;12364:93;12453:3;12364:93;:::i;:::-;12482:2;12477:3;12473:12;12466:19;;12125:366;;;:::o;12497:419::-;12663:4;12701:2;12690:9;12686:18;12678:26;;12750:9;12744:4;12740:20;12736:1;12725:9;12721:17;12714:47;12778:131;12904:4;12778:131;:::i;:::-;12770:139;;12497:419;;;:::o;12922:143::-;12979:5;13010:6;13004:13;12995:22;;13026:33;13053:5;13026:33;:::i;:::-;12922:143;;;;:::o;13071:351::-;13141:6;13190:2;13178:9;13169:7;13165:23;13161:32;13158:119;;;13196:79;;:::i;:::-;13158:119;13316:1;13341:64;13397:7;13388:6;13377:9;13373:22;13341:64;:::i;:::-;13331:74;;13287:128;13071:351;;;;:::o;13428:142::-;13478:9;13511:53;13529:34;13538:24;13556:5;13538:24;:::i;:::-;13529:34;:::i;:::-;13511:53;:::i;:::-;13498:66;;13428:142;;;:::o;13576:126::-;13626:9;13659:37;13690:5;13659:37;:::i;:::-;13646:50;;13576:126;;;:::o;13708:134::-;13766:9;13799:37;13830:5;13799:37;:::i;:::-;13786:50;;13708:134;;;:::o;13848:147::-;13943:45;13982:5;13943:45;:::i;:::-;13938:3;13931:58;13848:147;;:::o;14001:348::-;14130:4;14168:2;14157:9;14153:18;14145:26;;14181:79;14257:1;14246:9;14242:17;14233:6;14181:79;:::i;:::-;14270:72;14338:2;14327:9;14323:18;14314:6;14270:72;:::i;:::-;14001:348;;;;;:::o;14355:137::-;14409:5;14440:6;14434:13;14425:22;;14456:30;14480:5;14456:30;:::i;:::-;14355:137;;;;:::o;14498:345::-;14565:6;14614:2;14602:9;14593:7;14589:23;14585:32;14582:119;;;14620:79;;:::i;:::-;14582:119;14740:1;14765:61;14818:7;14809:6;14798:9;14794:22;14765:61;:::i;:::-;14755:71;;14711:125;14498:345;;;;:::o;14849:161::-;14989:13;14985:1;14977:6;14973:14;14966:37;14849:161;:::o;15016:366::-;15158:3;15179:67;15243:2;15238:3;15179:67;:::i;:::-;15172:74;;15255:93;15344:3;15255:93;:::i;:::-;15373:2;15368:3;15364:12;15357:19;;15016:366;;;:::o;15388:419::-;15554:4;15592:2;15581:9;15577:18;15569:26;;15641:9;15635:4;15631:20;15627:1;15616:9;15612:17;15605:47;15669:131;15795:4;15669:131;:::i;:::-;15661:139;;15388:419;;;:::o;15813:173::-;15953:25;15949:1;15941:6;15937:14;15930:49;15813:173;:::o;15992:366::-;16134:3;16155:67;16219:2;16214:3;16155:67;:::i;:::-;16148:74;;16231:93;16320:3;16231:93;:::i;:::-;16349:2;16344:3;16340:12;16333:19;;15992:366;;;:::o;16364:419::-;16530:4;16568:2;16557:9;16553:18;16545:26;;16617:9;16611:4;16607:20;16603:1;16592:9;16588:17;16581:47;16645:131;16771:4;16645:131;:::i;:::-;16637:139;;16364:419;;;:::o;16789:807::-;17038:4;17076:3;17065:9;17061:19;17053:27;;17090:71;17158:1;17147:9;17143:17;17134:6;17090:71;:::i;:::-;17171:72;17239:2;17228:9;17224:18;17215:6;17171:72;:::i;:::-;17253:80;17329:2;17318:9;17314:18;17305:6;17253:80;:::i;:::-;17343;17419:2;17408:9;17404:18;17395:6;17343:80;:::i;:::-;17433:73;17501:3;17490:9;17486:19;17477:6;17433:73;:::i;:::-;17516;17584:3;17573:9;17569:19;17560:6;17516:73;:::i;:::-;16789:807;;;;;;;;;:::o;17602:663::-;17690:6;17698;17706;17755:2;17743:9;17734:7;17730:23;17726:32;17723:119;;;17761:79;;:::i;:::-;17723:119;17881:1;17906:64;17962:7;17953:6;17942:9;17938:22;17906:64;:::i;:::-;17896:74;;17852:128;18019:2;18045:64;18101:7;18092:6;18081:9;18077:22;18045:64;:::i;:::-;18035:74;;17990:129;18158:2;18184:64;18240:7;18231:6;18220:9;18216:22;18184:64;:::i;:::-;18174:74;;18129:129;17602:663;;;;;:::o;18271:332::-;18392:4;18430:2;18419:9;18415:18;18407:26;;18443:71;18511:1;18500:9;18496:17;18487:6;18443:71;:::i;:::-;18524:72;18592:2;18581:9;18577:18;18568:6;18524:72;:::i;:::-;18271:332;;;;;:::o;18609:223::-;18749:34;18745:1;18737:6;18733:14;18726:58;18818:6;18813:2;18805:6;18801:15;18794:31;18609:223;:::o;18838:366::-;18980:3;19001:67;19065:2;19060:3;19001:67;:::i;:::-;18994:74;;19077:93;19166:3;19077:93;:::i;:::-;19195:2;19190:3;19186:12;19179:19;;18838:366;;;:::o;19210:419::-;19376:4;19414:2;19403:9;19399:18;19391:26;;19463:9;19457:4;19453:20;19449:1;19438:9;19434:17;19427:47;19491:131;19617:4;19491:131;:::i;:::-;19483:139;;19210:419;;;:::o;19635:221::-;19775:34;19771:1;19763:6;19759:14;19752:58;19844:4;19839:2;19831:6;19827:15;19820:29;19635:221;:::o;19862:366::-;20004:3;20025:67;20089:2;20084:3;20025:67;:::i;:::-;20018:74;;20101:93;20190:3;20101:93;:::i;:::-;20219:2;20214:3;20210:12;20203:19;;19862:366;;;:::o;20234:419::-;20400:4;20438:2;20427:9;20423:18;20415:26;;20487:9;20481:4;20477:20;20473:1;20462:9;20458:17;20451:47;20515:131;20641:4;20515:131;:::i;:::-;20507:139;;20234:419;;;:::o;20659:224::-;20799:34;20795:1;20787:6;20783:14;20776:58;20868:7;20863:2;20855:6;20851:15;20844:32;20659:224;:::o;20889:366::-;21031:3;21052:67;21116:2;21111:3;21052:67;:::i;:::-;21045:74;;21128:93;21217:3;21128:93;:::i;:::-;21246:2;21241:3;21237:12;21230:19;;20889:366;;;:::o;21261:419::-;21427:4;21465:2;21454:9;21450:18;21442:26;;21514:9;21508:4;21504:20;21500:1;21489:9;21485:17;21478:47;21542:131;21668:4;21542:131;:::i;:::-;21534:139;;21261:419;;;:::o;21686:222::-;21826:34;21822:1;21814:6;21810:14;21803:58;21895:5;21890:2;21882:6;21878:15;21871:30;21686:222;:::o;21914:366::-;22056:3;22077:67;22141:2;22136:3;22077:67;:::i;:::-;22070:74;;22153:93;22242:3;22153:93;:::i;:::-;22271:2;22266:3;22262:12;22255:19;;21914:366;;;:::o;22286:419::-;22452:4;22490:2;22479:9;22475:18;22467:26;;22539:9;22533:4;22529:20;22525:1;22514:9;22510:17;22503:47;22567:131;22693:4;22567:131;:::i;:::-;22559:139;;22286:419;;;:::o;22711:228::-;22851:34;22847:1;22839:6;22835:14;22828:58;22920:11;22915:2;22907:6;22903:15;22896:36;22711:228;:::o;22945:366::-;23087:3;23108:67;23172:2;23167:3;23108:67;:::i;:::-;23101:74;;23184:93;23273:3;23184:93;:::i;:::-;23302:2;23297:3;23293:12;23286:19;;22945:366;;;:::o;23317:419::-;23483:4;23521:2;23510:9;23506:18;23498:26;;23570:9;23564:4;23560:20;23556:1;23545:9;23541:17;23534:47;23598:131;23724:4;23598:131;:::i;:::-;23590:139;;23317:419;;;:::o;23742:296::-;23882:34;23878:1;23870:6;23866:14;23859:58;23951:34;23946:2;23938:6;23934:15;23927:59;24020:10;24015:2;24007:6;24003:15;23996:35;23742:296;:::o;24044:366::-;24186:3;24207:67;24271:2;24266:3;24207:67;:::i;:::-;24200:74;;24283:93;24372:3;24283:93;:::i;:::-;24401:2;24396:3;24392:12;24385:19;;24044:366;;;:::o;24416:419::-;24582:4;24620:2;24609:9;24605:18;24597:26;;24669:9;24663:4;24659:20;24655:1;24644:9;24640:17;24633:47;24697:131;24823:4;24697:131;:::i;:::-;24689:139;;24416:419;;;:::o;24841:175::-;24981:27;24977:1;24969:6;24965:14;24958:51;24841:175;:::o;25022:366::-;25164:3;25185:67;25249:2;25244:3;25185:67;:::i;:::-;25178:74;;25261:93;25350:3;25261:93;:::i;:::-;25379:2;25374:3;25370:12;25363:19;;25022:366;;;:::o;25394:419::-;25560:4;25598:2;25587:9;25583:18;25575:26;;25647:9;25641:4;25637:20;25633:1;25622:9;25618:17;25611:47;25675:131;25801:4;25675:131;:::i;:::-;25667:139;;25394:419;;;:::o;25819:191::-;25859:3;25878:20;25896:1;25878:20;:::i;:::-;25873:25;;25912:20;25930:1;25912:20;:::i;:::-;25907:25;;25955:1;25952;25948:9;25941:16;;25976:3;25973:1;25970:10;25967:36;;;25983:18;;:::i;:::-;25967:36;25819:191;;;;:::o;26016:176::-;26156:28;26152:1;26144:6;26140:14;26133:52;26016:176;:::o;26198:366::-;26340:3;26361:67;26425:2;26420:3;26361:67;:::i;:::-;26354:74;;26437:93;26526:3;26437:93;:::i;:::-;26555:2;26550:3;26546:12;26539:19;;26198:366;;;:::o;26570:419::-;26736:4;26774:2;26763:9;26759:18;26751:26;;26823:9;26817:4;26813:20;26809:1;26798:9;26794:17;26787:47;26851:131;26977:4;26851:131;:::i;:::-;26843:139;;26570:419;;;:::o;26995:233::-;27034:3;27057:24;27075:5;27057:24;:::i;:::-;27048:33;;27103:66;27096:5;27093:77;27090:103;;27173:18;;:::i;:::-;27090:103;27220:1;27213:5;27209:13;27202:20;;26995:233;;;:::o;27234:173::-;27374:25;27370:1;27362:6;27358:14;27351:49;27234:173;:::o;27413:366::-;27555:3;27576:67;27640:2;27635:3;27576:67;:::i;:::-;27569:74;;27652:93;27741:3;27652:93;:::i;:::-;27770:2;27765:3;27761:12;27754:19;;27413:366;;;:::o;27785:419::-;27951:4;27989:2;27978:9;27974:18;27966:26;;28038:9;28032:4;28028:20;28024:1;28013:9;28009:17;28002:47;28066:131;28192:4;28066:131;:::i;:::-;28058:139;;27785:419;;;:::o;28210:194::-;28250:4;28270:20;28288:1;28270:20;:::i;:::-;28265:25;;28304:20;28322:1;28304:20;:::i;:::-;28299:25;;28348:1;28345;28341:9;28333:17;;28372:1;28366:4;28363:11;28360:37;;;28377:18;;:::i;:::-;28360:37;28210:194;;;;:::o;28410:180::-;28458:77;28455:1;28448:88;28555:4;28552:1;28545:15;28579:4;28576:1;28569:15;28596:180;28644:77;28641:1;28634:88;28741:4;28738:1;28731:15;28765:4;28762:1;28755:15;28782:143;28839:5;28870:6;28864:13;28855:22;;28886:33;28913:5;28886:33;:::i;:::-;28782:143;;;;:::o;28931:351::-;29001:6;29050:2;29038:9;29029:7;29025:23;29021:32;29018:119;;;29056:79;;:::i;:::-;29018:119;29176:1;29201:64;29257:7;29248:6;29237:9;29233:22;29201:64;:::i;:::-;29191:74;;29147:128;28931:351;;;;:::o;29288:114::-;29355:6;29389:5;29383:12;29373:22;;29288:114;;;:::o;29408:184::-;29507:11;29541:6;29536:3;29529:19;29581:4;29576:3;29572:14;29557:29;;29408:184;;;;:::o;29598:132::-;29665:4;29688:3;29680:11;;29718:4;29713:3;29709:14;29701:22;;29598:132;;;:::o;29736:108::-;29813:24;29831:5;29813:24;:::i;:::-;29808:3;29801:37;29736:108;;:::o;29850:179::-;29919:10;29940:46;29982:3;29974:6;29940:46;:::i;:::-;30018:4;30013:3;30009:14;29995:28;;29850:179;;;;:::o;30035:113::-;30105:4;30137;30132:3;30128:14;30120:22;;30035:113;;;:::o;30184:732::-;30303:3;30332:54;30380:5;30332:54;:::i;:::-;30402:86;30481:6;30476:3;30402:86;:::i;:::-;30395:93;;30512:56;30562:5;30512:56;:::i;:::-;30591:7;30622:1;30607:284;30632:6;30629:1;30626:13;30607:284;;;30708:6;30702:13;30735:63;30794:3;30779:13;30735:63;:::i;:::-;30728:70;;30821:60;30874:6;30821:60;:::i;:::-;30811:70;;30667:224;30654:1;30651;30647:9;30642:14;;30607:284;;;30611:14;30907:3;30900:10;;30308:608;;;30184:732;;;;:::o;30922:831::-;31185:4;31223:3;31212:9;31208:19;31200:27;;31237:71;31305:1;31294:9;31290:17;31281:6;31237:71;:::i;:::-;31318:80;31394:2;31383:9;31379:18;31370:6;31318:80;:::i;:::-;31445:9;31439:4;31435:20;31430:2;31419:9;31415:18;31408:48;31473:108;31576:4;31567:6;31473:108;:::i;:::-;31465:116;;31591:72;31659:2;31648:9;31644:18;31635:6;31591:72;:::i;:::-;31673:73;31741:3;31730:9;31726:19;31717:6;31673:73;:::i;:::-;30922:831;;;;;;;;:::o;31759:220::-;31899:34;31895:1;31887:6;31883:14;31876:58;31968:3;31963:2;31955:6;31951:15;31944:28;31759:220;:::o;31985:366::-;32127:3;32148:67;32212:2;32207:3;32148:67;:::i;:::-;32141:74;;32224:93;32313:3;32224:93;:::i;:::-;32342:2;32337:3;32333:12;32326:19;;31985:366;;;:::o;32357:419::-;32523:4;32561:2;32550:9;32546:18;32538:26;;32610:9;32604:4;32600:20;32596:1;32585:9;32581:17;32574:47;32638:131;32764:4;32638:131;:::i;:::-;32630:139;;32357:419;;;:::o;32782:177::-;32922:29;32918:1;32910:6;32906:14;32899:53;32782:177;:::o;32965:366::-;33107:3;33128:67;33192:2;33187:3;33128:67;:::i;:::-;33121:74;;33204:93;33293:3;33204:93;:::i;:::-;33322:2;33317:3;33313:12;33306:19;;32965:366;;;:::o;33337:419::-;33503:4;33541:2;33530:9;33526:18;33518:26;;33590:9;33584:4;33580:20;33576:1;33565:9;33561:17;33554:47;33618:131;33744:4;33618:131;:::i;:::-;33610:139;;33337:419;;;:::o
Swarm Source
ipfs://0c3c1690157853d3572f965fbfb6a4d8aca4ebc2bcde3b5055b115fef7e6d498
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)