Feature Tip: Add private address tag to any address under My Name Tag !
Overview
Max Total Supply
99,999.9899999999 TRY
Holders
617 (0.00%)
Total Transfers
-
Market
Price
$0.74 @ 0.000194 ETH
Onchain Market Cap
$74,263.05
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
TRYfinance
Compiler Version
v0.5.17+commit.d19bba13
Contract Source Code (Solidity)Audit Report
/** *Submitted for verification at Etherscan.io on 2020-12-31 */ /* TRY token has been being developed since 10/2020 and has more features than most other DEFI token's on the market, here is a summary of built in features that TRY token offers: * We added a brand new feature never seen before in any DEFI token, a tx reward pool, 1% of all transactions are given to the reward pool and are awarded to the sender of every 25th transaction. * We added a deflationary burn fee of 1% on every tx which is automatically sent directly to the burn address upon every transfer, this feature will ensure a truly deflationary model. * We wanted to discourage token dumping so we added a 5% antiDumpFee to all TRY sold on UNIswap. This fee is distributed to all TRYstake users when buyback feature is performed. * Previous rebalance liquidity models used a liquidity divisor as a liquidity reward, however that process made the rebalance feature not as effective since it had to rebalance its own rewards. * To help replace the removal of awarding liquidity providers via the Buyback function we will allow LP tokens to farm TRY tokens directly on TRYfarm. * We coded this contract to have the ability to ADDfunds into TRYstake so it can directly be its own UNIswap sell fee rewards distributor. The staking rewards distribution is called every time a user performs the rebalance liquidity function. The rebalance function still burns TRY that it purchases with the rebalance increasing the effectiveness of the deflationary model. * When Buyback function is called the caller gets a 4% reward of the buyback TRY amount and 96% of the buyback TRY amount gets sent directly to the burn address. * We coded the buyback function to work on 2 hour intervals and set the rate to 1%, we also added the ability for this contract to add 20 seconds to the buyback interval on each use of the buyback function. This will help ensure that the buyback feature cannot be manipulated and insure maximum life expectancy of the feature. * We ensured that all of TRY protocols are whitelist able so when you use them you will not incur any transactional fee's when sending TRY to those protocols. * Once this contract creates the UNIswap pair the LP tokens that are sent back are unable to be removed, there is no withdrawal code for these LP tokens this locked them for their intended purpose forever. * We added the ability to add and remove blacklist addresses, this will help insure that we can properly fight hackers and malicious intents on TRY token's economy. * We added createUNISwapPair function that will ensure ETH collected for liquidity can only be used for that one specific purpose, TRY presale contract automatically sends ETH liquidity to this contract. * We are sure that TRY will be the most successful project to ever use a rebalancer style feature, TRYstake will ensure TRY tokens are happy earning in the staking contracts and not on the market to lower the price. UNIswap sell fees will discourage selling, while offering incentivized rewards for staking. TRYfarm will directly reward liquidity providers in replacement of the liquidity reward distribution on the previous model. The Tx Reward pool feature helps complete the package, TRY token has the most rewarding features of any DEFI token! For more information please visit try.finance/whitepaper.html */ pragma solidity ^0.5.17; contract Context { constructor () internal { } function _msgSender() internal view returns (address payable) { return msg.sender; } function _msgData() internal view returns (bytes memory) { this; return msg.data; } } contract WhitelistAdminRole is Context { using Roles for Roles.Role; event WhitelistAdminAdded(address indexed account); event WhitelistAdminRemoved(address indexed account); Roles.Role private _whitelistAdmins; constructor () internal { _addWhitelistAdmin(_msgSender()); } modifier onlyWhitelistAdmin() { require(isWhitelistAdmin(_msgSender()), "WhitelistAdminRole: caller does not have the WhitelistAdmin role"); _; } function isWhitelistAdmin(address account) public view returns (bool) { return _whitelistAdmins.has(account); } function addWhitelistAdmin(address account) public onlyWhitelistAdmin { _addWhitelistAdmin(account); } function renounceWhitelistAdmin() public { _removeWhitelistAdmin(_msgSender()); } function _addWhitelistAdmin(address account) internal { _whitelistAdmins.add(account); emit WhitelistAdminAdded(account); } function _removeWhitelistAdmin(address account) internal { _whitelistAdmins.remove(account); emit WhitelistAdminRemoved(account); } } 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; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } function ceil(uint a, uint m) internal pure returns (uint r) { return (a + m - 1) / m * m; } } contract ERC20 is Context, IERC20 { using SafeMath for uint256; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 private _totalSupply; constructor (uint256 totalSupply) public { _mint(_msgSender(),totalSupply); } function totalSupply() public view returns (uint256) { return _totalSupply; } function balanceOf(address account) public view returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function _transfer(address sender, address recipient, uint256 amount) internal { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal { require(account != address(0), "ERC20: burn from the zero address"); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve(address owner, address spender, uint256 amount) internal { 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 _burnFrom(address account, uint256 amount) internal { _burn(account, amount); _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, "ERC20: burn amount exceeds allowance")); } } contract ERC20Burnable is Context, ERC20 { function burn(uint256 amount) public { _burn(_msgSender(), amount); } function burnFrom(address account, uint256 amount) public { _burnFrom(account, amount); } } library Roles { struct Role { mapping (address => bool) bearer; } function add(Role storage role, address account) internal { require(!has(role, account), "Roles: account already has role"); role.bearer[account] = true; } function remove(Role storage role, address account) internal { require(has(role, account), "Roles: account does not have role"); role.bearer[account] = false; } function has(Role storage role, address account) internal view returns (bool) { require(account != address(0), "Roles: account is the zero address"); return role.bearer[account]; } } contract ERC20Detailed is IERC20 { string private _name; string private _symbol; uint8 private _decimals; constructor (string memory name, string memory symbol, uint8 decimals) public { _name = name; _symbol = symbol; _decimals = decimals; } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } } contract ERC20TransferLiquidityLock is ERC20 { using SafeMath for uint256; event Rebalance(uint256 tokenBurnt); event SupplyTRYStake(uint256 tokenAmount); event RewardStakers(uint256 stakingRewards); address public uniswapV2Router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; address public uniswapV2Factory = 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f; address public uniswapV2Pair; address public TRYStake; address public presaleAddress; address public LPFarm; address public Master = address (uniswapV2Router); address public Trident = address (this); address payable public treasury; mapping(address => bool) public feelessAddr; mapping(address => bool) public unlocked; mapping(address => bool) public oracle; mapping(address => bool) public blacklist; uint256 public rewardPoolDivisor; uint256 public rebalanceRewardDivisor; uint256 public rebalanceDivisor; uint256 public burnTxFee; uint256 public antiDumpFee; uint256 public minRebalanceAmount; uint256 public lastRebalance; uint256 public rebalanceInterval; address public burnAddr = 0x000000000000000000000000000000000000dEaD; bool public LPLocked; uint256 public txNumber; uint256 one = 1000000000000000000; uint256 public trans100 = 25000000000000000000; uint256 public stakePool = 0; uint256 public rewardPool = 0; bool public locked; Balancer balancer; constructor() public { lastRebalance = block.timestamp; burnTxFee = 100; rewardPoolDivisor = 100; antiDumpFee = 20; rebalanceRewardDivisor = 25; rebalanceDivisor = 100; rebalanceInterval = 2 hours; minRebalanceAmount = 100e18; treasury = msg.sender; balancer = new Balancer(treasury); feelessAddr[address(this)] = true; feelessAddr[address(balancer)] = true; feelessAddr[address(uniswapV2Router)] = true; feelessAddr[address(uniswapV2Factory)] = true; feelessAddr[address(TRYStake)] = true; feelessAddr[address(presaleAddress)] = true; locked = true; LPLocked = true; unlocked[msg.sender] = false; unlocked[address(this)] = true; unlocked[address(balancer)] = true; unlocked[address(balancer)] = true; unlocked[address(uniswapV2Router)] = true; unlocked[address(presaleAddress)] = true; txNumber = 0; } function calculateFees(address from, address to, uint256 amount) public view returns( uint256 rewardtx, uint256 Burntx, uint256 selltx){ } function isContract(address _addr) public view returns (bool _isContract){ uint32 size; assembly { size := extcodesize(_addr)} return (size > 0); } function _transfer(address from, address to, uint256 amount) internal { if(locked && unlocked[from] != true && unlocked[to] != true) revert("Transfers are locked until after presale."); if(blacklist [from] == true || blacklist [to] == true) revert("Address is blacklisted"); uint256 Burntx = 0; uint256 rewardtx = 0; if(feelessAddr[from] == false && feelessAddr[to] == false){ if (burnTxFee != 0) { Burntx = amount.div(burnTxFee); amount = amount.sub(Burntx); super._transfer(from, address(burnAddr), Burntx); } if (rewardPoolDivisor != 0) { txNumber = txNumber.add(one); rewardtx = amount.div(rewardPoolDivisor); amount = amount.sub(rewardtx); super._transfer(from, address(this), rewardtx); rewardPool += rewardtx; if(txNumber == trans100){ require( !(isContract(from)), 'inValid caller'); super._transfer(address(this), from, rewardPool); rewardPool = 0; txNumber = 0; } } if (antiDumpFee != 0 && oracle[to]) { uint256 selltx = amount.div(antiDumpFee); stakePool += selltx; amount = amount.sub(selltx); super._transfer(from, address(this), selltx); } super._transfer(from, to, amount); } else { super._transfer(from, to, amount); } } function () external payable {} function RebalanceLiquidity() public { require(balanceOf(msg.sender) >= minRebalanceAmount, "You do not have the required amount of TRY."); require(block.timestamp > lastRebalance + rebalanceInterval, "It is too early to use this function."); lastRebalance = block.timestamp; uint256 _lockableSupply = stakePool; _addRebalanceInterval(); _rewardStakers(_lockableSupply); uint256 amountToRemove = ERC20(uniswapV2Pair).balanceOf(address(this)).div(rebalanceDivisor); remLiquidity(amountToRemove); uint _locked = balancer.rebalance(rebalanceRewardDivisor); emit Rebalance(_locked); } function _addRebalanceInterval() private { rebalanceInterval = rebalanceInterval.add(20 seconds); } function _rewardStakers(uint256 stakingRewards) private { if(TRYStake != address(0)) { TRYstakingContract(TRYStake).ADDFUNDS(stakingRewards); stakePool= 0; emit RewardStakers(stakingRewards); } } function remLiquidity(uint256 lpAmount) private returns(uint ETHAmount) { ERC20(uniswapV2Pair).approve(uniswapV2Router, lpAmount); (ETHAmount) = IUniswapV2Router02(uniswapV2Router) .removeLiquidityETHSupportingFeeOnTransferTokens( address(this), lpAmount, 0, 0, address(balancer), block.timestamp); } function lockableSupply() external view returns (uint256) { return balanceOf(address(this)); } function lockedSupply() external view returns (uint256) { uint256 lpTotalSupply = ERC20(uniswapV2Pair).totalSupply(); uint256 lpBalance = lockedLiquidity(); uint256 percentOfLpTotalSupply = lpBalance.mul(1e12).div(lpTotalSupply); uint256 uniswapBalance = balanceOf(uniswapV2Pair); uint256 _lockedSupply = uniswapBalance.mul(percentOfLpTotalSupply).div(1e12); return _lockedSupply; } function burnedSupply() external view returns (uint256) { uint256 lpTotalSupply = ERC20(uniswapV2Pair).totalSupply(); uint256 lpBalance = burnedLiquidity(); uint256 percentOfLpTotalSupply = lpBalance.mul(1e12).div(lpTotalSupply); uint256 uniswapBalance = balanceOf(uniswapV2Pair); uint256 _burnedSupply = uniswapBalance.mul(percentOfLpTotalSupply).div(1e12); return _burnedSupply; } function burnableLiquidity() public view returns (uint256) { return ERC20(uniswapV2Pair).balanceOf(address(this)); } function burnedLiquidity() public view returns (uint256) { return ERC20(uniswapV2Pair).balanceOf(address(0)); } function lockedLiquidity() public view returns (uint256) { return burnableLiquidity().add(burnedLiquidity()); } } interface TRYstakingContract { function ADDFUNDS(uint256 stakingRewards) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } interface IUniswapV2Router02 { function WETH() external pure returns (address); function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); } interface IUniswapV2Pair { function sync() external; } contract ERC20Governance is ERC20, ERC20Detailed { using SafeMath for uint256; function _transfer(address from, address to, uint256 amount) internal { _moveDelegates(_delegates[from], _delegates[to], amount); super._transfer(from, to, amount); } function _mint(address account, uint256 amount) internal { _moveDelegates(address(0), _delegates[account], amount); super._mint(account, amount); } function _burn(address account, uint256 amount) internal { _moveDelegates(_delegates[account], address(0), amount); super._burn(account, amount); } mapping (address => address) internal _delegates; struct Checkpoint { uint32 fromBlock; uint256 votes; } mapping (address => mapping (uint32 => Checkpoint)) public checkpoints; mapping (address => uint32) public numCheckpoints; bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)"); bytes32 public constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)"); mapping (address => uint) public nonces; event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate); event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance); function delegates(address delegator) external view returns (address) { return _delegates[delegator]; } function delegate(address delegatee) external { return _delegate(msg.sender, delegatee); } function delegateBySig( address delegatee, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s ) external { bytes32 domainSeparator = keccak256( abi.encode( DOMAIN_TYPEHASH, keccak256(bytes(name())), getChainId(), address(this) ) ); bytes32 structHash = keccak256( abi.encode( DELEGATION_TYPEHASH, delegatee, nonce, expiry ) ); bytes32 digest = keccak256( abi.encodePacked( "\x19\x01", domainSeparator, structHash ) ); address signatory = ecrecover(digest, v, r, s); require(signatory != address(0), "ERC20Governance::delegateBySig: invalid signature"); require(nonce == nonces[signatory]++, "ERC20Governance::delegateBySig: invalid nonce"); require(now <= expiry, "ERC20Governance::delegateBySig: signature expired"); return _delegate(signatory, delegatee); } function getCurrentVotes(address account) external view returns (uint256) { uint32 nCheckpoints = numCheckpoints[account]; return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0; } function getPriorVotes(address account, uint blockNumber) external view returns (uint256) { require(blockNumber < block.number, "ERC20Governance::getPriorVotes: not yet determined"); uint32 nCheckpoints = numCheckpoints[account]; if (nCheckpoints == 0) { return 0; } if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) { return checkpoints[account][nCheckpoints - 1].votes; } if (checkpoints[account][0].fromBlock > blockNumber) { return 0; } uint32 lower = 0; uint32 upper = nCheckpoints - 1; while (upper > lower) { uint32 center = upper - (upper - lower) / 2; Checkpoint memory cp = checkpoints[account][center]; if (cp.fromBlock == blockNumber) { return cp.votes; } else if (cp.fromBlock < blockNumber) { lower = center; } else { upper = center - 1; } } return checkpoints[account][lower].votes; } function _delegate(address delegator, address delegatee) internal { address currentDelegate = _delegates[delegator]; uint256 delegatorBalance = balanceOf(delegator); _delegates[delegator] = delegatee; emit DelegateChanged(delegator, currentDelegate, delegatee); _moveDelegates(currentDelegate, delegatee, delegatorBalance); } function _moveDelegates(address srcRep, address dstRep, uint256 amount) internal { if (srcRep != dstRep && amount > 0) { if (srcRep != address(0)) { uint32 srcRepNum = numCheckpoints[srcRep]; uint256 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0; uint256 srcRepNew = srcRepOld.sub(amount); _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew); } if (dstRep != address(0)) { uint32 dstRepNum = numCheckpoints[dstRep]; uint256 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0; uint256 dstRepNew = dstRepOld.add(amount); _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew); } } } function _writeCheckpoint( address delegatee, uint32 nCheckpoints, uint256 oldVotes, uint256 newVotes ) internal { uint32 blockNumber = safe32(block.number, "ERC20Governance::_writeCheckpoint: block number exceeds 32 bits"); if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber) { checkpoints[delegatee][nCheckpoints - 1].votes = newVotes; } else { checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes); numCheckpoints[delegatee] = nCheckpoints + 1; } emit DelegateVotesChanged(delegatee, oldVotes, newVotes); } function safe32(uint n, string memory errorMessage) internal pure returns (uint32) { require(n < 2**32, errorMessage); return uint32(n); } function getChainId() internal pure returns (uint) { uint256 chainId; assembly { chainId := chainid() } return chainId; } } contract Balancer { using SafeMath for uint256; TRYfinance token; address public burnAddr = 0x000000000000000000000000000000000000dEaD; address payable public treasury; constructor(address payable treasury_) public { token = TRYfinance(msg.sender); treasury = treasury_; } function () external payable {} function rebalance(uint rebalanceRewardDivisor) external returns (uint256) { require(msg.sender == address(token), "only token contract can perform this function"); swapEthForTokens(address(this).balance, rebalanceRewardDivisor); uint256 lockableBalance = token.balanceOf(address(this)); uint256 callerReward = lockableBalance.div(rebalanceRewardDivisor); token.transfer(tx.origin, callerReward); token.transfer(burnAddr, lockableBalance.sub(callerReward)); return lockableBalance.sub(callerReward); } function swapEthForTokens(uint256 EthAmount, uint rebalanceRewardDivisor) private { address[] memory uniswapPairPath = new address[](2); uniswapPairPath[0] = IUniswapV2Router02(token.uniswapV2Router()).WETH(); uniswapPairPath[1] = address(token); uint256 treasuryAmount = EthAmount.div(rebalanceRewardDivisor); treasury.transfer(treasuryAmount); token.approve(token.uniswapV2Router(), EthAmount); IUniswapV2Router02(token.uniswapV2Router()) .swapExactETHForTokensSupportingFeeOnTransferTokens.value(EthAmount.sub(treasuryAmount))( 0, uniswapPairPath, address(this), block.timestamp); } } contract TRYfinance is ERC20(100000e18), ERC20Detailed("TRYfinance", "TRY", 18), ERC20Burnable, ERC20Governance, ERC20TransferLiquidityLock, WhitelistAdminRole { function createUNISwapPair(uint amountTokenDesired) public onlyWhitelistAdmin { uint amountETH = address(this).balance; approve(address(uniswapV2Router), amountTokenDesired); IUniswapV2Router01(uniswapV2Router).addLiquidityETH.value(amountETH)( address(this), amountTokenDesired, 0, 0, address(this), now); } function quickApproveTRYStake() public { _approve(_msgSender(), TRYStake, 10000e18); } function quickApproveMaster() public { _approve(_msgSender(), Master, 10000e18); } function quickApproveFarm() public { _approve(_msgSender(), LPFarm, 10000e18); } function setUniswapV2Router(address _uniswapV2Router) public onlyWhitelistAdmin { uniswapV2Router = _uniswapV2Router; } function setUniswapV2Pair(address _uniswapV2Pair) public onlyWhitelistAdmin { uniswapV2Pair = _uniswapV2Pair; } function setUniswapV2Factory(address _uniswapV2Factory) public onlyWhitelistAdmin { uniswapV2Factory = _uniswapV2Factory; } function setTrans100(uint256 _trans100) public onlyWhitelistAdmin { require(_trans100 <= 100e18, "Cannot set over 100 transactions"); trans100 = _trans100; } function setRewardPoolDivisor(uint256 _rdiv) public onlyWhitelistAdmin { require(_rdiv >= 100, "Cannot set over 1% RewardPoolDivisor"); rewardPoolDivisor = _rdiv; } function setRebalanceDivisor(uint256 _rebalanceDivisor) public onlyWhitelistAdmin { if (_rebalanceDivisor != 0) { require(_rebalanceDivisor >= 10, "Cannot set rebalanceDivisor over 10%"); require(_rebalanceDivisor <= 100, "Cannot set rebalanceDivisor under 1%"); } rebalanceDivisor = _rebalanceDivisor; } function addTRYStake(address _stake) public onlyWhitelistAdmin { TRYStake = _stake; } function addPresaleAddress(address _presaleaddress) public onlyWhitelistAdmin { presaleAddress = _presaleaddress; } function addLPFarm(address _farm) public onlyWhitelistAdmin { LPFarm = _farm; } function addMaster(address _master) public onlyWhitelistAdmin { Master = _master; } function addTrident(address _Trident) public onlyWhitelistAdmin { Trident = _Trident; } function setMaster () public onlyWhitelistAdmin { ERC20(Trident).approve(Master, 100000e18); } function setTrident () public onlyWhitelistAdmin { ERC20(Trident).approve(TRYStake, 100000e18); } function rewardStaking(uint256 stakingRewards) internal { TRYstakingContract(TRYStake).ADDFUNDS(stakingRewards); emit SupplyTRYStake(stakingRewards); } function setRebalanceInterval(uint256 _interval) public onlyWhitelistAdmin { require(_interval<= 7200, "Cannot set over 2 hour interval"); require(_interval>= 3600, "Cannot set under 1 hour interval"); rebalanceInterval = _interval; } function setRebalanceRewardDivisior(uint256 _rDivisor) public onlyWhitelistAdmin { if (_rDivisor != 0) { require(_rDivisor <= 25, "Cannot set rebalanceRewardDivisor under 4%"); require(_rDivisor >= 10, "Cannot set rebalanceRewardDivisor over 10%"); } rebalanceRewardDivisor = _rDivisor; } function toggleFeeless(address _addr) public onlyWhitelistAdmin { feelessAddr[_addr] = true; } function toggleFees(address _addr) public onlyWhitelistAdmin { feelessAddr[_addr] = false; } function toggleUnlocked(address _addr) public onlyWhitelistAdmin { unlocked[_addr] = !unlocked[_addr]; } function setOracle(address _addr, bool _bool) public onlyWhitelistAdmin { oracle[_addr] = _bool; } function setBlackListAddress(address _addr, bool _bool) public onlyWhitelistAdmin { blacklist[_addr] = _bool; } function activateTrading() public onlyWhitelistAdmin { locked = false; } function setMinRebalanceAmount(uint256 amount_) public onlyWhitelistAdmin { require(amount_ <= 1000e18, "Cannot set over 1000 TRY tokens"); require(amount_ >= 20e18, "Cannot set under 20 TRY tokens"); minRebalanceAmount = amount_; } function setBurnTxFee(uint256 amount_) public onlyWhitelistAdmin { require(amount_ >= 100, "Cannot set over 1% burnTxFee"); burnTxFee = amount_; } function setAntiDumpFee(uint256 amount_) public onlyWhitelistAdmin { require(amount_ >= 10, "Cannot set over 10% antiDumpFee"); require(amount_ <= 100, "Cannot set under 1% antiDumpFee"); antiDumpFee = amount_; } }
Contract Security Audit
- Solidity.Finance - December 30th, 2020 - Security Audit Report
[{"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":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenBurnt","type":"uint256"}],"name":"Rebalance","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"stakingRewards","type":"uint256"}],"name":"RewardStakers","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"SupplyTRYStake","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":true,"internalType":"address","name":"account","type":"address"}],"name":"WhitelistAdminAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"WhitelistAdminRemoved","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"LPFarm","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"LPLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"Master","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"RebalanceLiquidity","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"TRYStake","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"Trident","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"activateTrading","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_farm","type":"address"}],"name":"addLPFarm","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_master","type":"address"}],"name":"addMaster","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_presaleaddress","type":"address"}],"name":"addPresaleAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_stake","type":"address"}],"name":"addTRYStake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_Trident","type":"address"}],"name":"addTrident","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addWhitelistAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"antiDumpFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"burnAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"burnTxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"burnableLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"burnedLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"burnedSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"calculateFees","outputs":[{"internalType":"uint256","name":"rewardtx","type":"uint256"},{"internalType":"uint256","name":"Burntx","type":"uint256"},{"internalType":"uint256","name":"selltx","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"checkpoints","outputs":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint256","name":"votes","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amountTokenDesired","type":"uint256"}],"name":"createUNISwapPair","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"feelessAddr","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"isContract","outputs":[{"internalType":"bool","name":"_isContract","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isWhitelistAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastRebalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lockableSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"locked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lockedLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lockedSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minRebalanceAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"oracle","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"presaleAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"quickApproveFarm","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"quickApproveMaster","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"quickApproveTRYStake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rebalanceDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rebalanceInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rebalanceRewardDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceWhitelistAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rewardPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardPoolDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"setAntiDumpFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_bool","type":"bool"}],"name":"setBlackListAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"setBurnTxFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"setMaster","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"setMinRebalanceAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_bool","type":"bool"}],"name":"setOracle","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_rebalanceDivisor","type":"uint256"}],"name":"setRebalanceDivisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_interval","type":"uint256"}],"name":"setRebalanceInterval","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_rDivisor","type":"uint256"}],"name":"setRebalanceRewardDivisior","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_rdiv","type":"uint256"}],"name":"setRewardPoolDivisor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_trans100","type":"uint256"}],"name":"setTrans100","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"setTrident","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_uniswapV2Factory","type":"address"}],"name":"setUniswapV2Factory","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_uniswapV2Pair","type":"address"}],"name":"setUniswapV2Pair","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_uniswapV2Router","type":"address"}],"name":"setUniswapV2Router","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stakePool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"toggleFeeless","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"toggleFees","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"toggleUnlocked","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"trans100","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"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"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"treasury","outputs":[{"internalType":"address payable","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"txNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"uniswapV2Factory","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"unlocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"}]
Contract Creation Code
600a80546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d17808355600b80548316735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f1790556010805483166001600160a01b039290921691909117905560118054821630179055601f805490911661dead179055670de0b6b3a764000060215568015af1d78b58c400006022556000602381905560245560809081526954525966696e616e636560b01b60a052610100604052600360c09081526254525960e81b60e052601269152d02c7e14af6800000620000f9620000e96001600160e01b036200031e16565b826001600160e01b036200032316565b5082516200010f90600390602086019062000a57565b5081516200012590600490602085019062000a57565b506005805460ff90921660ff19909216919091179055505042601d556064601a81905560178190556014601b556019601881905555611c20601e5568056bc75e2d63100000601c55601280546001600160a01b0319163317908190556040516001600160a01b0391909116906200019c9062000adc565b6001600160a01b03909116815260405190819003602001906000f080158015620001ca573d6000803e3d6000fd5b5060258054610100600160a81b0319166101006001600160a01b039384168102919091178255306000818152601360209081526040808320805460ff1990811660019081179092558754879004891685528285208054821683179055600a80548a1686528386208054831684179055600b548a1686528386208054831684179055600d548a1686528386208054831684179055600e80548b16875284872080548416851790558954831684178a55601f8054600160a01b60ff60a01b1990911617905533875260148652848720805484169055968652838620805483168417905588548890048a168652838620805483168417905597549690960488168452818420805487168217905595548716835280832080548616871790559254909516815290812080549092169092179055905562000318620003096200031e565b6001600160e01b036200036e16565b62000b07565b335b90565b6001600160a01b03808316600090815260066020526040812054620003539216836001600160e01b03620003c016565b6200036a82826200054460201b620042071760201c565b5050565b620003898160266200064560201b62003e501790919060201c565b6040516001600160a01b038216907f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129990600090a250565b816001600160a01b0316836001600160a01b031614158015620003e35750600081115b156200053f576001600160a01b0383161562000494576001600160a01b03831660009081526008602052604081205463ffffffff1690816200042757600062000459565b6001600160a01b038516600090815260076020908152604080832063ffffffff60001987011684529091529020600101545b90506000620004778483620006d260201b62003abb1790919060201c565b905062000490868484846001600160e01b036200072316565b5050505b6001600160a01b038216156200053f576001600160a01b03821660009081526008602052604081205463ffffffff169081620004d257600062000504565b6001600160a01b038416600090815260076020908152604080832063ffffffff60001987011684529091529020600101545b905060006200052284836200089760201b620035bf1790919060201c565b90506200053b858484846001600160e01b036200072316565b5050505b505050565b6001600160a01b038216620005a0576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b620005bc816002546200089760201b620035bf1790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620005ef918390620035bf62000897821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6200065a82826001600160e01b03620008f216565b15620006ad576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006200071c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506200095b60201b60201c565b9392505050565b600062000753436040518060600160405280603f815260200162005c48603f91396001600160e01b03620009f616565b905060008463ffffffff161180156200079d57506001600160a01b038516600090815260076020908152604080832063ffffffff6000198901811685529252909120548282169116145b15620007dc576001600160a01b038516600090815260076020908152604080832063ffffffff600019890116845290915290206001018290556200084d565b60408051808201825263ffffffff808416825260208083018681526001600160a01b038a166000818152600784528681208b8616825284528681209551865490861663ffffffff19918216178755925160019687015590815260089092529390208054928801909116919092161790555b604080518481526020810184905281516001600160a01b038816927fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724928290030190a25050505050565b6000828201838110156200071c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006001600160a01b0382166200093b5760405162461bcd60e51b815260040180806020018281038252602281526020018062005c876022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b60008184841115620009ee5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620009b257818101518382015260200162000998565b50505050905090810190601f168015620009e05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081640100000000841062000a4f5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315620009b257818101518382015260200162000998565b509192915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000a9a57805160ff191683800117855562000aca565b8280016001018555821562000aca579182015b8281111562000aca57825182559160200191906001019062000aad565b5062000ad892915062000aea565b5090565b610943806200530583390190565b6200032091905b8082111562000ad8576000815560010162000af1565b6147ee8062000b176000396000f3fe6080604052600436106104ec5760003560e01c80637e0d943e1161028c578063c3cda5201161015a578063e7a324dc116100cc578063f3db188c11610085578063f3db188c1461126b578063f8ea475614611295578063f9c778e1146112aa578063f9f92be4146112dd578063fd7310c414611310578063fd77f8a114611325576104ec565b8063e7a324dc14611185578063e84354c51461119a578063eb37d349146111af578063ef0658f2146111e2578063f1127ed8146111f7578063f1e6e46814611256576104ec565b8063d246d4111161011e578063d246d411146110cc578063db14c5d5146110e1578063dd62ed3e1461110b578063e0a9e6b614611146578063e161eb561461115b578063e6a2538514611170576104ec565b8063c3cda52014611006578063ca5c7b911461105a578063ceea57e51461106f578063cf30901214611084578063d1846d0c14611099576104ec565b8063a457c2d7116101fe578063b4b5ea57116101b7578063b4b5ea5714610f11578063b67f8b6d14610f44578063b6833c5914610f59578063bb5f747b14610f83578063bc91720214610fb6578063bedd0d3314610fcb576104ec565b8063a457c2d714610e4b578063a889c82c14610e84578063a8a5550e14610e99578063a9059cbb14610eae578063acd7cff414610ee7578063b439824414610efc576104ec565b80638ba51d61116102505780638ba51d6114610d5e57806395d89b4114610d915780639a8fec8714610da65780639e14b8e014610dbb578063a0f364e414610de5578063a29a608914610e18576104ec565b80637e0d943e14610ca45780637ecebe0014610cce5780637ef7686e14610d0157806382bc6ced14610d16578063858750ab14610d49576104ec565b80633e0d04a4116103c957806366666aa91161033b5780637362d9c8116102f45780637362d9c814610b84578063782d6fe114610bb757806379cc679014610bf05780637b9003e314610c295780637c411c1a14610c5c5780637d57ab9614610c71576104ec565b806366666aa914610a475780636da1c23f14610a5c5780636fcfff4514610a7157806370709a7c14610abd57806370a0823114610af057806373352ad314610b23576104ec565b8063587cde1e1161038d578063587cde1e1461095257806359d0f713146109855780635b7dcaed1461099a5780635c19a95c146109c457806361d027b3146109f75780636536084314610a0c576104ec565b80633e0d04a4146108bf57806342966c68146108e957806349bd5a5e146109135780634c5a628c1461092857806355d0a1d01461093d576104ec565b806318160ddd116104625780632feec9d6116104265780632feec9d6146107bf578063313ce567146107e9578063352ffb9a1461081457806339509351146108295780633bd5b4ea146108625780633cd221a21461088c576104ec565b806318160ddd1461072857806318c51c351461073d57806320606b701461075257806323b872dd146107675780632898cafa146107aa576104ec565b806312283a39116104b457806312283a3914610634578063122fe685146106675780631419841d1461069857806316279055146106cb5780631694505e146106fe57806316d1d91614610713576104ec565b806306fdde03146104ee578063095ea7b3146105785780630bd05b69146105c5578063106b9ca1146105da5780631097d54a14610601575b005b3480156104fa57600080fd5b5061050361133a565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561053d578181015183820152602001610525565b50505050905090810190601f16801561056a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561058457600080fd5b506105b16004803603604081101561059b57600080fd5b506001600160a01b0381351690602001356113d0565b604080519115158252519081900360200190f35b3480156105d157600080fd5b506104ec6113ee565b3480156105e657600080fd5b506105ef611445565b60408051918252519081900360200190f35b34801561060d57600080fd5b506104ec6004803603602081101561062457600080fd5b50356001600160a01b031661144b565b34801561064057600080fd5b506104ec6004803603602081101561065757600080fd5b50356001600160a01b03166114b3565b34801561067357600080fd5b5061067c61151a565b604080516001600160a01b039092168252519081900360200190f35b3480156106a457600080fd5b506104ec600480360360208110156106bb57600080fd5b50356001600160a01b0316611529565b3480156106d757600080fd5b506105b1600480360360208110156106ee57600080fd5b50356001600160a01b0316611591565b34801561070a57600080fd5b5061067c61159d565b34801561071f57600080fd5b506105ef6115ac565b34801561073457600080fd5b506105ef6115b2565b34801561074957600080fd5b5061067c6115b8565b34801561075e57600080fd5b506105ef6115c7565b34801561077357600080fd5b506105b16004803603606081101561078a57600080fd5b506001600160a01b038135811691602081013590911690604001356115e2565b3480156107b657600080fd5b506105ef61166f565b3480156107cb57600080fd5b506104ec600480360360208110156107e257600080fd5b50356116ee565b3480156107f557600080fd5b506107fe611779565b6040805160ff9092168252519081900360200190f35b34801561082057600080fd5b5061067c611782565b34801561083557600080fd5b506105b16004803603604081101561084c57600080fd5b506001600160a01b038135169060200135611791565b34801561086e57600080fd5b506104ec6004803603602081101561088557600080fd5b50356117e5565b34801561089857600080fd5b506104ec600480360360208110156108af57600080fd5b50356001600160a01b031661188e565b3480156108cb57600080fd5b506104ec600480360360208110156108e257600080fd5b50356118f6565b3480156108f557600080fd5b506104ec6004803603602081101561090c57600080fd5b50356119f5565b34801561091f57600080fd5b5061067c611a09565b34801561093457600080fd5b506104ec611a18565b34801561094957600080fd5b506105ef611a2a565b34801561095e57600080fd5b5061067c6004803603602081101561097557600080fd5b50356001600160a01b0316611b1e565b34801561099157600080fd5b5061067c611b3c565b3480156109a657600080fd5b506104ec600480360360208110156109bd57600080fd5b5035611b4b565b3480156109d057600080fd5b506104ec600480360360208110156109e757600080fd5b50356001600160a01b0316611c44565b348015610a0357600080fd5b5061067c611c4e565b348015610a1857600080fd5b506104ec60048036036040811015610a2f57600080fd5b506001600160a01b0381351690602001351515611c5d565b348015610a5357600080fd5b506105ef611cce565b348015610a6857600080fd5b506104ec611cd4565b348015610a7d57600080fd5b50610aa460048036036020811015610a9457600080fd5b50356001600160a01b0316611cfb565b6040805163ffffffff9092168252519081900360200190f35b348015610ac957600080fd5b506104ec60048036036020811015610ae057600080fd5b50356001600160a01b0316611d13565b348015610afc57600080fd5b506105ef60048036036020811015610b1357600080fd5b50356001600160a01b0316611d7d565b348015610b2f57600080fd5b50610b6660048036036060811015610b4657600080fd5b506001600160a01b03813581169160208101359091169060400135611d98565b60408051938452602084019290925282820152519081900360600190f35b348015610b9057600080fd5b506104ec60048036036020811015610ba757600080fd5b50356001600160a01b0316611da4565b348015610bc357600080fd5b506105ef60048036036040811015610bda57600080fd5b506001600160a01b038135169060200135611df3565b348015610bfc57600080fd5b506104ec60048036036040811015610c1357600080fd5b506001600160a01b038135169060200135611ffb565b348015610c3557600080fd5b506104ec60048036036020811015610c4c57600080fd5b50356001600160a01b0316612009565b348015610c6857600080fd5b506104ec612071565b348015610c7d57600080fd5b506104ec60048036036020811015610c9457600080fd5b50356001600160a01b031661226e565b348015610cb057600080fd5b506104ec60048036036020811015610cc757600080fd5b50356122dd565b348015610cda57600080fd5b506105ef60048036036020811015610cf157600080fd5b50356001600160a01b03166123ae565b348015610d0d57600080fd5b5061067c6123c0565b348015610d2257600080fd5b506104ec60048036036020811015610d3957600080fd5b50356001600160a01b03166123cf565b348015610d5557600080fd5b506105ef612437565b348015610d6a57600080fd5b506104ec60048036036020811015610d8157600080fd5b50356001600160a01b0316612482565b348015610d9d57600080fd5b506105036124ea565b348015610db257600080fd5b506105ef61254b565b348015610dc757600080fd5b506104ec60048036036020811015610dde57600080fd5b5035612551565b348015610df157600080fd5b506105b160048036036020811015610e0857600080fd5b50356001600160a01b0316612648565b348015610e2457600080fd5b506104ec60048036036020811015610e3b57600080fd5b50356001600160a01b031661265d565b348015610e5757600080fd5b506105b160048036036040811015610e6e57600080fd5b506001600160a01b0381351690602001356126c5565b348015610e9057600080fd5b506104ec612733565b348015610ea557600080fd5b506105ef612805565b348015610eba57600080fd5b506105b160048036036040811015610ed157600080fd5b506001600160a01b038135169060200135612815565b348015610ef357600080fd5b506105ef612829565b348015610f0857600080fd5b506105ef61282f565b348015610f1d57600080fd5b506105ef60048036036020811015610f3457600080fd5b50356001600160a01b0316612850565b348015610f5057600080fd5b5061067c6128b4565b348015610f6557600080fd5b506104ec60048036036020811015610f7c57600080fd5b50356128c3565b348015610f8f57600080fd5b506105b160048036036020811015610fa657600080fd5b50356001600160a01b03166129ca565b348015610fc257600080fd5b506104ec6129dd565b348015610fd757600080fd5b506104ec60048036036040811015610fee57600080fd5b506001600160a01b0381351690602001351515612a04565b34801561101257600080fd5b506104ec600480360360c081101561102957600080fd5b506001600160a01b038135169060208101359060408101359060ff6060820135169060808101359060a00135612a75565b34801561106657600080fd5b506105ef612ceb565b34801561107b57600080fd5b506104ec612d74565b34801561109057600080fd5b506105b1612e1c565b3480156110a557600080fd5b506105b1600480360360208110156110bc57600080fd5b50356001600160a01b0316612e25565b3480156110d857600080fd5b5061067c612e3a565b3480156110ed57600080fd5b506104ec6004803603602081101561110457600080fd5b5035612e49565b34801561111757600080fd5b506105ef6004803603604081101561112e57600080fd5b506001600160a01b0381358116916020013516612eea565b34801561115257600080fd5b506105ef612f15565b34801561116757600080fd5b506105ef612f1b565b34801561117c57600080fd5b506105b1612f21565b34801561119157600080fd5b506105ef612f31565b3480156111a657600080fd5b506105ef612f4c565b3480156111bb57600080fd5b506105b1600480360360208110156111d257600080fd5b50356001600160a01b0316612f52565b3480156111ee57600080fd5b506105ef612f67565b34801561120357600080fd5b506112366004803603604081101561121a57600080fd5b5080356001600160a01b0316906020013563ffffffff16612f6d565b6040805163ffffffff909316835260208301919091528051918290030190f35b34801561126257600080fd5b506104ec612f9a565b34801561127757600080fd5b506104ec6004803603602081101561128e57600080fd5b5035612fc1565b3480156112a157600080fd5b506105ef613092565b3480156112b657600080fd5b506104ec600480360360208110156112cd57600080fd5b50356001600160a01b0316613098565b3480156112e957600080fd5b506105b16004803603602081101561130057600080fd5b50356001600160a01b0316613100565b34801561131c57600080fd5b506105ef613115565b34801561133157600080fd5b506105ef61311b565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156113c65780601f1061139b576101008083540402835291602001916113c6565b820191906000526020600020905b8154815290600101906020018083116113a957829003601f168201915b5050505050905090565b60006113e46113dd613121565b8484613125565b5060015b92915050565b6113fe6113f9613121565b6129ca565b6114395760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b6025805460ff19169055565b601d5481565b6114566113f9613121565b6114915760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6114be6113f9613121565b6114f95760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b6001600160a01b03166000908152601360205260409020805460ff19169055565b600e546001600160a01b031681565b6115346113f9613121565b61156f5760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b3b63ffffffff16151590565b600a546001600160a01b031681565b601e5481565b60025490565b600d546001600160a01b031681565b60405180604361450782396043019050604051809103902081565b60006115ef848484613211565b611665846115fb613121565b6116608560405180606001604052806028815260200161456b602891396001600160a01b038a16600090815260016020526040812090611639613121565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61352816565b613125565b5060019392505050565b600c54604080516370a0823160e01b8152600060048201819052915191926001600160a01b0316916370a0823191602480820192602092909190829003018186803b1580156116bd57600080fd5b505afa1580156116d1573d6000803e3d6000fd5b505050506040513d60208110156116e757600080fd5b5051905090565b6116f96113f9613121565b6117345760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b60648110156117745760405162461bcd60e51b81526004018080602001828103825260248152602001806147376024913960400191505060405180910390fd5b601755565b60055460ff1690565b6011546001600160a01b031681565b60006113e461179e613121565b8461166085600160006117af613121565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6135bf16565b6117f06113f9613121565b61182b5760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b68056bc75e2d63100000811115611889576040805162461bcd60e51b815260206004820181905260248201527f43616e6e6f7420736574206f76657220313030207472616e73616374696f6e73604482015290519081900360640190fd5b602255565b6118996113f9613121565b6118d45760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6119016113f9613121565b61193c5760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b600a544790611954906001600160a01b0316836113d0565b50600a546040805163f305d71960e01b8152306004820181905260248201869052600060448301819052606483015260848201524260a482015290516001600160a01b039092169163f305d71991849160c480830192606092919082900301818588803b1580156119c457600080fd5b505af11580156119d8573d6000803e3d6000fd5b50505050506040513d60608110156119ef57600080fd5b50505050565b611a06611a00613121565b82613619565b50565b600c546001600160a01b031681565b611a28611a23613121565b613649565b565b600080600c60009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a7b57600080fd5b505afa158015611a8f573d6000803e3d6000fd5b505050506040513d6020811015611aa557600080fd5b505190506000611ab361166f565b90506000611adc83611ad08464e8d4a5100063ffffffff61369116565b9063ffffffff6136ea16565b600c54909150600090611af7906001600160a01b0316611d7d565b90506000611b1464e8d4a51000611ad0848663ffffffff61369116565b9550505050505090565b6001600160a01b039081166000908152600660205260409020541690565b600b546001600160a01b031681565b611b566113f9613121565b611b915760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b611c20811115611be8576040805162461bcd60e51b815260206004820152601f60248201527f43616e6e6f7420736574206f766572203220686f757220696e74657276616c00604482015290519081900360640190fd5b610e10811015611c3f576040805162461bcd60e51b815260206004820181905260248201527f43616e6e6f742073657420756e646572203120686f757220696e74657276616c604482015290519081900360640190fd5b601e55565b611a06338261372c565b6012546001600160a01b031681565b611c686113f9613121565b611ca35760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b60245481565b611a28611cdf613121565b600f546001600160a01b031669021e19e0c9bab2400000613125565b60086020526000908152604090205463ffffffff1681565b611d1e6113f9613121565b611d595760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b6001600160a01b03166000908152601360205260409020805460ff19166001179055565b6001600160a01b031660009081526020819052604090205490565b50600092839250829150565b611daf6113f9613121565b611dea5760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b611a06816137bb565b6000438210611e335760405162461bcd60e51b81526004018080602001828103825260328152602001806146b46032913960400191505060405180910390fd5b6001600160a01b03831660009081526008602052604090205463ffffffff1680611e615760009150506113e8565b6001600160a01b038416600090815260076020908152604080832063ffffffff600019860181168552925290912054168310611ed0576001600160a01b03841660009081526007602090815260408083206000199490940163ffffffff168352929052206001015490506113e8565b6001600160a01b038416600090815260076020908152604080832083805290915290205463ffffffff16831015611f0b5760009150506113e8565b600060001982015b8163ffffffff168163ffffffff161115611fc457600282820363ffffffff16048103611f3d6141f0565b506001600160a01b038716600090815260076020908152604080832063ffffffff808616855290835292819020815180830190925280549093168082526001909301549181019190915290871415611f9f576020015194506113e89350505050565b805163ffffffff16871115611fb657819350611fbd565b6001820392505b5050611f13565b506001600160a01b038516600090815260076020908152604080832063ffffffff9094168352929052206001015491505092915050565b6120058282613803565b5050565b6120146113f9613121565b61204f5760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b601c5461207d33611d7d565b10156120ba5760405162461bcd60e51b815260040180806020018281038252602b8152602001806143ba602b913960400191505060405180910390fd5b601e54601d540142116120fe5760405162461bcd60e51b81526004018080602001828103825260258152602001806143e56025913960400191505060405180910390fd5b42601d5560235461210d613857565b6121168161386b565b601954600c54604080516370a0823160e01b815230600482015290516000936121a59390926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b15801561216d57600080fd5b505afa158015612181573d6000803e3d6000fd5b505050506040513d602081101561219757600080fd5b50519063ffffffff6136ea16565b90506121b08161391c565b5060255460185460408051631e93260360e31b815260048101929092525160009261010090046001600160a01b03169163f499301891602480830192602092919082900301818787803b15801561220657600080fd5b505af115801561221a573d6000803e3d6000fd5b505050506040513d602081101561223057600080fd5b50516040805182815290519192507f811d4760f1a92875eb76dbd3dc2359544b2f6a000ba5b78784c0b105b3469bd0919081900360200190a1505050565b6122796113f9613121565b6122b45760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b6001600160a01b03166000908152601460205260409020805460ff19811660ff90911615179055565b6122e86113f9613121565b6123235760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b80156123a957600a8110156123695760405162461bcd60e51b81526004018080602001828103825260248152602001806144306024913960400191505060405180910390fd5b60648111156123a95760405162461bcd60e51b815260040180806020018281038252602481526020018061466b6024913960400191505060405180910390fd5b601955565b60096020526000908152604090205481565b600f546001600160a01b031681565b6123da6113f9613121565b6124155760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b600c54604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156116bd57600080fd5b61248d6113f9613121565b6124c85760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156113c65780601f1061139b576101008083540402835291602001916113c6565b60185481565b61255c6113f9613121565b6125975760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b600a8110156125ed576040805162461bcd60e51b815260206004820152601f60248201527f43616e6e6f7420736574206f7665722031302520616e746944756d7046656500604482015290519081900360640190fd5b6064811115612643576040805162461bcd60e51b815260206004820152601f60248201527f43616e6e6f742073657420756e64657220312520616e746944756d7046656500604482015290519081900360640190fd5b601b55565b60136020526000908152604090205460ff1681565b6126686113f9613121565b6126a35760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b60006113e46126d2613121565b846116608560405180606001604052806025815260200161479560259139600160006126fc613121565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61352816565b61273e6113f9613121565b6127795760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b601154600d546040805163095ea7b360e01b81526001600160a01b03928316600482015269152d02c7e14af680000060248201529051919092169163095ea7b39160448083019260209291908290030181600087803b1580156127db57600080fd5b505af11580156127ef573d6000803e3d6000fd5b505050506040513d602081101561200557600080fd5b600061281030611d7d565b905090565b60006113e4612822613121565b8484613211565b601b5481565b600061281061283c61166f565b612844612437565b9063ffffffff6135bf16565b6001600160a01b03811660009081526008602052604081205463ffffffff168061287b5760006128ad565b6001600160a01b038316600090815260076020908152604080832063ffffffff60001986011684529091529020600101545b9392505050565b6010546001600160a01b031681565b6128ce6113f9613121565b6129095760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b683635c9adc5dea00000811115612967576040805162461bcd60e51b815260206004820152601f60248201527f43616e6e6f7420736574206f76657220313030302054525920746f6b656e7300604482015290519081900360640190fd5b6801158e460913d000008110156129c5576040805162461bcd60e51b815260206004820152601e60248201527f43616e6e6f742073657420756e6465722032302054525920746f6b656e730000604482015290519081900360640190fd5b601c55565b60006113e860268363ffffffff613a5016565b611a286129e8613121565b6010546001600160a01b031669021e19e0c9bab2400000613125565b612a0f6113f9613121565b612a4a5760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b600060405180806145076043913960430190506040518091039020612a9861133a565b80519060200120612aa7613ab7565b3060405160200180858152602001848152602001838152602001826001600160a01b03166001600160a01b031681526020019450505050506040516020818303038152906040528051906020012090506000604051808061475b603a91396040805191829003603a0182206020808401919091526001600160a01b038c1683830152606083018b905260808084018b90528251808503909101815260a08401835280519082012061190160f01b60c085015260c2840187905260e2808501829052835180860390910181526101028501808552815191840191909120600091829052610122860180865281905260ff8c1661014287015261016286018b905261018286018a9052935191965092945091926001926101a28083019392601f198301929081900390910190855afa158015612be5573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612c375760405162461bcd60e51b81526004018080602001828103825260318152602001806143676031913960400191505060405180910390fd5b6001600160a01b03811660009081526009602052604090208054600181019091558914612c955760405162461bcd60e51b815260040180806020018281038252602d81526020018061470a602d913960400191505060405180910390fd5b87421115612cd45760405162461bcd60e51b81526004018080602001828103825260318152602001806146196031913960400191505060405180910390fd5b612cde818b61372c565b505050505b505050505050565b600080600c60009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015612d3c57600080fd5b505afa158015612d50573d6000803e3d6000fd5b505050506040513d6020811015612d6657600080fd5b505190506000611ab361282f565b612d7f6113f9613121565b612dba5760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b6011546010546040805163095ea7b360e01b81526001600160a01b03928316600482015269152d02c7e14af680000060248201529051919092169163095ea7b39160448083019260209291908290030181600087803b1580156127db57600080fd5b60255460ff1681565b60146020526000908152604090205460ff1681565b601f546001600160a01b031681565b612e546113f9613121565b612e8f5760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b6064811015612ee5576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f7420736574206f766572203125206275726e547846656500000000604482015290519081900360640190fd5b601a55565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60205481565b60195481565b601f54600160a01b900460ff1681565b60405180603a61475b8239603a019050604051809103902081565b601c5481565b60156020526000908152604090205460ff1681565b60175481565b60076020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b611a28612fa5613121565b600d546001600160a01b031669021e19e0c9bab2400000613125565b612fcc6113f9613121565b6130075760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b801561308d57601981111561304d5760405162461bcd60e51b815260040180806020018281038252602a815260200180614454602a913960400191505060405180910390fd5b600a81101561308d5760405162461bcd60e51b815260040180806020018281038252602a81526020018061433d602a913960400191505060405180910390fd5b601855565b60235481565b6130a36113f9613121565b6130de5760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b60166020526000908152604090205460ff1681565b601a5481565b60225481565b3390565b6001600160a01b03831661316a5760405162461bcd60e51b81526004018080602001828103825260248152602001806146e66024913960400191505060405180910390fd5b6001600160a01b0382166131af5760405162461bcd60e51b81526004018080602001828103825260228152602001806143986022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b60255460ff16801561324157506001600160a01b03831660009081526014602052604090205460ff161515600114155b801561326b57506001600160a01b03821660009081526014602052604090205460ff161515600114155b156132a75760405162461bcd60e51b815260040180806020018281038252602981526020018061447e6029913960400191505060405180910390fd5b6001600160a01b03831660009081526016602052604090205460ff161515600114806132f057506001600160a01b03821660009081526016602052604090205460ff1615156001145b1561333b576040805162461bcd60e51b81526020600482015260166024820152751059191c995cdcc81a5cc8189b1858dadb1a5cdd195960521b604482015290519081900360640190fd5b6001600160a01b038316600090815260136020526040812054819060ff1615801561337f57506001600160a01b03841660009081526013602052604090205460ff16155b1561351657601a54156133cd57601a546133a090849063ffffffff6136ea16565b91506133b2838363ffffffff613abb16565b601f549093506133cd9086906001600160a01b031684613afd565b60175415613498576021546020546133ea9163ffffffff6135bf16565b60205560175461340190849063ffffffff6136ea16565b9050613413838263ffffffff613abb16565b9250613420853083613afd565b602480548201905560225460205414156134985761343d85611591565b15613480576040805162461bcd60e51b815260206004820152600e60248201526d34b72b30b634b21031b0b63632b960911b604482015290519081900360640190fd5b61348d3086602454613afd565b600060248190556020555b601b54158015906134c157506001600160a01b03841660009081526015602052604090205460ff165b156135065760006134dd601b54856136ea90919063ffffffff16565b602380548201905590506134f7848263ffffffff613abb16565b9350613504863083613afd565b505b613511858585613afd565b613521565b613521858585613afd565b5050505050565b600081848411156135b75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561357c578181015183820152602001613564565b50505050905090810190601f1680156135a95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156128ad576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b0380831660009081526006602052604081205461363f92169083613b3f565b6120058282613c88565b61365a60268263ffffffff613d8416565b6040516001600160a01b038216907f0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e16590600090a250565b6000826136a0575060006113e8565b828202828482816136ad57fe5b04146128ad5760405162461bcd60e51b815260040180806020018281038252602181526020018061454a6021913960400191505060405180910390fd5b60006128ad83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613deb565b6001600160a01b038083166000908152600660205260408120549091169061375384611d7d565b6001600160a01b0385811660008181526006602052604080822080546001600160a01b031916898616908117909155905194955093928616927f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46119ef828483613b3f565b6137cc60268263ffffffff613e5016565b6040516001600160a01b038216907f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129990600090a250565b61380d8282613619565b61200582613819613121565b611660846040518060600160405280602481526020016145f5602491396001600160a01b038816600090815260016020526040812090611639613121565b601e54611c3f90601463ffffffff6135bf16565b600d546001600160a01b031615611a0657600d5460408051632d4f5b0960e21b81526004810184905290516001600160a01b039092169163b53d6c249160248082019260009290919082900301818387803b1580156138c957600080fd5b505af11580156138dd573d6000803e3d6000fd5b5050600060235550506040805182815290517fd3be3dbc076afa976ee7dfe1f596f6d7905e9441a1a426a244a12ef071272dd49181900360200190a150565b600c54600a546040805163095ea7b360e01b81526001600160a01b039283166004820152602481018590529051600093929092169163095ea7b39160448082019260209290919082900301818787803b15801561397857600080fd5b505af115801561398c573d6000803e3d6000fd5b505050506040513d60208110156139a257600080fd5b5050600a546025546040805163af2979eb60e01b815230600482015260248101869052600060448201819052606482018190526001600160a01b03610100909404841660848301524260a48301529151929093169263af2979eb9260c48083019360209383900390910190829087803b158015613a1e57600080fd5b505af1158015613a32573d6000803e3d6000fd5b505050506040513d6020811015613a4857600080fd5b505192915050565b60006001600160a01b038216613a975760405162461bcd60e51b81526004018080602001828103825260228152602001806145936022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b4690565b60006128ad83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613528565b6001600160a01b03808416600090815260066020526040808220548584168352912054613b2f92918216911683613b3f565b613b3a838383613ed1565b505050565b816001600160a01b0316836001600160a01b031614158015613b615750600081115b15613b3a576001600160a01b03831615613bf9576001600160a01b03831660009081526008602052604081205463ffffffff169081613ba1576000613bd3565b6001600160a01b038516600090815260076020908152604080832063ffffffff60001987011684529091529020600101545b90506000613be7828563ffffffff613abb16565b9050613bf58684848461402d565b5050505b6001600160a01b03821615613b3a576001600160a01b03821660009081526008602052604081205463ffffffff169081613c34576000613c66565b6001600160a01b038416600090815260076020908152604080832063ffffffff60001987011684529091529020600101545b90506000613c7a828563ffffffff6135bf16565b9050612ce38584848461402d565b6001600160a01b038216613ccd5760405162461bcd60e51b815260040180806020018281038252602181526020018061464a6021913960400191505060405180910390fd5b613d108160405180606001604052806022815260200161431b602291396001600160a01b038516600090815260208190526040902054919063ffffffff61352816565b6001600160a01b038316600090815260208190526040902055600254613d3c908263ffffffff613abb16565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b613d8e8282613a50565b613dc95760405162461bcd60e51b81526004018080602001828103825260218152602001806144a76021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b60008183613e3a5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561357c578181015183820152602001613564565b506000838581613e4657fe5b0495945050505050565b613e5a8282613a50565b15613eac576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6001600160a01b038316613f165760405162461bcd60e51b815260040180806020018281038252602581526020018061468f6025913960400191505060405180910390fd5b6001600160a01b038216613f5b5760405162461bcd60e51b81526004018080602001828103825260238152602001806142f86023913960400191505060405180910390fd5b613f9e8160405180606001604052806026815260200161440a602691396001600160a01b038616600090815260208190526040902054919063ffffffff61352816565b6001600160a01b038085166000908152602081905260408082209390935590841681522054613fd3908263ffffffff6135bf16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000614051436040518060600160405280603f81526020016144c8603f9139614192565b905060008463ffffffff1611801561409a57506001600160a01b038516600090815260076020908152604080832063ffffffff6000198901811685529252909120548282169116145b156140d7576001600160a01b038516600090815260076020908152604080832063ffffffff60001989011684529091529020600101829055614148565b60408051808201825263ffffffff808416825260208083018681526001600160a01b038a166000818152600784528681208b8616825284528681209551865490861663ffffffff19918216178755925160019687015590815260089092529390208054928801909116919092161790555b604080518481526020810184905281516001600160a01b038816927fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724928290030190a25050505050565b60008164010000000084106141e85760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561357c578181015183820152602001613564565b509192915050565b604080518082019091526000808252602082015290565b6001600160a01b038216614262576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254614275908263ffffffff6135bf16565b6002556001600160a01b0382166000908152602081905260409020546142a1908263ffffffff6135bf16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a3505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636543616e6e6f742073657420726562616c616e636552657761726444697669736f72206f766572203130254552433230476f7665726e616e63653a3a64656c656761746542795369673a20696e76616c6964207369676e617475726545524332303a20617070726f766520746f20746865207a65726f2061646472657373596f7520646f206e6f7420686176652074686520726571756972656420616d6f756e74206f66205452592e497420697320746f6f206561726c7920746f2075736520746869732066756e6374696f6e2e45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636543616e6e6f742073657420726562616c616e636544697669736f72206f7665722031302543616e6e6f742073657420726562616c616e636552657761726444697669736f7220756e6465722034255472616e736665727320617265206c6f636b656420756e74696c2061667465722070726573616c652e526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654552433230476f7665726e616e63653a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365526f6c65733a206163636f756e7420697320746865207a65726f206164647265737357686974656c69737441646d696e526f6c653a2063616c6c657220646f6573206e6f742068617665207468652057686974656c69737441646d696e20726f6c6545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e63654552433230476f7665726e616e63653a3a64656c656761746542795369673a207369676e6174757265206578706972656445524332303a206275726e2066726f6d20746865207a65726f206164647265737343616e6e6f742073657420726562616c616e636544697669736f7220756e64657220312545524332303a207472616e736665722066726f6d20746865207a65726f20616464726573734552433230476f7665726e616e63653a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e656445524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734552433230476f7665726e616e63653a3a64656c656761746542795369673a20696e76616c6964206e6f6e636543616e6e6f7420736574206f76657220312520526577617264506f6f6c44697669736f7244656c65676174696f6e28616464726573732064656c6567617465652c75696e74323536206e6f6e63652c75696e74323536206578706972792945524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a7231582060c8a5ac2984fb841a2e73eeac1a1330d67d5f7302870f6d658d4caef7ccadcf64736f6c634300051100326080604052600180546001600160a01b03191661dead17905534801561002457600080fd5b506040516109433803806109438339818101604052602081101561004757600080fd5b5051600080546001600160a01b03199081163317909155600280546001600160a01b03909316929091169190911790556108bd806100866000396000f3fe6080604052600436106100345760003560e01c806361d027b314610036578063d246d41114610067578063f49930181461007c575b005b34801561004257600080fd5b5061004b6100b8565b604080516001600160a01b039092168252519081900360200190f35b34801561007357600080fd5b5061004b6100c7565b34801561008857600080fd5b506100a66004803603602081101561009f57600080fd5b50356100d6565b60408051918252519081900360200190f35b6002546001600160a01b031681565b6001546001600160a01b031681565b600080546001600160a01b031633146101205760405162461bcd60e51b815260040180806020018281038252602d81526020018061085c602d913960400191505060405180910390fd5b61012a47836102f8565b60008054604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561017657600080fd5b505afa15801561018a573d6000803e3d6000fd5b505050506040513d60208110156101a057600080fd5b5051905060006101b6828563ffffffff6106d416565b600080546040805163a9059cbb60e01b81523260048201526024810185905290519394506001600160a01b039091169263a9059cbb92604480840193602093929083900390910190829087803b15801561020f57600080fd5b505af1158015610223573d6000803e3d6000fd5b505050506040513d602081101561023957600080fd5b50506000546001546001600160a01b039182169163a9059cbb9116610264858563ffffffff61071d16565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156102b357600080fd5b505af11580156102c7573d6000803e3d6000fd5b505050506040513d60208110156102dd57600080fd5b506102f09050828263ffffffff61071d16565b949350505050565b6040805160028082526060808301845292602083019080388339505060005460408051630b4a282f60e11b815290519394506001600160a01b0390911692631694505e92506004808301926020929190829003018186803b15801561035c57600080fd5b505afa158015610370573d6000803e3d6000fd5b505050506040513d602081101561038657600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039092169163ad5c464891600480820192602092909190829003018186803b1580156103ca57600080fd5b505afa1580156103de573d6000803e3d6000fd5b505050506040513d60208110156103f457600080fd5b50518151829060009061040357fe5b6001600160a01b03928316602091820292909201015260005482519116908290600190811061042e57fe5b6001600160a01b03909216602092830291909101909101526000610458848463ffffffff6106d416565b6002546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015610493573d6000803e3d6000fd5b5060005460408051630b4a282f60e11b815290516001600160a01b039092169163095ea7b3918391631694505e91600480820192602092909190829003018186803b1580156104e157600080fd5b505afa1580156104f5573d6000803e3d6000fd5b505050506040513d602081101561050b57600080fd5b5051604080516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482018890525160448083019260209291908290030181600087803b15801561055b57600080fd5b505af115801561056f573d6000803e3d6000fd5b505050506040513d602081101561058557600080fd5b505060005460408051630b4a282f60e11b815290516001600160a01b0390921691631694505e91600480820192602092909190829003018186803b1580156105cc57600080fd5b505afa1580156105e0573d6000803e3d6000fd5b505050506040513d60208110156105f657600080fd5b50516001600160a01b031663b6f9de95610616868463ffffffff61071d16565b60008530426040518663ffffffff1660e01b81526004018085815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561068e578181015183820152602001610676565b50505050905001955050505050506000604051808303818588803b1580156106b557600080fd5b505af11580156106c9573d6000803e3d6000fd5b505050505050505050565b600061071683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061075f565b9392505050565b600061071683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610801565b600081836107eb5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156107b0578181015183820152602001610798565b50505050905090810190601f1680156107dd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816107f757fe5b0495945050505050565b600081848411156108535760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156107b0578181015183820152602001610798565b50505090039056fe6f6e6c7920746f6b656e20636f6e74726163742063616e20706572666f726d20746869732066756e6374696f6ea265627a7a7231582054d725ed1626a8974fb9f11aad7cd6f4fced9bd65236e47193bd4a4ab7db8bf564736f6c634300051100324552433230476f7665726e616e63653a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373
Deployed Bytecode
0x6080604052600436106104ec5760003560e01c80637e0d943e1161028c578063c3cda5201161015a578063e7a324dc116100cc578063f3db188c11610085578063f3db188c1461126b578063f8ea475614611295578063f9c778e1146112aa578063f9f92be4146112dd578063fd7310c414611310578063fd77f8a114611325576104ec565b8063e7a324dc14611185578063e84354c51461119a578063eb37d349146111af578063ef0658f2146111e2578063f1127ed8146111f7578063f1e6e46814611256576104ec565b8063d246d4111161011e578063d246d411146110cc578063db14c5d5146110e1578063dd62ed3e1461110b578063e0a9e6b614611146578063e161eb561461115b578063e6a2538514611170576104ec565b8063c3cda52014611006578063ca5c7b911461105a578063ceea57e51461106f578063cf30901214611084578063d1846d0c14611099576104ec565b8063a457c2d7116101fe578063b4b5ea57116101b7578063b4b5ea5714610f11578063b67f8b6d14610f44578063b6833c5914610f59578063bb5f747b14610f83578063bc91720214610fb6578063bedd0d3314610fcb576104ec565b8063a457c2d714610e4b578063a889c82c14610e84578063a8a5550e14610e99578063a9059cbb14610eae578063acd7cff414610ee7578063b439824414610efc576104ec565b80638ba51d61116102505780638ba51d6114610d5e57806395d89b4114610d915780639a8fec8714610da65780639e14b8e014610dbb578063a0f364e414610de5578063a29a608914610e18576104ec565b80637e0d943e14610ca45780637ecebe0014610cce5780637ef7686e14610d0157806382bc6ced14610d16578063858750ab14610d49576104ec565b80633e0d04a4116103c957806366666aa91161033b5780637362d9c8116102f45780637362d9c814610b84578063782d6fe114610bb757806379cc679014610bf05780637b9003e314610c295780637c411c1a14610c5c5780637d57ab9614610c71576104ec565b806366666aa914610a475780636da1c23f14610a5c5780636fcfff4514610a7157806370709a7c14610abd57806370a0823114610af057806373352ad314610b23576104ec565b8063587cde1e1161038d578063587cde1e1461095257806359d0f713146109855780635b7dcaed1461099a5780635c19a95c146109c457806361d027b3146109f75780636536084314610a0c576104ec565b80633e0d04a4146108bf57806342966c68146108e957806349bd5a5e146109135780634c5a628c1461092857806355d0a1d01461093d576104ec565b806318160ddd116104625780632feec9d6116104265780632feec9d6146107bf578063313ce567146107e9578063352ffb9a1461081457806339509351146108295780633bd5b4ea146108625780633cd221a21461088c576104ec565b806318160ddd1461072857806318c51c351461073d57806320606b701461075257806323b872dd146107675780632898cafa146107aa576104ec565b806312283a39116104b457806312283a3914610634578063122fe685146106675780631419841d1461069857806316279055146106cb5780631694505e146106fe57806316d1d91614610713576104ec565b806306fdde03146104ee578063095ea7b3146105785780630bd05b69146105c5578063106b9ca1146105da5780631097d54a14610601575b005b3480156104fa57600080fd5b5061050361133a565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561053d578181015183820152602001610525565b50505050905090810190601f16801561056a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561058457600080fd5b506105b16004803603604081101561059b57600080fd5b506001600160a01b0381351690602001356113d0565b604080519115158252519081900360200190f35b3480156105d157600080fd5b506104ec6113ee565b3480156105e657600080fd5b506105ef611445565b60408051918252519081900360200190f35b34801561060d57600080fd5b506104ec6004803603602081101561062457600080fd5b50356001600160a01b031661144b565b34801561064057600080fd5b506104ec6004803603602081101561065757600080fd5b50356001600160a01b03166114b3565b34801561067357600080fd5b5061067c61151a565b604080516001600160a01b039092168252519081900360200190f35b3480156106a457600080fd5b506104ec600480360360208110156106bb57600080fd5b50356001600160a01b0316611529565b3480156106d757600080fd5b506105b1600480360360208110156106ee57600080fd5b50356001600160a01b0316611591565b34801561070a57600080fd5b5061067c61159d565b34801561071f57600080fd5b506105ef6115ac565b34801561073457600080fd5b506105ef6115b2565b34801561074957600080fd5b5061067c6115b8565b34801561075e57600080fd5b506105ef6115c7565b34801561077357600080fd5b506105b16004803603606081101561078a57600080fd5b506001600160a01b038135811691602081013590911690604001356115e2565b3480156107b657600080fd5b506105ef61166f565b3480156107cb57600080fd5b506104ec600480360360208110156107e257600080fd5b50356116ee565b3480156107f557600080fd5b506107fe611779565b6040805160ff9092168252519081900360200190f35b34801561082057600080fd5b5061067c611782565b34801561083557600080fd5b506105b16004803603604081101561084c57600080fd5b506001600160a01b038135169060200135611791565b34801561086e57600080fd5b506104ec6004803603602081101561088557600080fd5b50356117e5565b34801561089857600080fd5b506104ec600480360360208110156108af57600080fd5b50356001600160a01b031661188e565b3480156108cb57600080fd5b506104ec600480360360208110156108e257600080fd5b50356118f6565b3480156108f557600080fd5b506104ec6004803603602081101561090c57600080fd5b50356119f5565b34801561091f57600080fd5b5061067c611a09565b34801561093457600080fd5b506104ec611a18565b34801561094957600080fd5b506105ef611a2a565b34801561095e57600080fd5b5061067c6004803603602081101561097557600080fd5b50356001600160a01b0316611b1e565b34801561099157600080fd5b5061067c611b3c565b3480156109a657600080fd5b506104ec600480360360208110156109bd57600080fd5b5035611b4b565b3480156109d057600080fd5b506104ec600480360360208110156109e757600080fd5b50356001600160a01b0316611c44565b348015610a0357600080fd5b5061067c611c4e565b348015610a1857600080fd5b506104ec60048036036040811015610a2f57600080fd5b506001600160a01b0381351690602001351515611c5d565b348015610a5357600080fd5b506105ef611cce565b348015610a6857600080fd5b506104ec611cd4565b348015610a7d57600080fd5b50610aa460048036036020811015610a9457600080fd5b50356001600160a01b0316611cfb565b6040805163ffffffff9092168252519081900360200190f35b348015610ac957600080fd5b506104ec60048036036020811015610ae057600080fd5b50356001600160a01b0316611d13565b348015610afc57600080fd5b506105ef60048036036020811015610b1357600080fd5b50356001600160a01b0316611d7d565b348015610b2f57600080fd5b50610b6660048036036060811015610b4657600080fd5b506001600160a01b03813581169160208101359091169060400135611d98565b60408051938452602084019290925282820152519081900360600190f35b348015610b9057600080fd5b506104ec60048036036020811015610ba757600080fd5b50356001600160a01b0316611da4565b348015610bc357600080fd5b506105ef60048036036040811015610bda57600080fd5b506001600160a01b038135169060200135611df3565b348015610bfc57600080fd5b506104ec60048036036040811015610c1357600080fd5b506001600160a01b038135169060200135611ffb565b348015610c3557600080fd5b506104ec60048036036020811015610c4c57600080fd5b50356001600160a01b0316612009565b348015610c6857600080fd5b506104ec612071565b348015610c7d57600080fd5b506104ec60048036036020811015610c9457600080fd5b50356001600160a01b031661226e565b348015610cb057600080fd5b506104ec60048036036020811015610cc757600080fd5b50356122dd565b348015610cda57600080fd5b506105ef60048036036020811015610cf157600080fd5b50356001600160a01b03166123ae565b348015610d0d57600080fd5b5061067c6123c0565b348015610d2257600080fd5b506104ec60048036036020811015610d3957600080fd5b50356001600160a01b03166123cf565b348015610d5557600080fd5b506105ef612437565b348015610d6a57600080fd5b506104ec60048036036020811015610d8157600080fd5b50356001600160a01b0316612482565b348015610d9d57600080fd5b506105036124ea565b348015610db257600080fd5b506105ef61254b565b348015610dc757600080fd5b506104ec60048036036020811015610dde57600080fd5b5035612551565b348015610df157600080fd5b506105b160048036036020811015610e0857600080fd5b50356001600160a01b0316612648565b348015610e2457600080fd5b506104ec60048036036020811015610e3b57600080fd5b50356001600160a01b031661265d565b348015610e5757600080fd5b506105b160048036036040811015610e6e57600080fd5b506001600160a01b0381351690602001356126c5565b348015610e9057600080fd5b506104ec612733565b348015610ea557600080fd5b506105ef612805565b348015610eba57600080fd5b506105b160048036036040811015610ed157600080fd5b506001600160a01b038135169060200135612815565b348015610ef357600080fd5b506105ef612829565b348015610f0857600080fd5b506105ef61282f565b348015610f1d57600080fd5b506105ef60048036036020811015610f3457600080fd5b50356001600160a01b0316612850565b348015610f5057600080fd5b5061067c6128b4565b348015610f6557600080fd5b506104ec60048036036020811015610f7c57600080fd5b50356128c3565b348015610f8f57600080fd5b506105b160048036036020811015610fa657600080fd5b50356001600160a01b03166129ca565b348015610fc257600080fd5b506104ec6129dd565b348015610fd757600080fd5b506104ec60048036036040811015610fee57600080fd5b506001600160a01b0381351690602001351515612a04565b34801561101257600080fd5b506104ec600480360360c081101561102957600080fd5b506001600160a01b038135169060208101359060408101359060ff6060820135169060808101359060a00135612a75565b34801561106657600080fd5b506105ef612ceb565b34801561107b57600080fd5b506104ec612d74565b34801561109057600080fd5b506105b1612e1c565b3480156110a557600080fd5b506105b1600480360360208110156110bc57600080fd5b50356001600160a01b0316612e25565b3480156110d857600080fd5b5061067c612e3a565b3480156110ed57600080fd5b506104ec6004803603602081101561110457600080fd5b5035612e49565b34801561111757600080fd5b506105ef6004803603604081101561112e57600080fd5b506001600160a01b0381358116916020013516612eea565b34801561115257600080fd5b506105ef612f15565b34801561116757600080fd5b506105ef612f1b565b34801561117c57600080fd5b506105b1612f21565b34801561119157600080fd5b506105ef612f31565b3480156111a657600080fd5b506105ef612f4c565b3480156111bb57600080fd5b506105b1600480360360208110156111d257600080fd5b50356001600160a01b0316612f52565b3480156111ee57600080fd5b506105ef612f67565b34801561120357600080fd5b506112366004803603604081101561121a57600080fd5b5080356001600160a01b0316906020013563ffffffff16612f6d565b6040805163ffffffff909316835260208301919091528051918290030190f35b34801561126257600080fd5b506104ec612f9a565b34801561127757600080fd5b506104ec6004803603602081101561128e57600080fd5b5035612fc1565b3480156112a157600080fd5b506105ef613092565b3480156112b657600080fd5b506104ec600480360360208110156112cd57600080fd5b50356001600160a01b0316613098565b3480156112e957600080fd5b506105b16004803603602081101561130057600080fd5b50356001600160a01b0316613100565b34801561131c57600080fd5b506105ef613115565b34801561133157600080fd5b506105ef61311b565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156113c65780601f1061139b576101008083540402835291602001916113c6565b820191906000526020600020905b8154815290600101906020018083116113a957829003601f168201915b5050505050905090565b60006113e46113dd613121565b8484613125565b5060015b92915050565b6113fe6113f9613121565b6129ca565b6114395760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b6025805460ff19169055565b601d5481565b6114566113f9613121565b6114915760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6114be6113f9613121565b6114f95760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b6001600160a01b03166000908152601360205260409020805460ff19169055565b600e546001600160a01b031681565b6115346113f9613121565b61156f5760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b3b63ffffffff16151590565b600a546001600160a01b031681565b601e5481565b60025490565b600d546001600160a01b031681565b60405180604361450782396043019050604051809103902081565b60006115ef848484613211565b611665846115fb613121565b6116608560405180606001604052806028815260200161456b602891396001600160a01b038a16600090815260016020526040812090611639613121565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61352816565b613125565b5060019392505050565b600c54604080516370a0823160e01b8152600060048201819052915191926001600160a01b0316916370a0823191602480820192602092909190829003018186803b1580156116bd57600080fd5b505afa1580156116d1573d6000803e3d6000fd5b505050506040513d60208110156116e757600080fd5b5051905090565b6116f96113f9613121565b6117345760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b60648110156117745760405162461bcd60e51b81526004018080602001828103825260248152602001806147376024913960400191505060405180910390fd5b601755565b60055460ff1690565b6011546001600160a01b031681565b60006113e461179e613121565b8461166085600160006117af613121565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6135bf16565b6117f06113f9613121565b61182b5760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b68056bc75e2d63100000811115611889576040805162461bcd60e51b815260206004820181905260248201527f43616e6e6f7420736574206f76657220313030207472616e73616374696f6e73604482015290519081900360640190fd5b602255565b6118996113f9613121565b6118d45760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6119016113f9613121565b61193c5760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b600a544790611954906001600160a01b0316836113d0565b50600a546040805163f305d71960e01b8152306004820181905260248201869052600060448301819052606483015260848201524260a482015290516001600160a01b039092169163f305d71991849160c480830192606092919082900301818588803b1580156119c457600080fd5b505af11580156119d8573d6000803e3d6000fd5b50505050506040513d60608110156119ef57600080fd5b50505050565b611a06611a00613121565b82613619565b50565b600c546001600160a01b031681565b611a28611a23613121565b613649565b565b600080600c60009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a7b57600080fd5b505afa158015611a8f573d6000803e3d6000fd5b505050506040513d6020811015611aa557600080fd5b505190506000611ab361166f565b90506000611adc83611ad08464e8d4a5100063ffffffff61369116565b9063ffffffff6136ea16565b600c54909150600090611af7906001600160a01b0316611d7d565b90506000611b1464e8d4a51000611ad0848663ffffffff61369116565b9550505050505090565b6001600160a01b039081166000908152600660205260409020541690565b600b546001600160a01b031681565b611b566113f9613121565b611b915760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b611c20811115611be8576040805162461bcd60e51b815260206004820152601f60248201527f43616e6e6f7420736574206f766572203220686f757220696e74657276616c00604482015290519081900360640190fd5b610e10811015611c3f576040805162461bcd60e51b815260206004820181905260248201527f43616e6e6f742073657420756e646572203120686f757220696e74657276616c604482015290519081900360640190fd5b601e55565b611a06338261372c565b6012546001600160a01b031681565b611c686113f9613121565b611ca35760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b60245481565b611a28611cdf613121565b600f546001600160a01b031669021e19e0c9bab2400000613125565b60086020526000908152604090205463ffffffff1681565b611d1e6113f9613121565b611d595760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b6001600160a01b03166000908152601360205260409020805460ff19166001179055565b6001600160a01b031660009081526020819052604090205490565b50600092839250829150565b611daf6113f9613121565b611dea5760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b611a06816137bb565b6000438210611e335760405162461bcd60e51b81526004018080602001828103825260328152602001806146b46032913960400191505060405180910390fd5b6001600160a01b03831660009081526008602052604090205463ffffffff1680611e615760009150506113e8565b6001600160a01b038416600090815260076020908152604080832063ffffffff600019860181168552925290912054168310611ed0576001600160a01b03841660009081526007602090815260408083206000199490940163ffffffff168352929052206001015490506113e8565b6001600160a01b038416600090815260076020908152604080832083805290915290205463ffffffff16831015611f0b5760009150506113e8565b600060001982015b8163ffffffff168163ffffffff161115611fc457600282820363ffffffff16048103611f3d6141f0565b506001600160a01b038716600090815260076020908152604080832063ffffffff808616855290835292819020815180830190925280549093168082526001909301549181019190915290871415611f9f576020015194506113e89350505050565b805163ffffffff16871115611fb657819350611fbd565b6001820392505b5050611f13565b506001600160a01b038516600090815260076020908152604080832063ffffffff9094168352929052206001015491505092915050565b6120058282613803565b5050565b6120146113f9613121565b61204f5760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b601c5461207d33611d7d565b10156120ba5760405162461bcd60e51b815260040180806020018281038252602b8152602001806143ba602b913960400191505060405180910390fd5b601e54601d540142116120fe5760405162461bcd60e51b81526004018080602001828103825260258152602001806143e56025913960400191505060405180910390fd5b42601d5560235461210d613857565b6121168161386b565b601954600c54604080516370a0823160e01b815230600482015290516000936121a59390926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b15801561216d57600080fd5b505afa158015612181573d6000803e3d6000fd5b505050506040513d602081101561219757600080fd5b50519063ffffffff6136ea16565b90506121b08161391c565b5060255460185460408051631e93260360e31b815260048101929092525160009261010090046001600160a01b03169163f499301891602480830192602092919082900301818787803b15801561220657600080fd5b505af115801561221a573d6000803e3d6000fd5b505050506040513d602081101561223057600080fd5b50516040805182815290519192507f811d4760f1a92875eb76dbd3dc2359544b2f6a000ba5b78784c0b105b3469bd0919081900360200190a1505050565b6122796113f9613121565b6122b45760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b6001600160a01b03166000908152601460205260409020805460ff19811660ff90911615179055565b6122e86113f9613121565b6123235760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b80156123a957600a8110156123695760405162461bcd60e51b81526004018080602001828103825260248152602001806144306024913960400191505060405180910390fd5b60648111156123a95760405162461bcd60e51b815260040180806020018281038252602481526020018061466b6024913960400191505060405180910390fd5b601955565b60096020526000908152604090205481565b600f546001600160a01b031681565b6123da6113f9613121565b6124155760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b600c54604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156116bd57600080fd5b61248d6113f9613121565b6124c85760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156113c65780601f1061139b576101008083540402835291602001916113c6565b60185481565b61255c6113f9613121565b6125975760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b600a8110156125ed576040805162461bcd60e51b815260206004820152601f60248201527f43616e6e6f7420736574206f7665722031302520616e746944756d7046656500604482015290519081900360640190fd5b6064811115612643576040805162461bcd60e51b815260206004820152601f60248201527f43616e6e6f742073657420756e64657220312520616e746944756d7046656500604482015290519081900360640190fd5b601b55565b60136020526000908152604090205460ff1681565b6126686113f9613121565b6126a35760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b60006113e46126d2613121565b846116608560405180606001604052806025815260200161479560259139600160006126fc613121565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61352816565b61273e6113f9613121565b6127795760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b601154600d546040805163095ea7b360e01b81526001600160a01b03928316600482015269152d02c7e14af680000060248201529051919092169163095ea7b39160448083019260209291908290030181600087803b1580156127db57600080fd5b505af11580156127ef573d6000803e3d6000fd5b505050506040513d602081101561200557600080fd5b600061281030611d7d565b905090565b60006113e4612822613121565b8484613211565b601b5481565b600061281061283c61166f565b612844612437565b9063ffffffff6135bf16565b6001600160a01b03811660009081526008602052604081205463ffffffff168061287b5760006128ad565b6001600160a01b038316600090815260076020908152604080832063ffffffff60001986011684529091529020600101545b9392505050565b6010546001600160a01b031681565b6128ce6113f9613121565b6129095760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b683635c9adc5dea00000811115612967576040805162461bcd60e51b815260206004820152601f60248201527f43616e6e6f7420736574206f76657220313030302054525920746f6b656e7300604482015290519081900360640190fd5b6801158e460913d000008110156129c5576040805162461bcd60e51b815260206004820152601e60248201527f43616e6e6f742073657420756e6465722032302054525920746f6b656e730000604482015290519081900360640190fd5b601c55565b60006113e860268363ffffffff613a5016565b611a286129e8613121565b6010546001600160a01b031669021e19e0c9bab2400000613125565b612a0f6113f9613121565b612a4a5760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b600060405180806145076043913960430190506040518091039020612a9861133a565b80519060200120612aa7613ab7565b3060405160200180858152602001848152602001838152602001826001600160a01b03166001600160a01b031681526020019450505050506040516020818303038152906040528051906020012090506000604051808061475b603a91396040805191829003603a0182206020808401919091526001600160a01b038c1683830152606083018b905260808084018b90528251808503909101815260a08401835280519082012061190160f01b60c085015260c2840187905260e2808501829052835180860390910181526101028501808552815191840191909120600091829052610122860180865281905260ff8c1661014287015261016286018b905261018286018a9052935191965092945091926001926101a28083019392601f198301929081900390910190855afa158015612be5573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612c375760405162461bcd60e51b81526004018080602001828103825260318152602001806143676031913960400191505060405180910390fd5b6001600160a01b03811660009081526009602052604090208054600181019091558914612c955760405162461bcd60e51b815260040180806020018281038252602d81526020018061470a602d913960400191505060405180910390fd5b87421115612cd45760405162461bcd60e51b81526004018080602001828103825260318152602001806146196031913960400191505060405180910390fd5b612cde818b61372c565b505050505b505050505050565b600080600c60009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015612d3c57600080fd5b505afa158015612d50573d6000803e3d6000fd5b505050506040513d6020811015612d6657600080fd5b505190506000611ab361282f565b612d7f6113f9613121565b612dba5760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b6011546010546040805163095ea7b360e01b81526001600160a01b03928316600482015269152d02c7e14af680000060248201529051919092169163095ea7b39160448083019260209291908290030181600087803b1580156127db57600080fd5b60255460ff1681565b60146020526000908152604090205460ff1681565b601f546001600160a01b031681565b612e546113f9613121565b612e8f5760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b6064811015612ee5576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f7420736574206f766572203125206275726e547846656500000000604482015290519081900360640190fd5b601a55565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60205481565b60195481565b601f54600160a01b900460ff1681565b60405180603a61475b8239603a019050604051809103902081565b601c5481565b60156020526000908152604090205460ff1681565b60175481565b60076020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b611a28612fa5613121565b600d546001600160a01b031669021e19e0c9bab2400000613125565b612fcc6113f9613121565b6130075760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b801561308d57601981111561304d5760405162461bcd60e51b815260040180806020018281038252602a815260200180614454602a913960400191505060405180910390fd5b600a81101561308d5760405162461bcd60e51b815260040180806020018281038252602a81526020018061433d602a913960400191505060405180910390fd5b601855565b60235481565b6130a36113f9613121565b6130de5760405162461bcd60e51b81526004018080602001828103825260408152602001806145b56040913960400191505060405180910390fd5b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b60166020526000908152604090205460ff1681565b601a5481565b60225481565b3390565b6001600160a01b03831661316a5760405162461bcd60e51b81526004018080602001828103825260248152602001806146e66024913960400191505060405180910390fd5b6001600160a01b0382166131af5760405162461bcd60e51b81526004018080602001828103825260228152602001806143986022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b60255460ff16801561324157506001600160a01b03831660009081526014602052604090205460ff161515600114155b801561326b57506001600160a01b03821660009081526014602052604090205460ff161515600114155b156132a75760405162461bcd60e51b815260040180806020018281038252602981526020018061447e6029913960400191505060405180910390fd5b6001600160a01b03831660009081526016602052604090205460ff161515600114806132f057506001600160a01b03821660009081526016602052604090205460ff1615156001145b1561333b576040805162461bcd60e51b81526020600482015260166024820152751059191c995cdcc81a5cc8189b1858dadb1a5cdd195960521b604482015290519081900360640190fd5b6001600160a01b038316600090815260136020526040812054819060ff1615801561337f57506001600160a01b03841660009081526013602052604090205460ff16155b1561351657601a54156133cd57601a546133a090849063ffffffff6136ea16565b91506133b2838363ffffffff613abb16565b601f549093506133cd9086906001600160a01b031684613afd565b60175415613498576021546020546133ea9163ffffffff6135bf16565b60205560175461340190849063ffffffff6136ea16565b9050613413838263ffffffff613abb16565b9250613420853083613afd565b602480548201905560225460205414156134985761343d85611591565b15613480576040805162461bcd60e51b815260206004820152600e60248201526d34b72b30b634b21031b0b63632b960911b604482015290519081900360640190fd5b61348d3086602454613afd565b600060248190556020555b601b54158015906134c157506001600160a01b03841660009081526015602052604090205460ff165b156135065760006134dd601b54856136ea90919063ffffffff16565b602380548201905590506134f7848263ffffffff613abb16565b9350613504863083613afd565b505b613511858585613afd565b613521565b613521858585613afd565b5050505050565b600081848411156135b75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561357c578181015183820152602001613564565b50505050905090810190601f1680156135a95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156128ad576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b0380831660009081526006602052604081205461363f92169083613b3f565b6120058282613c88565b61365a60268263ffffffff613d8416565b6040516001600160a01b038216907f0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e16590600090a250565b6000826136a0575060006113e8565b828202828482816136ad57fe5b04146128ad5760405162461bcd60e51b815260040180806020018281038252602181526020018061454a6021913960400191505060405180910390fd5b60006128ad83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613deb565b6001600160a01b038083166000908152600660205260408120549091169061375384611d7d565b6001600160a01b0385811660008181526006602052604080822080546001600160a01b031916898616908117909155905194955093928616927f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46119ef828483613b3f565b6137cc60268263ffffffff613e5016565b6040516001600160a01b038216907f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129990600090a250565b61380d8282613619565b61200582613819613121565b611660846040518060600160405280602481526020016145f5602491396001600160a01b038816600090815260016020526040812090611639613121565b601e54611c3f90601463ffffffff6135bf16565b600d546001600160a01b031615611a0657600d5460408051632d4f5b0960e21b81526004810184905290516001600160a01b039092169163b53d6c249160248082019260009290919082900301818387803b1580156138c957600080fd5b505af11580156138dd573d6000803e3d6000fd5b5050600060235550506040805182815290517fd3be3dbc076afa976ee7dfe1f596f6d7905e9441a1a426a244a12ef071272dd49181900360200190a150565b600c54600a546040805163095ea7b360e01b81526001600160a01b039283166004820152602481018590529051600093929092169163095ea7b39160448082019260209290919082900301818787803b15801561397857600080fd5b505af115801561398c573d6000803e3d6000fd5b505050506040513d60208110156139a257600080fd5b5050600a546025546040805163af2979eb60e01b815230600482015260248101869052600060448201819052606482018190526001600160a01b03610100909404841660848301524260a48301529151929093169263af2979eb9260c48083019360209383900390910190829087803b158015613a1e57600080fd5b505af1158015613a32573d6000803e3d6000fd5b505050506040513d6020811015613a4857600080fd5b505192915050565b60006001600160a01b038216613a975760405162461bcd60e51b81526004018080602001828103825260228152602001806145936022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b4690565b60006128ad83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613528565b6001600160a01b03808416600090815260066020526040808220548584168352912054613b2f92918216911683613b3f565b613b3a838383613ed1565b505050565b816001600160a01b0316836001600160a01b031614158015613b615750600081115b15613b3a576001600160a01b03831615613bf9576001600160a01b03831660009081526008602052604081205463ffffffff169081613ba1576000613bd3565b6001600160a01b038516600090815260076020908152604080832063ffffffff60001987011684529091529020600101545b90506000613be7828563ffffffff613abb16565b9050613bf58684848461402d565b5050505b6001600160a01b03821615613b3a576001600160a01b03821660009081526008602052604081205463ffffffff169081613c34576000613c66565b6001600160a01b038416600090815260076020908152604080832063ffffffff60001987011684529091529020600101545b90506000613c7a828563ffffffff6135bf16565b9050612ce38584848461402d565b6001600160a01b038216613ccd5760405162461bcd60e51b815260040180806020018281038252602181526020018061464a6021913960400191505060405180910390fd5b613d108160405180606001604052806022815260200161431b602291396001600160a01b038516600090815260208190526040902054919063ffffffff61352816565b6001600160a01b038316600090815260208190526040902055600254613d3c908263ffffffff613abb16565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b613d8e8282613a50565b613dc95760405162461bcd60e51b81526004018080602001828103825260218152602001806144a76021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b60008183613e3a5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561357c578181015183820152602001613564565b506000838581613e4657fe5b0495945050505050565b613e5a8282613a50565b15613eac576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6001600160a01b038316613f165760405162461bcd60e51b815260040180806020018281038252602581526020018061468f6025913960400191505060405180910390fd5b6001600160a01b038216613f5b5760405162461bcd60e51b81526004018080602001828103825260238152602001806142f86023913960400191505060405180910390fd5b613f9e8160405180606001604052806026815260200161440a602691396001600160a01b038616600090815260208190526040902054919063ffffffff61352816565b6001600160a01b038085166000908152602081905260408082209390935590841681522054613fd3908263ffffffff6135bf16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000614051436040518060600160405280603f81526020016144c8603f9139614192565b905060008463ffffffff1611801561409a57506001600160a01b038516600090815260076020908152604080832063ffffffff6000198901811685529252909120548282169116145b156140d7576001600160a01b038516600090815260076020908152604080832063ffffffff60001989011684529091529020600101829055614148565b60408051808201825263ffffffff808416825260208083018681526001600160a01b038a166000818152600784528681208b8616825284528681209551865490861663ffffffff19918216178755925160019687015590815260089092529390208054928801909116919092161790555b604080518481526020810184905281516001600160a01b038816927fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724928290030190a25050505050565b60008164010000000084106141e85760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561357c578181015183820152602001613564565b509192915050565b604080518082019091526000808252602082015290565b6001600160a01b038216614262576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254614275908263ffffffff6135bf16565b6002556001600160a01b0382166000908152602081905260409020546142a1908263ffffffff6135bf16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a3505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636543616e6e6f742073657420726562616c616e636552657761726444697669736f72206f766572203130254552433230476f7665726e616e63653a3a64656c656761746542795369673a20696e76616c6964207369676e617475726545524332303a20617070726f766520746f20746865207a65726f2061646472657373596f7520646f206e6f7420686176652074686520726571756972656420616d6f756e74206f66205452592e497420697320746f6f206561726c7920746f2075736520746869732066756e6374696f6e2e45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636543616e6e6f742073657420726562616c616e636544697669736f72206f7665722031302543616e6e6f742073657420726562616c616e636552657761726444697669736f7220756e6465722034255472616e736665727320617265206c6f636b656420756e74696c2061667465722070726573616c652e526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654552433230476f7665726e616e63653a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365526f6c65733a206163636f756e7420697320746865207a65726f206164647265737357686974656c69737441646d696e526f6c653a2063616c6c657220646f6573206e6f742068617665207468652057686974656c69737441646d696e20726f6c6545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e63654552433230476f7665726e616e63653a3a64656c656761746542795369673a207369676e6174757265206578706972656445524332303a206275726e2066726f6d20746865207a65726f206164647265737343616e6e6f742073657420726562616c616e636544697669736f7220756e64657220312545524332303a207472616e736665722066726f6d20746865207a65726f20616464726573734552433230476f7665726e616e63653a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e656445524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734552433230476f7665726e616e63653a3a64656c656761746542795369673a20696e76616c6964206e6f6e636543616e6e6f7420736574206f76657220312520526577617264506f6f6c44697669736f7244656c65676174696f6e28616464726573732064656c6567617465652c75696e74323536206e6f6e63652c75696e74323536206578706972792945524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a7231582060c8a5ac2984fb841a2e73eeac1a1330d67d5f7302870f6d658d4caef7ccadcf64736f6c63430005110032
Deployed Bytecode Sourcemap
30178:5300:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11926:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11926:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;11926:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7994:152;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7994:152:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7994:152:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;34674:86;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34674:86:0;;;:::i;13313:28::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13313:28:0;;;:::i;:::-;;;;;;;;;;;;;;;;32711:99;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32711:99:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;32711:99:0;-1:-1:-1;;;;;32711:99:0;;:::i;34159:106::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34159:106:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;34159:106:0;-1:-1:-1;;;;;34159:106:0;;:::i;12668:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12668:29:0;;;:::i;:::-;;;;-1:-1:-1;;;;;12668:29:0;;;;;;;;;;;;;;31145:133;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31145:133:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;31145:133:0;-1:-1:-1;;;;;31145:133:0;;:::i;14973:198::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14973:198:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14973:198:0;-1:-1:-1;;;;;14973:198:0;;:::i;12437:75::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12437:75:0;;;:::i;13348:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13348:32:0;;;:::i;7469:91::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7469:91:0;;;:::i;12638:23::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12638:23:0;;;:::i;22705:122::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22705:122:0;;;:::i;8158:304::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8158:304:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8158:304:0;;;;;;;;;;;;;;;;;:::i;19614:125::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19614:125:0;;;:::i;31768:195::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31768:195:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;31768:195:0;;:::i;12112:83::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12112:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12794:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12794:39:0;;;:::i;8470:210::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8470:210:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8470:210:0;;;;;;;;:::i;31571:189::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31571:189:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;31571:189:0;;:::i;32465:131::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32465:131:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;32465:131:0;-1:-1:-1;;;;;32465:131:0;;:::i;30388:419::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30388:419:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30388:419:0;;:::i;10743:83::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10743:83:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10743:83:0;;:::i;12602:28::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12602:28:0;;;:::i;4422:95::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4422:95:0;;;:::i;19025:443::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19025:443:0;;;:::i;23225:149::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23225:149:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23225:149:0;-1:-1:-1;;;;;23225:149:0;;:::i;12519:76::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12519:76:0;;;:::i;33392:268::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33392:268:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33392:268:0;;:::i;23382:104::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23382:104:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23382:104:0;-1:-1:-1;;;;;23382:104:0;;:::i;12840:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12840:31:0;;;:::i;34408:115::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34408:115:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;34408:115:0;;;;;;;;;;:::i;13661:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13661:29:0;;;:::i;31038:94::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31038:94:0;;;:::i;22647:49::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22647:49:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22647:49:0;-1:-1:-1;;;;;22647:49:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;34039:108;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34039:108:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;34039:108:0;-1:-1:-1;;;;;34039:108:0;;:::i;7568:110::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7568:110:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7568:110:0;-1:-1:-1;;;;;7568:110:0;;:::i;14816:145::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14816:145:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14816:145:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;4298:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4298:116:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4298:116:0;-1:-1:-1;;;;;4298:116:0;;:::i;24976:1149::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24976:1149:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;24976:1149:0;;;;;;;;:::i;10834:103::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10834:103:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10834:103:0;;;;;;;;:::i;32358:99::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32358:99:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;32358:99:0;-1:-1:-1;;;;;32358:99:0;;:::i;16897:708::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16897:708:0;;;:::i;34277:118::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34277:118:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;34277:118:0;-1:-1:-1;;;;;34277:118:0;;:::i;31976:370::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31976:370:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;31976:370:0;;:::i;22962:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22962:39:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22962:39:0;-1:-1:-1;;;;;22962:39:0;;:::i;12704:21::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12704:21:0;;;:::i;32823:101::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32823:101:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;32823:101:0;-1:-1:-1;;;;;32823:101:0;;:::i;19476:130::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19476:130:0;;;:::i;31425:138::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31425:138:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;31425:138:0;-1:-1:-1;;;;;31425:138:0;;:::i;12017:87::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12017:87:0;;;:::i;13115:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13115:37:0;;;:::i;35230:245::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35230:245:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;35230:245:0;;:::i;12878:43::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12878:43:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12878:43:0;-1:-1:-1;;;;;12878:43:0;;:::i;31286:127::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31286:127:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;31286:127:0;-1:-1:-1;;;;;31286:127:0;;:::i;8688:261::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8688:261:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8688:261:0;;;;;;;;:::i;33067:119::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33067:119:0;;;:::i;18458:108::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18458:108:0;;;:::i;7686:158::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7686:158:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7686:158:0;;;;;;;;:::i;13233:26::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13233:26:0;;;:::i;19747:125::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19747:125:0;;;:::i;24713:255::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24713:255:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24713:255:0;-1:-1:-1;;;;;24713:255:0;;:::i;12733:49::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12733:49:0;;;:::i;34772:264::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34772:264:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;34772:264:0;;:::i;4167:125::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4167:125:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4167:125:0;-1:-1:-1;;;;;4167:125:0;;:::i;30932:96::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30932:96:0;;;:::i;34534:127::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34534:127:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;34534:127:0;;;;;;;;;;:::i;23494:1211::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23494:1211:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;23494:1211:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18574:443::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18574:443:0;;;:::i;32937:116::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32937:116:0;;;:::i;13703:18::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13703:18:0;;;:::i;12928:40::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12928:40:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12928:40:0;-1:-1:-1;;;;;12928:40:0;;:::i;13387:68::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13387:68:0;;;:::i;35048:170::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35048:170:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;35048:170:0;;:::i;7852:134::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7852:134:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7852:134:0;;;;;;;;;;:::i;13496:23::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13496:23:0;;;:::i;13159:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13159:31:0;;;:::i;13462:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13462:20:0;;;:::i;22836:117::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22836:117:0;;;:::i;13273:33::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13273:33:0;;;:::i;12975:38::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12975:38:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12975:38:0;-1:-1:-1;;;;;12975:38:0;;:::i;13076:32::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13076:32:0;;;:::i;22568:70::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22568:70:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22568:70:0;;-1:-1:-1;;;;;22568:70:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;30819:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30819:100:0;;;:::i;33673:354::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33673:354:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33673:354:0;;:::i;13626:28::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13626:28:0;;;:::i;32608:95::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32608:95:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;32608:95:0;-1:-1:-1;;;;;32608:95:0;;:::i;13021:41::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13021:41:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13021:41:0;-1:-1:-1;;;;;13021:41:0;;:::i;13198:24::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13198:24:0;;;:::i;13566:46::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13566:46:0;;;:::i;11926:83::-;11996:5;11989:12;;;;;;;;-1:-1:-1;;11989:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11963:13;;11989:12;;11996:5;;11989:12;;11996:5;11989:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11926:83;:::o;7994:152::-;8060:4;8077:39;8086:12;:10;:12::i;:::-;8100:7;8109:6;8077:8;:39::i;:::-;-1:-1:-1;8134:4:0;7994:152;;;;;:::o;34674:86::-;4040:30;4057:12;:10;:12::i;:::-;4040:16;:30::i;:::-;4032:107;;;;-1:-1:-1;;;4032:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34738:6;:14;;-1:-1:-1;;34738:14:0;;;34674:86::o;13313:28::-;;;;:::o;32711:99::-;4040:30;4057:12;:10;:12::i;4040:30::-;4032:107;;;;-1:-1:-1;;;4032:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32784:6;:16;;-1:-1:-1;;;;;;32784:16:0;-1:-1:-1;;;;;32784:16:0;;;;;;;;;;32711:99::o;34159:106::-;4040:30;4057:12;:10;:12::i;4040:30::-;4032:107;;;;-1:-1:-1;;;4032:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;34231:18:0;34252:5;34231:18;;;:11;:18;;;;;:26;;-1:-1:-1;;34231:26:0;;;34159:106::o;12668:29::-;;;-1:-1:-1;;;;;12668:29:0;;:::o;31145:133::-;4040:30;4057:12;:10;:12::i;4040:30::-;4032:107;;;;-1:-1:-1;;;4032:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31236:15;:34;;-1:-1:-1;;;;;;31236:34:0;-1:-1:-1;;;;;31236:34:0;;;;;;;;;;31145:133::o;14973:198::-;15107:18;15154:8;;;;;14973:198::o;12437:75::-;;;-1:-1:-1;;;;;12437:75:0;;:::o;13348:32::-;;;;:::o;7469:91::-;7540:12;;7469:91;:::o;12638:23::-;;;-1:-1:-1;;;;;12638:23:0;;:::o;22705:122::-;22747:80;;;;;;;;;;;;;;;;;;22705:122;:::o;8158:304::-;8247:4;8264:36;8274:6;8282:9;8293:6;8264:9;:36::i;:::-;8311:121;8320:6;8328:12;:10;:12::i;:::-;8342:89;8380:6;8342:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8342:19:0;;;;;;:11;:19;;;;;;8362:12;:10;:12::i;:::-;-1:-1:-1;;;;;8342:33:0;;;;;;;;;;;;-1:-1:-1;8342:33:0;;;:89;;:37;:89;:::i;:::-;8311:8;:121::i;:::-;-1:-1:-1;8450:4:0;8158:304;;;;;:::o;19614:125::-;19695:13;;19689:42;;;-1:-1:-1;;;19689:42:0;;19662:7;19689:42;;;;;;;;19662:7;;-1:-1:-1;;;;;19695:13:0;;19689:30;;:42;;;;;;;;;;;;;;;19695:13;19689:42;;;5:2:-1;;;;30:1;27;20:12;5:2;19689:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19689:42:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19689:42:0;;-1:-1:-1;19614:125:0;:::o;31768:195::-;4040:30;4057:12;:10;:12::i;4040:30::-;4032:107;;;;-1:-1:-1;;;4032:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31867:3;31858:5;:12;;31850:61;;;;-1:-1:-1;;;31850:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31930:17;:25;31768:195::o;12112:83::-;12178:9;;;;12112:83;:::o;12794:39::-;;;-1:-1:-1;;;;;12794:39:0;;:::o;8470:210::-;8550:4;8567:83;8576:12;:10;:12::i;:::-;8590:7;8599:50;8638:10;8599:11;:25;8611:12;:10;:12::i;:::-;-1:-1:-1;;;;;8599:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;8599:25:0;;;:34;;;;;;;;;;;:50;:38;:50;:::i;31571:189::-;4040:30;4057:12;:10;:12::i;4040:30::-;4032:107;;;;-1:-1:-1;;;4032:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31669:6;31656:9;:19;;31648:64;;;;;-1:-1:-1;;;31648:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31731:8;:20;31571:189::o;32465:131::-;4040:30;4057:12;:10;:12::i;4040:30::-;4032:107;;;;-1:-1:-1;;;4032:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32554:14;:32;;-1:-1:-1;;;;;;32554:32:0;-1:-1:-1;;;;;32554:32:0;;;;;;;;;;32465:131::o;30388:419::-;4040:30;4057:12;:10;:12::i;4040:30::-;4032:107;;;;-1:-1:-1;;;4032:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30542:15;;30494:21;;30526:53;;-1:-1:-1;;;;;30542:15:0;30560:18;30526:7;:53::i;:::-;-1:-1:-1;30609:15:0;;30590:208;;;-1:-1:-1;;;30590:208:0;;30681:4;30590:208;;;;;;;;;;;;30609:15;30590:208;;;;;;;;;;;;;;30794:3;30590:208;;;;;;-1:-1:-1;;;;;30609:15:0;;;;30590:51;;30648:9;;30590:208;;;;;;;;;;;;;;30648:9;30609:15;30590:208;;;5:2:-1;;;;30:1;27;20:12;5:2;30590:208:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30590:208:0;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;30388:419:0:o;10743:83::-;10791:27;10797:12;:10;:12::i;:::-;10811:6;10791:5;:27::i;:::-;10743:83;:::o;12602:28::-;;;-1:-1:-1;;;;;12602:28:0;;:::o;4422:95::-;4474:35;4496:12;:10;:12::i;:::-;4474:21;:35::i;:::-;4422:95::o;19025:443::-;19072:7;19092:21;19122:13;;;;;;;;;-1:-1:-1;;;;;19122:13:0;-1:-1:-1;;;;;19116:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19116:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19116:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19116:34:0;;-1:-1:-1;19161:17:0;19181;:15;:17::i;:::-;19161:37;-1:-1:-1;19209:30:0;19242:38;19266:13;19242:19;19161:37;19256:4;19242:19;:13;:19;:::i;:::-;:23;:38;:23;:38;:::i;:::-;19328:13;;19209:71;;-1:-1:-1;19293:22:0;;19318:24;;-1:-1:-1;;;;;19328:13:0;19318:9;:24::i;:::-;19293:49;-1:-1:-1;19353:21:0;19377:52;19424:4;19377:42;19293:49;19396:22;19377:42;:18;:42;:::i;:52::-;19353:76;-1:-1:-1;;;;;;19025:443:0;:::o;23225:149::-;-1:-1:-1;;;;;23345:21:0;;;23313:7;23345:21;;;:10;:21;;;;;;;;23225:149::o;12519:76::-;;;-1:-1:-1;;;;;12519:76:0;;:::o;33392:268::-;4040:30;4057:12;:10;:12::i;4040:30::-;4032:107;;;;-1:-1:-1;;;4032:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33498:4;33486:9;:16;;33478:60;;;;;-1:-1:-1;;;33478:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;33571:4;33559:9;:16;;33551:61;;;;;-1:-1:-1;;;33551:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33623:17;:29;33392:268::o;23382:104::-;23446:32;23456:10;23468:9;23446;:32::i;12840:31::-;;;-1:-1:-1;;;;;12840:31:0;;:::o;34408:115::-;4040:30;4057:12;:10;:12::i;4040:30::-;4032:107;;;;-1:-1:-1;;;4032:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;34493:13:0;;;;;;;;:6;:13;;;;;:21;;-1:-1:-1;;34493:21:0;;;;;;;;;;34408:115::o;13661:29::-;;;;:::o;31038:94::-;31084:40;31093:12;:10;:12::i;:::-;31107:6;;-1:-1:-1;;;;;31107:6:0;31115:8;31084;:40::i;22647:49::-;;;;;;;;;;;;;;;:::o;34039:108::-;4040:30;4057:12;:10;:12::i;4040:30::-;4032:107;;;;-1:-1:-1;;;4032:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;34114:18:0;;;;;:11;:18;;;;;:25;;-1:-1:-1;;34114:25:0;34135:4;34114:25;;;34039:108::o;7568:110::-;-1:-1:-1;;;;;7652:18:0;7625:7;7652:18;;;;;;;;;;;;7568:110::o;14816:145::-;-1:-1:-1;14902:16:0;;;;-1:-1:-1;14902:16:0;;-1:-1:-1;14816:145:0:o;4298:116::-;4040:30;4057:12;:10;:12::i;4040:30::-;4032:107;;;;-1:-1:-1;;;4032:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4379:27;4398:7;4379:18;:27::i;24976:1149::-;25084:7;25131:12;25117:11;:26;25109:89;;;;-1:-1:-1;;;25109:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25233:23:0;;25211:19;25233:23;;;:14;:23;;;;;;;;25271:17;25267:58;;25312:1;25305:8;;;;;25267:58;-1:-1:-1;;;;;25341:20:0;;;;;;:11;:20;;;;;;;;:38;-1:-1:-1;;25362:16:0;;25341:38;;;;;;;;;:48;;:63;-1:-1:-1;25337:147:0;;-1:-1:-1;;;;;25428:20:0;;;;;;:11;:20;;;;;;;;-1:-1:-1;;25449:16:0;;;;25428:38;;;;;;;;25464:1;25428:44;;;-1:-1:-1;25421:51:0;;25337:147;-1:-1:-1;;;;;25500:20:0;;;;;;:11;:20;;;;;;;;:23;;;;;;;;:33;:23;:33;:47;-1:-1:-1;25496:88:0;;;25571:1;25564:8;;;;;25496:88;25596:12;-1:-1:-1;;25638:16:0;;25665:402;25680:5;25672:13;;:5;:13;;;25665:402;;;25744:1;25727:13;;;25726:19;;;25718:27;;25761:20;;:::i;:::-;-1:-1:-1;;;;;;25784:20:0;;;;;;:11;:20;;;;;;;;:28;;;;;;;;;;;;;25761:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25831:27;;25827:229;;;25886:8;;;;-1:-1:-1;25879:15:0;;-1:-1:-1;;;;25879:15:0;25827:229;25920:12;;:26;;;-1:-1:-1;25916:140:0;;;25975:6;25967:14;;25916:140;;;26039:1;26030:6;:10;26022:18;;25916:140;25665:402;;;;;-1:-1:-1;;;;;;26084:20:0;;;;;;:11;:20;;;;;;;;:27;;;;;;;;;;:33;;;;-1:-1:-1;;24976:1149:0;;;;:::o;10834:103::-;10903:26;10913:7;10922:6;10903:9;:26::i;:::-;10834:103;;:::o;32358:99::-;4040:30;4057:12;:10;:12::i;4040:30::-;4032:107;;;;-1:-1:-1;;;4032:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32432:8;:17;;-1:-1:-1;;;;;;32432:17:0;-1:-1:-1;;;;;32432:17:0;;;;;;;;;;32358:99::o;16897:708::-;16978:18;;16953:21;16963:10;16953:9;:21::i;:::-;:43;;16945:99;;;;-1:-1:-1;;;16945:99:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17097:17;;17081:13;;:33;17063:15;:51;17055:101;;;;-1:-1:-1;;;17055:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17184:15;17168:13;:31;17236:9;;17258:23;:21;:23::i;:::-;17300:31;17315:15;17300:14;:31::i;:::-;17427:16;;17383:13;;17377:45;;;-1:-1:-1;;;17377:45:0;;17416:4;17377:45;;;;;;17352:22;;17377:67;;17427:16;;-1:-1:-1;;;;;17383:13:0;;;;17377:30;;:45;;;;;;;;;;;;;;;17383:13;17377:45;;;5:2:-1;;;;30:1;27;20:12;5:2;17377:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17377:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17377:45:0;;:67;:49;:67;:::i;:::-;17352:92;;17465:28;17478:14;17465:12;:28::i;:::-;-1:-1:-1;17519:8:0;;17538:22;;17519:42;;;-1:-1:-1;;;17519:42:0;;;;;;;;;;-1:-1:-1;;17519:8:0;;;-1:-1:-1;;;;;17519:8:0;;:18;;:42;;;;;;;;;;;;;;-1:-1:-1;17519:8:0;:42;;;5:2:-1;;;;30:1;27;20:12;5:2;17519:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17519:42:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17519:42:0;17579:18;;;;;;;;17519:42;;-1:-1:-1;17579:18:0;;;;;;17519:42;17579:18;;;16897:708;;;:::o;34277:118::-;4040:30;4057:12;:10;:12::i;4040:30::-;4032:107;;;;-1:-1:-1;;;4032:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;34372:15:0;;;;;:8;:15;;;;;;;-1:-1:-1;;34353:34:0;;34372:15;;;;34371:16;34353:34;;;34277:118::o;31976:370::-;4040:30;4057:12;:10;:12::i;4040:30::-;4032:107;;;;-1:-1:-1;;;4032:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32073:22;;32069:215;;32141:2;32120:17;:23;;32112:72;;;;-1:-1:-1;;;32112:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32228:3;32207:17;:24;;32199:73;;;;-1:-1:-1;;;32199:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32302:16;:36;31976:370::o;22962:39::-;;;;;;;;;;;;;:::o;12704:21::-;;;-1:-1:-1;;;;;12704:21:0;;:::o;32823:101::-;4040:30;4057:12;:10;:12::i;4040:30::-;4032:107;;;;-1:-1:-1;;;4032:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32898:7;:18;;-1:-1:-1;;;;;;32898:18:0;-1:-1:-1;;;;;32898:18:0;;;;;;;;;;32823:101::o;19476:130::-;19559:13;;19553:45;;;-1:-1:-1;;;19553:45:0;;19592:4;19553:45;;;;;;19526:7;;-1:-1:-1;;;;;19559:13:0;;19553:30;;:45;;;;;;;;;;;;;;19559:13;19553:45;;;5:2:-1;;;;30:1;27;20:12;31425:138:0;4040:30;4057:12;:10;:12::i;4040:30::-;4032:107;;;;-1:-1:-1;;;4032:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31518:16;:36;;-1:-1:-1;;;;;;31518:36:0;-1:-1:-1;;;;;31518:36:0;;;;;;;;;;31425:138::o;12017:87::-;12089:7;12082:14;;;;;;;;-1:-1:-1;;12082:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12056:13;;12082:14;;12089:7;;12082:14;;12089:7;12082:14;;;;;;;;;;;;;;;;;;;;;;;;13115:37;;;;:::o;35230:245::-;4040:30;4057:12;:10;:12::i;4040:30::-;4032:107;;;;-1:-1:-1;;;4032:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35327:2;35316:7;:13;;35308:57;;;;;-1:-1:-1;;;35308:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;35396:3;35385:7;:14;;35377:58;;;;;-1:-1:-1;;;35377:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;35446:11;:21;35230:245::o;12878:43::-;;;;;;;;;;;;;;;:::o;31286:127::-;4040:30;4057:12;:10;:12::i;4040:30::-;4032:107;;;;-1:-1:-1;;;4032:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31373:13;:30;;-1:-1:-1;;;;;;31373:30:0;-1:-1:-1;;;;;31373:30:0;;;;;;;;;;31286:127::o;8688:261::-;8773:4;8790:129;8799:12;:10;:12::i;:::-;8813:7;8822:96;8861:15;8822:96;;;;;;;;;;;;;;;;;:11;:25;8834:12;:10;:12::i;:::-;-1:-1:-1;;;;;8822:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;8822:25:0;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;33067:119::-;4040:30;4057:12;:10;:12::i;4040:30::-;4032:107;;;;-1:-1:-1;;;4032:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33133:7;;33150:8;;33127:43;;;-1:-1:-1;;;33127:43:0;;-1:-1:-1;;;;;33150:8:0;;;33127:43;;;;33160:9;33127:43;;;;;;33133:7;;;;;33127:22;;:43;;;;;;;;;;;;;;33133:7;;33127:43;;;5:2:-1;;;;30:1;27;20:12;5:2;33127:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33127:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;18458:108:0;18507:7;18534:24;18552:4;18534:9;:24::i;:::-;18527:31;;18458:108;:::o;7686:158::-;7755:4;7772:42;7782:12;:10;:12::i;:::-;7796:9;7807:6;7772:9;:42::i;13233:26::-;;;;:::o;19747:125::-;19795:7;19822:42;19846:17;:15;:17::i;:::-;19822:19;:17;:19::i;:::-;:23;:42;:23;:42;:::i;24713:255::-;-1:-1:-1;;;;;24852:23:0;;24805:7;24852:23;;;:14;:23;;;;;;;;24893:16;:67;;24959:1;24893:67;;;-1:-1:-1;;;;;24912:20:0;;;;;;:11;:20;;;;;;;;:38;-1:-1:-1;;24933:16:0;;24912:38;;;;;;;;24948:1;24912:44;;24893:67;24886:74;24713:255;-1:-1:-1;;;24713:255:0:o;12733:49::-;;;-1:-1:-1;;;;;12733:49:0;;:::o;34772:264::-;4040:30;4057:12;:10;:12::i;4040:30::-;4032:107;;;;-1:-1:-1;;;4032:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34876:7;34865;:18;;34857:62;;;;;-1:-1:-1;;;34857:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;34949:5;34938:7;:16;;34930:59;;;;;-1:-1:-1;;;34930:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;35000:18;:28;34772:264::o;4167:125::-;4231:4;4255:29;:16;4276:7;4255:29;:20;:29;:::i;30932:96::-;30980:40;30989:12;:10;:12::i;:::-;31003:6;;-1:-1:-1;;;;;31003:6:0;31011:8;30980;:40::i;34534:127::-;4040:30;4057:12;:10;:12::i;4040:30::-;4032:107;;;;-1:-1:-1;;;4032:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;34628:16:0;;;;;;;;:9;:16;;;;;:24;;-1:-1:-1;;34628:24:0;;;;;;;;;;34534:127::o;23494:1211::-;23687:23;22747:80;;;;;;;;;;;;;;;;;;;23816:6;:4;:6::i;:::-;23800:24;;;;;;23843:12;:10;:12::i;:::-;23882:4;23737:165;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23737:165:0;-1:-1:-1;;;;;23737:165:0;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;23737:165:0;;;23713:200;;;;;;23687:226;;23926:18;22882:71;;;;;;;;;;;;;;;;;;;23971:140;;;;;;;;-1:-1:-1;;;;;23971:140:0;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;23971:140:0;;;;;23947:175;;;;;;-1:-1:-1;;;24176:123:0;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;24176:123:0;;;;;;24152:158;;;;;;;;;-1:-1:-1;24343:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23947:175;;-1:-1:-1;24152:158:0;;-1:-1:-1;;;24343:26:0;;;;;;;23971:140;-1:-1:-1;;24343:26:0;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;24343:26:0;;-1:-1:-1;;24343:26:0;;;-1:-1:-1;;;;;;;24388:23:0;;24380:85;;;;-1:-1:-1;;;24380:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24493:17:0;;;;;;:6;:17;;;;;:19;;;;;;;;24484:28;;24476:86;;;;-1:-1:-1;;;24476:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24588:6;24581:3;:13;;24573:75;;;;-1:-1:-1;;;24573:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24666:31;24676:9;24687;24666;:31::i;:::-;24659:38;;;;23494:1211;;;;;;;:::o;18574:443::-;18621:7;18641:21;18671:13;;;;;;;;;-1:-1:-1;;;;;18671:13:0;-1:-1:-1;;;;;18665:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18665:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18665:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18665:34:0;;-1:-1:-1;18710:17:0;18730;:15;:17::i;32937:116::-;4040:30;4057:12;:10;:12::i;4040:30::-;4032:107;;;;-1:-1:-1;;;4032:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33003:7;;33020:6;;32997:41;;;-1:-1:-1;;;32997:41:0;;-1:-1:-1;;;;;33020:6:0;;;32997:41;;;;33028:9;32997:41;;;;;;33003:7;;;;;32997:22;;:41;;;;;;;;;;;;;;33003:7;;32997:41;;;5:2:-1;;;;30:1;27;20:12;13703:18:0;;;;;;:::o;12928:40::-;;;;;;;;;;;;;;;:::o;13387:68::-;;;-1:-1:-1;;;;;13387:68:0;;:::o;35048:170::-;4040:30;4057:12;:10;:12::i;4040:30::-;4032:107;;;;-1:-1:-1;;;4032:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35143:3;35132:7;:14;;35124:55;;;;;-1:-1:-1;;;35124:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;35191:9;:19;35048:170::o;7852:134::-;-1:-1:-1;;;;;7951:18:0;;;7924:7;7951:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7852:134::o;13496:23::-;;;;:::o;13159:31::-;;;;:::o;13462:20::-;;;-1:-1:-1;;;13462:20:0;;;;;:::o;22836:117::-;22882:71;;;;;;;;;;;;;;;;;;22836:117;:::o;13273:33::-;;;;:::o;12975:38::-;;;;;;;;;;;;;;;:::o;13076:32::-;;;;:::o;22568:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;30819:100::-;30869:42;30878:12;:10;:12::i;:::-;30892:8;;-1:-1:-1;;;;;30892:8:0;30902;30869;:42::i;33673:354::-;4040:30;4057:12;:10;:12::i;4040:30::-;4032:107;;;;-1:-1:-1;;;4032:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33769:14;;33765:202;;33821:2;33808:9;:15;;33800:70;;;;-1:-1:-1;;;33800:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33906:2;33893:9;:15;;33885:70;;;;-1:-1:-1;;;33885:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33985:22;:34;33673:354::o;13626:28::-;;;;:::o;32608:95::-;4040:30;4057:12;:10;:12::i;4040:30::-;4032:107;;;;-1:-1:-1;;;4032:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32679:6;:14;;-1:-1:-1;;;;;;32679:14:0;-1:-1:-1;;;;;32679:14:0;;;;;;;;;;32608:95::o;13021:41::-;;;;;;;;;;;;;;;:::o;13198:24::-;;;;:::o;13566:46::-;;;;:::o;3445:98::-;3525:10;3445:98;:::o;10108:338::-;-1:-1:-1;;;;;10202:19:0;;10194:68;;;;-1:-1:-1;;;10194:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10281:21:0;;10273:68;;;;-1:-1:-1;;;10273:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10354:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10406:32;;;;;;;;;;;;;;;;;10108:338;;;:::o;15179:1669::-;15273:6;;;;:32;;;;-1:-1:-1;;;;;;15283:14:0;;;;;;:8;:14;;;;;;;;:22;;:14;:22;;15273:32;:56;;;;-1:-1:-1;;;;;;15309:12:0;;;;;;:8;:12;;;;;;;;:20;;:12;:20;;15273:56;15270:125;;;15344:51;;-1:-1:-1;;;15344:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15270:125;-1:-1:-1;;;;;15411:16:0;;;;;;:9;:16;;;;;;;;:24;;:16;:24;;:50;;-1:-1:-1;;;;;;15439:14:0;;;;;;:9;:14;;;;;;;;:22;;:14;:22;15411:50;15408:101;;;15477:32;;;-1:-1:-1;;;15477:32:0;;;;;;;;;;;;-1:-1:-1;;;15477:32:0;;;;;;;;;;;;;;15408:101;-1:-1:-1;;;;;15602:17:0;;15531:15;15602:17;;;:11;:17;;;;;;15531:15;;15602:17;;:26;;;:54;;-1:-1:-1;;;;;;15632:15:0;;;;;;:11;:15;;;;;;;;:24;15602:54;15599:1242;;;15685:9;;:14;15681:176;;15733:9;;15722:21;;:6;;:21;:10;:21;:::i;:::-;15713:30;-1:-1:-1;15764:18:0;:6;15713:30;15764:18;:10;:18;:::i;:::-;15826:8;;15755:27;;-1:-1:-1;15796:48:0;;15812:4;;-1:-1:-1;;;;;15826:8:0;15837:6;15796:15;:48::i;:::-;15882:17;;:22;15878:548;;15946:3;;15933:8;;:17;;;:12;:17;:::i;:::-;15922:8;:28;15987:17;;15976:29;;:6;;:29;:10;:29;:::i;:::-;15965:40;-1:-1:-1;16030:20:0;:6;15965:40;16030:20;:10;:20;:::i;:::-;16021:29;;16065:46;16081:4;16095;16102:8;16065:15;:46::i;:::-;16139:10;:22;;;;;;16191:8;;16179;;:20;16176:239;;;16230:16;16241:4;16230:10;:16::i;:::-;16228:19;16219:47;;;;;-1:-1:-1;;;16219:47:0;;;;;;;;;;;;-1:-1:-1;;;16219:47:0;;;;;;;;;;;;;;;16285:48;16309:4;16316;16322:10;;16285:15;:48::i;:::-;16365:1;16352:10;:14;;;16385:8;:12;16176:239;16450:11;;:16;;;;:30;;-1:-1:-1;;;;;;16470:10:0;;;;;;:6;:10;;;;;;;;16450:30;16446:244;;;16496:14;16513:23;16524:11;;16513:6;:10;;:23;;;;:::i;:::-;16551:9;:19;;;;;;16496:40;-1:-1:-1;16593:18:0;:6;16496:40;16593:18;:10;:18;:::i;:::-;16584:27;;16630:44;16646:4;16660;16667:6;16630:15;:44::i;:::-;16446:244;;16715:33;16731:4;16737:2;16741:6;16715:15;:33::i;:::-;15599:1242;;;16793:33;16809:4;16815:2;16819:6;16793:15;:33::i;:::-;15179:1669;;;;;:::o;5900:192::-;5986:7;6022:12;6014:6;;;;6006:29;;;;-1:-1:-1;;;6006:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6006:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6058:5:0;;;5900:192::o;5567:181::-;5625:7;5657:5;;;5681:6;;;;5673:46;;;;;-1:-1:-1;;;5673:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;22250:170;-1:-1:-1;;;;;22333:19:0;;;;;;;:10;:19;;;;;;22318:55;;22333:19;;22366:6;22318:14;:55::i;:::-;22384:28;22396:7;22405:6;22384:11;:28::i;4680:154::-;4748:32;:16;4772:7;4748:32;:23;:32;:::i;:::-;4796:30;;-1:-1:-1;;;;;4796:30:0;;;;;;;;4680:154;:::o;6100:252::-;6158:7;6184:6;6180:47;;-1:-1:-1;6214:1:0;6207:8;;6180:47;6251:5;;;6255:1;6251;:5;:1;6275:5;;;;;:10;6267:56;;;;-1:-1:-1;;;6267:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6360:132;6418:7;6445:39;6449:1;6452;6445:39;;;;;;;;;;;;;;;;;:3;:39::i;26133:394::-;-1:-1:-1;;;;;26250:21:0;;;26224:23;26250:21;;;:10;:21;;;;;;;;;;26309:20;26261:9;26309;:20::i;:::-;-1:-1:-1;;;;;26341:21:0;;;;;;;:10;:21;;;;;;:33;;-1:-1:-1;;;;;;26341:33:0;;;;;;;;;;26392:54;;26282:47;;-1:-1:-1;26341:33:0;26392:54;;;;;;26341:21;26392:54;26459:60;26474:15;26491:9;26502:16;26459:14;:60::i;4525:146::-;4590:29;:16;4611:7;4590:29;:20;:29;:::i;:::-;4635:28;;-1:-1:-1;;;;;4635:28:0;;;;;;;;4525:146;:::o;10454:232::-;10526:22;10532:7;10541:6;10526:5;:22::i;:::-;10559:119;10568:7;10577:12;:10;:12::i;:::-;10591:86;10630:6;10591:86;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10591:20:0;;;;;;:11;:20;;;;;;10612:12;:10;:12::i;17617:113::-;17689:17;;:33;;17711:10;17689:33;:21;:33;:::i;17742:256::-;17812:8;;-1:-1:-1;;;;;17812:8:0;:22;17809:182;;17869:8;;17850:53;;;-1:-1:-1;;;17850:53:0;;;;;;;;;;-1:-1:-1;;;;;17869:8:0;;;;17850:37;;:53;;;;;17869:8;;17850:53;;;;;;;;17869:8;;17850:53;;;5:2:-1;;;;30:1;27;20:12;5:2;17850:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;17928:1:0;17917:9;:12;-1:-1:-1;;17949:29:0;;;;;;;;;;;;;;;;;17742:256;:::o;18006:438::-;18095:13;;18118:15;;18089:55;;;-1:-1:-1;;;18089:55:0;;-1:-1:-1;;;;;18118:15:0;;;18089:55;;;;;;;;;;;;18062:14;;18095:13;;;;;18089:28;;:55;;;;;;;;;;;;;;;18062:14;18095:13;18089:55;;;5:2:-1;;;;30:1;27;20:12;5:2;18089:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18089:55:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;18188:15:0;;18392:8;;18169:267;;;-1:-1:-1;;;18169:267:0;;18293:4;18169:267;;;;;;;;;;-1:-1:-1;18169:267:0;;;;;;;;;;;;-1:-1:-1;;;;;18188:15:0;18392:8;;;;;18169:267;;;;18420:15;18169:267;;;;;;18188:15;;;;;18169:97;;:267;;;;;18089:55;;18169:267;;;;;;;;;18188:15;18169:267;;;5:2:-1;;;;30:1;27;20:12;5:2;18169:267:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18169:267:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18169:267:0;;18006:438;-1:-1:-1;;18006:438:0:o;11413:203::-;11485:4;-1:-1:-1;;;;;11510:21:0;;11502:68;;;;-1:-1:-1;;;11502:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11588:20:0;:11;:20;;;;;;;;;;;;;;;11413:203::o;28286:153::-;28396:9;28286:153;:::o;5756:136::-;5814:7;5841:43;5845:1;5848;5841:43;;;;;;;;;;;;;;;;;:3;:43::i;21875:189::-;-1:-1:-1;;;;;21971:16:0;;;;;;;:10;:16;;;;;;;21989:14;;;;;;;;21956:56;;21971:16;;;;21989:14;22005:6;21956:14;:56::i;:::-;22023:33;22039:4;22045:2;22049:6;22023:15;:33::i;:::-;21875:189;;;:::o;26535:851::-;26641:6;-1:-1:-1;;;;;26631:16:0;:6;-1:-1:-1;;;;;26631:16:0;;;:30;;;;;26660:1;26651:6;:10;26631:30;26627:752;;;-1:-1:-1;;;;;26682:20:0;;;26678:337;;-1:-1:-1;;;;;26742:22:0;;26723:16;26742:22;;;:14;:22;;;;;;;;;26803:13;:60;;26862:1;26803:60;;;-1:-1:-1;;;;;26819:19:0;;;;;;:11;:19;;;;;;;;:34;-1:-1:-1;;26839:13:0;;26819:34;;;;;;;;26851:1;26819:40;;26803:60;26783:80;-1:-1:-1;26882:17:0;26902:21;26783:80;26916:6;26902:21;:13;:21;:::i;:::-;26882:41;;26942:57;26959:6;26967:9;26978;26989;26942:16;:57::i;:::-;26678:337;;;;-1:-1:-1;;;;;27035:20:0;;;27031:337;;-1:-1:-1;;;;;27095:22:0;;27076:16;27095:22;;;:14;:22;;;;;;;;;27156:13;:60;;27215:1;27156:60;;;-1:-1:-1;;;;;27172:19:0;;;;;;:11;:19;;;;;;;;:34;-1:-1:-1;;27192:13:0;;27172:34;;;;;;;;27204:1;27172:40;;27156:60;27136:80;-1:-1:-1;27235:17:0;27255:21;27136:80;27269:6;27255:21;:13;:21;:::i;:::-;27235:41;;27295:57;27312:6;27320:9;27331;27342;27295:16;:57::i;9752:348::-;-1:-1:-1;;;;;9828:21:0;;9820:67;;;;-1:-1:-1;;;9820:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9921:68;9944:6;9921:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9921:18:0;;:9;:18;;;;;;;;;;;;:68;;:22;:68;:::i;:::-;-1:-1:-1;;;;;9900:18:0;;:9;:18;;;;;;;;;;:89;10015:12;;:24;;10032:6;10015:24;:16;:24;:::i;:::-;10000:12;:39;10055:37;;;;;;;;10081:1;;-1:-1:-1;;;;;10055:37:0;;;;;;;;;;;;9752:348;;:::o;11222:183::-;11302:18;11306:4;11312:7;11302:3;:18::i;:::-;11294:64;;;;-1:-1:-1;;;11294:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11369:20:0;11392:5;11369:20;;;;;;;;;;;:28;;-1:-1:-1;;11369:28:0;;;11222:183::o;6500:193::-;6586:7;6623:12;6616:5;6608:28;;;;-1:-1:-1;;;6608:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;6608:28:0;;6647:9;6663:1;6659;:5;;;;;;;6500:193;-1:-1:-1;;;;;6500:193:0:o;11036:178::-;11114:18;11118:4;11124:7;11114:3;:18::i;:::-;11113:19;11105:63;;;;;-1:-1:-1;;;11105:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11179:20:0;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;11179:27:0;11202:4;11179:27;;;11036:178::o;8957:471::-;-1:-1:-1;;;;;9055:20:0;;9047:70;;;;-1:-1:-1;;;9047:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9136:23:0;;9128:71;;;;-1:-1:-1;;;9128:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9232;9254:6;9232:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9232:17:0;;:9;:17;;;;;;;;;;;;:71;;:21;:71;:::i;:::-;-1:-1:-1;;;;;9212:17:0;;;:9;:17;;;;;;;;;;;:91;;;;9337:20;;;;;;;:32;;9362:6;9337:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;9314:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;9385:35;;;;;;;9314:20;;9385:35;;;;;;;;;;;;;8957:471;;;:::o;27394:715::-;27573:18;27594:87;27601:12;27594:87;;;;;;;;;;;;;;;;;:6;:87::i;:::-;27573:108;;27713:1;27698:12;:16;;;:85;;;;-1:-1:-1;;;;;;27718:22:0;;;;;;:11;:22;;;;;;;;:65;-1:-1:-1;;27741:16:0;;27718:40;;;;;;;;;:50;:65;;;:50;;:65;27698:85;27694:339;;;-1:-1:-1;;;;;27800:22:0;;;;;;:11;:22;;;;;;;;:40;-1:-1:-1;;27823:16:0;;27800:40;;;;;;;;27838:1;27800:46;:57;;;27694:339;;;27929:33;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27890:22:0;;-1:-1:-1;27890:22:0;;;:11;:22;;;;;:36;;;;;;;;;;:72;;;;;;;-1:-1:-1;;27890:72:0;;;;;;;;;;;;;27977:25;;;:14;:25;;;;;;:44;;28005:16;;;27977:44;;;;;;;;;;27694:339;28050:51;;;;;;;;;;;;;;-1:-1:-1;;;;;28050:51:0;;;;;;;;;;;27394:715;;;;;:::o;28117:161::-;28192:6;28230:12;28223:5;28219:9;;28211:32;;;;-1:-1:-1;;;28211:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;28211:32:0;-1:-1:-1;28268:1:0;;28117:161;-1:-1:-1;;28117:161:0:o;30178:5300::-;;;;;;;;;;-1:-1:-1;30178:5300:0;;;;;;;;:::o;9436:308::-;-1:-1:-1;;;;;9512:21:0;;9504:65;;;;;-1:-1:-1;;;9504:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9597:12;;:24;;9614:6;9597:24;:16;:24;:::i;:::-;9582:12;:39;-1:-1:-1;;;;;9653:18:0;;:9;:18;;;;;;;;;;;:30;;9676:6;9653:30;:22;:30;:::i;:::-;-1:-1:-1;;;;;9632:18:0;;:9;:18;;;;;;;;;;;:51;;;;9699:37;;;;;;;9632:18;;:9;;9699:37;;;;;;;;;;9436:308;;:::o
Swarm Source
bzzr://54d725ed1626a8974fb9f11aad7cd6f4fced9bd65236e47193bd4a4ab7db8bf5
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.