Overview
S Balance
S Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 7 from a total of 7 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
User Emergency W... | 9915016 | 18 hrs ago | IN | 0 S | 0.00343068 | ||||
Emergency Withdr... | 9914952 | 18 hrs ago | IN | 0 S | 0.0109578 | ||||
Withdraw | 9914840 | 18 hrs ago | IN | 0 S | 0.00564251 | ||||
Take All Funds | 9914759 | 18 hrs ago | IN | 0 S | 0.00291208 | ||||
Compound | 9913046 | 18 hrs ago | IN | 0 S | 0.03185612 | ||||
Add Funds | 9912931 | 18 hrs ago | IN | 30 S | 0.0013528 | ||||
Deposit | 9910915 | 18 hrs ago | IN | 0 S | 0.01816787 |
Loading...
Loading
Contract Name:
Vault
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity)
/** *Submitted for verification at SonicScan.org on 2025-02-24 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.13; abstract contract ReentrancyGuard { uint256 private constant NOT_ENTERED = 1; uint256 private constant ENTERED = 2; uint256 private _status; error ReentrancyGuardReentrantCall(); constructor() { _status = NOT_ENTERED; } modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } receive() external payable {} fallback() external payable {} function _nonReentrantBefore() private { if (_status == ENTERED) { revert ReentrancyGuardReentrantCall(); } _status = ENTERED; } function _nonReentrantAfter() private { _status = NOT_ENTERED; } function _reentrancyGuardEntered() internal view returns (bool) { return _status == ENTERED; } } contract Vault is ReentrancyGuard { ISnakePool public pool; IRouter public router; IOracle public gsnakeOracle; IERC20 public token0; IERC20 public token1; IERC20 public stakeToken; IERC20 public rewardToken; IERC20 public wrappedSonic; address private treasury; address private owner; bool public active = true; bool public emergencyWithdrawn = false; uint256 public depositFee = 2; uint256 public vaultFee; uint256 private lpPerTicket; uint256 public totalTickets; uint256 public compoundedAt; uint256 public snakePoolId; mapping(address => uint256) public userTickets; // Number of tickets per user event Deposit(address indexed user, uint256 amount, uint256 tickets); event Withdraw(address indexed user, uint256 amount); event Compound(uint256 rewardAmount, uint256 lpAmount); event ActiveStatusChanged(bool newStatus); constructor( address _treasury, uint256 _vaultFee, address _pool, address _router, address _gsnakeOracle, IERC20 _stakeToken, IERC20 _rewardToken, IERC20 _token0, IERC20 _token1, uint256 _snakePoolId ) { treasury = _treasury; vaultFee = _vaultFee; pool = ISnakePool(_pool); router = IRouter(_router); gsnakeOracle = IOracle(_gsnakeOracle); stakeToken = _stakeToken; rewardToken = _rewardToken; owner = msg.sender; lpPerTicket = 1e18; token0 = _token0; token1 = _token1; wrappedSonic = IERC20(0x039e2fB66102314Ce7b64Ce5Ce3E5183bc94aD38); snakePoolId = _snakePoolId; require(_vaultFee <= 100, "Invalid fee distribution"); rewardToken.approve(address(router), type(uint256).max); token0.approve(address(router), type(uint256).max); token1.approve(address(router), type(uint256).max); stakeToken.approve(address(pool), type(uint256).max); } modifier whenActive() { require(active, "Vault is not active"); _; } modifier onlyOwner() { require(msg.sender == owner, "Not the owner"); _; } function toggleActive() external onlyOwner { active = !active; emit ActiveStatusChanged(active); } function _swapRewardToSonic(uint256 rewardAmountIn) internal returns (uint256 sonicReceived) { IRouter.route[] memory path = new IRouter.route[](1); path[0] = IRouter.route(address(rewardToken), address(wrappedSonic), false); uint[] memory amounts = router.swapExactTokensForTokens( rewardAmountIn, 1, path, address(this), block.timestamp ); uint256 wrappedSonicReceived = amounts[amounts.length - 1]; IWETH(address(wrappedSonic)).withdraw(wrappedSonicReceived); sonicReceived = wrappedSonicReceived; } function _harvest() internal returns (uint256) { require(address(this).balance > 0, "No funds to harvest"); require(pool.pendingShareAndPendingRewards(snakePoolId, address(this)) > pool.minClaimThreshold(), "No rewards to harvest"); uint256 balanceBefore = address(this).balance; pool.harvest{value: balanceBefore}(snakePoolId); uint256 balanceAfter = address(this).balance; return balanceBefore - balanceAfter; } function _getRewards() internal returns (uint256 feePaid, uint256 rewards) { uint256 amountSonicToPay = _harvest(); feePaid = amountSonicToPay; rewards = rewardToken.balanceOf(address(this)); } function _swapToken0ForToken1(uint256 amount) internal returns (uint256 token1Received) { require(amount > 0, "No token0 to swap"); IRouter.route[] memory path = new IRouter.route[](1); path[0] = IRouter.route(address(token0), address(token1), true); router.swapExactTokensForTokens( amount, 1, path, address(this), block.timestamp ); token1Received = token1.balanceOf(address(this)); } function _swapToken1ForToken0(uint256 amount) internal returns (uint256 token0Received) { require(amount > 0, "No token1 to swap"); IRouter.route[] memory path = new IRouter.route[](1); path[0] = IRouter.route(address(token1), address(token0), true); router.swapExactTokensForTokens( amount, 1, path, address(this), block.timestamp ); token0Received = token0.balanceOf(address(this)); } function _swapLPToToken0(uint256 rewardAmount) internal returns (uint256) { require(rewardAmount > 0, "No token to swap"); IRouter.route[] memory path = new IRouter.route[](1); path[0] = IRouter.route(address(rewardToken), address(token0), false); router.swapExactTokensForTokens( rewardAmount, 1, path, address(this), block.timestamp ); return token0.balanceOf(address(this)); } function _swapLPToToken1(uint256 rewardAmount) internal returns (uint256) { require(rewardAmount > 0, "No token to swap"); IRouter.route[] memory path = new IRouter.route[](2); path[0] = IRouter.route(address(rewardToken), address(token0), false); path[1] = IRouter.route(address(token0), address(token1), true); router.swapExactTokensForTokens( rewardAmount, 1, path, address(this), block.timestamp ); return token1.balanceOf(address(this)); } function _addLiquidity() internal returns (uint256) { uint256 token0Balance = IERC20(token0).balanceOf(address(this)); uint256 token1Balance = IERC20(token1).balanceOf(address(this)); // add liquidity require(token0Balance > 0, "Insufficient balance for Token0 to provide liquidity"); require(token1Balance > 0, "Insufficient balance for Token1 to provide liquidity"); router.addLiquidity( address(token0), address(token1), true, token0Balance, token1Balance, 1, 1, address(this), block.timestamp ); return IERC20(stakeToken).balanceOf(address(this)); } function _recoverSonicFee(uint256 feePaid) internal returns (uint256, uint256) { uint256 requiredSonic = (feePaid * 150) / 100; IRouter.route[] memory path = new IRouter.route[](1); path[0] = IRouter.route(address(rewardToken), address(wrappedSonic), false); uint256[] memory amountsIn = router.getAmountsIn(requiredSonic, path); uint256 rewardTokensForSonic = amountsIn[0]; uint256 sonicReceived = _swapRewardToSonic(rewardTokensForSonic); require(sonicReceived >= requiredSonic, "Insufficient sonic received from swap"); return (sonicReceived, rewardTokensForSonic); } function addLeftoverLiquidity() external onlyOwner nonReentrant { uint256 token0Bal = token0.balanceOf(address(this)); uint256 token1Bal = token1.balanceOf(address(this)); require(token0Bal > 0 || token1Bal > 0, "No leftovers to add liquidity"); (uint256 optimalToken0, uint256 optimalToken1, ) = router.quoteAddLiquidity( address(token0), address(token1), true, token0Bal, token1Bal ); if (token0Bal > optimalToken0) { uint256 excessToken0 = token0Bal - optimalToken0; _swapToken0ForToken1(excessToken0); } else if (token1Bal > optimalToken1) { uint256 excessToken1 = token1Bal - optimalToken1; _swapToken1ForToken0(excessToken1); } uint256 stakeAmount = _addLiquidity(); require(stakeAmount > 0, "No LP tokens received"); if (stakeToken.balanceOf(address(this)) > 0) { _innerDeposit(); } } function _updateVault() internal returns (uint256) { uint256 totalLp = totalDeposits(); uint256 netRewardTokens = 0; if (totalTickets > 0 && totalLp > 0) { uint256 rewardAmount = 0; uint256 feePaid = 0; if (pool.pendingShareAndPendingRewards(snakePoolId, address(this)) > pool.minClaimThreshold()) { (feePaid, rewardAmount) = _getRewards(); } if (rewardAmount > 0) { (, uint256 rewardTokensForSonic) = _recoverSonicFee(feePaid); uint256 remainingReward = rewardAmount - rewardTokensForSonic; uint256 compoundAmount = (remainingReward * vaultFee) / 1000; rewardToken.transfer(treasury, compoundAmount); remainingReward = remainingReward - compoundAmount; (uint112 reserve0, uint112 reserve1, ) = IPair(address(stakeToken)).getReserves(); uint256 rewardForToken0 = (remainingReward * uint256(reserve0)) / (uint256(reserve0) + uint256(reserve1)); uint256 rewardForToken1 = remainingReward - rewardForToken0; uint256 token0Amount = _swapLPToToken0(rewardForToken0); uint256 token1Amount = _swapLPToToken1(rewardForToken1); (uint256 optimalToken0, uint256 optimalToken1, ) = router.quoteAddLiquidity( address(token0), address(token1), true, token0Amount, token1Amount ); if (token0Amount > optimalToken0) { uint256 excessToken0 = token0Amount - optimalToken0; _swapToken0ForToken1(excessToken0); } else if (token1Amount > optimalToken1) { uint256 excessToken1 = token1Amount - optimalToken1; _swapToken1ForToken0(excessToken1); } uint256 stakeAmount = _addLiquidity(); require(stakeAmount > 0, "No LP tokens received"); _innerDeposit(); compoundedAt = block.timestamp; netRewardTokens = remainingReward; } } return netRewardTokens; } function _innerDeposit() internal returns (uint256) { uint256 lpAmount = stakeToken.balanceOf(address(this)); if (lpAmount > 0) { pool.deposit(snakePoolId, lpAmount); uint256 totalDeps = totalDeposits(); lpPerTicket = (totalDeps * 1e18) / totalTickets; } return lpPerTicket; } function _withdraw(uint256 amount) internal { if (totalTickets != 0) { _updateVault(); } uint256 tickets = userTickets[msg.sender]; require(tickets > 0, "No tickets to withdraw"); uint256 userLp = (tickets * lpPerTicket) / 1e18; require(userLp >= amount, "Insufficient balance"); uint256 withdrawTickets = (amount * 1e18) / lpPerTicket; userTickets[msg.sender] -= withdrawTickets; totalTickets -= withdrawTickets; pool.withdraw(snakePoolId, amount); stakeToken.transfer(msg.sender, amount); emit Withdraw(msg.sender, amount); } function deposit(uint256 amount) external nonReentrant whenActive { if (totalTickets != 0) { _updateVault(); } stakeToken.transferFrom(msg.sender, address(this), amount); uint256 fee = (amount * depositFee) / 1000; stakeToken.transfer(treasury, fee); amount -= fee; (uint256 amountBefore,) = pool.userInfo(snakePoolId, address(this)); pool.deposit(snakePoolId, amount); (uint256 amountAfter ,) = pool.userInfo(snakePoolId, address(this)); uint256 depositedAmount = amountAfter - amountBefore; uint256 tickets = (depositedAmount * 1e18) / lpPerTicket; userTickets[msg.sender] += tickets; totalTickets += tickets; emit Deposit(msg.sender, depositedAmount, tickets); } function withdraw(uint256 amount) external nonReentrant { require(!emergencyWithdrawn, "Use userEmergencyWithdraw instead"); _withdraw(amount); } function withdrawAll() external nonReentrant { require(!emergencyWithdrawn, "Use userEmergencyWithdraw instead"); uint256 tickets = userTickets[msg.sender]; uint256 userLp = (tickets * lpPerTicket) / 1e18; _withdraw(userLp); } function userEmergencyWithdraw() external nonReentrant { require(emergencyWithdrawn, "Emergency withdraw not enabled"); uint256 tickets = userTickets[msg.sender]; if (tickets == 0) return; uint256 userLp = (tickets * lpPerTicket) / 1e18; userTickets[msg.sender] = 0; totalTickets -= tickets; stakeToken.transfer(msg.sender, userLp); emit Withdraw(msg.sender, userLp); } function emergencyWithdraw() external onlyOwner nonReentrant { pool.emergencyWithdraw(snakePoolId); emergencyWithdrawn = true; active = false; emit ActiveStatusChanged(active); } function compound() external whenActive { uint256 rewards = _updateVault(); require(rewards > 0, "No rewards to compound"); emit Compound(rewardToken.balanceOf(address(this)), rewards); } function totalDeposits() public view returns (uint256) { (uint256 amount,) = pool.userInfo(snakePoolId, address(this)); return amount; } function lpForUser(address _user) external view returns (uint256) { uint256 tickets = userTickets[_user]; if (tickets == 0) return 0; uint256 _lpPerTicket = lpPerTicket; uint256 totalLp = totalDeposits(); if (totalTickets > 0 && totalLp > 0) { uint256 rewardAmount = rewardToken.balanceOf(address(this)); if (rewardAmount > 0) { _lpPerTicket += (rewardAmount * 1e18) / totalTickets; } } return (tickets * _lpPerTicket) / 1e18; } function addFunds() external payable onlyOwner { require(msg.value > 0, "No funds sent"); } function takeFunds(uint256 amount) external onlyOwner nonReentrant { require(address(this).balance >= amount, "Insufficient balance"); (bool sent, ) = payable(owner).call{value: amount}(""); require(sent, "Transfer failed"); } function takeAllFunds() external onlyOwner nonReentrant { uint256 balance = address(this).balance; require(balance > 0, "No funds available"); (bool sent, ) = payable(owner).call{value: balance}(""); require(sent, "Transfer failed"); } } interface ISnakePool { function deposit(uint _pid, uint _amount) external; function withdraw(uint _pid, uint _amount) external; function emergencyWithdraw(uint _pid) external; function harvest(uint _pid) payable external; function harvestAll() payable external; function userInfo(uint256 _pid, address _user) external view returns (uint256 amount, uint256 rewardDebt); function poolInfo(uint256 _pid) external view returns (ISnakePool.PoolInfo memory); function pendingRewards(uint256 _pid, address _user) external view returns (uint256); function pendingShareAndPendingRewards(uint _pid, address _user) external view returns (uint256); function minClaimThreshold() external view returns (uint256); function pegStabilityModuleFeeEnabled() external view returns (bool); function pegStabilityModuleFee() external view returns (uint256); enum GaugeDex { NONE, SHADOW, SWAPX } struct GaugeInfo { bool isGauge; // If this is a gauge address gauge; // The gauge GaugeDex gaugeDex; // Dex of the gauge } struct PoolInfo { IERC20 token; // Address of LP token contract. uint256 depFee; // deposit fee that is applied to created pool. uint256 allocPoint; // How many allocation points assigned to this pool. GSNAKEs to distribute per block. uint256 lastRewardTime; // Last time that GSNAKEs distribution occurs. uint256 accGsnakePerShare; // Accumulated GSNAKEs per share, times 1e18. See below. bool isStarted; // if lastRewardTime has passed GaugeInfo gaugeInfo; // Gauge info (does this pool have a gauge and where is it) uint256 poolGsnakePerSec; // rewards per second for pool (acts as allocPoint) } } interface IOracle { function update() external; function consult(address _token, uint256 _amountIn) external view returns (uint256 amountOut); function twap(address _token, uint256 _amountIn) external view returns (uint256 _amountOut); } interface IRouter { struct route { address from; address to; bool stable; } function addLiquidity( address tokenA, address tokenB, bool stable, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns ( uint amountA, uint amountB, uint liquidity ); function getAmountsIn( uint256 amountOut, route[] memory routes ) external returns ( uint256[] memory amounts ); function quoteAddLiquidity( address tokenA, address tokenB, bool stable, uint256 amountADesired, uint256 amountBDesired ) external view returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, route[] calldata routes, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, route[] memory routes, address to, uint256 deadline ) external; } interface IERC20 { event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, 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 from, address to, uint256 amount ) external returns (bool); } interface IWETH is IERC20 { function withdraw(uint256 wad) external; } interface IPair { function getReserves() external view returns ( uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast ); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_treasury","type":"address"},{"internalType":"uint256","name":"_vaultFee","type":"uint256"},{"internalType":"address","name":"_pool","type":"address"},{"internalType":"address","name":"_router","type":"address"},{"internalType":"address","name":"_gsnakeOracle","type":"address"},{"internalType":"contract IERC20","name":"_stakeToken","type":"address"},{"internalType":"contract IERC20","name":"_rewardToken","type":"address"},{"internalType":"contract IERC20","name":"_token0","type":"address"},{"internalType":"contract IERC20","name":"_token1","type":"address"},{"internalType":"uint256","name":"_snakePoolId","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"newStatus","type":"bool"}],"name":"ActiveStatusChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"rewardAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lpAmount","type":"uint256"}],"name":"Compound","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tickets","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"active","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addFunds","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"addLeftoverLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"compound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"compoundedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depositFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emergencyWithdrawn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gsnakeOracle","outputs":[{"internalType":"contract IOracle","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"lpForUser","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool","outputs":[{"internalType":"contract ISnakePool","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"snakePoolId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakeToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"takeAllFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"takeFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTickets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"userEmergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userTickets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vaultFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wrappedSonic","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526001600a60146101000a81548160ff0219169083151502179055506000600a60156101000a81548160ff0219169083151502179055506002600b553480156200004c57600080fd5b5060405162005f3a38038062005f3a833981810160405281019062000072919062000816565b600160008190555089600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555088600c8190555087600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555086600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550670de0b6b3a7640000600d8190555082600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073039e2fb66102314ce7b64ce5ce3e5183bc94ad38600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060108190555060648911156200037c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000373906200096d565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016200041d929190620009b1565b6020604051808303816000875af11580156200043d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000463919062000a1b565b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040162000505929190620009b1565b6020604051808303816000875af115801562000525573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200054b919062000a1b565b50600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401620005ed929190620009b1565b6020604051808303816000875af11580156200060d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000633919062000a1b565b50600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401620006d5929190620009b1565b6020604051808303816000875af1158015620006f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200071b919062000a1b565b505050505050505050505062000a4d565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200075e8262000731565b9050919050565b620007708162000751565b81146200077c57600080fd5b50565b600081519050620007908162000765565b92915050565b6000819050919050565b620007ab8162000796565b8114620007b757600080fd5b50565b600081519050620007cb81620007a0565b92915050565b6000620007de8262000751565b9050919050565b620007f081620007d1565b8114620007fc57600080fd5b50565b6000815190506200081081620007e5565b92915050565b6000806000806000806000806000806101408b8d0312156200083d576200083c6200072c565b5b60006200084d8d828e016200077f565b9a50506020620008608d828e01620007ba565b9950506040620008738d828e016200077f565b9850506060620008868d828e016200077f565b9750506080620008998d828e016200077f565b96505060a0620008ac8d828e01620007ff565b95505060c0620008bf8d828e01620007ff565b94505060e0620008d28d828e01620007ff565b935050610100620008e68d828e01620007ff565b925050610120620008fa8d828e01620007ba565b9150509295989b9194979a5092959850565b600082825260208201905092915050565b7f496e76616c69642066656520646973747269627574696f6e0000000000000000600082015250565b6000620009556018836200090c565b915062000962826200091d565b602082019050919050565b60006020820190508181036000830152620009888162000946565b9050919050565b6200099a8162000751565b82525050565b620009ab8162000796565b82525050565b6000604082019050620009c860008301856200098f565b620009d76020830184620009a0565b9392505050565b60008115159050919050565b620009f581620009de565b811462000a0157600080fd5b50565b60008151905062000a1581620009ea565b92915050565b60006020828403121562000a345762000a336200072c565b5b600062000a448482850162000a04565b91505092915050565b6154dd8062000a5d6000396000f3fe6080604052600436106101c65760003560e01c80637d882097116100f7578063d21220a711610095578063f69e204611610064578063f69e20461461059b578063f7c618c1146105b2578063f887ea40146105dd578063ff77cce414610608576101cd565b8063d21220a714610503578063db2e21bc1461052e578063dd11247e14610545578063e28701ee14610570576101cd565b8063a26759cb116100d1578063a26759cb1461048e578063a955c7a714610498578063b6b55f25146104af578063ce75d565146104d8576101cd565b80637d8820971461040f57806380017f4e1461043a578063853828b614610477576101cd565b806329c68dc111610164578063515464c51161013e578063515464c51461036557806351ed6a301461039057806367a52793146103bb5780636b527c0c146103e6576101cd565b806329c68dc1146102e85780632beddd35146102ff5780632e1a7d4d1461033c576101cd565b80630dfe1681116101a05780630dfe1681146102505780630f0324501461027b57806316f0115b146102925780632760f89b146102bd576101cd565b80630169050d146101cf57806301ac145b146101fa57806302fb0c5e14610225576101cd565b366101cd57005b005b3480156101db57600080fd5b506101e461061f565b6040516101f19190613ffa565b60405180910390f35b34801561020657600080fd5b5061020f610625565b60405161021c9190613ffa565b60405180910390f35b34801561023157600080fd5b5061023a61062b565b6040516102479190614030565b60405180910390f35b34801561025c57600080fd5b5061026561063e565b60405161027291906140ca565b60405180910390f35b34801561028757600080fd5b50610290610664565b005b34801561029e57600080fd5b506102a761088c565b6040516102b49190614106565b60405180910390f35b3480156102c957600080fd5b506102d26108b2565b6040516102df9190614142565b60405180910390f35b3480156102f457600080fd5b506102fd6108d8565b005b34801561030b57600080fd5b50610326600480360381019061032191906141af565b6109da565b6040516103339190613ffa565b60405180910390f35b34801561034857600080fd5b50610363600480360381019061035e9190614208565b610b5f565b005b34801561037157600080fd5b5061037a610bcb565b6040516103879190613ffa565b60405180910390f35b34801561039c57600080fd5b506103a5610bd1565b6040516103b291906140ca565b60405180910390f35b3480156103c757600080fd5b506103d0610bf7565b6040516103dd9190613ffa565b60405180910390f35b3480156103f257600080fd5b5061040d60048036038101906104089190614208565b610bfd565b005b34801561041b57600080fd5b50610424610db2565b6040516104319190613ffa565b60405180910390f35b34801561044657600080fd5b50610461600480360381019061045c91906141af565b610e5e565b60405161046e9190613ffa565b60405180910390f35b34801561048357600080fd5b5061048c610e76565b005b610496610f4c565b005b3480156104a457600080fd5b506104ad611021565b005b3480156104bb57600080fd5b506104d660048036038101906104d19190614208565b611491565b005b3480156104e457600080fd5b506104ed61196c565b6040516104fa91906140ca565b60405180910390f35b34801561050f57600080fd5b50610518611992565b60405161052591906140ca565b60405180910390f35b34801561053a57600080fd5b506105436119b8565b005b34801561055157600080fd5b5061055a611b65565b6040516105679190613ffa565b60405180910390f35b34801561057c57600080fd5b50610585611b6b565b6040516105929190614030565b60405180910390f35b3480156105a757600080fd5b506105b0611b7e565b005b3480156105be57600080fd5b506105c7611cf3565b6040516105d491906140ca565b60405180910390f35b3480156105e957600080fd5b506105f2611d19565b6040516105ff9190614256565b60405180910390f35b34801561061457600080fd5b5061061d611d3f565b005b600f5481565b600c5481565b600a60149054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61066c611ef9565b600a60159054906101000a900460ff166106bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b2906142ce565b60405180910390fd5b6000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000810361070d5750610882565b6000670de0b6b3a7640000600d5483610726919061431d565b61073091906143a6565b90506000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600e600082825461078991906143d7565b92505081905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016107ed92919061441a565b6020604051808303816000875af115801561080c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610830919061446f565b503373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364826040516108779190613ffa565b60405180910390a250505b61088a611f3f565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095f906144e8565b60405180910390fd5b600a60149054906101000a900460ff1615600a60146101000a81548160ff0219169083151502179055507fb525469ef855bc548f43bc65988e210c34addc78e267a5ab261ce1a2bae05f11600a60149054906101000a900460ff166040516109d09190614030565b60405180910390a1565b600080601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008103610a31576000915050610b5a565b6000600d5490506000610a42610db2565b90506000600e54118015610a565750600081115b15610b35576000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610ab89190614508565b602060405180830381865afa158015610ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af99190614538565b90506000811115610b3357600e54670de0b6b3a764000082610b1b919061431d565b610b2591906143a6565b83610b309190614565565b92505b505b670de0b6b3a76400008284610b4a919061431d565b610b5491906143a6565b93505050505b919050565b610b67611ef9565b600a60159054906101000a900460ff1615610bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bae9061462d565b60405180910390fd5b610bc081611f49565b610bc8611f3f565b50565b60105481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c84906144e8565b60405180910390fd5b610c95611ef9565b80471015610cd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccf90614699565b60405180910390fd5b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610d20906146ea565b60006040518083038185875af1925050503d8060008114610d5d576040519150601f19603f3d011682016040523d82523d6000602084013e610d62565b606091505b5050905080610da6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9d9061474b565b60405180910390fd5b50610daf611f3f565b50565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166393f1a40b601054306040518363ffffffff1660e01b8152600401610e1492919061476b565b6040805180830381865afa158015610e30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e549190614794565b5090508091505090565b60116020528060005260406000206000915090505481565b610e7e611ef9565b600a60159054906101000a900460ff1615610ece576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec59061462d565b60405180910390fd5b6000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000670de0b6b3a7640000600d5483610f2b919061431d565b610f3591906143a6565b9050610f4081611f49565b5050610f4a611f3f565b565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd3906144e8565b60405180910390fd5b6000341161101f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101690614820565b60405180910390fd5b565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a8906144e8565b60405180910390fd5b6110b9611ef9565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111169190614508565b602060405180830381865afa158015611133573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111579190614538565b90506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111b69190614508565b602060405180830381865afa1580156111d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f79190614538565b905060008211806112085750600081115b611247576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123e9061488c565b60405180910390fd5b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166398a0fb3c600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600188886040518663ffffffff1660e01b81526004016112f29594939291906148ac565b606060405180830381865afa15801561130f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133391906148ff565b509150915081841115611360576000828561134e91906143d7565b905061135981612266565b5050611385565b80831115611384576000818461137691906143d7565b905061138181612501565b50505b5b600061138f61279c565b9050600081116113d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cb9061499e565b60405180910390fd5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114319190614508565b602060405180830381865afa15801561144e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114729190614538565b111561148257611480612afd565b505b505050505061148f611f3f565b565b611499611ef9565b600a60149054906101000a900460ff166114e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114df90614a0a565b60405180910390fd5b6000600e54146114fc576114fa612c76565b505b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161155b93929190614a2a565b6020604051808303816000875af115801561157a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159e919061446f565b5060006103e8600b54836115b2919061431d565b6115bc91906143a6565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161163d92919061441a565b6020604051808303816000875af115801561165c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611680919061446f565b50808261168d91906143d7565b91506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166393f1a40b601054306040518363ffffffff1660e01b81526004016116f092919061476b565b6040805180830381865afa15801561170c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117309190614794565b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2bbb158601054856040518363ffffffff1660e01b8152600401611792929190614a61565b600060405180830381600087803b1580156117ac57600080fd5b505af11580156117c0573d6000803e3d6000fd5b505050506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166393f1a40b601054306040518363ffffffff1660e01b815260040161182592919061476b565b6040805180830381865afa158015611841573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118659190614794565b5090506000828261187691906143d7565b90506000600d54670de0b6b3a764000083611891919061431d565b61189b91906143a6565b905080601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118ec9190614565565b9250508190555080600e60008282546119059190614565565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a158383604051611954929190614a61565b60405180910390a25050505050611969611f3f565b50565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3f906144e8565b60405180910390fd5b611a50611ef9565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635312ea8e6010546040518263ffffffff1660e01b8152600401611aad9190613ffa565b600060405180830381600087803b158015611ac757600080fd5b505af1158015611adb573d6000803e3d6000fd5b505050506001600a60156101000a81548160ff0219169083151502179055506000600a60146101000a81548160ff0219169083151502179055507fb525469ef855bc548f43bc65988e210c34addc78e267a5ab261ce1a2bae05f11600a60149054906101000a900460ff16604051611b539190614030565b60405180910390a1611b63611f3f565b565b600e5481565b600a60159054906101000a900460ff1681565b600a60149054906101000a900460ff16611bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc490614a0a565b60405180910390fd5b6000611bd7612c76565b905060008111611c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1390614ad6565b60405180910390fd5b7fe3c48e43a3cc80f4a0c194845bdd6091fa19b9bb7d22e515c21e9f177e2e22ae600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611c989190614508565b602060405180830381865afa158015611cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd99190614538565b82604051611ce8929190614a61565b60405180910390a150565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc6906144e8565b60405180910390fd5b611dd7611ef9565b600047905060008111611e1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1690614b42565b60405180910390fd5b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611e67906146ea565b60006040518083038185875af1925050503d8060008114611ea4576040519150601f19603f3d011682016040523d82523d6000602084013e611ea9565b606091505b5050905080611eed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee49061474b565b60405180910390fd5b5050611ef7611f3f565b565b600260005403611f35576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600081905550565b6001600081905550565b6000600e5414611f5d57611f5b612c76565b505b6000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111611fe4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fdb90614bae565b60405180910390fd5b6000670de0b6b3a7640000600d5483611ffd919061431d565b61200791906143a6565b90508281101561204c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204390614699565b60405180910390fd5b6000600d54670de0b6b3a764000085612065919061431d565b61206f91906143a6565b905080601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120c091906143d7565b9250508190555080600e60008282546120d991906143d7565b92505081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663441a3e70601054866040518363ffffffff1660e01b815260040161213f929190614a61565b600060405180830381600087803b15801561215957600080fd5b505af115801561216d573d6000803e3d6000fd5b50505050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33866040518363ffffffff1660e01b81526004016121ce92919061441a565b6020604051808303816000875af11580156121ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612211919061446f565b503373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364856040516122589190613ffa565b60405180910390a250505050565b60008082116122aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a190614c1a565b60405180910390fd5b6000600167ffffffffffffffff8111156122c7576122c6614c3a565b5b60405190808252806020026020018201604052801561230057816020015b6122ed613f92565b8152602001906001900390816122e55790505b5090506040518060600160405280600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160011515815250816000815181106123a5576123a4614c69565b5b6020026020010181905250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f41766d88460018430426040518663ffffffff1660e01b8152600401612414959493929190614de2565b6000604051808303816000875af1158015612433573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061245c9190614f66565b50600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016124b89190614508565b602060405180830381865afa1580156124d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f99190614538565b915050919050565b6000808211612545576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253c90614ffb565b60405180910390fd5b6000600167ffffffffffffffff81111561256257612561614c3a565b5b60405190808252806020026020018201604052801561259b57816020015b612588613f92565b8152602001906001900390816125805790505b5090506040518060600160405280600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160011515815250816000815181106126405761263f614c69565b5b6020026020010181905250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f41766d88460018430426040518663ffffffff1660e01b81526004016126af959493929190614de2565b6000604051808303816000875af11580156126ce573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906126f79190614f66565b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016127539190614508565b602060405180830381865afa158015612770573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127949190614538565b915050919050565b600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016127fa9190614508565b602060405180830381865afa158015612817573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061283b9190614538565b90506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161289a9190614508565b602060405180830381865afa1580156128b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128db9190614538565b905060008211612920576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129179061508d565b60405180910390fd5b60008111612963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295a9061511f565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635a47ddc3600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001868660018030426040518a63ffffffff1660e01b8152600401612a149998979695949392919061513f565b6060604051808303816000875af1158015612a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a5791906148ff565b505050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612ab59190614508565b602060405180830381865afa158015612ad2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af69190614538565b9250505090565b600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612b5b9190614508565b602060405180830381865afa158015612b78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b9c9190614538565b90506000811115612c6d57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2bbb158601054836040518363ffffffff1660e01b8152600401612c06929190614a61565b600060405180830381600087803b158015612c2057600080fd5b505af1158015612c34573d6000803e3d6000fd5b505050506000612c42610db2565b9050600e54670de0b6b3a764000082612c5b919061431d565b612c6591906143a6565b600d81905550505b600d5491505090565b600080612c81610db2565b9050600080600e54118015612c965750600082115b156131c657600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633695dad16040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d2f9190614538565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636b2681c5601054306040518363ffffffff1660e01b8152600401612d8e92919061476b565b602060405180830381865afa158015612dab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dcf9190614538565b1115612de657612ddd6131ce565b80935081925050505b60008211156131c3576000612dfa82613283565b91505060008184612e0b91906143d7565b905060006103e8600c5483612e20919061431d565b612e2a91906143a6565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401612eab92919061441a565b6020604051808303816000875af1158015612eca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eee919061446f565b508082612efb91906143d7565b9150600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612f6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f91919061524e565b50915091506000816dffffffffffffffffffffffffffff16836dffffffffffffffffffffffffffff16612fc49190614565565b836dffffffffffffffffffffffffffff1686612fe0919061431d565b612fea91906143a6565b905060008186612ffa91906143d7565b90506000613007836134d2565b905060006130148361376d565b9050600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166398a0fb3c600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600188886040518663ffffffff1660e01b81526004016130c19594939291906148ac565b606060405180830381865afa1580156130de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310291906148ff565b50915091508184111561312f576000828561311d91906143d7565b905061312881612266565b5050613154565b80831115613153576000818461314591906143d7565b905061315081612501565b50505b5b600061315e61279c565b9050600081116131a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319a9061499e565b60405180910390fd5b6131ab612afd565b5042600f819055508a9e505050505050505050505050505b50505b809250505090565b60008060006131db613ab5565b9050809250600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161323b9190614508565b602060405180830381865afa158015613258573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061327c9190614538565b9150509091565b60008060006064609685613297919061431d565b6132a191906143a6565b90506000600167ffffffffffffffff8111156132c0576132bf614c3a565b5b6040519080825280602002602001820160405280156132f957816020015b6132e6613f92565b8152602001906001900390816132de5790505b5090506040518060600160405280600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600015158152508160008151811061339e5761339d614c69565b5b60200260200101819052506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d5c54e3384846040518363ffffffff1660e01b81526004016134089291906152a1565b6000604051808303816000875af1158015613427573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906134509190614f66565b905060008160008151811061346857613467614c69565b5b60200260200101519050600061347d82613d17565b9050848110156134c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134b990615343565b60405180910390fd5b8082965096505050505050915091565b6000808211613516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161350d906153af565b60405180910390fd5b6000600167ffffffffffffffff81111561353357613532614c3a565b5b60405190808252806020026020018201604052801561356c57816020015b613559613f92565b8152602001906001900390816135515790505b5090506040518060600160405280600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600015158152508160008151811061361157613610614c69565b5b6020026020010181905250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f41766d88460018430426040518663ffffffff1660e01b8152600401613680959493929190614de2565b6000604051808303816000875af115801561369f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906136c89190614f66565b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016137249190614508565b602060405180830381865afa158015613741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137659190614538565b915050919050565b60008082116137b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137a8906153af565b60405180910390fd5b6000600267ffffffffffffffff8111156137ce576137cd614c3a565b5b60405190808252806020026020018201604052801561380757816020015b6137f4613f92565b8152602001906001900390816137ec5790505b5090506040518060600160405280600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250816000815181106138ac576138ab614c69565b5b60200260200101819052506040518060600160405280600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600115158152508160018151811061395957613958614c69565b5b6020026020010181905250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f41766d88460018430426040518663ffffffff1660e01b81526004016139c8959493929190614de2565b6000604051808303816000875af11580156139e7573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190613a109190614f66565b50600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613a6c9190614508565b602060405180830381865afa158015613a89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aad9190614538565b915050919050565b6000804711613af9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613af09061541b565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633695dad16040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b8a9190614538565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636b2681c5601054306040518363ffffffff1660e01b8152600401613be992919061476b565b602060405180830381865afa158015613c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c2a9190614538565b11613c6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c6190615487565b60405180910390fd5b6000479050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ddc63262826010546040518363ffffffff1660e01b8152600401613ccd9190613ffa565b6000604051808303818588803b158015613ce657600080fd5b505af1158015613cfa573d6000803e3d6000fd5b505050505060004790508082613d1091906143d7565b9250505090565b600080600167ffffffffffffffff811115613d3557613d34614c3a565b5b604051908082528060200260200182016040528015613d6e57816020015b613d5b613f92565b815260200190600190039081613d535790505b5090506040518060600160405280600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000151581525081600081518110613e1357613e12614c69565b5b60200260200101819052506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f41766d88560018530426040518663ffffffff1660e01b8152600401613e84959493929190614de2565b6000604051808303816000875af1158015613ea3573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190613ecc9190614f66565b905060008160018351613edf91906143d7565b81518110613ef057613eef614c69565b5b60200260200101519050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b8152600401613f559190613ffa565b600060405180830381600087803b158015613f6f57600080fd5b505af1158015613f83573d6000803e3d6000fd5b50505050809350505050919050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000151581525090565b6000819050919050565b613ff481613fe1565b82525050565b600060208201905061400f6000830184613feb565b92915050565b60008115159050919050565b61402a81614015565b82525050565b60006020820190506140456000830184614021565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061409061408b6140868461404b565b61406b565b61404b565b9050919050565b60006140a282614075565b9050919050565b60006140b482614097565b9050919050565b6140c4816140a9565b82525050565b60006020820190506140df60008301846140bb565b92915050565b60006140f082614097565b9050919050565b614100816140e5565b82525050565b600060208201905061411b60008301846140f7565b92915050565b600061412c82614097565b9050919050565b61413c81614121565b82525050565b60006020820190506141576000830184614133565b92915050565b6000604051905090565b600080fd5b600080fd5b600061417c8261404b565b9050919050565b61418c81614171565b811461419757600080fd5b50565b6000813590506141a981614183565b92915050565b6000602082840312156141c5576141c4614167565b5b60006141d38482850161419a565b91505092915050565b6141e581613fe1565b81146141f057600080fd5b50565b600081359050614202816141dc565b92915050565b60006020828403121561421e5761421d614167565b5b600061422c848285016141f3565b91505092915050565b600061424082614097565b9050919050565b61425081614235565b82525050565b600060208201905061426b6000830184614247565b92915050565b600082825260208201905092915050565b7f456d657267656e6379207769746864726177206e6f7420656e61626c65640000600082015250565b60006142b8601e83614271565b91506142c382614282565b602082019050919050565b600060208201905081810360008301526142e7816142ab565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061432882613fe1565b915061433383613fe1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561436c5761436b6142ee565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006143b182613fe1565b91506143bc83613fe1565b9250826143cc576143cb614377565b5b828204905092915050565b60006143e282613fe1565b91506143ed83613fe1565b925082821015614400576143ff6142ee565b5b828203905092915050565b61441481614171565b82525050565b600060408201905061442f600083018561440b565b61443c6020830184613feb565b9392505050565b61444c81614015565b811461445757600080fd5b50565b60008151905061446981614443565b92915050565b60006020828403121561448557614484614167565b5b60006144938482850161445a565b91505092915050565b7f4e6f7420746865206f776e657200000000000000000000000000000000000000600082015250565b60006144d2600d83614271565b91506144dd8261449c565b602082019050919050565b60006020820190508181036000830152614501816144c5565b9050919050565b600060208201905061451d600083018461440b565b92915050565b600081519050614532816141dc565b92915050565b60006020828403121561454e5761454d614167565b5b600061455c84828501614523565b91505092915050565b600061457082613fe1565b915061457b83613fe1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145b0576145af6142ee565b5b828201905092915050565b7f5573652075736572456d657267656e6379576974686472617720696e7374656160008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000614617602183614271565b9150614622826145bb565b604082019050919050565b600060208201905081810360008301526146468161460a565b9050919050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000614683601483614271565b915061468e8261464d565b602082019050919050565b600060208201905081810360008301526146b281614676565b9050919050565b600081905092915050565b50565b60006146d46000836146b9565b91506146df826146c4565b600082019050919050565b60006146f5826146c7565b9150819050919050565b7f5472616e73666572206661696c65640000000000000000000000000000000000600082015250565b6000614735600f83614271565b9150614740826146ff565b602082019050919050565b6000602082019050818103600083015261476481614728565b9050919050565b60006040820190506147806000830185613feb565b61478d602083018461440b565b9392505050565b600080604083850312156147ab576147aa614167565b5b60006147b985828601614523565b92505060206147ca85828601614523565b9150509250929050565b7f4e6f2066756e64732073656e7400000000000000000000000000000000000000600082015250565b600061480a600d83614271565b9150614815826147d4565b602082019050919050565b60006020820190508181036000830152614839816147fd565b9050919050565b7f4e6f206c6566746f7665727320746f20616464206c6971756964697479000000600082015250565b6000614876601d83614271565b915061488182614840565b602082019050919050565b600060208201905081810360008301526148a581614869565b9050919050565b600060a0820190506148c1600083018861440b565b6148ce602083018761440b565b6148db6040830186614021565b6148e86060830185613feb565b6148f56080830184613feb565b9695505050505050565b60008060006060848603121561491857614917614167565b5b600061492686828701614523565b935050602061493786828701614523565b925050604061494886828701614523565b9150509250925092565b7f4e6f204c5020746f6b656e732072656365697665640000000000000000000000600082015250565b6000614988601583614271565b915061499382614952565b602082019050919050565b600060208201905081810360008301526149b78161497b565b9050919050565b7f5661756c74206973206e6f742061637469766500000000000000000000000000600082015250565b60006149f4601383614271565b91506149ff826149be565b602082019050919050565b60006020820190508181036000830152614a23816149e7565b9050919050565b6000606082019050614a3f600083018661440b565b614a4c602083018561440b565b614a596040830184613feb565b949350505050565b6000604082019050614a766000830185613feb565b614a836020830184613feb565b9392505050565b7f4e6f207265776172647320746f20636f6d706f756e6400000000000000000000600082015250565b6000614ac0601683614271565b9150614acb82614a8a565b602082019050919050565b60006020820190508181036000830152614aef81614ab3565b9050919050565b7f4e6f2066756e647320617661696c61626c650000000000000000000000000000600082015250565b6000614b2c601283614271565b9150614b3782614af6565b602082019050919050565b60006020820190508181036000830152614b5b81614b1f565b9050919050565b7f4e6f207469636b65747320746f20776974686472617700000000000000000000600082015250565b6000614b98601683614271565b9150614ba382614b62565b602082019050919050565b60006020820190508181036000830152614bc781614b8b565b9050919050565b7f4e6f20746f6b656e3020746f2073776170000000000000000000000000000000600082015250565b6000614c04601183614271565b9150614c0f82614bce565b602082019050919050565b60006020820190508181036000830152614c3381614bf7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000614cbd614cb8614cb384614c98565b61406b565b613fe1565b9050919050565b614ccd81614ca2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614d0881614171565b82525050565b614d1781614015565b82525050565b606082016000820151614d336000850182614cff565b506020820151614d466020850182614cff565b506040820151614d596040850182614d0e565b50505050565b6000614d6b8383614d1d565b60608301905092915050565b6000602082019050919050565b6000614d8f82614cd3565b614d998185614cde565b9350614da483614cef565b8060005b83811015614dd5578151614dbc8882614d5f565b9750614dc783614d77565b925050600181019050614da8565b5085935050505092915050565b600060a082019050614df76000830188613feb565b614e046020830187614cc4565b8181036040830152614e168186614d84565b9050614e25606083018561440b565b614e326080830184613feb565b9695505050505050565b600080fd5b6000601f19601f8301169050919050565b614e5b82614e41565b810181811067ffffffffffffffff82111715614e7a57614e79614c3a565b5b80604052505050565b6000614e8d61415d565b9050614e998282614e52565b919050565b600067ffffffffffffffff821115614eb957614eb8614c3a565b5b602082029050602081019050919050565b600080fd5b6000614ee2614edd84614e9e565b614e83565b90508083825260208201905060208402830185811115614f0557614f04614eca565b5b835b81811015614f2e5780614f1a8882614523565b845260208401935050602081019050614f07565b5050509392505050565b600082601f830112614f4d57614f4c614e3c565b5b8151614f5d848260208601614ecf565b91505092915050565b600060208284031215614f7c57614f7b614167565b5b600082015167ffffffffffffffff811115614f9a57614f9961416c565b5b614fa684828501614f38565b91505092915050565b7f4e6f20746f6b656e3120746f2073776170000000000000000000000000000000600082015250565b6000614fe5601183614271565b9150614ff082614faf565b602082019050919050565b6000602082019050818103600083015261501481614fd8565b9050919050565b7f496e73756666696369656e742062616c616e636520666f7220546f6b656e302060008201527f746f2070726f76696465206c6971756964697479000000000000000000000000602082015250565b6000615077603483614271565b91506150828261501b565b604082019050919050565b600060208201905081810360008301526150a68161506a565b9050919050565b7f496e73756666696369656e742062616c616e636520666f7220546f6b656e312060008201527f746f2070726f76696465206c6971756964697479000000000000000000000000602082015250565b6000615109603483614271565b9150615114826150ad565b604082019050919050565b60006020820190508181036000830152615138816150fc565b9050919050565b600061012082019050615155600083018c61440b565b615162602083018b61440b565b61516f604083018a614021565b61517c6060830189613feb565b6151896080830188613feb565b61519660a0830187614cc4565b6151a360c0830186614cc4565b6151b060e083018561440b565b6151be610100830184613feb565b9a9950505050505050505050565b60006dffffffffffffffffffffffffffff82169050919050565b6151ef816151cc565b81146151fa57600080fd5b50565b60008151905061520c816151e6565b92915050565b600063ffffffff82169050919050565b61522b81615212565b811461523657600080fd5b50565b60008151905061524881615222565b92915050565b60008060006060848603121561526757615266614167565b5b6000615275868287016151fd565b9350506020615286868287016151fd565b925050604061529786828701615239565b9150509250925092565b60006040820190506152b66000830185613feb565b81810360208301526152c88184614d84565b90509392505050565b7f496e73756666696369656e7420736f6e69632072656365697665642066726f6d60008201527f2073776170000000000000000000000000000000000000000000000000000000602082015250565b600061532d602583614271565b9150615338826152d1565b604082019050919050565b6000602082019050818103600083015261535c81615320565b9050919050565b7f4e6f20746f6b656e20746f207377617000000000000000000000000000000000600082015250565b6000615399601083614271565b91506153a482615363565b602082019050919050565b600060208201905081810360008301526153c88161538c565b9050919050565b7f4e6f2066756e647320746f206861727665737400000000000000000000000000600082015250565b6000615405601383614271565b9150615410826153cf565b602082019050919050565b60006020820190508181036000830152615434816153f8565b9050919050565b7f4e6f207265776172647320746f20686172766573740000000000000000000000600082015250565b6000615471601583614271565b915061547c8261543b565b602082019050919050565b600060208201905081810360008301526154a081615464565b905091905056fea2646970667358221220df76c0035e8d88393cd1b956efa7f8dc0e2c12827bc8c25eeca7629e5d471d8f64736f6c634300080d0033000000000000000000000000b449391f3722fabcdb6183b37cb4350bb97e8aa50000000000000000000000000000000000000000000000000000000000000032000000000000000000000000fe6915a0983a304f4d131da635664030da06bcd20000000000000000000000001d368773735ee1e678950b7a97bca2cafb330cdc000000000000000000000000c6a47895e29284ac769cc9b43a4f39ad768d8837000000000000000000000000b901d7316447c84f4417b8a8268e2822095051e6000000000000000000000000674a430f531847a6f8976a900f8ace765f896a1b000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad38000000000000000000000000674a430f531847a6f8976a900f8ace765f896a1b0000000000000000000000000000000000000000000000000000000000000001
Deployed Bytecode
0x6080604052600436106101c65760003560e01c80637d882097116100f7578063d21220a711610095578063f69e204611610064578063f69e20461461059b578063f7c618c1146105b2578063f887ea40146105dd578063ff77cce414610608576101cd565b8063d21220a714610503578063db2e21bc1461052e578063dd11247e14610545578063e28701ee14610570576101cd565b8063a26759cb116100d1578063a26759cb1461048e578063a955c7a714610498578063b6b55f25146104af578063ce75d565146104d8576101cd565b80637d8820971461040f57806380017f4e1461043a578063853828b614610477576101cd565b806329c68dc111610164578063515464c51161013e578063515464c51461036557806351ed6a301461039057806367a52793146103bb5780636b527c0c146103e6576101cd565b806329c68dc1146102e85780632beddd35146102ff5780632e1a7d4d1461033c576101cd565b80630dfe1681116101a05780630dfe1681146102505780630f0324501461027b57806316f0115b146102925780632760f89b146102bd576101cd565b80630169050d146101cf57806301ac145b146101fa57806302fb0c5e14610225576101cd565b366101cd57005b005b3480156101db57600080fd5b506101e461061f565b6040516101f19190613ffa565b60405180910390f35b34801561020657600080fd5b5061020f610625565b60405161021c9190613ffa565b60405180910390f35b34801561023157600080fd5b5061023a61062b565b6040516102479190614030565b60405180910390f35b34801561025c57600080fd5b5061026561063e565b60405161027291906140ca565b60405180910390f35b34801561028757600080fd5b50610290610664565b005b34801561029e57600080fd5b506102a761088c565b6040516102b49190614106565b60405180910390f35b3480156102c957600080fd5b506102d26108b2565b6040516102df9190614142565b60405180910390f35b3480156102f457600080fd5b506102fd6108d8565b005b34801561030b57600080fd5b50610326600480360381019061032191906141af565b6109da565b6040516103339190613ffa565b60405180910390f35b34801561034857600080fd5b50610363600480360381019061035e9190614208565b610b5f565b005b34801561037157600080fd5b5061037a610bcb565b6040516103879190613ffa565b60405180910390f35b34801561039c57600080fd5b506103a5610bd1565b6040516103b291906140ca565b60405180910390f35b3480156103c757600080fd5b506103d0610bf7565b6040516103dd9190613ffa565b60405180910390f35b3480156103f257600080fd5b5061040d60048036038101906104089190614208565b610bfd565b005b34801561041b57600080fd5b50610424610db2565b6040516104319190613ffa565b60405180910390f35b34801561044657600080fd5b50610461600480360381019061045c91906141af565b610e5e565b60405161046e9190613ffa565b60405180910390f35b34801561048357600080fd5b5061048c610e76565b005b610496610f4c565b005b3480156104a457600080fd5b506104ad611021565b005b3480156104bb57600080fd5b506104d660048036038101906104d19190614208565b611491565b005b3480156104e457600080fd5b506104ed61196c565b6040516104fa91906140ca565b60405180910390f35b34801561050f57600080fd5b50610518611992565b60405161052591906140ca565b60405180910390f35b34801561053a57600080fd5b506105436119b8565b005b34801561055157600080fd5b5061055a611b65565b6040516105679190613ffa565b60405180910390f35b34801561057c57600080fd5b50610585611b6b565b6040516105929190614030565b60405180910390f35b3480156105a757600080fd5b506105b0611b7e565b005b3480156105be57600080fd5b506105c7611cf3565b6040516105d491906140ca565b60405180910390f35b3480156105e957600080fd5b506105f2611d19565b6040516105ff9190614256565b60405180910390f35b34801561061457600080fd5b5061061d611d3f565b005b600f5481565b600c5481565b600a60149054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61066c611ef9565b600a60159054906101000a900460ff166106bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b2906142ce565b60405180910390fd5b6000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000810361070d5750610882565b6000670de0b6b3a7640000600d5483610726919061431d565b61073091906143a6565b90506000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600e600082825461078991906143d7565b92505081905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016107ed92919061441a565b6020604051808303816000875af115801561080c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610830919061446f565b503373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364826040516108779190613ffa565b60405180910390a250505b61088a611f3f565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095f906144e8565b60405180910390fd5b600a60149054906101000a900460ff1615600a60146101000a81548160ff0219169083151502179055507fb525469ef855bc548f43bc65988e210c34addc78e267a5ab261ce1a2bae05f11600a60149054906101000a900460ff166040516109d09190614030565b60405180910390a1565b600080601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008103610a31576000915050610b5a565b6000600d5490506000610a42610db2565b90506000600e54118015610a565750600081115b15610b35576000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610ab89190614508565b602060405180830381865afa158015610ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af99190614538565b90506000811115610b3357600e54670de0b6b3a764000082610b1b919061431d565b610b2591906143a6565b83610b309190614565565b92505b505b670de0b6b3a76400008284610b4a919061431d565b610b5491906143a6565b93505050505b919050565b610b67611ef9565b600a60159054906101000a900460ff1615610bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bae9061462d565b60405180910390fd5b610bc081611f49565b610bc8611f3f565b50565b60105481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c84906144e8565b60405180910390fd5b610c95611ef9565b80471015610cd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccf90614699565b60405180910390fd5b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610d20906146ea565b60006040518083038185875af1925050503d8060008114610d5d576040519150601f19603f3d011682016040523d82523d6000602084013e610d62565b606091505b5050905080610da6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9d9061474b565b60405180910390fd5b50610daf611f3f565b50565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166393f1a40b601054306040518363ffffffff1660e01b8152600401610e1492919061476b565b6040805180830381865afa158015610e30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e549190614794565b5090508091505090565b60116020528060005260406000206000915090505481565b610e7e611ef9565b600a60159054906101000a900460ff1615610ece576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec59061462d565b60405180910390fd5b6000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000670de0b6b3a7640000600d5483610f2b919061431d565b610f3591906143a6565b9050610f4081611f49565b5050610f4a611f3f565b565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd3906144e8565b60405180910390fd5b6000341161101f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101690614820565b60405180910390fd5b565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a8906144e8565b60405180910390fd5b6110b9611ef9565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111169190614508565b602060405180830381865afa158015611133573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111579190614538565b90506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111b69190614508565b602060405180830381865afa1580156111d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f79190614538565b905060008211806112085750600081115b611247576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123e9061488c565b60405180910390fd5b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166398a0fb3c600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600188886040518663ffffffff1660e01b81526004016112f29594939291906148ac565b606060405180830381865afa15801561130f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133391906148ff565b509150915081841115611360576000828561134e91906143d7565b905061135981612266565b5050611385565b80831115611384576000818461137691906143d7565b905061138181612501565b50505b5b600061138f61279c565b9050600081116113d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cb9061499e565b60405180910390fd5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114319190614508565b602060405180830381865afa15801561144e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114729190614538565b111561148257611480612afd565b505b505050505061148f611f3f565b565b611499611ef9565b600a60149054906101000a900460ff166114e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114df90614a0a565b60405180910390fd5b6000600e54146114fc576114fa612c76565b505b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161155b93929190614a2a565b6020604051808303816000875af115801561157a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159e919061446f565b5060006103e8600b54836115b2919061431d565b6115bc91906143a6565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161163d92919061441a565b6020604051808303816000875af115801561165c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611680919061446f565b50808261168d91906143d7565b91506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166393f1a40b601054306040518363ffffffff1660e01b81526004016116f092919061476b565b6040805180830381865afa15801561170c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117309190614794565b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2bbb158601054856040518363ffffffff1660e01b8152600401611792929190614a61565b600060405180830381600087803b1580156117ac57600080fd5b505af11580156117c0573d6000803e3d6000fd5b505050506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166393f1a40b601054306040518363ffffffff1660e01b815260040161182592919061476b565b6040805180830381865afa158015611841573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118659190614794565b5090506000828261187691906143d7565b90506000600d54670de0b6b3a764000083611891919061431d565b61189b91906143a6565b905080601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118ec9190614565565b9250508190555080600e60008282546119059190614565565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a158383604051611954929190614a61565b60405180910390a25050505050611969611f3f565b50565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3f906144e8565b60405180910390fd5b611a50611ef9565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635312ea8e6010546040518263ffffffff1660e01b8152600401611aad9190613ffa565b600060405180830381600087803b158015611ac757600080fd5b505af1158015611adb573d6000803e3d6000fd5b505050506001600a60156101000a81548160ff0219169083151502179055506000600a60146101000a81548160ff0219169083151502179055507fb525469ef855bc548f43bc65988e210c34addc78e267a5ab261ce1a2bae05f11600a60149054906101000a900460ff16604051611b539190614030565b60405180910390a1611b63611f3f565b565b600e5481565b600a60159054906101000a900460ff1681565b600a60149054906101000a900460ff16611bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc490614a0a565b60405180910390fd5b6000611bd7612c76565b905060008111611c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1390614ad6565b60405180910390fd5b7fe3c48e43a3cc80f4a0c194845bdd6091fa19b9bb7d22e515c21e9f177e2e22ae600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611c989190614508565b602060405180830381865afa158015611cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd99190614538565b82604051611ce8929190614a61565b60405180910390a150565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc6906144e8565b60405180910390fd5b611dd7611ef9565b600047905060008111611e1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1690614b42565b60405180910390fd5b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611e67906146ea565b60006040518083038185875af1925050503d8060008114611ea4576040519150601f19603f3d011682016040523d82523d6000602084013e611ea9565b606091505b5050905080611eed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee49061474b565b60405180910390fd5b5050611ef7611f3f565b565b600260005403611f35576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600081905550565b6001600081905550565b6000600e5414611f5d57611f5b612c76565b505b6000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111611fe4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fdb90614bae565b60405180910390fd5b6000670de0b6b3a7640000600d5483611ffd919061431d565b61200791906143a6565b90508281101561204c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204390614699565b60405180910390fd5b6000600d54670de0b6b3a764000085612065919061431d565b61206f91906143a6565b905080601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120c091906143d7565b9250508190555080600e60008282546120d991906143d7565b92505081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663441a3e70601054866040518363ffffffff1660e01b815260040161213f929190614a61565b600060405180830381600087803b15801561215957600080fd5b505af115801561216d573d6000803e3d6000fd5b50505050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33866040518363ffffffff1660e01b81526004016121ce92919061441a565b6020604051808303816000875af11580156121ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612211919061446f565b503373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364856040516122589190613ffa565b60405180910390a250505050565b60008082116122aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a190614c1a565b60405180910390fd5b6000600167ffffffffffffffff8111156122c7576122c6614c3a565b5b60405190808252806020026020018201604052801561230057816020015b6122ed613f92565b8152602001906001900390816122e55790505b5090506040518060600160405280600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160011515815250816000815181106123a5576123a4614c69565b5b6020026020010181905250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f41766d88460018430426040518663ffffffff1660e01b8152600401612414959493929190614de2565b6000604051808303816000875af1158015612433573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061245c9190614f66565b50600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016124b89190614508565b602060405180830381865afa1580156124d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f99190614538565b915050919050565b6000808211612545576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253c90614ffb565b60405180910390fd5b6000600167ffffffffffffffff81111561256257612561614c3a565b5b60405190808252806020026020018201604052801561259b57816020015b612588613f92565b8152602001906001900390816125805790505b5090506040518060600160405280600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160011515815250816000815181106126405761263f614c69565b5b6020026020010181905250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f41766d88460018430426040518663ffffffff1660e01b81526004016126af959493929190614de2565b6000604051808303816000875af11580156126ce573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906126f79190614f66565b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016127539190614508565b602060405180830381865afa158015612770573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127949190614538565b915050919050565b600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016127fa9190614508565b602060405180830381865afa158015612817573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061283b9190614538565b90506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161289a9190614508565b602060405180830381865afa1580156128b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128db9190614538565b905060008211612920576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129179061508d565b60405180910390fd5b60008111612963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295a9061511f565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635a47ddc3600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001868660018030426040518a63ffffffff1660e01b8152600401612a149998979695949392919061513f565b6060604051808303816000875af1158015612a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a5791906148ff565b505050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612ab59190614508565b602060405180830381865afa158015612ad2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af69190614538565b9250505090565b600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612b5b9190614508565b602060405180830381865afa158015612b78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b9c9190614538565b90506000811115612c6d57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2bbb158601054836040518363ffffffff1660e01b8152600401612c06929190614a61565b600060405180830381600087803b158015612c2057600080fd5b505af1158015612c34573d6000803e3d6000fd5b505050506000612c42610db2565b9050600e54670de0b6b3a764000082612c5b919061431d565b612c6591906143a6565b600d81905550505b600d5491505090565b600080612c81610db2565b9050600080600e54118015612c965750600082115b156131c657600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633695dad16040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d2f9190614538565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636b2681c5601054306040518363ffffffff1660e01b8152600401612d8e92919061476b565b602060405180830381865afa158015612dab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dcf9190614538565b1115612de657612ddd6131ce565b80935081925050505b60008211156131c3576000612dfa82613283565b91505060008184612e0b91906143d7565b905060006103e8600c5483612e20919061431d565b612e2a91906143a6565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401612eab92919061441a565b6020604051808303816000875af1158015612eca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eee919061446f565b508082612efb91906143d7565b9150600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612f6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f91919061524e565b50915091506000816dffffffffffffffffffffffffffff16836dffffffffffffffffffffffffffff16612fc49190614565565b836dffffffffffffffffffffffffffff1686612fe0919061431d565b612fea91906143a6565b905060008186612ffa91906143d7565b90506000613007836134d2565b905060006130148361376d565b9050600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166398a0fb3c600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600188886040518663ffffffff1660e01b81526004016130c19594939291906148ac565b606060405180830381865afa1580156130de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310291906148ff565b50915091508184111561312f576000828561311d91906143d7565b905061312881612266565b5050613154565b80831115613153576000818461314591906143d7565b905061315081612501565b50505b5b600061315e61279c565b9050600081116131a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319a9061499e565b60405180910390fd5b6131ab612afd565b5042600f819055508a9e505050505050505050505050505b50505b809250505090565b60008060006131db613ab5565b9050809250600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161323b9190614508565b602060405180830381865afa158015613258573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061327c9190614538565b9150509091565b60008060006064609685613297919061431d565b6132a191906143a6565b90506000600167ffffffffffffffff8111156132c0576132bf614c3a565b5b6040519080825280602002602001820160405280156132f957816020015b6132e6613f92565b8152602001906001900390816132de5790505b5090506040518060600160405280600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600015158152508160008151811061339e5761339d614c69565b5b60200260200101819052506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d5c54e3384846040518363ffffffff1660e01b81526004016134089291906152a1565b6000604051808303816000875af1158015613427573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906134509190614f66565b905060008160008151811061346857613467614c69565b5b60200260200101519050600061347d82613d17565b9050848110156134c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134b990615343565b60405180910390fd5b8082965096505050505050915091565b6000808211613516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161350d906153af565b60405180910390fd5b6000600167ffffffffffffffff81111561353357613532614c3a565b5b60405190808252806020026020018201604052801561356c57816020015b613559613f92565b8152602001906001900390816135515790505b5090506040518060600160405280600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600015158152508160008151811061361157613610614c69565b5b6020026020010181905250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f41766d88460018430426040518663ffffffff1660e01b8152600401613680959493929190614de2565b6000604051808303816000875af115801561369f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906136c89190614f66565b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016137249190614508565b602060405180830381865afa158015613741573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137659190614538565b915050919050565b60008082116137b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137a8906153af565b60405180910390fd5b6000600267ffffffffffffffff8111156137ce576137cd614c3a565b5b60405190808252806020026020018201604052801561380757816020015b6137f4613f92565b8152602001906001900390816137ec5790505b5090506040518060600160405280600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250816000815181106138ac576138ab614c69565b5b60200260200101819052506040518060600160405280600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600115158152508160018151811061395957613958614c69565b5b6020026020010181905250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f41766d88460018430426040518663ffffffff1660e01b81526004016139c8959493929190614de2565b6000604051808303816000875af11580156139e7573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190613a109190614f66565b50600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613a6c9190614508565b602060405180830381865afa158015613a89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aad9190614538565b915050919050565b6000804711613af9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613af09061541b565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633695dad16040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b8a9190614538565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636b2681c5601054306040518363ffffffff1660e01b8152600401613be992919061476b565b602060405180830381865afa158015613c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c2a9190614538565b11613c6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c6190615487565b60405180910390fd5b6000479050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ddc63262826010546040518363ffffffff1660e01b8152600401613ccd9190613ffa565b6000604051808303818588803b158015613ce657600080fd5b505af1158015613cfa573d6000803e3d6000fd5b505050505060004790508082613d1091906143d7565b9250505090565b600080600167ffffffffffffffff811115613d3557613d34614c3a565b5b604051908082528060200260200182016040528015613d6e57816020015b613d5b613f92565b815260200190600190039081613d535790505b5090506040518060600160405280600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000151581525081600081518110613e1357613e12614c69565b5b60200260200101819052506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f41766d88560018530426040518663ffffffff1660e01b8152600401613e84959493929190614de2565b6000604051808303816000875af1158015613ea3573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190613ecc9190614f66565b905060008160018351613edf91906143d7565b81518110613ef057613eef614c69565b5b60200260200101519050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b8152600401613f559190613ffa565b600060405180830381600087803b158015613f6f57600080fd5b505af1158015613f83573d6000803e3d6000fd5b50505050809350505050919050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000151581525090565b6000819050919050565b613ff481613fe1565b82525050565b600060208201905061400f6000830184613feb565b92915050565b60008115159050919050565b61402a81614015565b82525050565b60006020820190506140456000830184614021565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061409061408b6140868461404b565b61406b565b61404b565b9050919050565b60006140a282614075565b9050919050565b60006140b482614097565b9050919050565b6140c4816140a9565b82525050565b60006020820190506140df60008301846140bb565b92915050565b60006140f082614097565b9050919050565b614100816140e5565b82525050565b600060208201905061411b60008301846140f7565b92915050565b600061412c82614097565b9050919050565b61413c81614121565b82525050565b60006020820190506141576000830184614133565b92915050565b6000604051905090565b600080fd5b600080fd5b600061417c8261404b565b9050919050565b61418c81614171565b811461419757600080fd5b50565b6000813590506141a981614183565b92915050565b6000602082840312156141c5576141c4614167565b5b60006141d38482850161419a565b91505092915050565b6141e581613fe1565b81146141f057600080fd5b50565b600081359050614202816141dc565b92915050565b60006020828403121561421e5761421d614167565b5b600061422c848285016141f3565b91505092915050565b600061424082614097565b9050919050565b61425081614235565b82525050565b600060208201905061426b6000830184614247565b92915050565b600082825260208201905092915050565b7f456d657267656e6379207769746864726177206e6f7420656e61626c65640000600082015250565b60006142b8601e83614271565b91506142c382614282565b602082019050919050565b600060208201905081810360008301526142e7816142ab565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061432882613fe1565b915061433383613fe1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561436c5761436b6142ee565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006143b182613fe1565b91506143bc83613fe1565b9250826143cc576143cb614377565b5b828204905092915050565b60006143e282613fe1565b91506143ed83613fe1565b925082821015614400576143ff6142ee565b5b828203905092915050565b61441481614171565b82525050565b600060408201905061442f600083018561440b565b61443c6020830184613feb565b9392505050565b61444c81614015565b811461445757600080fd5b50565b60008151905061446981614443565b92915050565b60006020828403121561448557614484614167565b5b60006144938482850161445a565b91505092915050565b7f4e6f7420746865206f776e657200000000000000000000000000000000000000600082015250565b60006144d2600d83614271565b91506144dd8261449c565b602082019050919050565b60006020820190508181036000830152614501816144c5565b9050919050565b600060208201905061451d600083018461440b565b92915050565b600081519050614532816141dc565b92915050565b60006020828403121561454e5761454d614167565b5b600061455c84828501614523565b91505092915050565b600061457082613fe1565b915061457b83613fe1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145b0576145af6142ee565b5b828201905092915050565b7f5573652075736572456d657267656e6379576974686472617720696e7374656160008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000614617602183614271565b9150614622826145bb565b604082019050919050565b600060208201905081810360008301526146468161460a565b9050919050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000614683601483614271565b915061468e8261464d565b602082019050919050565b600060208201905081810360008301526146b281614676565b9050919050565b600081905092915050565b50565b60006146d46000836146b9565b91506146df826146c4565b600082019050919050565b60006146f5826146c7565b9150819050919050565b7f5472616e73666572206661696c65640000000000000000000000000000000000600082015250565b6000614735600f83614271565b9150614740826146ff565b602082019050919050565b6000602082019050818103600083015261476481614728565b9050919050565b60006040820190506147806000830185613feb565b61478d602083018461440b565b9392505050565b600080604083850312156147ab576147aa614167565b5b60006147b985828601614523565b92505060206147ca85828601614523565b9150509250929050565b7f4e6f2066756e64732073656e7400000000000000000000000000000000000000600082015250565b600061480a600d83614271565b9150614815826147d4565b602082019050919050565b60006020820190508181036000830152614839816147fd565b9050919050565b7f4e6f206c6566746f7665727320746f20616464206c6971756964697479000000600082015250565b6000614876601d83614271565b915061488182614840565b602082019050919050565b600060208201905081810360008301526148a581614869565b9050919050565b600060a0820190506148c1600083018861440b565b6148ce602083018761440b565b6148db6040830186614021565b6148e86060830185613feb565b6148f56080830184613feb565b9695505050505050565b60008060006060848603121561491857614917614167565b5b600061492686828701614523565b935050602061493786828701614523565b925050604061494886828701614523565b9150509250925092565b7f4e6f204c5020746f6b656e732072656365697665640000000000000000000000600082015250565b6000614988601583614271565b915061499382614952565b602082019050919050565b600060208201905081810360008301526149b78161497b565b9050919050565b7f5661756c74206973206e6f742061637469766500000000000000000000000000600082015250565b60006149f4601383614271565b91506149ff826149be565b602082019050919050565b60006020820190508181036000830152614a23816149e7565b9050919050565b6000606082019050614a3f600083018661440b565b614a4c602083018561440b565b614a596040830184613feb565b949350505050565b6000604082019050614a766000830185613feb565b614a836020830184613feb565b9392505050565b7f4e6f207265776172647320746f20636f6d706f756e6400000000000000000000600082015250565b6000614ac0601683614271565b9150614acb82614a8a565b602082019050919050565b60006020820190508181036000830152614aef81614ab3565b9050919050565b7f4e6f2066756e647320617661696c61626c650000000000000000000000000000600082015250565b6000614b2c601283614271565b9150614b3782614af6565b602082019050919050565b60006020820190508181036000830152614b5b81614b1f565b9050919050565b7f4e6f207469636b65747320746f20776974686472617700000000000000000000600082015250565b6000614b98601683614271565b9150614ba382614b62565b602082019050919050565b60006020820190508181036000830152614bc781614b8b565b9050919050565b7f4e6f20746f6b656e3020746f2073776170000000000000000000000000000000600082015250565b6000614c04601183614271565b9150614c0f82614bce565b602082019050919050565b60006020820190508181036000830152614c3381614bf7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000614cbd614cb8614cb384614c98565b61406b565b613fe1565b9050919050565b614ccd81614ca2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614d0881614171565b82525050565b614d1781614015565b82525050565b606082016000820151614d336000850182614cff565b506020820151614d466020850182614cff565b506040820151614d596040850182614d0e565b50505050565b6000614d6b8383614d1d565b60608301905092915050565b6000602082019050919050565b6000614d8f82614cd3565b614d998185614cde565b9350614da483614cef565b8060005b83811015614dd5578151614dbc8882614d5f565b9750614dc783614d77565b925050600181019050614da8565b5085935050505092915050565b600060a082019050614df76000830188613feb565b614e046020830187614cc4565b8181036040830152614e168186614d84565b9050614e25606083018561440b565b614e326080830184613feb565b9695505050505050565b600080fd5b6000601f19601f8301169050919050565b614e5b82614e41565b810181811067ffffffffffffffff82111715614e7a57614e79614c3a565b5b80604052505050565b6000614e8d61415d565b9050614e998282614e52565b919050565b600067ffffffffffffffff821115614eb957614eb8614c3a565b5b602082029050602081019050919050565b600080fd5b6000614ee2614edd84614e9e565b614e83565b90508083825260208201905060208402830185811115614f0557614f04614eca565b5b835b81811015614f2e5780614f1a8882614523565b845260208401935050602081019050614f07565b5050509392505050565b600082601f830112614f4d57614f4c614e3c565b5b8151614f5d848260208601614ecf565b91505092915050565b600060208284031215614f7c57614f7b614167565b5b600082015167ffffffffffffffff811115614f9a57614f9961416c565b5b614fa684828501614f38565b91505092915050565b7f4e6f20746f6b656e3120746f2073776170000000000000000000000000000000600082015250565b6000614fe5601183614271565b9150614ff082614faf565b602082019050919050565b6000602082019050818103600083015261501481614fd8565b9050919050565b7f496e73756666696369656e742062616c616e636520666f7220546f6b656e302060008201527f746f2070726f76696465206c6971756964697479000000000000000000000000602082015250565b6000615077603483614271565b91506150828261501b565b604082019050919050565b600060208201905081810360008301526150a68161506a565b9050919050565b7f496e73756666696369656e742062616c616e636520666f7220546f6b656e312060008201527f746f2070726f76696465206c6971756964697479000000000000000000000000602082015250565b6000615109603483614271565b9150615114826150ad565b604082019050919050565b60006020820190508181036000830152615138816150fc565b9050919050565b600061012082019050615155600083018c61440b565b615162602083018b61440b565b61516f604083018a614021565b61517c6060830189613feb565b6151896080830188613feb565b61519660a0830187614cc4565b6151a360c0830186614cc4565b6151b060e083018561440b565b6151be610100830184613feb565b9a9950505050505050505050565b60006dffffffffffffffffffffffffffff82169050919050565b6151ef816151cc565b81146151fa57600080fd5b50565b60008151905061520c816151e6565b92915050565b600063ffffffff82169050919050565b61522b81615212565b811461523657600080fd5b50565b60008151905061524881615222565b92915050565b60008060006060848603121561526757615266614167565b5b6000615275868287016151fd565b9350506020615286868287016151fd565b925050604061529786828701615239565b9150509250925092565b60006040820190506152b66000830185613feb565b81810360208301526152c88184614d84565b90509392505050565b7f496e73756666696369656e7420736f6e69632072656365697665642066726f6d60008201527f2073776170000000000000000000000000000000000000000000000000000000602082015250565b600061532d602583614271565b9150615338826152d1565b604082019050919050565b6000602082019050818103600083015261535c81615320565b9050919050565b7f4e6f20746f6b656e20746f207377617000000000000000000000000000000000600082015250565b6000615399601083614271565b91506153a482615363565b602082019050919050565b600060208201905081810360008301526153c88161538c565b9050919050565b7f4e6f2066756e647320746f206861727665737400000000000000000000000000600082015250565b6000615405601383614271565b9150615410826153cf565b602082019050919050565b60006020820190508181036000830152615434816153f8565b9050919050565b7f4e6f207265776172647320746f20686172766573740000000000000000000000600082015250565b6000615471601583614271565b915061547c8261543b565b602082019050919050565b600060208201905081810360008301526154a081615464565b905091905056fea2646970667358221220df76c0035e8d88393cd1b956efa7f8dc0e2c12827bc8c25eeca7629e5d471d8f64736f6c634300080d0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b449391f3722fabcdb6183b37cb4350bb97e8aa50000000000000000000000000000000000000000000000000000000000000032000000000000000000000000fe6915a0983a304f4d131da635664030da06bcd20000000000000000000000001d368773735ee1e678950b7a97bca2cafb330cdc000000000000000000000000c6a47895e29284ac769cc9b43a4f39ad768d8837000000000000000000000000b901d7316447c84f4417b8a8268e2822095051e6000000000000000000000000674a430f531847a6f8976a900f8ace765f896a1b000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad38000000000000000000000000674a430f531847a6f8976a900f8ace765f896a1b0000000000000000000000000000000000000000000000000000000000000001
-----Decoded View---------------
Arg [0] : _treasury (address): 0xB449391F3722FAbcdB6183B37CB4350bb97E8Aa5
Arg [1] : _vaultFee (uint256): 50
Arg [2] : _pool (address): 0xFE6915a0983a304F4D131DA635664030dA06Bcd2
Arg [3] : _router (address): 0x1D368773735ee1E678950B7A97bcA2CafB330CDc
Arg [4] : _gsnakeOracle (address): 0xC6a47895e29284ac769cc9b43A4f39Ad768d8837
Arg [5] : _stakeToken (address): 0xb901D7316447C84f4417b8a8268E2822095051E6
Arg [6] : _rewardToken (address): 0x674a430f531847a6f8976A900f8ace765f896a1b
Arg [7] : _token0 (address): 0x039e2fB66102314Ce7b64Ce5Ce3E5183bc94aD38
Arg [8] : _token1 (address): 0x674a430f531847a6f8976A900f8ace765f896a1b
Arg [9] : _snakePoolId (uint256): 1
-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 000000000000000000000000b449391f3722fabcdb6183b37cb4350bb97e8aa5
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000032
Arg [2] : 000000000000000000000000fe6915a0983a304f4d131da635664030da06bcd2
Arg [3] : 0000000000000000000000001d368773735ee1e678950b7a97bca2cafb330cdc
Arg [4] : 000000000000000000000000c6a47895e29284ac769cc9b43a4f39ad768d8837
Arg [5] : 000000000000000000000000b901d7316447c84f4417b8a8268e2822095051e6
Arg [6] : 000000000000000000000000674a430f531847a6f8976a900f8ace765f896a1b
Arg [7] : 000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad38
Arg [8] : 000000000000000000000000674a430f531847a6f8976a900f8ace765f896a1b
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000001
Deployed Bytecode Sourcemap
906:15330:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1458:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1360:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1247:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1038:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13925:452;;;;;;;;;;;;;:::i;:::-;;947:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1004:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3171:121;;;;;;;;;;;;;:::i;:::-;;15010:556;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13474:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1492:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1092:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1324:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15687:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14843:159;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1527:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13650:267;;;;;;;;;;;;;:::i;:::-;;15574:105;;;:::i;:::-;;8228:1042;;;;;;;;;;;;;:::i;:::-;;12647:819;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1155:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1065:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14385:221;;;;;;;;;;;;;:::i;:::-;;1424:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1279:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14614:221;;;;;;;;;;;;;:::i;:::-;;1123:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;976:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15955:278;;;;;;;;;;;;;:::i;:::-;;1458:27;;;;:::o;1360:23::-;;;;:::o;1247:25::-;;;;;;;;;;;;;:::o;1038:20::-;;;;;;;;;;;;;:::o;13925:452::-;367:21;:19;:21::i;:::-;13999:18:::1;;;;;;;;;;;13991:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;14063:15;14081:11;:23;14093:10;14081:23;;;;;;;;;;;;;;;;14063:41;;14130:1;14119:7;:12:::0;14115:25:::1;;14133:7;;;14115:25;14152:14;14195:4;14180:11;;14170:7;:21;;;;:::i;:::-;14169:30;;;;:::i;:::-;14152:47;;14236:1;14210:11;:23;14222:10;14210:23;;;;;;;;;;;;;;;:27;;;;14264:7;14248:12;;:23;;;;;;;:::i;:::-;;;;;;;;14284:10;;;;;;;;;;;:19;;;14304:10;14316:6;14284:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14350:10;14341:28;;;14362:6;14341:28;;;;;;:::i;:::-;;;;;;;;13980:397;;399:1;411:20:::0;:18;:20::i;:::-;13925:452::o;947:22::-;;;;;;;;;;;;;:::o;1004:27::-;;;;;;;;;;;;;:::o;3171:121::-;3120:5;;;;;;;;;;;3106:19;;:10;:19;;;3098:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;3235:6:::1;;;;;;;;;;;3234:7;3225:6;;:16;;;;;;;;;;;;;;;;;;3257:27;3277:6;;;;;;;;;;;3257:27;;;;;;:::i;:::-;;;;;;;;3171:121::o:0;15010:556::-;15067:7;15087:15;15105:11;:18;15117:5;15105:18;;;;;;;;;;;;;;;;15087:36;;15149:1;15138:7;:12;15134:26;;15159:1;15152:8;;;;;15134:26;15173:20;15196:11;;15173:34;;15218:15;15236;:13;:15::i;:::-;15218:33;;15281:1;15266:12;;:16;:31;;;;;15296:1;15286:7;:11;15266:31;15262:246;;;15314:20;15337:11;;;;;;;;;;;:21;;;15367:4;15337:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15314:59;;15407:1;15392:12;:16;15388:109;;;15469:12;;15461:4;15446:12;:19;;;;:::i;:::-;15445:36;;;;:::i;:::-;15429:52;;;;;:::i;:::-;;;15388:109;15299:209;15262:246;15554:4;15538:12;15528:7;:22;;;;:::i;:::-;15527:31;;;;:::i;:::-;15520:38;;;;;15010:556;;;;:::o;13474:168::-;367:21;:19;:21::i;:::-;13550:18:::1;;;;;;;;;;;13549:19;13541:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;13617:17;13627:6;13617:9;:17::i;:::-;411:20:::0;:18;:20::i;:::-;13474:168;:::o;1492:26::-;;;;:::o;1092:24::-;;;;;;;;;;;;;:::o;1324:29::-;;;;:::o;15687:260::-;3120:5;;;;;;;;;;;3106:19;;:10;:19;;;3098:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;367:21:::1;:19;:21::i;:::-;15798:6:::2;15773:21;:31;;15765:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15843:9;15866:5;;;;;;;;;;;15858:19;;15885:6;15858:38;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15842:54;;;15915:4;15907:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;15754:193;411:20:::1;:18;:20::i;:::-;15687:260:::0;:::o;14843:159::-;14889:7;14910:14;14929:4;;;;;;;;;;;:13;;;14943:11;;14964:4;14929:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14909:61;;;14988:6;14981:13;;;14843:159;:::o;1527:46::-;;;;;;;;;;;;;;;;;:::o;13650:267::-;367:21;:19;:21::i;:::-;13715:18:::1;;;;;;;;;;;13714:19;13706:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;13782:15;13800:11;:23;13812:10;13800:23;;;;;;;;;;;;;;;;13782:41;;13834:14;13877:4;13862:11;;13852:7;:21;;;;:::i;:::-;13851:30;;;;:::i;:::-;13834:47;;13892:17;13902:6;13892:9;:17::i;:::-;13695:222;;411:20:::0;:18;:20::i;:::-;13650:267::o;15574:105::-;3120:5;;;;;;;;;;;3106:19;;:10;:19;;;3098:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;15652:1:::1;15640:9;:13;15632:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;15574:105::o:0;8228:1042::-;3120:5;;;;;;;;;;;3106:19;;:10;:19;;;3098:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;367:21:::1;:19;:21::i;:::-;8303:17:::2;8323:6;;;;;;;;;;;:16;;;8348:4;8323:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8303:51;;8365:17;8385:6;;;;;;;;;;;:16;;;8410:4;8385:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8365:51;;8447:1;8435:9;:13;:30;;;;8464:1;8452:9;:13;8435:30;8427:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;8513:21;8536::::0;8563:6:::2;;;;;;;;;;;:24;;;8610:6;;;;;;;;;;;8640;;;;;;;;;;;8662:4;8681:9;8705;8563:162;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8512:213;;;;;8754:13;8742:9;:25;8738:316;;;8784:20;8819:13;8807:9;:25;;;;:::i;:::-;8784:48;;8847:34;8868:12;8847:20;:34::i;:::-;;8769:124;8738:316;;;8915:13;8903:9;:25;8899:155;;;8945:20;8980:13;8968:9;:25;;;;:::i;:::-;8945:48;;9008:34;9029:12;9008:20;:34::i;:::-;;8930:124;8899:155;8738:316;9066:19;9088:15;:13;:15::i;:::-;9066:37;;9136:1;9122:11;:15;9114:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;9218:1;9180:10;;;;;;;;;;;:20;;;9209:4;9180:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:39;9176:87;;;9236:15;:13;:15::i;:::-;;9176:87;8292:978;;;;;411:20:::1;:18;:20::i;:::-;8228:1042::o:0;12647:819::-;367:21;:19;:21::i;:::-;3008:6:::1;;;;;;;;;;;3000:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;12744:1:::2;12728:12;;:17;12724:64;;12762:14;:12;:14::i;:::-;;12724:64;12800:10;;;;;;;;;;;:23;;;12824:10;12844:4;12851:6;12800:58;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12871:11;12909:4;12895:10;;12886:6;:19;;;;:::i;:::-;12885:28;;;;:::i;:::-;12871:42;;12924:10;;;;;;;;;;;:19;;;12944:8;;;;;;;;;;;12954:3;12924:34;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12979:3;12969:13;;;;;:::i;:::-;;;12996:20;13021:4;;;;;;;;;;;:13;;;13035:11;;13056:4;13021:41;;;;;;;;;;;;;;;;:::i;:::-;;::::0;::::2;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12995:67;;;13073:4;;;;;;;;;;;:12;;;13086:11;;13099:6;13073:33;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;13118:19;13143:4;;;;;;;;;;;:13;;;13157:11;;13178:4;13143:41;;;;;;;;;;;;;;;;:::i;:::-;;::::0;::::2;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13117:67;;;13197:23;13237:12;13223:11;:26;;;;:::i;:::-;13197:52;;13260:15;13305:11;;13297:4;13279:15;:22;;;;:::i;:::-;13278:38;;;;:::i;:::-;13260:56;;13354:7;13327:11;:23;13339:10;13327:23;;;;;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;13388:7;13372:12;;:23;;;;;;;:::i;:::-;;;;;;;;13421:10;13413:45;;;13433:15;13450:7;13413:45;;;;;;;:::i;:::-;;;;;;;;12713:753;;;;;411:20:::0;:18;:20::i;:::-;12647:819;:::o;1155:26::-;;;;;;;;;;;;;:::o;1065:20::-;;;;;;;;;;;;;:::o;14385:221::-;3120:5;;;;;;;;;;;3106:19;;:10;:19;;;3098:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;367:21:::1;:19;:21::i;:::-;14457:4:::2;;;;;;;;;;;:22;;;14480:11;;14457:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;14524:4;14503:18;;:25;;;;;;;;;;;;;;;;;;14548:5;14539:6;;:14;;;;;;;;;;;;;;;;;;14571:27;14591:6;;;;;;;;;;;14571:27;;;;;;:::i;:::-;;;;;;;;411:20:::1;:18;:20::i;:::-;14385:221::o:0;1424:27::-;;;;:::o;1279:38::-;;;;;;;;;;;;;:::o;14614:221::-;3008:6;;;;;;;;;;;3000:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14665:15:::1;14683:14;:12;:14::i;:::-;14665:32;;14726:1;14716:7;:11;14708:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;14772:55;14781:11;;;;;;;;;;;:21;;;14811:4;14781:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14819:7;14772:55;;;;;;;:::i;:::-;;;;;;;;14654:181;14614:221::o:0;1123:25::-;;;;;;;;;;;;;:::o;976:21::-;;;;;;;;;;;;;:::o;15955:278::-;3120:5;;;;;;;;;;;3106:19;;:10;:19;;;3098:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;367:21:::1;:19;:21::i;:::-;16022:15:::2;16040:21;16022:39;;16090:1;16080:7;:11;16072:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;16128:9;16151:5;;;;;;;;;;;16143:19;;16170:7;16143:39;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16127:55;;;16201:4;16193:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;16011:222;;411:20:::1;:18;:20::i;:::-;15955:278::o:0;522:175::-;183:1;576:7;;:18;572:88;;618:30;;;;;;;;;;;;;;572:88;183:1;672:7;:17;;;;522:175::o;705:78::-;140:1;754:7;:21;;;;705:78::o;11976:663::-;12051:1;12035:12;;:17;12031:64;;12069:14;:12;:14::i;:::-;;12031:64;12107:15;12125:11;:23;12137:10;12125:23;;;;;;;;;;;;;;;;12107:41;;12177:1;12167:7;:11;12159:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;12218:14;12261:4;12246:11;;12236:7;:21;;;;:::i;:::-;12235:30;;;;:::i;:::-;12218:47;;12294:6;12284;:16;;12276:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;12338:23;12382:11;;12374:4;12365:6;:13;;;;:::i;:::-;12364:29;;;;:::i;:::-;12338:55;;12431:15;12404:11;:23;12416:10;12404:23;;;;;;;;;;;;;;;;:42;;;;;;;:::i;:::-;;;;;;;;12473:15;12457:12;;:31;;;;;;;:::i;:::-;;;;;;;;12501:4;;;;;;;;;;;:13;;;12515:11;;12528:6;12501:34;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12546:10;;;;;;;;;;;:19;;;12566:10;12578:6;12546:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12612:10;12603:28;;;12624:6;12603:28;;;;;;:::i;:::-;;;;;;;;12020:619;;;11976:663;:::o;4668:510::-;4732:22;4784:1;4775:6;:10;4767:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;4818:27;4868:1;4848:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;4818:52;;4891:53;;;;;;;;4913:6;;;;;;;;;;;4891:53;;;;;;4930:6;;;;;;;;;;;4891:53;;;;;;4939:4;4891:53;;;;;4881:4;4886:1;4881:7;;;;;;;;:::i;:::-;;;;;;;:63;;;;4955:6;;;;;;;;;;;:31;;;5001:6;5022:1;5038:4;5065;5085:15;4955:156;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5139:6;;;;;;;;;;;:16;;;5164:4;5139:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5122:48;;4756:422;4668:510;;;:::o;5186:::-;5250:22;5302:1;5293:6;:10;5285:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;5336:27;5386:1;5366:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;5336:52;;5409:53;;;;;;;;5431:6;;;;;;;;;;;5409:53;;;;;;5448:6;;;;;;;;;;;5409:53;;;;;;5457:4;5409:53;;;;;5399:4;5404:1;5399:7;;;;;;;;:::i;:::-;;;;;;;:63;;;;5473:6;;;;;;;;;;;:31;;;5519:6;5540:1;5556:4;5583;5603:15;5473:156;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5657:6;;;;;;;;;;;:16;;;5682:4;5657:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5640:48;;5274:422;5186:510;;;:::o;6808:751::-;6851:7;6871:21;6902:6;;;;;;;;;;;6895:24;;;6928:4;6895:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6871:63;;6945:21;6976:6;;;;;;;;;;;6969:24;;;7002:4;6969:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6945:63;;7071:1;7055:13;:17;7047:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;7164:1;7148:13;:17;7140:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;7233:6;;;;;;;;;;;:19;;;7275:6;;;;;;;;;;;7305;;;;;;;;;;;7327:4;7346:13;7374;7402:1;7418;7442:4;7462:15;7233:255;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7515:10;;;;;;;;;;;7508:28;;;7545:4;7508:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7501:50;;;;6808:751;:::o;11608:360::-;11651:7;11671:16;11690:10;;;;;;;;;;;:20;;;11719:4;11690:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11671:54;;11751:1;11740:8;:12;11736:194;;;11769:4;;;;;;;;;;;:12;;;11782:11;;11795:8;11769:35;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11821:17;11841:15;:13;:15::i;:::-;11821:35;;11906:12;;11898:4;11886:9;:16;;;;:::i;:::-;11885:33;;;;:::i;:::-;11871:11;:47;;;;11754:176;11736:194;11949:11;;11942:18;;;11608:360;:::o;9278:2322::-;9320:7;9340:15;9358;:13;:15::i;:::-;9340:33;;9384:23;9443:1;9428:12;;:16;:31;;;;;9458:1;9448:7;:11;9428:31;9424:2136;;;9476:20;9515:15;9618:4;;;;;;;;;;;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9553:4;;;;;;;;;;;:34;;;9588:11;;9609:4;9553:62;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:89;9549:169;;;9689:13;:11;:13::i;:::-;9663:39;;;;;;;;9549:169;9751:1;9736:12;:16;9732:1817;;;9776:28;9808:25;9825:7;9808:16;:25::i;:::-;9773:60;;;9854:23;9895:20;9880:12;:35;;;;:::i;:::-;9854:61;;9934:22;9990:4;9978:8;;9960:15;:26;;;;:::i;:::-;9959:35;;;;:::i;:::-;9934:60;;10013:11;;;;;;;;;;;:20;;;10034:8;;;;;;;;;;;10044:14;10013:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10114:14;10096:15;:32;;;;:::i;:::-;10078:50;;10150:16;10168;10204:10;;;;;;;;;;;10190:38;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10149:81;;;;;10251:23;10346:8;10338:17;;10326:8;10318:17;;:37;;;;:::i;:::-;10304:8;10296:17;;10278:15;:35;;;;:::i;:::-;10277:79;;;;:::i;:::-;10251:105;;10375:23;10419:15;10401;:33;;;;:::i;:::-;10375:59;;10455:20;10478:32;10494:15;10478;:32::i;:::-;10455:55;;10529:20;10552:32;10568:15;10552;:32::i;:::-;10529:55;;10606:21;10629;10656:6;;;;;;;;;;;:24;;;10711:6;;;;;;;;;;;10749;;;;;;;;;;;10779:4;10806:12;10841;10656:216;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10605:267;;;;;10912:13;10897:12;:28;10893:376;;;10950:20;10988:13;10973:12;:28;;;;:::i;:::-;10950:51;;11024:34;11045:12;11024:20;:34::i;:::-;;10927:151;10893:376;;;11103:13;11088:12;:28;11084:185;;;11141:20;11179:13;11164:12;:28;;;;:::i;:::-;11141:51;;11215:34;11236:12;11215:20;:34::i;:::-;;11118:151;11084:185;10893:376;11289:19;11311:15;:13;:15::i;:::-;11289:37;;11367:1;11353:11;:15;11345:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;11415:15;:13;:15::i;:::-;;11464;11449:12;:30;;;;11518:15;11500:33;;9754:1795;;;;;;;;;;;;9732:1817;9461:2099;;9424:2136;11577:15;11570:22;;;;9278:2322;:::o;4433:227::-;4474:15;4491;4519:24;4546:10;:8;:10::i;:::-;4519:37;;4579:16;4569:26;;4616:11;;;;;;;;;;;:21;;;4646:4;4616:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4606:46;;4508:152;4433:227;;:::o;7567:653::-;7628:7;7637;7657:21;7699:3;7692;7682:7;:13;;;;:::i;:::-;7681:21;;;;:::i;:::-;7657:45;;7715:27;7765:1;7745:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;7715:52;;7788:65;;;;;;;;7810:11;;;;;;;;;;;7788:65;;;;;;7832:12;;;;;;;;;;;7788:65;;;;;;7847:5;7788:65;;;;;7778:4;7783:1;7778:7;;;;;;;;:::i;:::-;;;;;;;:75;;;;7864:26;7893:6;;;;;;;;;;;:19;;;7913:13;7928:4;7893:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7864:69;;7944:28;7975:9;7985:1;7975:12;;;;;;;;:::i;:::-;;;;;;;;7944:43;;8000:21;8024:40;8043:20;8024:18;:40::i;:::-;8000:64;;8100:13;8083;:30;;8075:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;8176:13;8191:20;8168:44;;;;;;;;;7567:653;;;:::o;5704:507::-;5769:7;5812:1;5797:12;:16;5789:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;5847:27;5897:1;5877:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;5847:52;;5920:59;;;;;;;;5942:11;;;;;;;;;;;5920:59;;;;;;5964:6;;;;;;;;;;;5920:59;;;;;;5973:5;5920:59;;;;;5910:4;5915:1;5910:7;;;;;;;;:::i;:::-;;;;;;;:69;;;;5990:6;;;;;;;;;;;:31;;;6036:12;6063:1;6079:4;6106;6126:15;5990:162;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6172:6;;;;;;;;;;;:16;;;6197:4;6172:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6165:38;;;5704:507;;;:::o;6219:581::-;6284:7;6327:1;6312:12;:16;6304:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;6362:27;6412:1;6392:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;6362:52;;6435:59;;;;;;;;6457:11;;;;;;;;;;;6435:59;;;;;;6479:6;;;;;;;;;;;6435:59;;;;;;6488:5;6435:59;;;;;6425:4;6430:1;6425:7;;;;;;;;:::i;:::-;;;;;;;:69;;;;6515:53;;;;;;;;6537:6;;;;;;;;;;;6515:53;;;;;;6554:6;;;;;;;;;;;6515:53;;;;;;6563:4;6515:53;;;;;6505:4;6510:1;6505:7;;;;;;;;:::i;:::-;;;;;;;:63;;;;6579:6;;;;;;;;;;;:31;;;6625:12;6652:1;6668:4;6695;6715:15;6579:162;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6761:6;;;;;;;;;;;:16;;;6786:4;6761:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6754:38;;;6219:581;;;:::o;3949:476::-;3987:7;4039:1;4015:21;:25;4007:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4148:4;;;;;;;;;;;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4083:4;;;;;;;;;;;:34;;;4118:11;;4139:4;4083:62;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:89;4075:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;4211:21;4235;4211:45;;4267:4;;;;;;;;;;;:12;;;4287:13;4302:11;;4267:47;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4325:20;4348:21;4325:44;;4405:12;4389:13;:28;;;;:::i;:::-;4382:35;;;;3949:476;:::o;3300:641::-;3370:21;3404:27;3454:1;3434:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;3404:52;;3477:65;;;;;;;;3499:11;;;;;;;;;;;3477:65;;;;;;3521:12;;;;;;;;;;;3477:65;;;;;;3536:5;3477:65;;;;;3467:4;3472:1;3467:7;;;;;;;;:::i;:::-;;;;;;;:75;;;;3555:21;3579:6;;;;;;;;;;;:31;;;3625:14;3654:1;3670:4;3697;3717:15;3579:164;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3555:188;;3754:28;3785:7;3810:1;3793:7;:14;:18;;;;:::i;:::-;3785:27;;;;;;;;:::i;:::-;;;;;;;;3754:58;;3839:12;;;;;;;;;;;3825:37;;;3863:20;3825:59;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3913:20;3897:36;;3393:548;;;3300:641;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:90::-;476:7;519:5;512:13;505:21;494:32;;442:90;;;:::o;538:109::-;619:21;634:5;619:21;:::i;:::-;614:3;607:34;538:109;;:::o;653:210::-;740:4;778:2;767:9;763:18;755:26;;791:65;853:1;842:9;838:17;829:6;791:65;:::i;:::-;653:210;;;;:::o;869:126::-;906:7;946:42;939:5;935:54;924:65;;869:126;;;:::o;1001:60::-;1029:3;1050:5;1043:12;;1001:60;;;:::o;1067:142::-;1117:9;1150:53;1168:34;1177:24;1195:5;1177:24;:::i;:::-;1168:34;:::i;:::-;1150:53;:::i;:::-;1137:66;;1067:142;;;:::o;1215:126::-;1265:9;1298:37;1329:5;1298:37;:::i;:::-;1285:50;;1215:126;;;:::o;1347:141::-;1412:9;1445:37;1476:5;1445:37;:::i;:::-;1432:50;;1347:141;;;:::o;1494:161::-;1596:52;1642:5;1596:52;:::i;:::-;1591:3;1584:65;1494:161;;:::o;1661:252::-;1769:4;1807:2;1796:9;1792:18;1784:26;;1820:86;1903:1;1892:9;1888:17;1879:6;1820:86;:::i;:::-;1661:252;;;;:::o;1919:145::-;1988:9;2021:37;2052:5;2021:37;:::i;:::-;2008:50;;1919:145;;;:::o;2070:169::-;2176:56;2226:5;2176:56;:::i;:::-;2171:3;2164:69;2070:169;;:::o;2245:260::-;2357:4;2395:2;2384:9;2380:18;2372:26;;2408:90;2495:1;2484:9;2480:17;2471:6;2408:90;:::i;:::-;2245:260;;;;:::o;2511:142::-;2577:9;2610:37;2641:5;2610:37;:::i;:::-;2597:50;;2511:142;;;:::o;2659:163::-;2762:53;2809:5;2762:53;:::i;:::-;2757:3;2750:66;2659:163;;:::o;2828:254::-;2937:4;2975:2;2964:9;2960:18;2952:26;;2988:87;3072:1;3061:9;3057:17;3048:6;2988:87;:::i;:::-;2828:254;;;;:::o;3088:75::-;3121:6;3154:2;3148:9;3138:19;;3088:75;:::o;3169:117::-;3278:1;3275;3268:12;3292:117;3401:1;3398;3391:12;3415:96;3452:7;3481:24;3499:5;3481:24;:::i;:::-;3470:35;;3415:96;;;:::o;3517:122::-;3590:24;3608:5;3590:24;:::i;:::-;3583:5;3580:35;3570:63;;3629:1;3626;3619:12;3570:63;3517:122;:::o;3645:139::-;3691:5;3729:6;3716:20;3707:29;;3745:33;3772:5;3745:33;:::i;:::-;3645:139;;;;:::o;3790:329::-;3849:6;3898:2;3886:9;3877:7;3873:23;3869:32;3866:119;;;3904:79;;:::i;:::-;3866:119;4024:1;4049:53;4094:7;4085:6;4074:9;4070:22;4049:53;:::i;:::-;4039:63;;3995:117;3790:329;;;;:::o;4125:122::-;4198:24;4216:5;4198:24;:::i;:::-;4191:5;4188:35;4178:63;;4237:1;4234;4227:12;4178:63;4125:122;:::o;4253:139::-;4299:5;4337:6;4324:20;4315:29;;4353:33;4380:5;4353:33;:::i;:::-;4253:139;;;;:::o;4398:329::-;4457:6;4506:2;4494:9;4485:7;4481:23;4477:32;4474:119;;;4512:79;;:::i;:::-;4474:119;4632:1;4657:53;4702:7;4693:6;4682:9;4678:22;4657:53;:::i;:::-;4647:63;;4603:117;4398:329;;;;:::o;4733:142::-;4799:9;4832:37;4863:5;4832:37;:::i;:::-;4819:50;;4733:142;;;:::o;4881:163::-;4984:53;5031:5;4984:53;:::i;:::-;4979:3;4972:66;4881:163;;:::o;5050:254::-;5159:4;5197:2;5186:9;5182:18;5174:26;;5210:87;5294:1;5283:9;5279:17;5270:6;5210:87;:::i;:::-;5050:254;;;;:::o;5310:169::-;5394:11;5428:6;5423:3;5416:19;5468:4;5463:3;5459:14;5444:29;;5310:169;;;;:::o;5485:180::-;5625:32;5621:1;5613:6;5609:14;5602:56;5485:180;:::o;5671:366::-;5813:3;5834:67;5898:2;5893:3;5834:67;:::i;:::-;5827:74;;5910:93;5999:3;5910:93;:::i;:::-;6028:2;6023:3;6019:12;6012:19;;5671:366;;;:::o;6043:419::-;6209:4;6247:2;6236:9;6232:18;6224:26;;6296:9;6290:4;6286:20;6282:1;6271:9;6267:17;6260:47;6324:131;6450:4;6324:131;:::i;:::-;6316:139;;6043:419;;;:::o;6468:180::-;6516:77;6513:1;6506:88;6613:4;6610:1;6603:15;6637:4;6634:1;6627:15;6654:348;6694:7;6717:20;6735:1;6717:20;:::i;:::-;6712:25;;6751:20;6769:1;6751:20;:::i;:::-;6746:25;;6939:1;6871:66;6867:74;6864:1;6861:81;6856:1;6849:9;6842:17;6838:105;6835:131;;;6946:18;;:::i;:::-;6835:131;6994:1;6991;6987:9;6976:20;;6654:348;;;;:::o;7008:180::-;7056:77;7053:1;7046:88;7153:4;7150:1;7143:15;7177:4;7174:1;7167:15;7194:185;7234:1;7251:20;7269:1;7251:20;:::i;:::-;7246:25;;7285:20;7303:1;7285:20;:::i;:::-;7280:25;;7324:1;7314:35;;7329:18;;:::i;:::-;7314:35;7371:1;7368;7364:9;7359:14;;7194:185;;;;:::o;7385:191::-;7425:4;7445:20;7463:1;7445:20;:::i;:::-;7440:25;;7479:20;7497:1;7479:20;:::i;:::-;7474:25;;7518:1;7515;7512:8;7509:34;;;7523:18;;:::i;:::-;7509:34;7568:1;7565;7561:9;7553:17;;7385:191;;;;:::o;7582:118::-;7669:24;7687:5;7669:24;:::i;:::-;7664:3;7657:37;7582:118;;:::o;7706:332::-;7827:4;7865:2;7854:9;7850:18;7842:26;;7878:71;7946:1;7935:9;7931:17;7922:6;7878:71;:::i;:::-;7959:72;8027:2;8016:9;8012:18;8003:6;7959:72;:::i;:::-;7706:332;;;;;:::o;8044:116::-;8114:21;8129:5;8114:21;:::i;:::-;8107:5;8104:32;8094:60;;8150:1;8147;8140:12;8094:60;8044:116;:::o;8166:137::-;8220:5;8251:6;8245:13;8236:22;;8267:30;8291:5;8267:30;:::i;:::-;8166:137;;;;:::o;8309:345::-;8376:6;8425:2;8413:9;8404:7;8400:23;8396:32;8393:119;;;8431:79;;:::i;:::-;8393:119;8551:1;8576:61;8629:7;8620:6;8609:9;8605:22;8576:61;:::i;:::-;8566:71;;8522:125;8309:345;;;;:::o;8660:163::-;8800:15;8796:1;8788:6;8784:14;8777:39;8660:163;:::o;8829:366::-;8971:3;8992:67;9056:2;9051:3;8992:67;:::i;:::-;8985:74;;9068:93;9157:3;9068:93;:::i;:::-;9186:2;9181:3;9177:12;9170:19;;8829:366;;;:::o;9201:419::-;9367:4;9405:2;9394:9;9390:18;9382:26;;9454:9;9448:4;9444:20;9440:1;9429:9;9425:17;9418:47;9482:131;9608:4;9482:131;:::i;:::-;9474:139;;9201:419;;;:::o;9626:222::-;9719:4;9757:2;9746:9;9742:18;9734:26;;9770:71;9838:1;9827:9;9823:17;9814:6;9770:71;:::i;:::-;9626:222;;;;:::o;9854:143::-;9911:5;9942:6;9936:13;9927:22;;9958:33;9985:5;9958:33;:::i;:::-;9854:143;;;;:::o;10003:351::-;10073:6;10122:2;10110:9;10101:7;10097:23;10093:32;10090:119;;;10128:79;;:::i;:::-;10090:119;10248:1;10273:64;10329:7;10320:6;10309:9;10305:22;10273:64;:::i;:::-;10263:74;;10219:128;10003:351;;;;:::o;10360:305::-;10400:3;10419:20;10437:1;10419:20;:::i;:::-;10414:25;;10453:20;10471:1;10453:20;:::i;:::-;10448:25;;10607:1;10539:66;10535:74;10532:1;10529:81;10526:107;;;10613:18;;:::i;:::-;10526:107;10657:1;10654;10650:9;10643:16;;10360:305;;;;:::o;10671:220::-;10811:34;10807:1;10799:6;10795:14;10788:58;10880:3;10875:2;10867:6;10863:15;10856:28;10671:220;:::o;10897:366::-;11039:3;11060:67;11124:2;11119:3;11060:67;:::i;:::-;11053:74;;11136:93;11225:3;11136:93;:::i;:::-;11254:2;11249:3;11245:12;11238:19;;10897:366;;;:::o;11269:419::-;11435:4;11473:2;11462:9;11458:18;11450:26;;11522:9;11516:4;11512:20;11508:1;11497:9;11493:17;11486:47;11550:131;11676:4;11550:131;:::i;:::-;11542:139;;11269:419;;;:::o;11694:170::-;11834:22;11830:1;11822:6;11818:14;11811:46;11694:170;:::o;11870:366::-;12012:3;12033:67;12097:2;12092:3;12033:67;:::i;:::-;12026:74;;12109:93;12198:3;12109:93;:::i;:::-;12227:2;12222:3;12218:12;12211:19;;11870:366;;;:::o;12242:419::-;12408:4;12446:2;12435:9;12431:18;12423:26;;12495:9;12489:4;12485:20;12481:1;12470:9;12466:17;12459:47;12523:131;12649:4;12523:131;:::i;:::-;12515:139;;12242:419;;;:::o;12667:147::-;12768:11;12805:3;12790:18;;12667:147;;;;:::o;12820:114::-;;:::o;12940:398::-;13099:3;13120:83;13201:1;13196:3;13120:83;:::i;:::-;13113:90;;13212:93;13301:3;13212:93;:::i;:::-;13330:1;13325:3;13321:11;13314:18;;12940:398;;;:::o;13344:379::-;13528:3;13550:147;13693:3;13550:147;:::i;:::-;13543:154;;13714:3;13707:10;;13344:379;;;:::o;13729:165::-;13869:17;13865:1;13857:6;13853:14;13846:41;13729:165;:::o;13900:366::-;14042:3;14063:67;14127:2;14122:3;14063:67;:::i;:::-;14056:74;;14139:93;14228:3;14139:93;:::i;:::-;14257:2;14252:3;14248:12;14241:19;;13900:366;;;:::o;14272:419::-;14438:4;14476:2;14465:9;14461:18;14453:26;;14525:9;14519:4;14515:20;14511:1;14500:9;14496:17;14489:47;14553:131;14679:4;14553:131;:::i;:::-;14545:139;;14272:419;;;:::o;14697:332::-;14818:4;14856:2;14845:9;14841:18;14833:26;;14869:71;14937:1;14926:9;14922:17;14913:6;14869:71;:::i;:::-;14950:72;15018:2;15007:9;15003:18;14994:6;14950:72;:::i;:::-;14697:332;;;;;:::o;15035:507::-;15114:6;15122;15171:2;15159:9;15150:7;15146:23;15142:32;15139:119;;;15177:79;;:::i;:::-;15139:119;15297:1;15322:64;15378:7;15369:6;15358:9;15354:22;15322:64;:::i;:::-;15312:74;;15268:128;15435:2;15461:64;15517:7;15508:6;15497:9;15493:22;15461:64;:::i;:::-;15451:74;;15406:129;15035:507;;;;;:::o;15548:163::-;15688:15;15684:1;15676:6;15672:14;15665:39;15548:163;:::o;15717:366::-;15859:3;15880:67;15944:2;15939:3;15880:67;:::i;:::-;15873:74;;15956:93;16045:3;15956:93;:::i;:::-;16074:2;16069:3;16065:12;16058:19;;15717:366;;;:::o;16089:419::-;16255:4;16293:2;16282:9;16278:18;16270:26;;16342:9;16336:4;16332:20;16328:1;16317:9;16313:17;16306:47;16370:131;16496:4;16370:131;:::i;:::-;16362:139;;16089:419;;;:::o;16514:179::-;16654:31;16650:1;16642:6;16638:14;16631:55;16514:179;:::o;16699:366::-;16841:3;16862:67;16926:2;16921:3;16862:67;:::i;:::-;16855:74;;16938:93;17027:3;16938:93;:::i;:::-;17056:2;17051:3;17047:12;17040:19;;16699:366;;;:::o;17071:419::-;17237:4;17275:2;17264:9;17260:18;17252:26;;17324:9;17318:4;17314:20;17310:1;17299:9;17295:17;17288:47;17352:131;17478:4;17352:131;:::i;:::-;17344:139;;17071:419;;;:::o;17496:652::-;17695:4;17733:3;17722:9;17718:19;17710:27;;17747:71;17815:1;17804:9;17800:17;17791:6;17747:71;:::i;:::-;17828:72;17896:2;17885:9;17881:18;17872:6;17828:72;:::i;:::-;17910:66;17972:2;17961:9;17957:18;17948:6;17910:66;:::i;:::-;17986:72;18054:2;18043:9;18039:18;18030:6;17986:72;:::i;:::-;18068:73;18136:3;18125:9;18121:19;18112:6;18068:73;:::i;:::-;17496:652;;;;;;;;:::o;18154:663::-;18242:6;18250;18258;18307:2;18295:9;18286:7;18282:23;18278:32;18275:119;;;18313:79;;:::i;:::-;18275:119;18433:1;18458:64;18514:7;18505:6;18494:9;18490:22;18458:64;:::i;:::-;18448:74;;18404:128;18571:2;18597:64;18653:7;18644:6;18633:9;18629:22;18597:64;:::i;:::-;18587:74;;18542:129;18710:2;18736:64;18792:7;18783:6;18772:9;18768:22;18736:64;:::i;:::-;18726:74;;18681:129;18154:663;;;;;:::o;18823:171::-;18963:23;18959:1;18951:6;18947:14;18940:47;18823:171;:::o;19000:366::-;19142:3;19163:67;19227:2;19222:3;19163:67;:::i;:::-;19156:74;;19239:93;19328:3;19239:93;:::i;:::-;19357:2;19352:3;19348:12;19341:19;;19000:366;;;:::o;19372:419::-;19538:4;19576:2;19565:9;19561:18;19553:26;;19625:9;19619:4;19615:20;19611:1;19600:9;19596:17;19589:47;19653:131;19779:4;19653:131;:::i;:::-;19645:139;;19372:419;;;:::o;19797:169::-;19937:21;19933:1;19925:6;19921:14;19914:45;19797:169;:::o;19972:366::-;20114:3;20135:67;20199:2;20194:3;20135:67;:::i;:::-;20128:74;;20211:93;20300:3;20211:93;:::i;:::-;20329:2;20324:3;20320:12;20313:19;;19972:366;;;:::o;20344:419::-;20510:4;20548:2;20537:9;20533:18;20525:26;;20597:9;20591:4;20587:20;20583:1;20572:9;20568:17;20561:47;20625:131;20751:4;20625:131;:::i;:::-;20617:139;;20344:419;;;:::o;20769:442::-;20918:4;20956:2;20945:9;20941:18;20933:26;;20969:71;21037:1;21026:9;21022:17;21013:6;20969:71;:::i;:::-;21050:72;21118:2;21107:9;21103:18;21094:6;21050:72;:::i;:::-;21132;21200:2;21189:9;21185:18;21176:6;21132:72;:::i;:::-;20769:442;;;;;;:::o;21217:332::-;21338:4;21376:2;21365:9;21361:18;21353:26;;21389:71;21457:1;21446:9;21442:17;21433:6;21389:71;:::i;:::-;21470:72;21538:2;21527:9;21523:18;21514:6;21470:72;:::i;:::-;21217:332;;;;;:::o;21555:172::-;21695:24;21691:1;21683:6;21679:14;21672:48;21555:172;:::o;21733:366::-;21875:3;21896:67;21960:2;21955:3;21896:67;:::i;:::-;21889:74;;21972:93;22061:3;21972:93;:::i;:::-;22090:2;22085:3;22081:12;22074:19;;21733:366;;;:::o;22105:419::-;22271:4;22309:2;22298:9;22294:18;22286:26;;22358:9;22352:4;22348:20;22344:1;22333:9;22329:17;22322:47;22386:131;22512:4;22386:131;:::i;:::-;22378:139;;22105:419;;;:::o;22530:168::-;22670:20;22666:1;22658:6;22654:14;22647:44;22530:168;:::o;22704:366::-;22846:3;22867:67;22931:2;22926:3;22867:67;:::i;:::-;22860:74;;22943:93;23032:3;22943:93;:::i;:::-;23061:2;23056:3;23052:12;23045:19;;22704:366;;;:::o;23076:419::-;23242:4;23280:2;23269:9;23265:18;23257:26;;23329:9;23323:4;23319:20;23315:1;23304:9;23300:17;23293:47;23357:131;23483:4;23357:131;:::i;:::-;23349:139;;23076:419;;;:::o;23501:172::-;23641:24;23637:1;23629:6;23625:14;23618:48;23501:172;:::o;23679:366::-;23821:3;23842:67;23906:2;23901:3;23842:67;:::i;:::-;23835:74;;23918:93;24007:3;23918:93;:::i;:::-;24036:2;24031:3;24027:12;24020:19;;23679:366;;;:::o;24051:419::-;24217:4;24255:2;24244:9;24240:18;24232:26;;24304:9;24298:4;24294:20;24290:1;24279:9;24275:17;24268:47;24332:131;24458:4;24332:131;:::i;:::-;24324:139;;24051:419;;;:::o;24476:167::-;24616:19;24612:1;24604:6;24600:14;24593:43;24476:167;:::o;24649:366::-;24791:3;24812:67;24876:2;24871:3;24812:67;:::i;:::-;24805:74;;24888:93;24977:3;24888:93;:::i;:::-;25006:2;25001:3;24997:12;24990:19;;24649:366;;;:::o;25021:419::-;25187:4;25225:2;25214:9;25210:18;25202:26;;25274:9;25268:4;25264:20;25260:1;25249:9;25245:17;25238:47;25302:131;25428:4;25302:131;:::i;:::-;25294:139;;25021:419;;;:::o;25446:180::-;25494:77;25491:1;25484:88;25591:4;25588:1;25581:15;25615:4;25612:1;25605:15;25632:180;25680:77;25677:1;25670:88;25777:4;25774:1;25767:15;25801:4;25798:1;25791:15;25818:85;25863:7;25892:5;25881:16;;25818:85;;;:::o;25909:158::-;25967:9;26000:61;26018:42;26027:32;26053:5;26027:32;:::i;:::-;26018:42;:::i;:::-;26000:61;:::i;:::-;25987:74;;25909:158;;;:::o;26073:147::-;26168:45;26207:5;26168:45;:::i;:::-;26163:3;26156:58;26073:147;;:::o;26226:137::-;26316:6;26350:5;26344:12;26334:22;;26226:137;;;:::o;26369:207::-;26491:11;26525:6;26520:3;26513:19;26565:4;26560:3;26556:14;26541:29;;26369:207;;;;:::o;26582:155::-;26672:4;26695:3;26687:11;;26725:4;26720:3;26716:14;26708:22;;26582:155;;;:::o;26743:108::-;26820:24;26838:5;26820:24;:::i;:::-;26815:3;26808:37;26743:108;;:::o;26857:99::-;26928:21;26943:5;26928:21;:::i;:::-;26923:3;26916:34;26857:99;;:::o;27014:661::-;27147:4;27142:3;27138:14;27234:4;27227:5;27223:16;27217:23;27253:63;27310:4;27305:3;27301:14;27287:12;27253:63;:::i;:::-;27162:164;27406:4;27399:5;27395:16;27389:23;27425:63;27482:4;27477:3;27473:14;27459:12;27425:63;:::i;:::-;27336:162;27582:4;27575:5;27571:16;27565:23;27601:57;27652:4;27647:3;27643:14;27629:12;27601:57;:::i;:::-;27508:160;27116:559;27014:661;;:::o;27681:271::-;27796:10;27817:92;27905:3;27897:6;27817:92;:::i;:::-;27941:4;27936:3;27932:14;27918:28;;27681:271;;;;:::o;27958:136::-;28051:4;28083;28078:3;28074:14;28066:22;;27958:136;;;:::o;28156:916::-;28321:3;28350:77;28421:5;28350:77;:::i;:::-;28443:109;28545:6;28540:3;28443:109;:::i;:::-;28436:116;;28576:79;28649:5;28576:79;:::i;:::-;28678:7;28709:1;28694:353;28719:6;28716:1;28713:13;28694:353;;;28795:6;28789:13;28822:109;28927:3;28912:13;28822:109;:::i;:::-;28815:116;;28954:83;29030:6;28954:83;:::i;:::-;28944:93;;28754:293;28741:1;28738;28734:9;28729:14;;28694:353;;;28698:14;29063:3;29056:10;;28326:746;;;28156:916;;;;:::o;29078:923::-;29387:4;29425:3;29414:9;29410:19;29402:27;;29439:71;29507:1;29496:9;29492:17;29483:6;29439:71;:::i;:::-;29520:80;29596:2;29585:9;29581:18;29572:6;29520:80;:::i;:::-;29647:9;29641:4;29637:20;29632:2;29621:9;29617:18;29610:48;29675:154;29824:4;29815:6;29675:154;:::i;:::-;29667:162;;29839:72;29907:2;29896:9;29892:18;29883:6;29839:72;:::i;:::-;29921:73;29989:3;29978:9;29974:19;29965:6;29921:73;:::i;:::-;29078:923;;;;;;;;:::o;30007:117::-;30116:1;30113;30106:12;30130:102;30171:6;30222:2;30218:7;30213:2;30206:5;30202:14;30198:28;30188:38;;30130:102;;;:::o;30238:281::-;30321:27;30343:4;30321:27;:::i;:::-;30313:6;30309:40;30451:6;30439:10;30436:22;30415:18;30403:10;30400:34;30397:62;30394:88;;;30462:18;;:::i;:::-;30394:88;30502:10;30498:2;30491:22;30281:238;30238:281;;:::o;30525:129::-;30559:6;30586:20;;:::i;:::-;30576:30;;30615:33;30643:4;30635:6;30615:33;:::i;:::-;30525:129;;;:::o;30660:311::-;30737:4;30827:18;30819:6;30816:30;30813:56;;;30849:18;;:::i;:::-;30813:56;30899:4;30891:6;30887:17;30879:25;;30959:4;30953;30949:15;30941:23;;30660:311;;;:::o;30977:117::-;31086:1;31083;31076:12;31117:732;31224:5;31249:81;31265:64;31322:6;31265:64;:::i;:::-;31249:81;:::i;:::-;31240:90;;31350:5;31379:6;31372:5;31365:21;31413:4;31406:5;31402:16;31395:23;;31466:4;31458:6;31454:17;31446:6;31442:30;31495:3;31487:6;31484:15;31481:122;;;31514:79;;:::i;:::-;31481:122;31629:6;31612:231;31646:6;31641:3;31638:15;31612:231;;;31721:3;31750:48;31794:3;31782:10;31750:48;:::i;:::-;31745:3;31738:61;31828:4;31823:3;31819:14;31812:21;;31688:155;31672:4;31667:3;31663:14;31656:21;;31612:231;;;31616:21;31230:619;;31117:732;;;;;:::o;31872:385::-;31954:5;32003:3;31996:4;31988:6;31984:17;31980:27;31970:122;;32011:79;;:::i;:::-;31970:122;32121:6;32115:13;32146:105;32247:3;32239:6;32232:4;32224:6;32220:17;32146:105;:::i;:::-;32137:114;;31960:297;31872:385;;;;:::o;32263:554::-;32358:6;32407:2;32395:9;32386:7;32382:23;32378:32;32375:119;;;32413:79;;:::i;:::-;32375:119;32554:1;32543:9;32539:17;32533:24;32584:18;32576:6;32573:30;32570:117;;;32606:79;;:::i;:::-;32570:117;32711:89;32792:7;32783:6;32772:9;32768:22;32711:89;:::i;:::-;32701:99;;32504:306;32263:554;;;;:::o;32823:167::-;32963:19;32959:1;32951:6;32947:14;32940:43;32823:167;:::o;32996:366::-;33138:3;33159:67;33223:2;33218:3;33159:67;:::i;:::-;33152:74;;33235:93;33324:3;33235:93;:::i;:::-;33353:2;33348:3;33344:12;33337:19;;32996:366;;;:::o;33368:419::-;33534:4;33572:2;33561:9;33557:18;33549:26;;33621:9;33615:4;33611:20;33607:1;33596:9;33592:17;33585:47;33649:131;33775:4;33649:131;:::i;:::-;33641:139;;33368:419;;;:::o;33793:239::-;33933:34;33929:1;33921:6;33917:14;33910:58;34002:22;33997:2;33989:6;33985:15;33978:47;33793:239;:::o;34038:366::-;34180:3;34201:67;34265:2;34260:3;34201:67;:::i;:::-;34194:74;;34277:93;34366:3;34277:93;:::i;:::-;34395:2;34390:3;34386:12;34379:19;;34038:366;;;:::o;34410:419::-;34576:4;34614:2;34603:9;34599:18;34591:26;;34663:9;34657:4;34653:20;34649:1;34638:9;34634:17;34627:47;34691:131;34817:4;34691:131;:::i;:::-;34683:139;;34410:419;;;:::o;34835:239::-;34975:34;34971:1;34963:6;34959:14;34952:58;35044:22;35039:2;35031:6;35027:15;35020:47;34835:239;:::o;35080:366::-;35222:3;35243:67;35307:2;35302:3;35243:67;:::i;:::-;35236:74;;35319:93;35408:3;35319:93;:::i;:::-;35437:2;35432:3;35428:12;35421:19;;35080:366;;;:::o;35452:419::-;35618:4;35656:2;35645:9;35641:18;35633:26;;35705:9;35699:4;35695:20;35691:1;35680:9;35676:17;35669:47;35733:131;35859:4;35733:131;:::i;:::-;35725:139;;35452:419;;;:::o;35877:1128::-;36204:4;36242:3;36231:9;36227:19;36219:27;;36256:71;36324:1;36313:9;36309:17;36300:6;36256:71;:::i;:::-;36337:72;36405:2;36394:9;36390:18;36381:6;36337:72;:::i;:::-;36419:66;36481:2;36470:9;36466:18;36457:6;36419:66;:::i;:::-;36495:72;36563:2;36552:9;36548:18;36539:6;36495:72;:::i;:::-;36577:73;36645:3;36634:9;36630:19;36621:6;36577:73;:::i;:::-;36660:81;36736:3;36725:9;36721:19;36712:6;36660:81;:::i;:::-;36751;36827:3;36816:9;36812:19;36803:6;36751:81;:::i;:::-;36842:73;36910:3;36899:9;36895:19;36886:6;36842:73;:::i;:::-;36925;36993:3;36982:9;36978:19;36969:6;36925:73;:::i;:::-;35877:1128;;;;;;;;;;;;:::o;37011:114::-;37048:7;37088:30;37081:5;37077:42;37066:53;;37011:114;;;:::o;37131:122::-;37204:24;37222:5;37204:24;:::i;:::-;37197:5;37194:35;37184:63;;37243:1;37240;37233:12;37184:63;37131:122;:::o;37259:143::-;37316:5;37347:6;37341:13;37332:22;;37363:33;37390:5;37363:33;:::i;:::-;37259:143;;;;:::o;37408:93::-;37444:7;37484:10;37477:5;37473:22;37462:33;;37408:93;;;:::o;37507:120::-;37579:23;37596:5;37579:23;:::i;:::-;37572:5;37569:34;37559:62;;37617:1;37614;37607:12;37559:62;37507:120;:::o;37633:141::-;37689:5;37720:6;37714:13;37705:22;;37736:32;37762:5;37736:32;:::i;:::-;37633:141;;;;:::o;37780:661::-;37867:6;37875;37883;37932:2;37920:9;37911:7;37907:23;37903:32;37900:119;;;37938:79;;:::i;:::-;37900:119;38058:1;38083:64;38139:7;38130:6;38119:9;38115:22;38083:64;:::i;:::-;38073:74;;38029:128;38196:2;38222:64;38278:7;38269:6;38258:9;38254:22;38222:64;:::i;:::-;38212:74;;38167:129;38335:2;38361:63;38416:7;38407:6;38396:9;38392:22;38361:63;:::i;:::-;38351:73;;38306:128;37780:661;;;;;:::o;38447:575::-;38664:4;38702:2;38691:9;38687:18;38679:26;;38715:71;38783:1;38772:9;38768:17;38759:6;38715:71;:::i;:::-;38833:9;38827:4;38823:20;38818:2;38807:9;38803:18;38796:48;38861:154;39010:4;39001:6;38861:154;:::i;:::-;38853:162;;38447:575;;;;;:::o;39028:224::-;39168:34;39164:1;39156:6;39152:14;39145:58;39237:7;39232:2;39224:6;39220:15;39213:32;39028:224;:::o;39258:366::-;39400:3;39421:67;39485:2;39480:3;39421:67;:::i;:::-;39414:74;;39497:93;39586:3;39497:93;:::i;:::-;39615:2;39610:3;39606:12;39599:19;;39258:366;;;:::o;39630:419::-;39796:4;39834:2;39823:9;39819:18;39811:26;;39883:9;39877:4;39873:20;39869:1;39858:9;39854:17;39847:47;39911:131;40037:4;39911:131;:::i;:::-;39903:139;;39630:419;;;:::o;40055:166::-;40195:18;40191:1;40183:6;40179:14;40172:42;40055:166;:::o;40227:366::-;40369:3;40390:67;40454:2;40449:3;40390:67;:::i;:::-;40383:74;;40466:93;40555:3;40466:93;:::i;:::-;40584:2;40579:3;40575:12;40568:19;;40227:366;;;:::o;40599:419::-;40765:4;40803:2;40792:9;40788:18;40780:26;;40852:9;40846:4;40842:20;40838:1;40827:9;40823:17;40816:47;40880:131;41006:4;40880:131;:::i;:::-;40872:139;;40599:419;;;:::o;41024:169::-;41164:21;41160:1;41152:6;41148:14;41141:45;41024:169;:::o;41199:366::-;41341:3;41362:67;41426:2;41421:3;41362:67;:::i;:::-;41355:74;;41438:93;41527:3;41438:93;:::i;:::-;41556:2;41551:3;41547:12;41540:19;;41199:366;;;:::o;41571:419::-;41737:4;41775:2;41764:9;41760:18;41752:26;;41824:9;41818:4;41814:20;41810:1;41799:9;41795:17;41788:47;41852:131;41978:4;41852:131;:::i;:::-;41844:139;;41571:419;;;:::o;41996:171::-;42136:23;42132:1;42124:6;42120:14;42113:47;41996:171;:::o;42173:366::-;42315:3;42336:67;42400:2;42395:3;42336:67;:::i;:::-;42329:74;;42412:93;42501:3;42412:93;:::i;:::-;42530:2;42525:3;42521:12;42514:19;;42173:366;;;:::o;42545:419::-;42711:4;42749:2;42738:9;42734:18;42726:26;;42798:9;42792:4;42788:20;42784:1;42773:9;42769:17;42762:47;42826:131;42952:4;42826:131;:::i;:::-;42818:139;;42545:419;;;:::o
Swarm Source
ipfs://df76c0035e8d88393cd1b956efa7f8dc0e2c12827bc8c25eeca7629e5d471d8f
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.