Contract Overview
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Contract Name:
FeeManager
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2021-08-22 */ // Sources flattened with hardhat v2.4.1 https://hardhat.org // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface OZ_IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } interface IPathOracle { /** * Assume claimFee uses msg.sender, and returns the amount of WETH sent to the caller */ function appendPath(address token0, address token1) external; function stepPath(address from) external view returns(address to); } interface IPriceOracle { /** * Assume claimFee uses msg.sender, and returns the amount of WETH sent to the caller */ struct oracle { uint[2] price0Cumulative; uint[2] price1Cumulative; uint32[2] timeStamp; uint8 index; // 0 or 1 } function getPrice(address pairAddress) external returns (uint price0Average, uint price1Average, uint timeTillValid); function calculateMinAmount(address from, uint256 slippage, uint256 amount, address pairAddress) external returns (uint minAmount, uint timeTillValid); function getOracleTime(address pairAddress) external view returns(uint currentTimestamp, uint otherTimestamp); function priceValidStart() external view returns(uint); function priceValidEnd() external view returns(uint); } /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeToSetter() external view returns (address); function migrator() external view returns (address); function weth() external view returns (address); function wbtc() external view returns (address); function gfi() external view returns (address); function earningsManager() external view returns (address); function feeManager() external view returns (address); function dustPan() external view returns (address); function governor() external view returns (address); function priceOracle() external view returns (address); function pathOracle() external view returns (address); function router() external view returns (address); function paused() external view returns (bool); function slippage() external view returns (uint); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeToSetter(address) external; function setMigrator(address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); 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); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface iGovernance { /** * Assume claimFee uses msg.sender, and returns the amount of WETH sent to the caller */ function delegateFee(address reciever) external returns (uint256); function claimFee() external returns (uint256); function tierLedger(address user, uint index) external returns(uint); function depositFee(uint256 amountWETH, uint256 amountWBTC) external; function Tiers(uint index) external returns(uint); } contract FeeManager is Ownable { address[] public tokenList; mapping(address => uint256) public tokenIndex; address public factory; mapping(address => bool) public whitelist; IUniswapV2Factory Factory; modifier onlyWhitelist() { require(whitelist[msg.sender], "Caller is not in whitelist!"); _; } modifier onlyFactory() { require(msg.sender == factory, "Gravity Finance: FORBIDDEN"); _; } /** * @dev emitted when owner changes the whitelist * @param _address the address that had its whitelist status changed * @param newBool the new state of the address **/ event whiteListChanged(address _address, bool newBool); /** * @dev emitted when catalougeTokens is called by factory * @param token0 the first token address of the swap pair * @param token1 the second token address of the swap pair **/ event addTokens(address token0, address token1); /** * @dev emitted when fees are deposited into governance contract * @param amountWETH the amount of wETH deposited into the governance contract * @param amountWBTC the amount of wBTC deposited into the governance contract **/ event feeDeposited(uint amountWETH, uint amountWBTC); /** * @dev emitted when the fee manager makes a swap * @param from the address of the token it swapped from * @param to the address of the token it swapped into **/ event swapped(address from, address to); /** * @dev emitted when owner calls adminWithdraw * @param asset the address of the asset that was moved out of the fee manager **/ event AdminWithdrawCalled(address asset); constructor(address _factory) { tokenList.push(address(0)); //populate the 0 index with the zero address factory = _factory; Factory = IUniswapV2Factory(factory); } /** * @dev called by owner to change the privelages for an address * @param _address the address that you want its privelages changed * @param _bool the new privelage for that address **/ function adjustWhitelist(address _address, bool _bool) external onlyOwner { whitelist[_address] = _bool; emit whiteListChanged(_address, _bool); } /** * @dev When swap pairs are created, add their tokens to the tokenList if not already in it * @param token0 the first token address of the swap pair * @param token1 the second token address of the swap pair **/ function catalougeTokens(address token0, address token1) external onlyFactory{ if (tokenIndex[token0] == 0) { tokenList.push(token0); tokenIndex[token0] = tokenList.length - 1; } if (tokenIndex[token1] == 0) { tokenList.push(token1); tokenIndex[token1] = tokenList.length - 1; } emit addTokens(token0, token1); } /** * @dev used to deposit wETH and wBTC into governance contract **/ function deposit() external onlyWhitelist { OZ_IERC20 weth = OZ_IERC20(Factory.weth()); OZ_IERC20 wbtc = OZ_IERC20(Factory.wbtc()); uint256 amountWETH = weth.balanceOf(address(this)); uint256 amountWBTC = wbtc.balanceOf(address(this)); weth.approve(Factory.governor(), amountWETH); wbtc.approve(Factory.governor(), amountWBTC); iGovernance(Factory.governor()).depositFee(amountWETH, amountWBTC); emit feeDeposited(amountWETH, amountWBTC); } /** * @dev used to get the time window for when it is valid to call oracleStepSwap without reverting * @param asset the asset you want to convert into the next asset in the path * @return valid expiration the unix timestamp for when price will be valid, and for when it will expire **/ function validTimeWindow(address asset) external returns(uint valid, uint expiration){ IPriceOracle PriceOracle = IPriceOracle(Factory.priceOracle()); address nextAsset = IPathOracle(Factory.pathOracle()).stepPath(asset); address pairAddress = Factory.getPair(asset, nextAsset); //Call get price PriceOracle.getPrice(pairAddress); (uint pairCurrentTime,) = PriceOracle.getOracleTime(pairAddress); expiration = pairCurrentTime + PriceOracle.priceValidEnd(); valid = pairCurrentTime + PriceOracle.priceValidStart(); } /** * @dev allows whitelist addresses to swap assets using oracles * @param asset the address of the token you want to swap for the next asset in the PathOracle pathMap * @param half a bool indicating whether or not to only swap half of the amount of the asset **/ function oracleStepSwap(address asset, bool half) external onlyWhitelist{ uint tokenBal = OZ_IERC20(asset).balanceOf(address(this)); if(half){ tokenBal / 2; } address[] memory path = new address[](2); address nextAsset = IPathOracle(Factory.pathOracle()).stepPath(asset); address pairAddress = Factory.getPair(asset, nextAsset); (uint minAmount, uint timeTillValid) = IPriceOracle(Factory.priceOracle()) .calculateMinAmount(asset, Factory.slippage(), tokenBal, pairAddress); require(timeTillValid == 0, "Price(s) not valid Call checkPrice()"); OZ_IERC20(asset).approve(Factory.router(), tokenBal); path[0] = asset; path[1] = nextAsset; IUniswapV2Router02(Factory.router()).swapExactTokensForTokens( tokenBal, minAmount, path, address(this), block.timestamp ); emit swapped(path[0], path[1]); } /** * @dev allows whitelist addresses to swap assets by manually providing the minimum amount * @param asset the address of the token you want to swap for the next asset in the PathOracle pathMap * @param half a bool indicating whether or not to only swap half of the amount of the asset * @param minAmount the minimum amount of the other asset the swap exchange should return **/ function manualStepSwap(address asset, bool half, uint minAmount) external onlyWhitelist{ uint tokenBal = OZ_IERC20(asset).balanceOf(address(this)); if(half){ tokenBal / 2; } tokenBal = OZ_IERC20(asset).balanceOf(address(this)); address[] memory path = new address[](2); address nextAsset = IPathOracle(Factory.pathOracle()).stepPath(asset); OZ_IERC20(asset).approve(Factory.router(), tokenBal); path[0] = asset; path[1] = nextAsset; IUniswapV2Router02(Factory.router()).swapExactTokensForTokens( tokenBal, minAmount, path, address(this), block.timestamp ); emit swapped(path[0], path[1]); } /** * @dev only called in case of emergency, allows owner to move fees out of fee manager * @param asset the address of the asset to move out of fee manager **/ function adminWithdraw(address asset) external onlyOwner{ OZ_IERC20 token = OZ_IERC20(asset); token.transfer(msg.sender, token.balanceOf(address(this))); emit AdminWithdrawCalled(asset); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_factory","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"asset","type":"address"}],"name":"AdminWithdrawCalled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token0","type":"address"},{"indexed":false,"internalType":"address","name":"token1","type":"address"}],"name":"addTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountWETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountWBTC","type":"uint256"}],"name":"feeDeposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"}],"name":"swapped","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"newBool","type":"bool"}],"name":"whiteListChanged","type":"event"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_bool","type":"bool"}],"name":"adjustWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"adminWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"}],"name":"catalougeTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"bool","name":"half","type":"bool"},{"internalType":"uint256","name":"minAmount","type":"uint256"}],"name":"manualStepSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"bool","name":"half","type":"bool"}],"name":"oracleStepSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokenIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenList","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"validTimeWindow","outputs":[{"internalType":"uint256","name":"valid","type":"uint256"},{"internalType":"uint256","name":"expiration","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200235e3803806200235e8339810160408190526200003491620000fa565b6200003f33620000aa565b6001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319908116909155600380546001600160a01b0393909316928216831790556005805490911690911790556200012a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200010c578081fd5b81516001600160a01b038116811462000123578182fd5b9392505050565b612224806200013a6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80639dcd0b211161008c578063c45a015511610066578063c45a01551461020b578063d0e30db01461021e578063db7b20b414610226578063f2fde38b1461023957600080fd5b80639dcd0b21146101d25780639ead7222146101e5578063a28835b6146101f857600080fd5b806355ef4863116100c857806355ef48631461015f578063715018a6146101725780638da5cb5b1461017a5780639b19251a1461019f57600080fd5b8063284e5956146100ef578063332e2c5a1461011c578063427f91a614610131575b600080fd5b6101026100fd366004611e34565b61024c565b604080519283526020830191909152015b60405180910390f35b61012f61012a366004611eab565b61066a565b005b61015161013f366004611e34565b60026020526000908152604090205481565b604051908152602001610113565b61012f61016d366004611ed8565b610e27565b61012f6113bd565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610113565b6101c26101ad366004611e34565b60046020526000908152604090205460ff1681565b6040519015158152602001610113565b61012f6101e0366004611eab565b6113f3565b6101876101f3366004611ff4565b611481565b61012f610206366004611e34565b6114ab565b600354610187906001600160a01b031681565b61012f611610565b61012f610234366004611e73565b611b97565b61012f610247366004611e34565b611d49565b6000806000600560009054906101000a90046001600160a01b03166001600160a01b0316632630c12f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561029f57600080fd5b505afa1580156102b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d79190611e57565b90506000600560009054906101000a90046001600160a01b03166001600160a01b0316639a1fbb9a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561032957600080fd5b505afa15801561033d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103619190611e57565b60405163d24416c760e01b81526001600160a01b038781166004830152919091169063d24416c79060240160206040518083038186803b1580156103a457600080fd5b505afa1580156103b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103dc9190611e57565b60055460405163e6a4390560e01b81526001600160a01b03888116600483015280841660248301529293506000929091169063e6a439059060440160206040518083038186803b15801561042f57600080fd5b505afa158015610443573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104679190611e57565b6040516341976e0960e01b81526001600160a01b038083166004830152919250908416906341976e0990602401606060405180830381600087803b1580156104ae57600080fd5b505af11580156104c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e69190612047565b5050604051638078f62960e01b81526001600160a01b03838116600483015260009250851690638078f62990602401604080518083038186803b15801561052c57600080fd5b505afa158015610540573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105649190612024565b509050836001600160a01b03166311828b516040518163ffffffff1660e01b815260040160206040518083038186803b1580156105a057600080fd5b505afa1580156105b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d8919061200c565b6105e29082612150565b9450836001600160a01b0316636b6f6fee6040518163ffffffff1660e01b815260040160206040518083038186803b15801561061d57600080fd5b505afa158015610631573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610655919061200c565b61065f9082612150565b955050505050915091565b3360009081526004602052604090205460ff166106a25760405162461bcd60e51b815260040161069990612074565b60405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b1580156106e457600080fd5b505afa1580156106f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071c919061200c565b905081156107315761072f600282612168565b505b6040805160028082526060820183526000926020830190803683370190505090506000600560009054906101000a90046001600160a01b03166001600160a01b0316639a1fbb9a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107a257600080fd5b505afa1580156107b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107da9190611e57565b60405163d24416c760e01b81526001600160a01b038781166004830152919091169063d24416c79060240160206040518083038186803b15801561081d57600080fd5b505afa158015610831573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108559190611e57565b60055460405163e6a4390560e01b81526001600160a01b03888116600483015280841660248301529293506000929091169063e6a439059060440160206040518083038186803b1580156108a857600080fd5b505afa1580156108bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e09190611e57565b9050600080600560009054906101000a90046001600160a01b03166001600160a01b0316632630c12f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561093357600080fd5b505afa158015610947573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096b9190611e57565b6001600160a01b031663648f95c989600560009054906101000a90046001600160a01b03166001600160a01b0316633e032a3b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109c857600080fd5b505afa1580156109dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a00919061200c565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201526024810191909152604481018a905290861660648201526084016040805180830381600087803b158015610a5757600080fd5b505af1158015610a6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8f9190612024565b9150915080600014610aef5760405162461bcd60e51b8152602060048201526024808201527f5072696365287329206e6f742076616c69642043616c6c20636865636b5072696044820152636365282960e01b6064820152608401610699565b876001600160a01b031663095ea7b3600560009054906101000a90046001600160a01b03166001600160a01b031663f887ea406040518163ffffffff1660e01b815260040160206040518083038186803b158015610b4c57600080fd5b505afa158015610b60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b849190611e57565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101899052604401602060405180830381600087803b158015610bcc57600080fd5b505af1158015610be0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c049190611fd8565b508785600081518110610c2757634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250508385600181518110610c6957634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600554604080516303e21fa960e61b81529051919093169263f887ea40926004808301939192829003018186803b158015610cbd57600080fd5b505afa158015610cd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf59190611e57565b6001600160a01b03166338ed173987848830426040518663ffffffff1660e01b8152600401610d289594939291906120e0565b600060405180830381600087803b158015610d4257600080fd5b505af1158015610d56573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d7e9190810190611f18565b507fd7fc5826d12536a38e1c06f82a9664a96c81a81be8271126591dbde0e53ec58e85600081518110610dc157634e487b7160e01b600052603260045260246000fd5b602002602001015186600181518110610dea57634e487b7160e01b600052603260045260246000fd5b6020026020010151604051610e159291906001600160a01b0392831681529116602082015260400190565b60405180910390a15050505050505050565b3360009081526004602052604090205460ff16610e565760405162461bcd60e51b815260040161069990612074565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a082319060240160206040518083038186803b158015610e9857600080fd5b505afa158015610eac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed0919061200c565b90508215610ee557610ee3600282612168565b505b6040516370a0823160e01b81523060048201526001600160a01b038516906370a082319060240160206040518083038186803b158015610f2457600080fd5b505afa158015610f38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5c919061200c565b60408051600280825260608201835292935060009290916020830190803683370190505090506000600560009054906101000a90046001600160a01b03166001600160a01b0316639a1fbb9a6040518163ffffffff1660e01b815260040160206040518083038186803b158015610fd257600080fd5b505afa158015610fe6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100a9190611e57565b60405163d24416c760e01b81526001600160a01b038881166004830152919091169063d24416c79060240160206040518083038186803b15801561104d57600080fd5b505afa158015611061573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110859190611e57565b9050856001600160a01b031663095ea7b3600560009054906101000a90046001600160a01b03166001600160a01b031663f887ea406040518163ffffffff1660e01b815260040160206040518083038186803b1580156110e457600080fd5b505afa1580156110f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111c9190611e57565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101869052604401602060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119c9190611fd8565b5085826000815181106111bf57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050808260018151811061120157634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600554604080516303e21fa960e61b81529051919093169263f887ea40926004808301939192829003018186803b15801561125557600080fd5b505afa158015611269573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128d9190611e57565b6001600160a01b03166338ed173984868530426040518663ffffffff1660e01b81526004016112c09594939291906120e0565b600060405180830381600087803b1580156112da57600080fd5b505af11580156112ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113169190810190611f18565b507fd7fc5826d12536a38e1c06f82a9664a96c81a81be8271126591dbde0e53ec58e8260008151811061135957634e487b7160e01b600052603260045260246000fd5b60200260200101518360018151811061138257634e487b7160e01b600052603260045260246000fd5b60200260200101516040516113ad9291906001600160a01b0392831681529116602082015260400190565b60405180910390a1505050505050565b6000546001600160a01b031633146113e75760405162461bcd60e51b8152600401610699906120ab565b6113f16000611de4565b565b6000546001600160a01b0316331461141d5760405162461bcd60e51b8152600401610699906120ab565b6001600160a01b038216600081815260046020908152604091829020805460ff19168515159081179091558251938452908301527f9989cec740a9d888e73e94915eaa95e03f36dbca99da0eefb704f816015676ff91015b60405180910390a15050565b6001818154811061149157600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b031633146114d55760405162461bcd60e51b8152600401610699906120ab565b6040516370a0823160e01b815230600482015281906001600160a01b0382169063a9059cbb90339083906370a082319060240160206040518083038186803b15801561152057600080fd5b505afa158015611534573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611558919061200c565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561159e57600080fd5b505af11580156115b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d69190611fd8565b506040516001600160a01b03831681527fb8282cbd4a600f1b0f88446a049d804f900d5a544feb17e9e46bdf8d459cc5b790602001611475565b3360009081526004602052604090205460ff1661163f5760405162461bcd60e51b815260040161069990612074565b60055460408051633fc8cef360e01b815290516000926001600160a01b031691633fc8cef3916004808301926020929190829003018186803b15801561168457600080fd5b505afa158015611698573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116bc9190611e57565b90506000600560009054906101000a90046001600160a01b03166001600160a01b0316633cdc53896040518163ffffffff1660e01b815260040160206040518083038186803b15801561170e57600080fd5b505afa158015611722573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117469190611e57565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038416906370a082319060240160206040518083038186803b15801561178b57600080fd5b505afa15801561179f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c3919061200c565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038416906370a082319060240160206040518083038186803b15801561180857600080fd5b505afa15801561181c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611840919061200c565b9050836001600160a01b031663095ea7b3600560009054906101000a90046001600160a01b03166001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b15801561189f57600080fd5b505afa1580156118b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d79190611e57565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101859052604401602060405180830381600087803b15801561191f57600080fd5b505af1158015611933573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119579190611fd8565b50826001600160a01b031663095ea7b3600560009054906101000a90046001600160a01b03166001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b1580156119b557600080fd5b505afa1580156119c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ed9190611e57565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401602060405180830381600087803b158015611a3557600080fd5b505af1158015611a49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6d9190611fd8565b50600560009054906101000a90046001600160a01b03166001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b158015611abc57600080fd5b505afa158015611ad0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af49190611e57565b604051633da48ef960e11b815260048101849052602481018390526001600160a01b039190911690637b491df290604401600060405180830381600087803b158015611b3f57600080fd5b505af1158015611b53573d6000803e3d6000fd5b505060408051858152602081018590527f71380e930a101b465250009479eba5da69bb373410dbfe2568326e16149926cb935001905060405180910390a150505050565b6003546001600160a01b03163314611bf15760405162461bcd60e51b815260206004820152601a60248201527f477261766974792046696e616e63653a20464f5242494444454e0000000000006044820152606401610699565b6001600160a01b038216600090815260026020526040902054611c7d5760018054808201825560008290527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0385161790558054611c639190612188565b6001600160a01b0383166000908152600260205260409020555b6001600160a01b038116600090815260026020526040902054611d095760018054808201825560008290527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0384161790558054611cef9190612188565b6001600160a01b0382166000908152600260205260409020555b604080516001600160a01b038085168252831660208201527f960f9899b9051031e5056939973b0cb6be5124f33af3a7b45813bcb5164e58819101611475565b6000546001600160a01b03163314611d735760405162461bcd60e51b8152600401610699906120ab565b6001600160a01b038116611dd85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610699565b611de181611de4565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215611e45578081fd5b8135611e50816121cb565b9392505050565b600060208284031215611e68578081fd5b8151611e50816121cb565b60008060408385031215611e85578081fd5b8235611e90816121cb565b91506020830135611ea0816121cb565b809150509250929050565b60008060408385031215611ebd578182fd5b8235611ec8816121cb565b91506020830135611ea0816121e0565b600080600060608486031215611eec578081fd5b8335611ef7816121cb565b92506020840135611f07816121e0565b929592945050506040919091013590565b60006020808385031215611f2a578182fd5b825167ffffffffffffffff80821115611f41578384fd5b818501915085601f830112611f54578384fd5b815181811115611f6657611f666121b5565b8060051b604051601f19603f83011681018181108582111715611f8b57611f8b6121b5565b604052828152858101935084860182860187018a1015611fa9578788fd5b8795505b83861015611fcb578051855260019590950194938601938601611fad565b5098975050505050505050565b600060208284031215611fe9578081fd5b8151611e50816121e0565b600060208284031215612005578081fd5b5035919050565b60006020828403121561201d578081fd5b5051919050565b60008060408385031215612036578182fd5b505080516020909101519092909150565b60008060006060848603121561205b578283fd5b8351925060208401519150604084015190509250925092565b6020808252601b908201527f43616c6c6572206973206e6f7420696e2077686974656c697374210000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b8181101561212f5784516001600160a01b03168352938301939183019160010161210a565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156121635761216361219f565b500190565b60008261218357634e487b7160e01b81526012600452602481fd5b500490565b60008282101561219a5761219a61219f565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114611de157600080fd5b8015158114611de157600080fdfea26469706673582212200d6b6f46f153cb192091c2b56469708106d577a04d454aa616c420a6e7e7781164736f6c634300080400330000000000000000000000003ed75aff4094d2aaa38fafca64ef1c152ec1cf20
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000003ed75aff4094d2aaa38fafca64ef1c152ec1cf20
-----Decoded View---------------
Arg [0] : _factory (address): 0x3ed75aff4094d2aaa38fafca64ef1c152ec1cf20
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000003ed75aff4094d2aaa38fafca64ef1c152ec1cf20
Deployed ByteCode Sourcemap
13608:7480:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17543:614;;;;;;:::i;:::-;;:::i;:::-;;;;8177:25:1;;;8233:2;8218:18;;8211:34;;;;8150:18;17543:614:0;;;;;;;;18456:1015;;;;;;:::i;:::-;;:::i;:::-;;13679:45;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;7967:25:1;;;7955:2;7940:18;13679:45:0;7922:76:1;19891:784:0;;;;;;:::i;:::-;;:::i;6270:94::-;;;:::i;5619:87::-;5665:7;5692:6;-1:-1:-1;;;;;5692:6:0;5619:87;;;-1:-1:-1;;;;;4372:32:1;;;4354:51;;4342:2;4327:18;5619:87:0;4309:102:1;13760:41:0;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5910:14:1;;5903:22;5885:41;;5873:2;5858:18;13760:41:0;5840:92:1;15780:169:0;;;;;;:::i;:::-;;:::i;13646:26::-;;;;;;:::i;:::-;;:::i;20865:220::-;;;;;;:::i;:::-;;:::i;13731:22::-;;;;;-1:-1:-1;;;;;13731:22:0;;;16706:517;;;:::i;16196:416::-;;;;;;:::i;:::-;;:::i;6519:192::-;;;;;;:::i;:::-;;:::i;17543:614::-;17600:10;17612:15;17639:24;17679:7;;;;;;;;;-1:-1:-1;;;;;17679:7:0;-1:-1:-1;;;;;17679:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17639:62;;17712:17;17744:7;;;;;;;;;-1:-1:-1;;;;;17744:7:0;-1:-1:-1;;;;;17744:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17732:49;;-1:-1:-1;;;17732:49:0;;-1:-1:-1;;;;;4372:32:1;;;17732:49:0;;;4354:51:1;17732:42:0;;;;;;;4327:18:1;;17732:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17814:7;;:33;;-1:-1:-1;;;17814:33:0;;-1:-1:-1;;;;;4646:15:1;;;17814:33:0;;;4628:34:1;4698:15;;;4678:18;;;4671:43;17712:69:0;;-1:-1:-1;17792:19:0;;17814:7;;;;:15;;4563:18:1;;17814:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17894;;-1:-1:-1;;;17894:33:0;;-1:-1:-1;;;;;4372:32:1;;;17894:33:0;;;4354:51:1;17792:55:0;;-1:-1:-1;17894:20:0;;;;;;4327:18:1;;17894:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;17966:38:0;;-1:-1:-1;;;17966:38:0;;-1:-1:-1;;;;;4372:32:1;;;17966:38:0;;;4354:51:1;17941:20:0;;-1:-1:-1;17966:25:0;;;;;4327:18:1;;17966:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17940:64;;;18056:11;-1:-1:-1;;;;;18056:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18038:45;;:15;:45;:::i;:::-;18025:58;;18120:11;-1:-1:-1;;;;;18120:27:0;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18102:47;;:15;:47;:::i;:::-;18094:55;;17543:614;;;;;;;:::o;18456:1015::-;13896:10;13886:21;;;;:9;:21;;;;;;;;13878:61;;;;-1:-1:-1;;;13878:61:0;;;;;;;:::i;:::-;;;;;;;;;18555:41:::1;::::0;-1:-1:-1;;;18555:41:0;;18590:4:::1;18555:41;::::0;::::1;4354:51:1::0;18539:13:0::1;::::0;-1:-1:-1;;;;;18555:26:0;::::1;::::0;::::1;::::0;4327:18:1;;18555:41:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18539:57;;18610:4;18607:47;;;18630:12;18641:1;18630:8:::0;:12:::1;:::i;:::-;;18607:47;18688:16;::::0;;18702:1:::1;18688:16:::0;;;;;::::1;::::0;;18664:21:::1;::::0;18688:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;18688:16:0::1;18664:40;;18715:17;18747:7;;;;;;;;;-1:-1:-1::0;;;;;18747:7:0::1;-1:-1:-1::0;;;;;18747:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18735:49;::::0;-1:-1:-1;;;18735:49:0;;-1:-1:-1;;;;;4372:32:1;;;18735:49:0::1;::::0;::::1;4354:51:1::0;18735:42:0;;;::::1;::::0;::::1;::::0;4327:18:1;;18735:49:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18817:7;::::0;:33:::1;::::0;-1:-1:-1;;;18817:33:0;;-1:-1:-1;;;;;4646:15:1;;;18817:33:0::1;::::0;::::1;4628:34:1::0;4698:15;;;4678:18;;;4671:43;18715:69:0;;-1:-1:-1;18795:19:0::1;::::0;18817:7;;::::1;::::0;:15:::1;::::0;4563:18:1;;18817:33:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18795:55;;18862:14;18878:18:::0;18913:7:::1;;;;;;;;;-1:-1:-1::0;;;;;18913:7:0::1;-1:-1:-1::0;;;;;18913:19:0::1;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18900:68:0::1;;18969:5;18976:7;;;;;;;;;-1:-1:-1::0;;;;;18976:7:0::1;-1:-1:-1::0;;;;;18976:16:0::1;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18900:118;::::0;-1:-1:-1;;;;;;18900:118:0::1;::::0;;;;;;-1:-1:-1;;;;;5580:15:1;;;18900:118:0::1;::::0;::::1;5562:34:1::0;5612:18;;;5605:34;;;;5655:18;;;5648:34;;;5718:15;;;5698:18;;;5691:43;5496:19;;18900:118:0::1;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18861:157;;;;19037:13;19054:1;19037:18;19029:67;;;::::0;-1:-1:-1;;;19029:67:0;;6546:2:1;19029:67:0::1;::::0;::::1;6528:21:1::0;6585:2;6565:18;;;6558:30;6624:34;6604:18;;;6597:62;-1:-1:-1;;;6675:18:1;;;6668:34;6719:19;;19029:67:0::1;6518:226:1::0;19029:67:0::1;19117:5;-1:-1:-1::0;;;;;19107:24:0::1;;19132:7;;;;;;;;;-1:-1:-1::0;;;;;19132:7:0::1;-1:-1:-1::0;;;;;19132:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19107:52;::::0;-1:-1:-1;;;;;;19107:52:0::1;::::0;;;;;;-1:-1:-1;;;;;5206:32:1;;;19107:52:0::1;::::0;::::1;5188:51:1::0;5255:18;;;5248:34;;;5161:18;;19107:52:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19180:5;19170:4;19175:1;19170:7;;;;;;-1:-1:-1::0;;;19170:7:0::1;;;;;;;;;;;;;;:15;-1:-1:-1::0;;;;;19170:15:0::1;;;-1:-1:-1::0;;;;;19170:15:0::1;;;::::0;::::1;19206:9;19196:4;19201:1;19196:7;;;;;;-1:-1:-1::0;;;19196:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;19196:19:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:19;;;;19245:7:::1;::::0;:16:::1;::::0;;-1:-1:-1;;;19245:16:0;;;;:7;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;19196:7;;19245:16;;;;;:7;:16;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19226:61:0::1;;19302:8;19325:9;19349:4;19376;19396:15;19226:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;19226:196:0::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;;19438:25;19446:4;19451:1;19446:7;;;;;;-1:-1:-1::0;;;19446:7:0::1;;;;;;;;;;;;;;;19455:4;19460:1;19455:7;;;;;;-1:-1:-1::0;;;19455:7:0::1;;;;;;;;;;;;;;;19438:25;;;;;;-1:-1:-1::0;;;;;4646:15:1;;;4628:34;;4698:15;;4693:2;4678:18;;4671:43;4578:2;4563:18;;4545:175;19438:25:0::1;;;;;;;;13950:1;;;;;;18456:1015:::0;;:::o;19891:784::-;13896:10;13886:21;;;;:9;:21;;;;;;;;13878:61;;;;-1:-1:-1;;;13878:61:0;;;;;;;:::i;:::-;20008:41:::1;::::0;-1:-1:-1;;;20008:41:0;;20043:4:::1;20008:41;::::0;::::1;4354:51:1::0;19992:13:0::1;::::0;-1:-1:-1;;;;;20008:26:0;::::1;::::0;::::1;::::0;4327:18:1;;20008:41:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19992:57;;20063:4;20060:47;;;20083:12;20094:1;20083:8:::0;:12:::1;:::i;:::-;;20060:47;20128:41;::::0;-1:-1:-1;;;20128:41:0;;20163:4:::1;20128:41;::::0;::::1;4354:51:1::0;-1:-1:-1;;;;;20128:26:0;::::1;::::0;::::1;::::0;4327:18:1;;20128:41:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20204:16;::::0;;20218:1:::1;20204:16:::0;;;;;::::1;::::0;;20117:52;;-1:-1:-1;20180:21:0::1;::::0;20204:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;20204:16:0::1;20180:40;;20231:17;20263:7;;;;;;;;;-1:-1:-1::0;;;;;20263:7:0::1;-1:-1:-1::0;;;;;20263:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20251:49;::::0;-1:-1:-1;;;20251:49:0;;-1:-1:-1;;;;;4372:32:1;;;20251:49:0::1;::::0;::::1;4354:51:1::0;20251:42:0;;;::::1;::::0;::::1;::::0;4327:18:1;;20251:49:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20231:69;;20321:5;-1:-1:-1::0;;;;;20311:24:0::1;;20336:7;;;;;;;;;-1:-1:-1::0;;;;;20336:7:0::1;-1:-1:-1::0;;;;;20336:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20311:52;::::0;-1:-1:-1;;;;;;20311:52:0::1;::::0;;;;;;-1:-1:-1;;;;;5206:32:1;;;20311:52:0::1;::::0;::::1;5188:51:1::0;5255:18;;;5248:34;;;5161:18;;20311:52:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20384:5;20374:4;20379:1;20374:7;;;;;;-1:-1:-1::0;;;20374:7:0::1;;;;;;;;;;;;;;:15;-1:-1:-1::0;;;;;20374:15:0::1;;;-1:-1:-1::0;;;;;20374:15:0::1;;;::::0;::::1;20410:9;20400:4;20405:1;20400:7;;;;;;-1:-1:-1::0;;;20400:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;20400:19:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:19;;;;20449:7:::1;::::0;:16:::1;::::0;;-1:-1:-1;;;20449:16:0;;;;:7;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;20400:7;;20449:16;;;;;:7;:16;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20430:61:0::1;;20506:8;20529:9;20553:4;20580;20600:15;20430:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;20430:196:0::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;;20642:25;20650:4;20655:1;20650:7;;;;;;-1:-1:-1::0;;;20650:7:0::1;;;;;;;;;;;;;;;20659:4;20664:1;20659:7;;;;;;-1:-1:-1::0;;;20659:7:0::1;;;;;;;;;;;;;;;20642:25;;;;;;-1:-1:-1::0;;;;;4646:15:1;;;4628:34;;4698:15;;4693:2;4678:18;;4671:43;4578:2;4563:18;;4545:175;20642:25:0::1;;;;;;;;13950:1;;;19891:784:::0;;;:::o;6270:94::-;5665:7;5692:6;-1:-1:-1;;;;;5692:6:0;4573:10;5839:23;5831:68;;;;-1:-1:-1;;;5831:68:0;;;;;;;:::i;:::-;6335:21:::1;6353:1;6335:9;:21::i;:::-;6270:94::o:0;15780:169::-;5665:7;5692:6;-1:-1:-1;;;;;5692:6:0;4573:10;5839:23;5831:68;;;;-1:-1:-1;;;5831:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15865:19:0;::::1;;::::0;;;:9:::1;:19;::::0;;;;;;;;:27;;-1:-1:-1;;15865:27:0::1;::::0;::::1;;::::0;;::::1;::::0;;;15908:33;;4893:51:1;;;4960:18;;;4953:50;15908:33:0::1;::::0;4866:18:1;15908:33:0::1;;;;;;;;15780:169:::0;;:::o;13646:26::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13646:26:0;;-1:-1:-1;13646:26:0;:::o;20865:220::-;5665:7;5692:6;-1:-1:-1;;;;;5692:6:0;4573:10;5839:23;5831:68;;;;-1:-1:-1;;;5831:68:0;;;;;;;:::i;:::-;21004:30:::1;::::0;-1:-1:-1;;;21004:30:0;;21028:4:::1;21004:30;::::0;::::1;4354:51:1::0;20960:5:0;;-1:-1:-1;;;;;20977:14:0;::::1;::::0;::::1;::::0;20992:10:::1;::::0;20977:14;;21004:15:::1;::::0;4327:18:1;;21004:30:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20977:58;::::0;-1:-1:-1;;;;;;20977:58:0::1;::::0;;;;;;-1:-1:-1;;;;;5206:32:1;;;20977:58:0::1;::::0;::::1;5188:51:1::0;5255:18;;;5248:34;5161:18;;20977:58:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;21051:26:0::1;::::0;-1:-1:-1;;;;;4372:32:1;;4354:51;;21051:26:0::1;::::0;4342:2:1;4327:18;21051:26:0::1;4309:102:1::0;16706:517:0;13896:10;13886:21;;;;:9;:21;;;;;;;;13878:61;;;;-1:-1:-1;;;13878:61:0;;;;;;;:::i;:::-;16786:7:::1;::::0;:14:::1;::::0;;-1:-1:-1;;;16786:14:0;;;;16759::::1;::::0;-1:-1:-1;;;;;16786:7:0::1;::::0;:12:::1;::::0;:14:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:7;:14;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16759:42;;16812:14;16839:7;;;;;;;;;-1:-1:-1::0;;;;;16839:7:0::1;-1:-1:-1::0;;;;;16839:12:0::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16886:29;::::0;-1:-1:-1;;;16886:29:0;;16909:4:::1;16886:29;::::0;::::1;4354:51:1::0;16812:42:0;;-1:-1:-1;16865:18:0::1;::::0;-1:-1:-1;;;;;16886:14:0;::::1;::::0;::::1;::::0;4327:18:1;;16886:29:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16947;::::0;-1:-1:-1;;;16947:29:0;;16970:4:::1;16947:29;::::0;::::1;4354:51:1::0;16865:50:0;;-1:-1:-1;16926:18:0::1;::::0;-1:-1:-1;;;;;16947:14:0;::::1;::::0;::::1;::::0;4327:18:1;;16947:29:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16926:50;;16987:4;-1:-1:-1::0;;;;;16987:12:0::1;;17000:7;;;;;;;;;-1:-1:-1::0;;;;;17000:7:0::1;-1:-1:-1::0;;;;;17000:16:0::1;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16987:44;::::0;-1:-1:-1;;;;;;16987:44:0::1;::::0;;;;;;-1:-1:-1;;;;;5206:32:1;;;16987:44:0::1;::::0;::::1;5188:51:1::0;5255:18;;;5248:34;;;5161:18;;16987:44:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17042:4;-1:-1:-1::0;;;;;17042:12:0::1;;17055:7;;;;;;;;;-1:-1:-1::0;;;;;17055:7:0::1;-1:-1:-1::0;;;;;17055:16:0::1;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17042:44;::::0;-1:-1:-1;;;;;;17042:44:0::1;::::0;;;;;;-1:-1:-1;;;;;5206:32:1;;;17042:44:0::1;::::0;::::1;5188:51:1::0;5255:18;;;5248:34;;;5161:18;;17042:44:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17109:7;;;;;;;;;-1:-1:-1::0;;;;;17109:7:0::1;-1:-1:-1::0;;;;;17109:16:0::1;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17097:66;::::0;-1:-1:-1;;;17097:66:0;;::::1;::::0;::::1;8177:25:1::0;;;8218:18;;;8211:34;;;-1:-1:-1;;;;;17097:42:0;;;::::1;::::0;::::1;::::0;8150:18:1;;17097:66:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;17179:36:0::1;::::0;;8177:25:1;;;8233:2;8218:18;;8211:34;;;17179:36:0::1;::::0;-1:-1:-1;8150:18:1;;-1:-1:-1;17179:36:0::1;;;;;;;13950:1;;;;16706:517::o:0;16196:416::-;14023:7;;-1:-1:-1;;;;;14023:7:0;14009:10;:21;14001:60;;;;-1:-1:-1;;;14001:60:0;;7668:2:1;14001:60:0;;;7650:21:1;7707:2;7687:18;;;7680:30;7746:28;7726:18;;;7719:56;7792:18;;14001:60:0;7640:176:1;14001:60:0;-1:-1:-1;;;;;16288:18:0;::::1;;::::0;;;:10:::1;:18;::::0;;;;;16284:134:::1;;16328:9;:22:::0;;;;::::1;::::0;;-1:-1:-1;16328:22:0;;;;::::1;::::0;;-1:-1:-1;;;;;;16328:22:0::1;-1:-1:-1::0;;;;;16328:22:0;::::1;;::::0;;16386:16;;:20:::1;::::0;16328:9;16386:20:::1;:::i;:::-;-1:-1:-1::0;;;;;16365:18:0;::::1;;::::0;;;:10:::1;:18;::::0;;;;:41;16284:134:::1;-1:-1:-1::0;;;;;16434:18:0;::::1;;::::0;;;:10:::1;:18;::::0;;;;;16430:134:::1;;16474:9;:22:::0;;;;::::1;::::0;;-1:-1:-1;16474:22:0;;;;::::1;::::0;;-1:-1:-1;;;;;;16474:22:0::1;-1:-1:-1::0;;;;;16474:22:0;::::1;;::::0;;16532:16;;:20:::1;::::0;16474:9;16532:20:::1;:::i;:::-;-1:-1:-1::0;;;;;16511:18:0;::::1;;::::0;;;:10:::1;:18;::::0;;;;:41;16430:134:::1;16579:25;::::0;;-1:-1:-1;;;;;4646:15:1;;;4628:34;;4698:15;;4693:2;4678:18;;4671:43;16579:25:0::1;::::0;4563:18:1;16579:25:0::1;4545:175:1::0;6519:192:0;5665:7;5692:6;-1:-1:-1;;;;;5692:6:0;4573:10;5839:23;5831:68;;;;-1:-1:-1;;;5831:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6608:22:0;::::1;6600:73;;;::::0;-1:-1:-1;;;6600:73:0;;6139:2:1;6600:73:0::1;::::0;::::1;6121:21:1::0;6178:2;6158:18;;;6151:30;6217:34;6197:18;;;6190:62;-1:-1:-1;;;6268:18:1;;;6261:36;6314:19;;6600:73:0::1;6111:228:1::0;6600:73:0::1;6684:19;6694:8;6684:9;:19::i;:::-;6519:192:::0;:::o;6719:173::-;6775:16;6794:6;;-1:-1:-1;;;;;6811:17:0;;;-1:-1:-1;;;;;;6811:17:0;;;;;;6844:40;;6794:6;;;;;;;6844:40;;6775:16;6844:40;6719:173;;:::o;14:257:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:31;235:5;210:31;:::i;:::-;260:5;84:187;-1:-1:-1;;;84:187:1:o;276:261::-;346:6;399:2;387:9;378:7;374:23;370:32;367:2;;;420:6;412;405:22;367:2;457:9;451:16;476:31;501:5;476:31;:::i;542:398::-;610:6;618;671:2;659:9;650:7;646:23;642:32;639:2;;;692:6;684;677:22;639:2;736:9;723:23;755:31;780:5;755:31;:::i;:::-;805:5;-1:-1:-1;862:2:1;847:18;;834:32;875:33;834:32;875:33;:::i;:::-;927:7;917:17;;;629:311;;;;;:::o;945:392::-;1010:6;1018;1071:2;1059:9;1050:7;1046:23;1042:32;1039:2;;;1092:6;1084;1077:22;1039:2;1136:9;1123:23;1155:31;1180:5;1155:31;:::i;:::-;1205:5;-1:-1:-1;1262:2:1;1247:18;;1234:32;1275:30;1234:32;1275:30;:::i;1342:460::-;1416:6;1424;1432;1485:2;1473:9;1464:7;1460:23;1456:32;1453:2;;;1506:6;1498;1491:22;1453:2;1550:9;1537:23;1569:31;1594:5;1569:31;:::i;:::-;1619:5;-1:-1:-1;1676:2:1;1661:18;;1648:32;1689:30;1648:32;1689:30;:::i;:::-;1443:359;;1738:7;;-1:-1:-1;;;1792:2:1;1777:18;;;;1764:32;;1443:359::o;1807:1161::-;1902:6;1933:2;1976;1964:9;1955:7;1951:23;1947:32;1944:2;;;1997:6;1989;1982:22;1944:2;2035:9;2029:16;2064:18;2105:2;2097:6;2094:14;2091:2;;;2126:6;2118;2111:22;2091:2;2169:6;2158:9;2154:22;2144:32;;2214:7;2207:4;2203:2;2199:13;2195:27;2185:2;;2241:6;2233;2226:22;2185:2;2275;2269:9;2297:2;2293;2290:10;2287:2;;;2303:18;;:::i;:::-;2349:2;2346:1;2342:10;2381:2;2375:9;2444:2;2440:7;2435:2;2431;2427:11;2423:25;2415:6;2411:38;2499:6;2487:10;2484:22;2479:2;2467:10;2464:18;2461:46;2458:2;;;2510:18;;:::i;:::-;2546:2;2539:22;2596:18;;;2630:15;;;;-1:-1:-1;2665:11:1;;;2695;;;2691:20;;2688:33;-1:-1:-1;2685:2:1;;;2739:6;2731;2724:22;2685:2;2766:6;2757:15;;2781:156;2795:2;2792:1;2789:9;2781:156;;;2852:10;;2840:23;;2813:1;2806:9;;;;;2883:12;;;;2915;;2781:156;;;-1:-1:-1;2956:6:1;1913:1055;-1:-1:-1;;;;;;;;1913:1055:1:o;2973:255::-;3040:6;3093:2;3081:9;3072:7;3068:23;3064:32;3061:2;;;3114:6;3106;3099:22;3061:2;3151:9;3145:16;3170:28;3192:5;3170:28;:::i;3233:190::-;3292:6;3345:2;3333:9;3324:7;3320:23;3316:32;3313:2;;;3366:6;3358;3351:22;3313:2;-1:-1:-1;3394:23:1;;3303:120;-1:-1:-1;3303:120:1:o;3428:194::-;3498:6;3551:2;3539:9;3530:7;3526:23;3522:32;3519:2;;;3572:6;3564;3557:22;3519:2;-1:-1:-1;3600:16:1;;3509:113;-1:-1:-1;3509:113:1:o;3627:255::-;3706:6;3714;3767:2;3755:9;3746:7;3742:23;3738:32;3735:2;;;3788:6;3780;3773:22;3735:2;-1:-1:-1;;3816:16:1;;3872:2;3857:18;;;3851:25;3816:16;;3851:25;;-1:-1:-1;3725:157:1:o;3887:316::-;3975:6;3983;3991;4044:2;4032:9;4023:7;4019:23;4015:32;4012:2;;;4065:6;4057;4050:22;4012:2;4099:9;4093:16;4083:26;;4149:2;4138:9;4134:18;4128:25;4118:35;;4193:2;4182:9;4178:18;4172:25;4162:35;;4002:201;;;;;:::o;6749:351::-;6951:2;6933:21;;;6990:2;6970:18;;;6963:30;7029:29;7024:2;7009:18;;7002:57;7091:2;7076:18;;6923:177::o;7105:356::-;7307:2;7289:21;;;7326:18;;;7319:30;7385:34;7380:2;7365:18;;7358:62;7452:2;7437:18;;7279:182::o;8256:975::-;8510:4;8558:3;8547:9;8543:19;8589:6;8578:9;8571:25;8615:2;8653:6;8648:2;8637:9;8633:18;8626:34;8696:3;8691:2;8680:9;8676:18;8669:31;8720:6;8755;8749:13;8786:6;8778;8771:22;8824:3;8813:9;8809:19;8802:26;;8863:2;8855:6;8851:15;8837:29;;8884:4;8897:195;8911:6;8908:1;8905:13;8897:195;;;8976:13;;-1:-1:-1;;;;;8972:39:1;8960:52;;9067:15;;;;9032:12;;;;9008:1;8926:9;8897:195;;;-1:-1:-1;;;;;;;9148:32:1;;;;9143:2;9128:18;;9121:60;-1:-1:-1;;;9212:3:1;9197:19;9190:35;9109:3;8519:712;-1:-1:-1;;;8519:712:1:o;9236:128::-;9276:3;9307:1;9303:6;9300:1;9297:13;9294:2;;;9313:18;;:::i;:::-;-1:-1:-1;9349:9:1;;9284:80::o;9369:217::-;9409:1;9435;9425:2;;-1:-1:-1;;;9460:31:1;;9514:4;9511:1;9504:15;9542:4;9467:1;9532:15;9425:2;-1:-1:-1;9571:9:1;;9415:171::o;9591:125::-;9631:4;9659:1;9656;9653:8;9650:2;;;9664:18;;:::i;:::-;-1:-1:-1;9701:9:1;;9640:76::o;9721:127::-;9782:10;9777:3;9773:20;9770:1;9763:31;9813:4;9810:1;9803:15;9837:4;9834:1;9827:15;9853:127;9914:10;9909:3;9905:20;9902:1;9895:31;9945:4;9942:1;9935:15;9969:4;9966:1;9959:15;9985:131;-1:-1:-1;;;;;10060:31:1;;10050:42;;10040:2;;10106:1;10103;10096:12;10121:118;10207:5;10200:13;10193:21;10186:5;10183:32;10173:2;;10229:1;10226;10219:12
Swarm Source
ipfs://0d6b6f46f153cb192091c2b56469708106d577a04d454aa616c420a6e7e77811
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.