Overview
Max Total Supply
0.999793 yUSDT
Holders
10 (0.00%)
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 6 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
yUSDT
Compiler Version
v0.5.12+commit.7709ece9
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-01-30 */ pragma solidity ^0.5.0; pragma experimental ABIEncoderV2; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } contract Context { constructor () internal { } // solhint-disable-previous-line no-empty-blocks function _msgSender() internal view returns (address payable) { return msg.sender; } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } contract ERC20 is Context, IERC20 { using SafeMath for uint256; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 _totalSupply; function totalSupply() public view returns (uint256) { return _totalSupply; } function balanceOf(address account) public view returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function _transfer(address sender, address recipient, uint256 amount) internal { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal { require(account != address(0), "ERC20: burn from the zero address"); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve(address owner, address spender, uint256 amount) internal { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _burnFrom(address account, uint256 amount) internal { _burn(account, amount); _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, "ERC20: burn amount exceeds allowance")); } } contract ERC20Detailed is IERC20 { string private _name; string private _symbol; uint8 private _decimals; constructor (string memory name, string memory symbol, uint8 decimals) public { _name = name; _symbol = symbol; _decimals = decimals; } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } } contract ReentrancyGuard { uint256 private _guardCounter; constructor () internal { _guardCounter = 1; } modifier nonReentrant() { _guardCounter += 1; uint256 localCounter = _guardCounter; _; require(localCounter == _guardCounter, "ReentrancyGuard: reentrant call"); } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () internal { _owner = _msgSender(); emit OwnershipTransferred(address(0), _owner); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(isOwner(), "Ownable: caller is not the owner"); _; } function isOwner() public view returns (bool) { return _msgSender() == _owner; } function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library Address { function isContract(address account) internal view returns (bool) { bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != 0x0 && codehash != accountHash); } function toPayable(address account) internal pure returns (address payable) { return address(uint160(account)); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-call-value (bool success, ) = recipient.call.value(amount)(""); require(success, "Address: unable to send value, recipient may have reverted"); } } library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function safeApprove(IERC20 token, address spender, uint256 value) internal { require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero"); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function callOptionalReturn(IERC20 token, bytes memory data) private { require(address(token).isContract(), "SafeERC20: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = address(token).call(data); require(success, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } interface Compound { function mint ( uint256 mintAmount ) external returns ( uint256 ); function redeem(uint256 redeemTokens) external returns (uint256); function exchangeRateStored() external view returns (uint); } interface Fulcrum { function mint(address receiver, uint256 amount) external payable returns (uint256 mintAmount); function burn(address receiver, uint256 burnAmount) external returns (uint256 loanAmountPaid); function assetBalanceOf(address _owner) external view returns (uint256 balance); } interface ILendingPoolAddressesProvider { function getLendingPool() external view returns (address); } interface Aave { function deposit(address _reserve, uint256 _amount, uint16 _referralCode) external; } interface AToken { function redeem(uint256 amount) external; } interface IIEarnManager { function recommend(address _token) external view returns ( string memory choice, uint256 capr, uint256 iapr, uint256 aapr, uint256 dapr ); } contract Structs { struct Val { uint256 value; } enum ActionType { Deposit, // supply tokens Withdraw // borrow tokens } enum AssetDenomination { Wei // the amount is denominated in wei } enum AssetReference { Delta // the amount is given as a delta from the current value } struct AssetAmount { bool sign; // true if positive AssetDenomination denomination; AssetReference ref; uint256 value; } struct ActionArgs { ActionType actionType; uint256 accountId; AssetAmount amount; uint256 primaryMarketId; uint256 secondaryMarketId; address otherAddress; uint256 otherAccountId; bytes data; } struct Info { address owner; // The address that owns the account uint256 number; // A nonce that allows a single address to control many accounts } struct Wei { bool sign; // true if positive uint256 value; } } contract DyDx is Structs { function getAccountWei(Info memory account, uint256 marketId) public view returns (Wei memory); function operate(Info[] memory, ActionArgs[] memory) public; } interface LendingPoolAddressesProvider { function getLendingPool() external view returns (address); function getLendingPoolCore() external view returns (address); } contract yUSDT is ERC20, ERC20Detailed, ReentrancyGuard, Ownable, Structs { using SafeERC20 for IERC20; using Address for address; using SafeMath for uint256; uint256 public pool; address public token; address public compound; address public fulcrum; address public aave; address public aaveToken; address public dydx; uint256 public dToken; address public apr; enum Lender { NONE, DYDX, COMPOUND, AAVE, FULCRUM } Lender public provider = Lender.NONE; constructor () public ERC20Detailed("yUSDT", "yUSDT", 6) { token = address(0xdAC17F958D2ee523a2206206994597C13D831ec7); apr = address(0x318135fbD0b40D48fCEF431CCdF6C7926450edFB); dydx = address(0x1E0447b19BB6EcFdAe1e4AE1694b0C3659614e4e); aave = address(0x24a42fD28C976A61Df5D00D0599C34c4f90748c8); fulcrum = address(0xF013406A0B1d544238083DF0B93ad0d2cBE0f65f); aaveToken = address(0x71fc860F7D3A592A4a98740e39dB31d25db65ae8); compound = address(0x39AA39c021dfbaE8faC545936693aC917d5E7563); dToken = 0; approveToken(); } function set_new_AAVE(address _new_AAVE) public onlyOwner { aave = _new_AAVE; } function set_new_DYDX(address _new_DYDX) public onlyOwner { dydx = _new_DYDX; } function set_new_APR(address _new_APR) public onlyOwner { apr = _new_APR; } function set_new_FULCRUM(address _new_FULCRUM) public onlyOwner { fulcrum = _new_FULCRUM; } function set_new_ATOKEN(address _new_ATOKEN) public onlyOwner { aaveToken = _new_ATOKEN; } function set_new_COMPOUND(address _new_COMPOUND) public onlyOwner { compound = _new_COMPOUND; } function set_new_DTOKEN(uint256 _new_DTOKEN) public onlyOwner { dToken = _new_DTOKEN; } function() external payable { } function recommend() public view returns (Lender) { (,uint256 capr,uint256 iapr,uint256 aapr,uint256 dapr) = IIEarnManager(apr).recommend(token); uint256 max = 0; if (capr > max) { max = capr; } if (iapr > max) { max = iapr; } if (aapr > max) { max = aapr; } if (dapr > max) { max = dapr; } Lender newProvider = Lender.NONE; if (max == dapr) { newProvider = Lender.DYDX; } if (max == aapr) { newProvider = Lender.AAVE; } if (max == iapr) { newProvider = Lender.FULCRUM; } if (max == capr) { newProvider = Lender.COMPOUND; } return newProvider; } function supplyDydx(uint256 amount) public returns(uint) { Info[] memory infos = new Info[](1); infos[0] = Info(address(this), 0); AssetAmount memory amt = AssetAmount(true, AssetDenomination.Wei, AssetReference.Delta, amount); ActionArgs memory act; act.actionType = ActionType.Deposit; act.accountId = 0; act.amount = amt; act.primaryMarketId = dToken; act.otherAddress = address(this); ActionArgs[] memory args = new ActionArgs[](1); args[0] = act; DyDx(dydx).operate(infos, args); } function withdrawDydx(uint256 amount) internal { Info[] memory infos = new Info[](1); infos[0] = Info(address(this), 0); AssetAmount memory amt = AssetAmount(false, AssetDenomination.Wei, AssetReference.Delta, amount); ActionArgs memory act; act.actionType = ActionType.Withdraw; act.accountId = 0; act.amount = amt; act.primaryMarketId = dToken; act.otherAddress = address(this); ActionArgs[] memory args = new ActionArgs[](1); args[0] = act; DyDx(dydx).operate(infos, args); } function balance() public view returns (uint256) { return IERC20(token).balanceOf(address(this)); } function getAave() public view returns (address) { return LendingPoolAddressesProvider(aave).getLendingPool(); } function getAaveCore() public view returns (address) { return LendingPoolAddressesProvider(aave).getLendingPoolCore(); } function approveToken() public { IERC20(token).safeApprove(compound, uint(-1)); //also add to constructor IERC20(token).safeApprove(dydx, uint(-1)); IERC20(token).safeApprove(getAaveCore(), uint(-1)); IERC20(token).safeApprove(fulcrum, uint(-1)); } function balanceDydx() public view returns (uint256) { Wei memory bal = DyDx(dydx).getAccountWei(Info(address(this), 0), dToken); return bal.value; } function balanceCompound() public view returns (uint256) { return IERC20(compound).balanceOf(address(this)); } function balanceCompoundInToken() public view returns (uint256) { // Mantisa 1e18 to decimals uint256 b = balanceCompound(); if (b > 0) { b = b.mul(Compound(compound).exchangeRateStored()).div(1e18); } return b; } function balanceFulcrumInToken() public view returns (uint256) { uint256 b = balanceFulcrum(); if (b > 0) { b = Fulcrum(fulcrum).assetBalanceOf(address(this)); } return b; } function balanceFulcrum() public view returns (uint256) { return IERC20(fulcrum).balanceOf(address(this)); } function balanceAave() public view returns (uint256) { return IERC20(aaveToken).balanceOf(address(this)); } function withdrawAll() internal { uint256 amount = balanceCompound(); if (amount > 0) { withdrawCompound(amount); } amount = balanceDydx(); if (amount > 0) { withdrawDydx(amount); } amount = balanceFulcrum(); if (amount > 0) { withdrawFulcrum(amount); } amount = balanceAave(); if (amount > 0) { withdrawAave(amount); } } function withdrawSome(uint256 _amount) internal { if (provider == Lender.COMPOUND) { uint256 b = balanceCompound(); uint256 bT = balanceCompoundInToken(); require(bT >= _amount, "insufficient funds"); uint256 amount = b.mul(_amount).div(bT); withdrawCompound(amount); } if (provider == Lender.AAVE) { require(balanceAave() >= _amount, "insufficient funds"); withdrawAave(_amount); } if (provider == Lender.DYDX) { require(balanceDydx() >= _amount, "insufficient funds"); withdrawDydx(_amount); } if (provider == Lender.FULCRUM) { withdrawFulcrum(_amount); } } function rebalance() public { Lender newProvider = recommend(); if (newProvider != provider) { withdrawAll(); } if (balance() > 0) { if (newProvider == Lender.DYDX) { supplyDydx(balance()); } if (newProvider == Lender.FULCRUM) { supplyFulcrum(balance()); } if (newProvider == Lender.COMPOUND) { supplyCompound(balance()); } if (newProvider == Lender.AAVE) { supplyAave(balance()); } } provider = newProvider; } function supplyAave(uint amount) public { Aave(getAave()).deposit(token, amount, 0); } function supplyFulcrum(uint amount) public { require(Fulcrum(fulcrum).mint(address(this), amount) > 0, "FULCRUM: supply failed"); } function supplyCompound(uint amount) public { require(Compound(compound).mint(amount) == 0, "COMPOUND: supply failed"); } function withdrawAave(uint amount) internal { AToken(aaveToken).redeem(amount); } function withdrawFulcrum(uint amount) internal { require(Fulcrum(fulcrum).burn(address(this), amount) > 0, "FULCRUM: withdraw failed"); } function withdrawCompound(uint amount) internal { require(Compound(compound).redeem(amount) == 0, "COMPOUND: withdraw failed"); } // Invest ETH function invest(uint256 _amount) external nonReentrant { require(_amount > 0, "deposit must be greater than 0"); pool = calcPoolValueInToken(); IERC20(token).safeTransferFrom(msg.sender, address(this), _amount); rebalance(); // Calculate pool shares uint256 shares = 0; if (pool == 0) { shares = _amount; pool = _amount; } else { shares = (_amount.mul(_totalSupply)).div(pool); } pool = calcPoolValueInToken(); _mint(msg.sender, shares); } // Invest self eth from external profits function investSelf() external nonReentrant onlyOwner { uint b = IERC20(token).balanceOf(address(this)); require(b > 0, "deposit must be greater than 0"); rebalance(); pool = calcPoolValueInToken(); } function calcPoolValueInToken() public view returns (uint) { return balanceCompoundInToken() .add(balanceFulcrumInToken()) .add(balanceDydx()) .add(balanceAave()) .add(balance()); } function getPricePerFullShare() public view returns (uint) { uint _pool = calcPoolValueInToken(); return _pool.mul(1e18).div(_totalSupply); } // Redeem any invested tokens from the pool function redeem(uint256 _shares) external nonReentrant { require(_shares > 0, "withdraw must be greater than 0"); uint256 ibalance = balanceOf(msg.sender); require(_shares <= ibalance, "insufficient balance"); // Could have over value from cTokens pool = calcPoolValueInToken(); // Calc eth to redeem before updating balances uint256 r = (pool.mul(_shares)).div(_totalSupply); _balances[msg.sender] = _balances[msg.sender].sub(_shares, "redeem amount exceeds balance"); _totalSupply = _totalSupply.sub(_shares); emit Transfer(msg.sender, address(0), _shares); // Check ETH balance uint256 b = IERC20(token).balanceOf(address(this)); if (b < r) { withdrawSome(r); } IERC20(token).safeTransfer(msg.sender, r); rebalance(); pool = calcPoolValueInToken(); } // incase of half-way error function inCaseTokenGetsStuck(IERC20 _TokenAddress) onlyOwner public { uint qty = _TokenAddress.balanceOf(address(this)); _TokenAddress.transfer(msg.sender, qty); } // incase of half-way error function inCaseETHGetsStuck() onlyOwner public{ (bool result, ) = msg.sender.call.value(address(this).balance)(""); require(result, "transfer of ETH failed"); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[],"name":"aave","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"aaveToken","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"approveToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"apr","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceAave","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceCompound","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceCompoundInToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceDydx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceFulcrum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceFulcrumInToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"calcPoolValueInToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"compound","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"dToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"dydx","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fulcrum","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getAave","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getAaveCore","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getPricePerFullShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"inCaseETHGetsStuck","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract IERC20","name":"_TokenAddress","type":"address"}],"name":"inCaseTokenGetsStuck","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"invest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"investSelf","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"provider","outputs":[{"internalType":"enum yUSDT.Lender","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"rebalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"recommend","outputs":[{"internalType":"enum yUSDT.Lender","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_shares","type":"uint256"}],"name":"redeem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_new_AAVE","type":"address"}],"name":"set_new_AAVE","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_new_APR","type":"address"}],"name":"set_new_APR","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_new_ATOKEN","type":"address"}],"name":"set_new_ATOKEN","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_new_COMPOUND","type":"address"}],"name":"set_new_COMPOUND","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_new_DTOKEN","type":"uint256"}],"name":"set_new_DTOKEN","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_new_DYDX","type":"address"}],"name":"set_new_DYDX","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_new_FULCRUM","type":"address"}],"name":"set_new_FULCRUM","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"supplyAave","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"supplyCompound","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"supplyDydx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"supplyFulcrum","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526000601060146101000a81548160ff021916908360048111156200002457fe5b02179055503480156200003657600080fd5b506040518060400160405280600581526020017f79555344540000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f795553445400000000000000000000000000000000000000000000000000000081525060068260039080519060200190620000bd92919062000a9b565b508160049080519060200190620000d692919062000a9b565b5080600560006101000a81548160ff021916908360ff16021790555050505060016006819055506200010d6200043b60201b60201c565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a373dac17f958d2ee523a2206206994597c13d831ec7600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073318135fbd0b40d48fcef431ccdf6c7926450edfb601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507324a42fd28c976a61df5d00d0599c34c4f90748c8600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f013406a0b1d544238083df0b93ad0d2cbe0f65f600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507371fc860f7d3a592a4a98740e39db31d25db65ae8600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507339aa39c021dfbae8fac545936693ac917d5e7563600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600f81905550620004356200044360201b60201c565b62000fb0565b600033905090565b620004d9600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166200068a60201b62003a8a179092919060201c565b6200056f600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166200068a60201b62003a8a179092919060201c565b620005f2620005836200081560201b60201c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166200068a60201b62003a8a179092919060201c565b62000688600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166200068a60201b62003a8a179092919060201c565b565b60008114806200072a575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401620006d492919062000dd9565b60206040518083038186803b158015620006ed57600080fd5b505afa15801562000702573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062000728919081019062000be7565b145b6200076c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007639062000e77565b60405180910390fd5b62000810838473ffffffffffffffffffffffffffffffffffffffff1663095ea7b3905060e01b8484604051602401620007a792919062000e06565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050620008c060201b60201c565b505050565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b1580156200088057600080fd5b505afa15801562000895573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620008bb919081019062000b8f565b905090565b620008ec8273ffffffffffffffffffffffffffffffffffffffff1662000a4f60201b6200469a1760201c565b6200092e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009259062000e99565b60405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff168360405162000959919062000dc0565b6000604051808303816000865af19150503d806000811462000998576040519150601f19603f3d011682016040523d82523d6000602084013e6200099d565b606091505b509150915081620009e5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009dc9062000e33565b60405180910390fd5b60008151111562000a49578080602001905162000a06919081019062000bbb565b62000a48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a3f9062000e55565b60405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b821415801562000a925750808214155b92505050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000ade57805160ff191683800117855562000b0f565b8280016001018555821562000b0f579182015b8281111562000b0e57825182559160200191906001019062000af1565b5b50905062000b1e919062000b22565b5090565b62000b4791905b8082111562000b4357600081600090555060010162000b29565b5090565b90565b60008151905062000b5b8162000f62565b92915050565b60008151905062000b728162000f7c565b92915050565b60008151905062000b898162000f96565b92915050565b60006020828403121562000ba257600080fd5b600062000bb28482850162000b4a565b91505092915050565b60006020828403121562000bce57600080fd5b600062000bde8482850162000b61565b91505092915050565b60006020828403121562000bfa57600080fd5b600062000c0a8482850162000b78565b91505092915050565b62000c1e8162000ee2565b82525050565b600062000c318262000ebb565b62000c3d818562000ec6565b935062000c4f81856020860162000f2c565b80840191505092915050565b600062000c6a60208362000ed1565b91507f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65646000830152602082019050919050565b600062000cac602a8362000ed1565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b600062000d1460368362000ed1565b91507f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008301527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006020830152604082019050919050565b600062000d7c601f8362000ed1565b91507f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374006000830152602082019050919050565b62000dba8162000f22565b82525050565b600062000dce828462000c24565b915081905092915050565b600060408201905062000df0600083018562000c13565b62000dff602083018462000c13565b9392505050565b600060408201905062000e1d600083018562000c13565b62000e2c602083018462000daf565b9392505050565b6000602082019050818103600083015262000e4e8162000c5b565b9050919050565b6000602082019050818103600083015262000e708162000c9d565b9050919050565b6000602082019050818103600083015262000e928162000d05565b9050919050565b6000602082019050818103600083015262000eb48162000d6d565b9050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b600062000eef8262000f02565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562000f4c57808201518184015260208101905062000f2f565b8381111562000f5c576000848401525b50505050565b62000f6d8162000ee2565b811462000f7957600080fd5b50565b62000f878162000ef6565b811462000f9357600080fd5b50565b62000fa18162000f22565b811462000fad57600080fd5b50565b615ffa8062000fc06000396000f3fe6080604052600436106103505760003560e01c8063812adb06116101c6578063bbf31644116100f7578063f5a41dea11610095578063f69e20461161006f578063f69e204614610bf3578063f7c1ec7714610c1e578063f82ce27d14610c49578063fc0c546a14610c7457610350565b8063f5a41dea14610b88578063f5ff191614610bb3578063f60a15ed14610bdc57610350565b8063db006a75116100d1578063db006a7514610ad0578063dd62ed3e14610af9578063e849d65914610b36578063f2fde38b14610b5f57610350565b8063bbf3164414610a51578063cf8ca42614610a7a578063d9d7858a14610aa557610350565b80639ff011b911610164578063a72879711161013e578063a728797114610995578063a9059cbb146109c0578063a9de245b146109fd578063b69ef8a814610a2657610350565b80639ff011b914610904578063a160176d1461092d578063a457c2d71461095857610350565b80638e4ec6ef116101a05780638e4ec6ef1461086c5780638f32d59b1461089757806395d89b41146108c257806399b71d5c146108ed57610350565b8063812adb06146107ed578063819faf7b146108165780638da5cb5b1461084157610350565b806339509351116102a057806365aab7491161023e578063715018a611610218578063715018a61461076b57806377c7b8fc146107825780637d7c2a1c146107ad5780638124955c146107c457610350565b806365aab749146106da57806370a08231146107035780637137ef991461074057610350565b8063463574731161027a578063463574731461063057806357ded9c91461065957806358782c211461068457806361c1ec55146106af57610350565b806339509351146105b15780633990ab4f146105ee57806339c0a7e11461060557610350565b806316f0115b1161030d5780632afcf480116102e75780632afcf4801461050b5780632c7a5ae4146105345780632e8d6e181461055d578063313ce5671461058657610350565b806316f0115b1461047857806318160ddd146104a357806323b872dd146104ce57610350565b806306636c1c1461035257806306a3fe591461038f57806306fdde03146103ba578063085d4883146103e5578063095ea7b3146104105780630eb2a2671461044d575b005b34801561035e57600080fd5b5061037960048036036103749190810190614bc6565b610c9f565b6040516103869190615bd0565b60405180910390f35b34801561039b57600080fd5b506103a4610edd565b6040516103b19190615719565b60405180910390f35b3480156103c657600080fd5b506103cf610f03565b6040516103dc91906158a5565b60405180910390f35b3480156103f157600080fd5b506103fa610fa5565b604051610407919061588a565b60405180910390f35b34801561041c57600080fd5b5061043760048036036104329190810190614a80565b610fb8565b604051610444919061586f565b60405180910390f35b34801561045957600080fd5b50610462610fd6565b60405161046f9190615bd0565b60405180910390f35b34801561048457600080fd5b5061048d611088565b60405161049a9190615bd0565b60405180910390f35b3480156104af57600080fd5b506104b861108e565b6040516104c59190615bd0565b60405180910390f35b3480156104da57600080fd5b506104f560048036036104f09190810190614a31565b611098565b604051610502919061586f565b60405180910390f35b34801561051757600080fd5b50610532600480360361052d9190810190614bc6565b611171565b005b34801561054057600080fd5b5061055b600480360361055691908101906149a3565b6112dd565b005b34801561056957600080fd5b50610584600480360361057f9190810190614ae5565b611368565b005b34801561059257600080fd5b5061059b6114ce565b6040516105a89190615beb565b60405180910390f35b3480156105bd57600080fd5b506105d860048036036105d39190810190614a80565b6114e5565b6040516105e5919061586f565b60405180910390f35b3480156105fa57600080fd5b50610603611598565b005b34801561061157600080fd5b5061061a611747565b6040516106279190615bd0565b60405180910390f35b34801561063c57600080fd5b50610657600480360361065291908101906149a3565b611837565b005b34801561066557600080fd5b5061066e6118c2565b60405161067b9190615719565b60405180910390f35b34801561069057600080fd5b506106996118e8565b6040516106a69190615719565b60405180910390f35b3480156106bb57600080fd5b506106c461190e565b6040516106d19190615bd0565b60405180910390f35b3480156106e657600080fd5b5061070160048036036106fc9190810190614bc6565b6119c0565b005b34801561070f57600080fd5b5061072a600480360361072591908101906149a3565b611a5c565b6040516107379190615bd0565b60405180910390f35b34801561074c57600080fd5b50610755611aa4565b6040516107629190615bd0565b60405180910390f35b34801561077757600080fd5b50610780611b17565b005b34801561078e57600080fd5b50610797611c1f565b6040516107a49190615bd0565b60405180910390f35b3480156107b957600080fd5b506107c2611c61565b005b3480156107d057600080fd5b506107eb60048036036107e69190810190614bc6565b611d99565b005b3480156107f957600080fd5b50610814600480360361080f91908101906149a3565b611e8d565b005b34801561082257600080fd5b5061082b611f18565b6040516108389190615719565b60405180910390f35b34801561084d57600080fd5b50610856611f3e565b6040516108639190615719565b60405180910390f35b34801561087857600080fd5b50610881611f68565b60405161088e9190615719565b60405180910390f35b3480156108a357600080fd5b506108ac611f8e565b6040516108b9919061586f565b60405180910390f35b3480156108ce57600080fd5b506108d7611fed565b6040516108e491906158a5565b60405180910390f35b3480156108f957600080fd5b5061090261208f565b005b34801561091057600080fd5b5061092b60048036036109269190810190614bc6565b6122b2565b005b34801561093957600080fd5b50610942612303565b60405161094f919061588a565b60405180910390f35b34801561096457600080fd5b5061097f600480360361097a9190810190614a80565b612460565b60405161098c919061586f565b60405180910390f35b3480156109a157600080fd5b506109aa61252d565b6040516109b79190615bd0565b60405180910390f35b3480156109cc57600080fd5b506109e760048036036109e29190810190614a80565b612619565b6040516109f4919061586f565b60405180910390f35b348015610a0957600080fd5b50610a246004803603610a1f91908101906149a3565b612637565b005b348015610a3257600080fd5b50610a3b6126c2565b604051610a489190615bd0565b60405180910390f35b348015610a5d57600080fd5b50610a786004803603610a7391908101906149a3565b612774565b005b348015610a8657600080fd5b50610a8f6127ff565b604051610a9c9190615bd0565b60405180910390f35b348015610ab157600080fd5b50610aba6128b1565b604051610ac79190615bd0565b60405180910390f35b348015610adc57600080fd5b50610af76004803603610af29190810190614bc6565b6128b7565b005b348015610b0557600080fd5b50610b206004803603610b1b91908101906149f5565b612c57565b604051610b2d9190615bd0565b60405180910390f35b348015610b4257600080fd5b50610b5d6004803603610b589190810190614bc6565b612cde565b005b348015610b6b57600080fd5b50610b866004803603610b8191908101906149a3565b612dd0565b005b348015610b9457600080fd5b50610b9d612e23565b604051610baa9190615bd0565b60405180910390f35b348015610bbf57600080fd5b50610bda6004803603610bd591908101906149a3565b612eee565b005b348015610be857600080fd5b50610bf1612f79565b005b348015610bff57600080fd5b50610c08613086565b604051610c159190615719565b60405180910390f35b348015610c2a57600080fd5b50610c336130ac565b604051610c409190615719565b60405180910390f35b348015610c5557600080fd5b50610c5e613153565b604051610c6b9190615719565b60405180910390f35b348015610c8057600080fd5b50610c896131fa565b604051610c969190615719565b60405180910390f35b600060606001604051908082528060200260200182016040528015610cde57816020015b610ccb6146e5565b815260200190600190039081610cc35790505b50905060405180604001604052803073ffffffffffffffffffffffffffffffffffffffff168152602001600081525081600081518110610d1a57fe5b6020026020010181905250610d2d614715565b6040518060800160405280600115158152602001600080811115610d4d57fe5b8152602001600080811115610d5e57fe5b8152602001858152509050610d71614753565b600081600001906001811115610d8357fe5b90816001811115610d9057fe5b815250506000816020018181525050818160400181905250600f54816060018181525050308160a0019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060606001604051908082528060200260200182016040528015610e2957816020015b610e166147bf565b815260200190600190039081610e0e5790505b5090508181600081518110610e3a57fe5b6020026020010181905250600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a67a6a4585836040518363ffffffff1660e01b8152600401610ea2929190615838565b600060405180830381600087803b158015610ebc57600080fd5b505af1158015610ed0573d6000803e3d6000fd5b5050505050505050919050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f9b5780601f10610f7057610100808354040283529160200191610f9b565b820191906000526020600020905b815481529060010190602001808311610f7e57829003601f168201915b5050505050905090565b601060149054906101000a900460ff1681565b6000610fcc610fc5613220565b8484613228565b6001905092915050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110339190615734565b60206040518083038186803b15801561104b57600080fd5b505afa15801561105f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110839190810190614bef565b905090565b60085481565b6000600254905090565b60006110a58484846133f3565b611166846110b1613220565b61116185604051806060016040528060288152602001615f6b60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611117613220565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461367d9092919063ffffffff16565b613228565b600190509392505050565b600160066000828254019250508190555060006006549050600082116111cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c390615ac7565b60405180910390fd5b6111d4611aa4565b600881905550611229333084600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166136d8909392919063ffffffff16565b611231611c61565b600080905060006008541415611250578290508260088190555061127c565b61127960085461126b6002548661377a90919063ffffffff16565b6137ea90919063ffffffff16565b90505b611284611aa4565b6008819055506112943382613834565b5060065481146112d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d090615b27565b60405180910390fd5b5050565b6112e5611f8e565b611324576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131b90615a07565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611370611f8e565b6113af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a690615a07565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113ea9190615734565b60206040518083038186803b15801561140257600080fd5b505afa158015611416573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061143a9190810190614bef565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161147792919061574f565b602060405180830381600087803b15801561149157600080fd5b505af11580156114a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114c99190810190614abc565b505050565b6000600560009054906101000a900460ff16905090565b600061158e6114f2613220565b846115898560016000611503613220565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139bc90919063ffffffff16565b613228565b6001905092915050565b6001600660008282540192505081905550600060065490506115b8611f8e565b6115f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ee90615a07565b60405180910390fd5b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116549190615734565b60206040518083038186803b15801561166c57600080fd5b505afa158015611680573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116a49190810190614bef565b9050600081116116e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e090615ac7565b60405180910390fd5b6116f1611c61565b6116f9611aa4565b600881905550506006548114611744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173b90615b27565b60405180910390fd5b50565b600061175161482b565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c190c2ec60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff1681526020016000815250600f546040518363ffffffff1660e01b81526004016117db929190615ba7565b604080518083038186803b1580156117f257600080fd5b505afa158015611806573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061182a9190810190614b9d565b9050806020015191505090565b61183f611f8e565b61187e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187590615a07565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161196b9190615734565b60206040518083038186803b15801561198357600080fd5b505afa158015611997573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119bb9190810190614bef565b905090565b6119c86130ac565b73ffffffffffffffffffffffffffffffffffffffff1663d2d0e066600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360006040518463ffffffff1660e01b8152600401611a2793929190615801565b600060405180830381600087803b158015611a4157600080fd5b505af1158015611a55573d6000803e3d6000fd5b5050505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000611b12611ab16126c2565b611b04611abc6127ff565b611af6611ac7611747565b611ae8611ad2612e23565b611ada61252d565b6139bc90919063ffffffff16565b6139bc90919063ffffffff16565b6139bc90919063ffffffff16565b6139bc90919063ffffffff16565b905090565b611b1f611f8e565b611b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5590615a07565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080611c2a611aa4565b9050611c5b600254611c4d670de0b6b3a76400008461377a90919063ffffffff16565b6137ea90919063ffffffff16565b91505090565b6000611c6b612303565b9050601060149054906101000a900460ff166004811115611c8857fe5b816004811115611c9457fe5b14611ca257611ca1613a11565b5b6000611cac6126c2565b1115611d735760016004811115611cbf57fe5b816004811115611ccb57fe5b1415611ce357611ce1611cdc6126c2565b610c9f565b505b600480811115611cef57fe5b816004811115611cfb57fe5b1415611d1257611d11611d0c6126c2565b611d99565b5b60026004811115611d1f57fe5b816004811115611d2b57fe5b1415611d4257611d41611d3c6126c2565b612cde565b5b60036004811115611d4f57fe5b816004811115611d5b57fe5b1415611d7257611d71611d6c6126c2565b6119c0565b5b5b80601060146101000a81548160ff02191690836004811115611d9157fe5b021790555050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930846040518363ffffffff1660e01b8152600401611df892919061574f565b602060405180830381600087803b158015611e1257600080fd5b505af1158015611e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e4a9190810190614bef565b11611e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8190615ae7565b60405180910390fd5b50565b611e95611f8e565b611ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecb90615a07565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611fd1613220565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156120855780601f1061205a57610100808354040283529160200191612085565b820191906000526020600020905b81548152906001019060200180831161206857829003601f168201915b5050505050905090565b61211e600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613a8a9092919063ffffffff16565b6121ad600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613a8a9092919063ffffffff16565b6122216121b8613153565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613a8a9092919063ffffffff16565b6122b0600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613a8a9092919063ffffffff16565b565b6122ba611f8e565b6122f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f090615a07565b60405180910390fd5b80600f8190555050565b6000806000806000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d88be3c0600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016123889190615719565b60006040518083038186803b1580156123a057600080fd5b505afa1580156123b4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506123dd9190810190614b0e565b9450945094509450506000809050808511156123f7578490505b80841115612403578390505b8083111561240f578290505b8082111561241b578190505b60008090508282141561242d57600190505b8382141561243a57600390505b8482141561244757600490505b8582141561245457600290505b80965050505050505090565b600061252361246d613220565b8461251e85604051806060016040528060258152602001615f936025913960016000612497613220565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461367d9092919063ffffffff16565b613228565b6001905092915050565b60008061253861190e565b905060008111156126125761260f670de0b6b3a7640000612601600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663182df0f56040518163ffffffff1660e01b815260040160206040518083038186803b1580156125ba57600080fd5b505afa1580156125ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125f29190810190614bef565b8461377a90919063ffffffff16565b6137ea90919063ffffffff16565b90505b8091505090565b600061262d612626613220565b84846133f3565b6001905092915050565b61263f611f8e565b61267e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267590615a07565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161271f9190615734565b60206040518083038186803b15801561273757600080fd5b505afa15801561274b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061276f9190810190614bef565b905090565b61277c611f8e565b6127bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b290615a07565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161285c9190615734565b60206040518083038186803b15801561287457600080fd5b505afa158015612888573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128ac9190810190614bef565b905090565b600f5481565b60016006600082825401925050819055506000600654905060008211612912576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290990615a47565b60405180910390fd5b600061291d33611a5c565b905080831115612962576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295990615a27565b60405180910390fd5b61296a611aa4565b600881905550600061299b60025461298d8660085461377a90919063ffffffff16565b6137ea90919063ffffffff16565b9050612a25846040518060400160405280601d81526020017f72656465656d20616d6f756e7420657863656564732062616c616e63650000008152506000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461367d9092919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a7c84600254613c0190919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612ae09190615bd0565b60405180910390a36000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612b459190615734565b60206040518083038186803b158015612b5d57600080fd5b505afa158015612b71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612b959190810190614bef565b905081811015612ba957612ba882613c4b565b5b612bf63383600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613e489092919063ffffffff16565b612bfe611c61565b612c06611aa4565b6008819055505050506006548114612c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4a90615b27565b60405180910390fd5b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a0712d68836040518263ffffffff1660e01b8152600401612d3b9190615bd0565b602060405180830381600087803b158015612d5557600080fd5b505af1158015612d69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612d8d9190810190614bef565b14612dcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dc490615947565b60405180910390fd5b50565b612dd8611f8e565b612e17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0e90615a07565b60405180910390fd5b612e2081613ee7565b50565b600080612e2e610fd6565b90506000811115612ee757600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306b3efd6306040518263ffffffff1660e01b8152600401612e949190615734565b60206040518083038186803b158015612eac57600080fd5b505afa158015612ec0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ee49190810190614bef565b90505b8091505090565b612ef6611f8e565b612f35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f2c90615a07565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612f81611f8e565b612fc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb790615a07565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1631604051612ffd90615704565b60006040518083038185875af1925050503d806000811461303a576040519150601f19603f3d011682016040523d82523d6000602084013e61303f565b606091505b5050905080613083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161307a906159a7565b60405180910390fd5b50565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561311657600080fd5b505afa15801561312a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061314e91908101906149cc565b905090565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b1580156131bd57600080fd5b505afa1580156131d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506131f591908101906149cc565b905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328f90615aa7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613308576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ff90615927565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516133e69190615bd0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161345a90615a67565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156134d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134ca906158c7565b60405180910390fd5b61353e81604051806060016040528060268152602001615f45602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461367d9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506135d1816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139bc90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136709190615bd0565b60405180910390a3505050565b60008383111582906136c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136bc91906158a5565b60405180910390fd5b5060008385039050809150509392505050565b613774848573ffffffffffffffffffffffffffffffffffffffff166323b872dd905060e01b858585604051602401613712939291906157a1565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050614017565b50505050565b60008083141561378d57600090506137e4565b600082840290508284828161379e57fe5b04146137df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137d6906159c7565b60405180910390fd5b809150505b92915050565b600061382c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614189565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156138a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161389b90615b87565b60405180910390fd5b6138b9816002546139bc90919063ffffffff16565b600281905550613910816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139bc90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516139b09190615bd0565b60405180910390a35050565b600080828401905083811015613a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139fe90615967565b60405180910390fd5b8091505092915050565b6000613a1b61190e565b90506000811115613a3057613a2f816141ea565b5b613a38611747565b90506000811115613a4d57613a4c816142dc565b5b613a55610fd6565b90506000811115613a6a57613a6981614516565b5b613a726127ff565b90506000811115613a8757613a868161460a565b5b50565b6000811480613b23575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401613ad1929190615778565b60206040518083038186803b158015613ae957600080fd5b505afa158015613afd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613b219190810190614bef565b145b613b62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b5990615b47565b60405180910390fd5b613bfc838473ffffffffffffffffffffffffffffffffffffffff1663095ea7b3905060e01b8484604051602401613b9a9291906157d8565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050614017565b505050565b6000613c4383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061367d565b905092915050565b60026004811115613c5857fe5b601060149054906101000a900460ff166004811115613c7357fe5b1415613d0a576000613c8361190e565b90506000613c8f61252d565b905082811015613cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ccb90615a87565b60405180910390fd5b6000613cfb82613ced868661377a90919063ffffffff16565b6137ea90919063ffffffff16565b9050613d06816141ea565b5050505b60036004811115613d1757fe5b601060149054906101000a900460ff166004811115613d3257fe5b1415613d8c5780613d416127ff565b1015613d82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d7990615a87565b60405180910390fd5b613d8b8161460a565b5b60016004811115613d9957fe5b601060149054906101000a900460ff166004811115613db457fe5b1415613e0e5780613dc3611747565b1015613e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dfb90615a87565b60405180910390fd5b613e0d816142dc565b5b600480811115613e1a57fe5b601060149054906101000a900460ff166004811115613e3557fe5b1415613e4557613e4481614516565b5b50565b613ee2838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401613e809291906157d8565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050614017565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613f57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f4e90615907565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6140368273ffffffffffffffffffffffffffffffffffffffff1661469a565b614075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161406c90615b67565b60405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff168360405161409e91906156ed565b6000604051808303816000865af19150503d80600081146140db576040519150601f19603f3d011682016040523d82523d6000602084013e6140e0565b606091505b509150915081614125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161411c90615987565b60405180910390fd5b60008151111561418357808060200190516141439190810190614abc565b614182576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161417990615b07565b60405180910390fd5b5b50505050565b600080831182906141d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141c791906158a5565b60405180910390fd5b5060008385816141dc57fe5b049050809150509392505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663db006a75836040518263ffffffff1660e01b81526004016142479190615bd0565b602060405180830381600087803b15801561426157600080fd5b505af1158015614275573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506142999190810190614bef565b146142d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142d0906158e7565b60405180910390fd5b50565b6060600160405190808252806020026020018201604052801561431957816020015b6143066146e5565b8152602001906001900390816142fe5790505b50905060405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200160008152508160008151811061435557fe5b6020026020010181905250614368614715565b604051806080016040528060001515815260200160008081111561438857fe5b815260200160008081111561439957fe5b81526020018481525090506143ac614753565b6001816000019060018111156143be57fe5b908160018111156143cb57fe5b815250506000816020018181525050818160400181905250600f54816060018181525050308160a0019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506060600160405190808252806020026020018201604052801561446457816020015b6144516147bf565b8152602001906001900390816144495790505b509050818160008151811061447557fe5b6020026020010181905250600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a67a6a4585836040518363ffffffff1660e01b81526004016144dd929190615838565b600060405180830381600087803b1580156144f757600080fd5b505af115801561450b573d6000803e3d6000fd5b505050505050505050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac30846040518363ffffffff1660e01b815260040161457592919061574f565b602060405180830381600087803b15801561458f57600080fd5b505af11580156145a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506145c79190810190614bef565b11614607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016145fe906159e7565b60405180910390fd5b50565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663db006a75826040518263ffffffff1660e01b81526004016146659190615bd0565b600060405180830381600087803b15801561467f57600080fd5b505af1158015614693573d6000803e3d6000fd5b5050505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b82141580156146dc5750808214155b92505050919050565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b604051806080016040528060001515815260200160008081111561473557fe5b815260200160008081111561474657fe5b8152602001600081525090565b6040518061010001604052806000600181111561476c57fe5b815260200160008152602001614780614847565b81526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b604051806101000160405280600060018111156147d857fe5b8152602001600081526020016147ec614847565b81526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b6040518060400160405280600015158152602001600081525090565b604051806080016040528060001515815260200160008081111561486757fe5b815260200160008081111561487857fe5b8152602001600081525090565b60008135905061489481615ee8565b92915050565b6000815190506148a981615ee8565b92915050565b6000815190506148be81615eff565b92915050565b6000813590506148d381615f16565b92915050565b600082601f8301126148ea57600080fd5b81516148fd6148f882615c33565b615c06565b9150808252602083016020830185838301111561491957600080fd5b614924838284615e70565b50505092915050565b60006040828403121561493f57600080fd5b6149496040615c06565b90506000614959848285016148af565b600083015250602061496d8482850161498e565b60208301525092915050565b60008135905061498881615f2d565b92915050565b60008151905061499d81615f2d565b92915050565b6000602082840312156149b557600080fd5b60006149c384828501614885565b91505092915050565b6000602082840312156149de57600080fd5b60006149ec8482850161489a565b91505092915050565b60008060408385031215614a0857600080fd5b6000614a1685828601614885565b9250506020614a2785828601614885565b9150509250929050565b600080600060608486031215614a4657600080fd5b6000614a5486828701614885565b9350506020614a6586828701614885565b9250506040614a7686828701614979565b9150509250925092565b60008060408385031215614a9357600080fd5b6000614aa185828601614885565b9250506020614ab285828601614979565b9150509250929050565b600060208284031215614ace57600080fd5b6000614adc848285016148af565b91505092915050565b600060208284031215614af757600080fd5b6000614b05848285016148c4565b91505092915050565b600080600080600060a08688031215614b2657600080fd5b600086015167ffffffffffffffff811115614b4057600080fd5b614b4c888289016148d9565b9550506020614b5d8882890161498e565b9450506040614b6e8882890161498e565b9350506060614b7f8882890161498e565b9250506080614b908882890161498e565b9150509295509295909350565b600060408284031215614baf57600080fd5b6000614bbd8482850161492d565b91505092915050565b600060208284031215614bd857600080fd5b6000614be684828501614979565b91505092915050565b600060208284031215614c0157600080fd5b6000614c0f8482850161498e565b91505092915050565b6000614c24838361555a565b905092915050565b6000614c388383615662565b60408301905092915050565b614c4d81615de0565b82525050565b614c5c81615d1f565b82525050565b614c6b81615d1f565b82525050565b6000614c7c82615c7f565b614c868185615cd0565b935083602082028501614c9885615c5f565b8060005b85811015614cd45784840389528151614cb58582614c18565b9450614cc083615cb6565b925060208a01995050600181019050614c9c565b50829750879550505050505092915050565b6000614cf182615c8a565b614cfb8185615ce1565b9350614d0683615c6f565b8060005b83811015614d37578151614d1e8882614c2c565b9750614d2983615cc3565b925050600181019050614d0a565b5085935050505092915050565b614d4d81615d31565b82525050565b614d5c81615d31565b82525050565b6000614d6d82615ca0565b614d778185615d03565b9350614d87818560208601615e70565b80840191505092915050565b6000614d9e82615c95565b614da88185615cf2565b9350614db8818560208601615e70565b614dc181615ea3565b840191505092915050565b614dd581615df2565b82525050565b614de481615e04565b82525050565b614df381615e16565b82525050565b614e0281615e28565b82525050565b614e1181615e3a565b82525050565b6000614e2282615cab565b614e2c8185615d0e565b9350614e3c818560208601615e70565b614e4581615ea3565b840191505092915050565b6000614e5d602383615d0e565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614ec3601983615d0e565b91507f434f4d504f554e443a207769746864726177206661696c6564000000000000006000830152602082019050919050565b6000614f03602683615d0e565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614f69602283615d0e565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614fcf601783615d0e565b91507f434f4d504f554e443a20737570706c79206661696c65640000000000000000006000830152602082019050919050565b600061500f601b83615d0e565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b600061504f602083615d0e565b91507f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65646000830152602082019050919050565b600061508f601683615d0e565b91507f7472616e73666572206f6620455448206661696c6564000000000000000000006000830152602082019050919050565b60006150cf602183615d0e565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000615135601883615d0e565b91507f46554c4352554d3a207769746864726177206661696c656400000000000000006000830152602082019050919050565b6000615175602083615d0e565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006151b5601483615d0e565b91507f696e73756666696369656e742062616c616e63650000000000000000000000006000830152602082019050919050565b60006151f5601f83615d0e565b91507f7769746864726177206d7573742062652067726561746572207468616e2030006000830152602082019050919050565b6000615235602583615d0e565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061529b600083615d03565b9150600082019050919050565b60006152b5601283615d0e565b91507f696e73756666696369656e742066756e647300000000000000000000000000006000830152602082019050919050565b60006152f5602483615d0e565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061535b601e83615d0e565b91507f6465706f736974206d7573742062652067726561746572207468616e203000006000830152602082019050919050565b600061539b601683615d0e565b91507f46554c4352554d3a20737570706c79206661696c6564000000000000000000006000830152602082019050919050565b60006153db602a83615d0e565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b6000615441601f83615d0e565b91507f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006000830152602082019050919050565b6000615481603683615d0e565b91507f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008301527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006020830152604082019050919050565b60006154e7601f83615d0e565b91507f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374006000830152602082019050919050565b6000615527601f83615d0e565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b6000610160830160008301516155736000860182614dcc565b50602083015161558660208601826156c0565b506040830151615599604086018261560d565b5060608301516155ac60c08601826156c0565b5060808301516155bf60e08601826156c0565b5060a08301516155d3610100860182614c53565b5060c08301516155e76101208601826156c0565b5060e08301518482036101408601526156008282614d93565b9150508091505092915050565b6080820160008201516156236000850182614d44565b5060208201516156366020850182614ddb565b5060408201516156496040850182614dea565b50606082015161565c60608501826156c0565b50505050565b6040820160008201516156786000850182614c53565b50602082015161568b60208501826156c0565b50505050565b6040820160008201516156a76000850182614c53565b5060208201516156ba60208501826156c0565b50505050565b6156c981615dc9565b82525050565b6156d881615dc9565b82525050565b6156e781615dd3565b82525050565b60006156f98284614d62565b915081905092915050565b600061570f8261528e565b9150819050919050565b600060208201905061572e6000830184614c62565b92915050565b60006020820190506157496000830184614c44565b92915050565b60006040820190506157646000830185614c44565b61577160208301846156cf565b9392505050565b600060408201905061578d6000830185614c62565b61579a6020830184614c62565b9392505050565b60006060820190506157b66000830186614c62565b6157c36020830185614c62565b6157d060408301846156cf565b949350505050565b60006040820190506157ed6000830185614c62565b6157fa60208301846156cf565b9392505050565b60006060820190506158166000830186614c62565b61582360208301856156cf565b6158306040830184614e08565b949350505050565b600060408201905081810360008301526158528185614ce6565b905081810360208301526158668184614c71565b90509392505050565b60006020820190506158846000830184614d53565b92915050565b600060208201905061589f6000830184614df9565b92915050565b600060208201905081810360008301526158bf8184614e17565b905092915050565b600060208201905081810360008301526158e081614e50565b9050919050565b6000602082019050818103600083015261590081614eb6565b9050919050565b6000602082019050818103600083015261592081614ef6565b9050919050565b6000602082019050818103600083015261594081614f5c565b9050919050565b6000602082019050818103600083015261596081614fc2565b9050919050565b6000602082019050818103600083015261598081615002565b9050919050565b600060208201905081810360008301526159a081615042565b9050919050565b600060208201905081810360008301526159c081615082565b9050919050565b600060208201905081810360008301526159e0816150c2565b9050919050565b60006020820190508181036000830152615a0081615128565b9050919050565b60006020820190508181036000830152615a2081615168565b9050919050565b60006020820190508181036000830152615a40816151a8565b9050919050565b60006020820190508181036000830152615a60816151e8565b9050919050565b60006020820190508181036000830152615a8081615228565b9050919050565b60006020820190508181036000830152615aa0816152a8565b9050919050565b60006020820190508181036000830152615ac0816152e8565b9050919050565b60006020820190508181036000830152615ae08161534e565b9050919050565b60006020820190508181036000830152615b008161538e565b9050919050565b60006020820190508181036000830152615b20816153ce565b9050919050565b60006020820190508181036000830152615b4081615434565b9050919050565b60006020820190508181036000830152615b6081615474565b9050919050565b60006020820190508181036000830152615b80816154da565b9050919050565b60006020820190508181036000830152615ba08161551a565b9050919050565b6000606082019050615bbc6000830185615691565b615bc960408301846156cf565b9392505050565b6000602082019050615be560008301846156cf565b92915050565b6000602082019050615c0060008301846156de565b92915050565b6000604051905081810181811067ffffffffffffffff82111715615c2957600080fd5b8060405250919050565b600067ffffffffffffffff821115615c4a57600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000615d2a82615da9565b9050919050565b60008115159050919050565b6000615d4882615d1f565b9050919050565b6000819050615d5d82615eb4565b919050565b6000819050615d7082615ec1565b919050565b6000819050615d8382615ece565b919050565b6000819050615d9682615edb565b919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000615deb82615e4c565b9050919050565b6000615dfd82615d4f565b9050919050565b6000615e0f82615d62565b9050919050565b6000615e2182615d75565b9050919050565b6000615e3382615d88565b9050919050565b6000615e4582615d9b565b9050919050565b6000615e5782615e5e565b9050919050565b6000615e6982615da9565b9050919050565b60005b83811015615e8e578082015181840152602081019050615e73565b83811115615e9d576000848401525b50505050565b6000601f19601f8301169050919050565b60028110615ebe57fe5b50565b60018110615ecb57fe5b50565b60018110615ed857fe5b50565b60058110615ee557fe5b50565b615ef181615d1f565b8114615efc57600080fd5b50565b615f0881615d31565b8114615f1357600080fd5b50565b615f1f81615d3d565b8114615f2a57600080fd5b50565b615f3681615dc9565b8114615f4157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa365627a7a723158205f33e53652fbcc4e40cf8fabb16455511155474ecd3ab3c3f82c24ef227535356c6578706572696d656e74616cf564736f6c634300050c0040
Deployed Bytecode
0x6080604052600436106103505760003560e01c8063812adb06116101c6578063bbf31644116100f7578063f5a41dea11610095578063f69e20461161006f578063f69e204614610bf3578063f7c1ec7714610c1e578063f82ce27d14610c49578063fc0c546a14610c7457610350565b8063f5a41dea14610b88578063f5ff191614610bb3578063f60a15ed14610bdc57610350565b8063db006a75116100d1578063db006a7514610ad0578063dd62ed3e14610af9578063e849d65914610b36578063f2fde38b14610b5f57610350565b8063bbf3164414610a51578063cf8ca42614610a7a578063d9d7858a14610aa557610350565b80639ff011b911610164578063a72879711161013e578063a728797114610995578063a9059cbb146109c0578063a9de245b146109fd578063b69ef8a814610a2657610350565b80639ff011b914610904578063a160176d1461092d578063a457c2d71461095857610350565b80638e4ec6ef116101a05780638e4ec6ef1461086c5780638f32d59b1461089757806395d89b41146108c257806399b71d5c146108ed57610350565b8063812adb06146107ed578063819faf7b146108165780638da5cb5b1461084157610350565b806339509351116102a057806365aab7491161023e578063715018a611610218578063715018a61461076b57806377c7b8fc146107825780637d7c2a1c146107ad5780638124955c146107c457610350565b806365aab749146106da57806370a08231146107035780637137ef991461074057610350565b8063463574731161027a578063463574731461063057806357ded9c91461065957806358782c211461068457806361c1ec55146106af57610350565b806339509351146105b15780633990ab4f146105ee57806339c0a7e11461060557610350565b806316f0115b1161030d5780632afcf480116102e75780632afcf4801461050b5780632c7a5ae4146105345780632e8d6e181461055d578063313ce5671461058657610350565b806316f0115b1461047857806318160ddd146104a357806323b872dd146104ce57610350565b806306636c1c1461035257806306a3fe591461038f57806306fdde03146103ba578063085d4883146103e5578063095ea7b3146104105780630eb2a2671461044d575b005b34801561035e57600080fd5b5061037960048036036103749190810190614bc6565b610c9f565b6040516103869190615bd0565b60405180910390f35b34801561039b57600080fd5b506103a4610edd565b6040516103b19190615719565b60405180910390f35b3480156103c657600080fd5b506103cf610f03565b6040516103dc91906158a5565b60405180910390f35b3480156103f157600080fd5b506103fa610fa5565b604051610407919061588a565b60405180910390f35b34801561041c57600080fd5b5061043760048036036104329190810190614a80565b610fb8565b604051610444919061586f565b60405180910390f35b34801561045957600080fd5b50610462610fd6565b60405161046f9190615bd0565b60405180910390f35b34801561048457600080fd5b5061048d611088565b60405161049a9190615bd0565b60405180910390f35b3480156104af57600080fd5b506104b861108e565b6040516104c59190615bd0565b60405180910390f35b3480156104da57600080fd5b506104f560048036036104f09190810190614a31565b611098565b604051610502919061586f565b60405180910390f35b34801561051757600080fd5b50610532600480360361052d9190810190614bc6565b611171565b005b34801561054057600080fd5b5061055b600480360361055691908101906149a3565b6112dd565b005b34801561056957600080fd5b50610584600480360361057f9190810190614ae5565b611368565b005b34801561059257600080fd5b5061059b6114ce565b6040516105a89190615beb565b60405180910390f35b3480156105bd57600080fd5b506105d860048036036105d39190810190614a80565b6114e5565b6040516105e5919061586f565b60405180910390f35b3480156105fa57600080fd5b50610603611598565b005b34801561061157600080fd5b5061061a611747565b6040516106279190615bd0565b60405180910390f35b34801561063c57600080fd5b50610657600480360361065291908101906149a3565b611837565b005b34801561066557600080fd5b5061066e6118c2565b60405161067b9190615719565b60405180910390f35b34801561069057600080fd5b506106996118e8565b6040516106a69190615719565b60405180910390f35b3480156106bb57600080fd5b506106c461190e565b6040516106d19190615bd0565b60405180910390f35b3480156106e657600080fd5b5061070160048036036106fc9190810190614bc6565b6119c0565b005b34801561070f57600080fd5b5061072a600480360361072591908101906149a3565b611a5c565b6040516107379190615bd0565b60405180910390f35b34801561074c57600080fd5b50610755611aa4565b6040516107629190615bd0565b60405180910390f35b34801561077757600080fd5b50610780611b17565b005b34801561078e57600080fd5b50610797611c1f565b6040516107a49190615bd0565b60405180910390f35b3480156107b957600080fd5b506107c2611c61565b005b3480156107d057600080fd5b506107eb60048036036107e69190810190614bc6565b611d99565b005b3480156107f957600080fd5b50610814600480360361080f91908101906149a3565b611e8d565b005b34801561082257600080fd5b5061082b611f18565b6040516108389190615719565b60405180910390f35b34801561084d57600080fd5b50610856611f3e565b6040516108639190615719565b60405180910390f35b34801561087857600080fd5b50610881611f68565b60405161088e9190615719565b60405180910390f35b3480156108a357600080fd5b506108ac611f8e565b6040516108b9919061586f565b60405180910390f35b3480156108ce57600080fd5b506108d7611fed565b6040516108e491906158a5565b60405180910390f35b3480156108f957600080fd5b5061090261208f565b005b34801561091057600080fd5b5061092b60048036036109269190810190614bc6565b6122b2565b005b34801561093957600080fd5b50610942612303565b60405161094f919061588a565b60405180910390f35b34801561096457600080fd5b5061097f600480360361097a9190810190614a80565b612460565b60405161098c919061586f565b60405180910390f35b3480156109a157600080fd5b506109aa61252d565b6040516109b79190615bd0565b60405180910390f35b3480156109cc57600080fd5b506109e760048036036109e29190810190614a80565b612619565b6040516109f4919061586f565b60405180910390f35b348015610a0957600080fd5b50610a246004803603610a1f91908101906149a3565b612637565b005b348015610a3257600080fd5b50610a3b6126c2565b604051610a489190615bd0565b60405180910390f35b348015610a5d57600080fd5b50610a786004803603610a7391908101906149a3565b612774565b005b348015610a8657600080fd5b50610a8f6127ff565b604051610a9c9190615bd0565b60405180910390f35b348015610ab157600080fd5b50610aba6128b1565b604051610ac79190615bd0565b60405180910390f35b348015610adc57600080fd5b50610af76004803603610af29190810190614bc6565b6128b7565b005b348015610b0557600080fd5b50610b206004803603610b1b91908101906149f5565b612c57565b604051610b2d9190615bd0565b60405180910390f35b348015610b4257600080fd5b50610b5d6004803603610b589190810190614bc6565b612cde565b005b348015610b6b57600080fd5b50610b866004803603610b8191908101906149a3565b612dd0565b005b348015610b9457600080fd5b50610b9d612e23565b604051610baa9190615bd0565b60405180910390f35b348015610bbf57600080fd5b50610bda6004803603610bd591908101906149a3565b612eee565b005b348015610be857600080fd5b50610bf1612f79565b005b348015610bff57600080fd5b50610c08613086565b604051610c159190615719565b60405180910390f35b348015610c2a57600080fd5b50610c336130ac565b604051610c409190615719565b60405180910390f35b348015610c5557600080fd5b50610c5e613153565b604051610c6b9190615719565b60405180910390f35b348015610c8057600080fd5b50610c896131fa565b604051610c969190615719565b60405180910390f35b600060606001604051908082528060200260200182016040528015610cde57816020015b610ccb6146e5565b815260200190600190039081610cc35790505b50905060405180604001604052803073ffffffffffffffffffffffffffffffffffffffff168152602001600081525081600081518110610d1a57fe5b6020026020010181905250610d2d614715565b6040518060800160405280600115158152602001600080811115610d4d57fe5b8152602001600080811115610d5e57fe5b8152602001858152509050610d71614753565b600081600001906001811115610d8357fe5b90816001811115610d9057fe5b815250506000816020018181525050818160400181905250600f54816060018181525050308160a0019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060606001604051908082528060200260200182016040528015610e2957816020015b610e166147bf565b815260200190600190039081610e0e5790505b5090508181600081518110610e3a57fe5b6020026020010181905250600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a67a6a4585836040518363ffffffff1660e01b8152600401610ea2929190615838565b600060405180830381600087803b158015610ebc57600080fd5b505af1158015610ed0573d6000803e3d6000fd5b5050505050505050919050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f9b5780601f10610f7057610100808354040283529160200191610f9b565b820191906000526020600020905b815481529060010190602001808311610f7e57829003601f168201915b5050505050905090565b601060149054906101000a900460ff1681565b6000610fcc610fc5613220565b8484613228565b6001905092915050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110339190615734565b60206040518083038186803b15801561104b57600080fd5b505afa15801561105f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110839190810190614bef565b905090565b60085481565b6000600254905090565b60006110a58484846133f3565b611166846110b1613220565b61116185604051806060016040528060288152602001615f6b60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611117613220565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461367d9092919063ffffffff16565b613228565b600190509392505050565b600160066000828254019250508190555060006006549050600082116111cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c390615ac7565b60405180910390fd5b6111d4611aa4565b600881905550611229333084600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166136d8909392919063ffffffff16565b611231611c61565b600080905060006008541415611250578290508260088190555061127c565b61127960085461126b6002548661377a90919063ffffffff16565b6137ea90919063ffffffff16565b90505b611284611aa4565b6008819055506112943382613834565b5060065481146112d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d090615b27565b60405180910390fd5b5050565b6112e5611f8e565b611324576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131b90615a07565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611370611f8e565b6113af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a690615a07565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113ea9190615734565b60206040518083038186803b15801561140257600080fd5b505afa158015611416573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061143a9190810190614bef565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161147792919061574f565b602060405180830381600087803b15801561149157600080fd5b505af11580156114a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114c99190810190614abc565b505050565b6000600560009054906101000a900460ff16905090565b600061158e6114f2613220565b846115898560016000611503613220565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139bc90919063ffffffff16565b613228565b6001905092915050565b6001600660008282540192505081905550600060065490506115b8611f8e565b6115f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ee90615a07565b60405180910390fd5b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116549190615734565b60206040518083038186803b15801561166c57600080fd5b505afa158015611680573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116a49190810190614bef565b9050600081116116e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e090615ac7565b60405180910390fd5b6116f1611c61565b6116f9611aa4565b600881905550506006548114611744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173b90615b27565b60405180910390fd5b50565b600061175161482b565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c190c2ec60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff1681526020016000815250600f546040518363ffffffff1660e01b81526004016117db929190615ba7565b604080518083038186803b1580156117f257600080fd5b505afa158015611806573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061182a9190810190614b9d565b9050806020015191505090565b61183f611f8e565b61187e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187590615a07565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161196b9190615734565b60206040518083038186803b15801561198357600080fd5b505afa158015611997573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119bb9190810190614bef565b905090565b6119c86130ac565b73ffffffffffffffffffffffffffffffffffffffff1663d2d0e066600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360006040518463ffffffff1660e01b8152600401611a2793929190615801565b600060405180830381600087803b158015611a4157600080fd5b505af1158015611a55573d6000803e3d6000fd5b5050505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000611b12611ab16126c2565b611b04611abc6127ff565b611af6611ac7611747565b611ae8611ad2612e23565b611ada61252d565b6139bc90919063ffffffff16565b6139bc90919063ffffffff16565b6139bc90919063ffffffff16565b6139bc90919063ffffffff16565b905090565b611b1f611f8e565b611b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5590615a07565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080611c2a611aa4565b9050611c5b600254611c4d670de0b6b3a76400008461377a90919063ffffffff16565b6137ea90919063ffffffff16565b91505090565b6000611c6b612303565b9050601060149054906101000a900460ff166004811115611c8857fe5b816004811115611c9457fe5b14611ca257611ca1613a11565b5b6000611cac6126c2565b1115611d735760016004811115611cbf57fe5b816004811115611ccb57fe5b1415611ce357611ce1611cdc6126c2565b610c9f565b505b600480811115611cef57fe5b816004811115611cfb57fe5b1415611d1257611d11611d0c6126c2565b611d99565b5b60026004811115611d1f57fe5b816004811115611d2b57fe5b1415611d4257611d41611d3c6126c2565b612cde565b5b60036004811115611d4f57fe5b816004811115611d5b57fe5b1415611d7257611d71611d6c6126c2565b6119c0565b5b5b80601060146101000a81548160ff02191690836004811115611d9157fe5b021790555050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930846040518363ffffffff1660e01b8152600401611df892919061574f565b602060405180830381600087803b158015611e1257600080fd5b505af1158015611e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e4a9190810190614bef565b11611e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8190615ae7565b60405180910390fd5b50565b611e95611f8e565b611ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecb90615a07565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611fd1613220565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156120855780601f1061205a57610100808354040283529160200191612085565b820191906000526020600020905b81548152906001019060200180831161206857829003601f168201915b5050505050905090565b61211e600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613a8a9092919063ffffffff16565b6121ad600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613a8a9092919063ffffffff16565b6122216121b8613153565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613a8a9092919063ffffffff16565b6122b0600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613a8a9092919063ffffffff16565b565b6122ba611f8e565b6122f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f090615a07565b60405180910390fd5b80600f8190555050565b6000806000806000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d88be3c0600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016123889190615719565b60006040518083038186803b1580156123a057600080fd5b505afa1580156123b4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506123dd9190810190614b0e565b9450945094509450506000809050808511156123f7578490505b80841115612403578390505b8083111561240f578290505b8082111561241b578190505b60008090508282141561242d57600190505b8382141561243a57600390505b8482141561244757600490505b8582141561245457600290505b80965050505050505090565b600061252361246d613220565b8461251e85604051806060016040528060258152602001615f936025913960016000612497613220565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461367d9092919063ffffffff16565b613228565b6001905092915050565b60008061253861190e565b905060008111156126125761260f670de0b6b3a7640000612601600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663182df0f56040518163ffffffff1660e01b815260040160206040518083038186803b1580156125ba57600080fd5b505afa1580156125ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125f29190810190614bef565b8461377a90919063ffffffff16565b6137ea90919063ffffffff16565b90505b8091505090565b600061262d612626613220565b84846133f3565b6001905092915050565b61263f611f8e565b61267e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267590615a07565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161271f9190615734565b60206040518083038186803b15801561273757600080fd5b505afa15801561274b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061276f9190810190614bef565b905090565b61277c611f8e565b6127bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b290615a07565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161285c9190615734565b60206040518083038186803b15801561287457600080fd5b505afa158015612888573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128ac9190810190614bef565b905090565b600f5481565b60016006600082825401925050819055506000600654905060008211612912576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290990615a47565b60405180910390fd5b600061291d33611a5c565b905080831115612962576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295990615a27565b60405180910390fd5b61296a611aa4565b600881905550600061299b60025461298d8660085461377a90919063ffffffff16565b6137ea90919063ffffffff16565b9050612a25846040518060400160405280601d81526020017f72656465656d20616d6f756e7420657863656564732062616c616e63650000008152506000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461367d9092919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a7c84600254613c0190919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612ae09190615bd0565b60405180910390a36000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612b459190615734565b60206040518083038186803b158015612b5d57600080fd5b505afa158015612b71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612b959190810190614bef565b905081811015612ba957612ba882613c4b565b5b612bf63383600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613e489092919063ffffffff16565b612bfe611c61565b612c06611aa4565b6008819055505050506006548114612c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4a90615b27565b60405180910390fd5b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a0712d68836040518263ffffffff1660e01b8152600401612d3b9190615bd0565b602060405180830381600087803b158015612d5557600080fd5b505af1158015612d69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612d8d9190810190614bef565b14612dcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dc490615947565b60405180910390fd5b50565b612dd8611f8e565b612e17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0e90615a07565b60405180910390fd5b612e2081613ee7565b50565b600080612e2e610fd6565b90506000811115612ee757600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306b3efd6306040518263ffffffff1660e01b8152600401612e949190615734565b60206040518083038186803b158015612eac57600080fd5b505afa158015612ec0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ee49190810190614bef565b90505b8091505090565b612ef6611f8e565b612f35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f2c90615a07565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612f81611f8e565b612fc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb790615a07565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1631604051612ffd90615704565b60006040518083038185875af1925050503d806000811461303a576040519150601f19603f3d011682016040523d82523d6000602084013e61303f565b606091505b5050905080613083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161307a906159a7565b60405180910390fd5b50565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561311657600080fd5b505afa15801561312a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061314e91908101906149cc565b905090565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b1580156131bd57600080fd5b505afa1580156131d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506131f591908101906149cc565b905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328f90615aa7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613308576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ff90615927565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516133e69190615bd0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161345a90615a67565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156134d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134ca906158c7565b60405180910390fd5b61353e81604051806060016040528060268152602001615f45602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461367d9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506135d1816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139bc90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136709190615bd0565b60405180910390a3505050565b60008383111582906136c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136bc91906158a5565b60405180910390fd5b5060008385039050809150509392505050565b613774848573ffffffffffffffffffffffffffffffffffffffff166323b872dd905060e01b858585604051602401613712939291906157a1565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050614017565b50505050565b60008083141561378d57600090506137e4565b600082840290508284828161379e57fe5b04146137df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137d6906159c7565b60405180910390fd5b809150505b92915050565b600061382c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614189565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156138a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161389b90615b87565b60405180910390fd5b6138b9816002546139bc90919063ffffffff16565b600281905550613910816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546139bc90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516139b09190615bd0565b60405180910390a35050565b600080828401905083811015613a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139fe90615967565b60405180910390fd5b8091505092915050565b6000613a1b61190e565b90506000811115613a3057613a2f816141ea565b5b613a38611747565b90506000811115613a4d57613a4c816142dc565b5b613a55610fd6565b90506000811115613a6a57613a6981614516565b5b613a726127ff565b90506000811115613a8757613a868161460a565b5b50565b6000811480613b23575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401613ad1929190615778565b60206040518083038186803b158015613ae957600080fd5b505afa158015613afd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613b219190810190614bef565b145b613b62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b5990615b47565b60405180910390fd5b613bfc838473ffffffffffffffffffffffffffffffffffffffff1663095ea7b3905060e01b8484604051602401613b9a9291906157d8565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050614017565b505050565b6000613c4383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061367d565b905092915050565b60026004811115613c5857fe5b601060149054906101000a900460ff166004811115613c7357fe5b1415613d0a576000613c8361190e565b90506000613c8f61252d565b905082811015613cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ccb90615a87565b60405180910390fd5b6000613cfb82613ced868661377a90919063ffffffff16565b6137ea90919063ffffffff16565b9050613d06816141ea565b5050505b60036004811115613d1757fe5b601060149054906101000a900460ff166004811115613d3257fe5b1415613d8c5780613d416127ff565b1015613d82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d7990615a87565b60405180910390fd5b613d8b8161460a565b5b60016004811115613d9957fe5b601060149054906101000a900460ff166004811115613db457fe5b1415613e0e5780613dc3611747565b1015613e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dfb90615a87565b60405180910390fd5b613e0d816142dc565b5b600480811115613e1a57fe5b601060149054906101000a900460ff166004811115613e3557fe5b1415613e4557613e4481614516565b5b50565b613ee2838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401613e809291906157d8565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050614017565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613f57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f4e90615907565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6140368273ffffffffffffffffffffffffffffffffffffffff1661469a565b614075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161406c90615b67565b60405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff168360405161409e91906156ed565b6000604051808303816000865af19150503d80600081146140db576040519150601f19603f3d011682016040523d82523d6000602084013e6140e0565b606091505b509150915081614125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161411c90615987565b60405180910390fd5b60008151111561418357808060200190516141439190810190614abc565b614182576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161417990615b07565b60405180910390fd5b5b50505050565b600080831182906141d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141c791906158a5565b60405180910390fd5b5060008385816141dc57fe5b049050809150509392505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663db006a75836040518263ffffffff1660e01b81526004016142479190615bd0565b602060405180830381600087803b15801561426157600080fd5b505af1158015614275573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506142999190810190614bef565b146142d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142d0906158e7565b60405180910390fd5b50565b6060600160405190808252806020026020018201604052801561431957816020015b6143066146e5565b8152602001906001900390816142fe5790505b50905060405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200160008152508160008151811061435557fe5b6020026020010181905250614368614715565b604051806080016040528060001515815260200160008081111561438857fe5b815260200160008081111561439957fe5b81526020018481525090506143ac614753565b6001816000019060018111156143be57fe5b908160018111156143cb57fe5b815250506000816020018181525050818160400181905250600f54816060018181525050308160a0019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506060600160405190808252806020026020018201604052801561446457816020015b6144516147bf565b8152602001906001900390816144495790505b509050818160008151811061447557fe5b6020026020010181905250600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a67a6a4585836040518363ffffffff1660e01b81526004016144dd929190615838565b600060405180830381600087803b1580156144f757600080fd5b505af115801561450b573d6000803e3d6000fd5b505050505050505050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac30846040518363ffffffff1660e01b815260040161457592919061574f565b602060405180830381600087803b15801561458f57600080fd5b505af11580156145a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506145c79190810190614bef565b11614607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016145fe906159e7565b60405180910390fd5b50565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663db006a75826040518263ffffffff1660e01b81526004016146659190615bd0565b600060405180830381600087803b15801561467f57600080fd5b505af1158015614693573d6000803e3d6000fd5b5050505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b82141580156146dc5750808214155b92505050919050565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b604051806080016040528060001515815260200160008081111561473557fe5b815260200160008081111561474657fe5b8152602001600081525090565b6040518061010001604052806000600181111561476c57fe5b815260200160008152602001614780614847565b81526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b604051806101000160405280600060018111156147d857fe5b8152602001600081526020016147ec614847565b81526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b6040518060400160405280600015158152602001600081525090565b604051806080016040528060001515815260200160008081111561486757fe5b815260200160008081111561487857fe5b8152602001600081525090565b60008135905061489481615ee8565b92915050565b6000815190506148a981615ee8565b92915050565b6000815190506148be81615eff565b92915050565b6000813590506148d381615f16565b92915050565b600082601f8301126148ea57600080fd5b81516148fd6148f882615c33565b615c06565b9150808252602083016020830185838301111561491957600080fd5b614924838284615e70565b50505092915050565b60006040828403121561493f57600080fd5b6149496040615c06565b90506000614959848285016148af565b600083015250602061496d8482850161498e565b60208301525092915050565b60008135905061498881615f2d565b92915050565b60008151905061499d81615f2d565b92915050565b6000602082840312156149b557600080fd5b60006149c384828501614885565b91505092915050565b6000602082840312156149de57600080fd5b60006149ec8482850161489a565b91505092915050565b60008060408385031215614a0857600080fd5b6000614a1685828601614885565b9250506020614a2785828601614885565b9150509250929050565b600080600060608486031215614a4657600080fd5b6000614a5486828701614885565b9350506020614a6586828701614885565b9250506040614a7686828701614979565b9150509250925092565b60008060408385031215614a9357600080fd5b6000614aa185828601614885565b9250506020614ab285828601614979565b9150509250929050565b600060208284031215614ace57600080fd5b6000614adc848285016148af565b91505092915050565b600060208284031215614af757600080fd5b6000614b05848285016148c4565b91505092915050565b600080600080600060a08688031215614b2657600080fd5b600086015167ffffffffffffffff811115614b4057600080fd5b614b4c888289016148d9565b9550506020614b5d8882890161498e565b9450506040614b6e8882890161498e565b9350506060614b7f8882890161498e565b9250506080614b908882890161498e565b9150509295509295909350565b600060408284031215614baf57600080fd5b6000614bbd8482850161492d565b91505092915050565b600060208284031215614bd857600080fd5b6000614be684828501614979565b91505092915050565b600060208284031215614c0157600080fd5b6000614c0f8482850161498e565b91505092915050565b6000614c24838361555a565b905092915050565b6000614c388383615662565b60408301905092915050565b614c4d81615de0565b82525050565b614c5c81615d1f565b82525050565b614c6b81615d1f565b82525050565b6000614c7c82615c7f565b614c868185615cd0565b935083602082028501614c9885615c5f565b8060005b85811015614cd45784840389528151614cb58582614c18565b9450614cc083615cb6565b925060208a01995050600181019050614c9c565b50829750879550505050505092915050565b6000614cf182615c8a565b614cfb8185615ce1565b9350614d0683615c6f565b8060005b83811015614d37578151614d1e8882614c2c565b9750614d2983615cc3565b925050600181019050614d0a565b5085935050505092915050565b614d4d81615d31565b82525050565b614d5c81615d31565b82525050565b6000614d6d82615ca0565b614d778185615d03565b9350614d87818560208601615e70565b80840191505092915050565b6000614d9e82615c95565b614da88185615cf2565b9350614db8818560208601615e70565b614dc181615ea3565b840191505092915050565b614dd581615df2565b82525050565b614de481615e04565b82525050565b614df381615e16565b82525050565b614e0281615e28565b82525050565b614e1181615e3a565b82525050565b6000614e2282615cab565b614e2c8185615d0e565b9350614e3c818560208601615e70565b614e4581615ea3565b840191505092915050565b6000614e5d602383615d0e565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614ec3601983615d0e565b91507f434f4d504f554e443a207769746864726177206661696c6564000000000000006000830152602082019050919050565b6000614f03602683615d0e565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614f69602283615d0e565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614fcf601783615d0e565b91507f434f4d504f554e443a20737570706c79206661696c65640000000000000000006000830152602082019050919050565b600061500f601b83615d0e565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b600061504f602083615d0e565b91507f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65646000830152602082019050919050565b600061508f601683615d0e565b91507f7472616e73666572206f6620455448206661696c6564000000000000000000006000830152602082019050919050565b60006150cf602183615d0e565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000615135601883615d0e565b91507f46554c4352554d3a207769746864726177206661696c656400000000000000006000830152602082019050919050565b6000615175602083615d0e565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006151b5601483615d0e565b91507f696e73756666696369656e742062616c616e63650000000000000000000000006000830152602082019050919050565b60006151f5601f83615d0e565b91507f7769746864726177206d7573742062652067726561746572207468616e2030006000830152602082019050919050565b6000615235602583615d0e565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061529b600083615d03565b9150600082019050919050565b60006152b5601283615d0e565b91507f696e73756666696369656e742066756e647300000000000000000000000000006000830152602082019050919050565b60006152f5602483615d0e565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061535b601e83615d0e565b91507f6465706f736974206d7573742062652067726561746572207468616e203000006000830152602082019050919050565b600061539b601683615d0e565b91507f46554c4352554d3a20737570706c79206661696c6564000000000000000000006000830152602082019050919050565b60006153db602a83615d0e565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b6000615441601f83615d0e565b91507f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006000830152602082019050919050565b6000615481603683615d0e565b91507f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008301527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006020830152604082019050919050565b60006154e7601f83615d0e565b91507f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374006000830152602082019050919050565b6000615527601f83615d0e565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b6000610160830160008301516155736000860182614dcc565b50602083015161558660208601826156c0565b506040830151615599604086018261560d565b5060608301516155ac60c08601826156c0565b5060808301516155bf60e08601826156c0565b5060a08301516155d3610100860182614c53565b5060c08301516155e76101208601826156c0565b5060e08301518482036101408601526156008282614d93565b9150508091505092915050565b6080820160008201516156236000850182614d44565b5060208201516156366020850182614ddb565b5060408201516156496040850182614dea565b50606082015161565c60608501826156c0565b50505050565b6040820160008201516156786000850182614c53565b50602082015161568b60208501826156c0565b50505050565b6040820160008201516156a76000850182614c53565b5060208201516156ba60208501826156c0565b50505050565b6156c981615dc9565b82525050565b6156d881615dc9565b82525050565b6156e781615dd3565b82525050565b60006156f98284614d62565b915081905092915050565b600061570f8261528e565b9150819050919050565b600060208201905061572e6000830184614c62565b92915050565b60006020820190506157496000830184614c44565b92915050565b60006040820190506157646000830185614c44565b61577160208301846156cf565b9392505050565b600060408201905061578d6000830185614c62565b61579a6020830184614c62565b9392505050565b60006060820190506157b66000830186614c62565b6157c36020830185614c62565b6157d060408301846156cf565b949350505050565b60006040820190506157ed6000830185614c62565b6157fa60208301846156cf565b9392505050565b60006060820190506158166000830186614c62565b61582360208301856156cf565b6158306040830184614e08565b949350505050565b600060408201905081810360008301526158528185614ce6565b905081810360208301526158668184614c71565b90509392505050565b60006020820190506158846000830184614d53565b92915050565b600060208201905061589f6000830184614df9565b92915050565b600060208201905081810360008301526158bf8184614e17565b905092915050565b600060208201905081810360008301526158e081614e50565b9050919050565b6000602082019050818103600083015261590081614eb6565b9050919050565b6000602082019050818103600083015261592081614ef6565b9050919050565b6000602082019050818103600083015261594081614f5c565b9050919050565b6000602082019050818103600083015261596081614fc2565b9050919050565b6000602082019050818103600083015261598081615002565b9050919050565b600060208201905081810360008301526159a081615042565b9050919050565b600060208201905081810360008301526159c081615082565b9050919050565b600060208201905081810360008301526159e0816150c2565b9050919050565b60006020820190508181036000830152615a0081615128565b9050919050565b60006020820190508181036000830152615a2081615168565b9050919050565b60006020820190508181036000830152615a40816151a8565b9050919050565b60006020820190508181036000830152615a60816151e8565b9050919050565b60006020820190508181036000830152615a8081615228565b9050919050565b60006020820190508181036000830152615aa0816152a8565b9050919050565b60006020820190508181036000830152615ac0816152e8565b9050919050565b60006020820190508181036000830152615ae08161534e565b9050919050565b60006020820190508181036000830152615b008161538e565b9050919050565b60006020820190508181036000830152615b20816153ce565b9050919050565b60006020820190508181036000830152615b4081615434565b9050919050565b60006020820190508181036000830152615b6081615474565b9050919050565b60006020820190508181036000830152615b80816154da565b9050919050565b60006020820190508181036000830152615ba08161551a565b9050919050565b6000606082019050615bbc6000830185615691565b615bc960408301846156cf565b9392505050565b6000602082019050615be560008301846156cf565b92915050565b6000602082019050615c0060008301846156de565b92915050565b6000604051905081810181811067ffffffffffffffff82111715615c2957600080fd5b8060405250919050565b600067ffffffffffffffff821115615c4a57600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000615d2a82615da9565b9050919050565b60008115159050919050565b6000615d4882615d1f565b9050919050565b6000819050615d5d82615eb4565b919050565b6000819050615d7082615ec1565b919050565b6000819050615d8382615ece565b919050565b6000819050615d9682615edb565b919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000615deb82615e4c565b9050919050565b6000615dfd82615d4f565b9050919050565b6000615e0f82615d62565b9050919050565b6000615e2182615d75565b9050919050565b6000615e3382615d88565b9050919050565b6000615e4582615d9b565b9050919050565b6000615e5782615e5e565b9050919050565b6000615e6982615da9565b9050919050565b60005b83811015615e8e578082015181840152602081019050615e73565b83811115615e9d576000848401525b50505050565b6000601f19601f8301169050919050565b60028110615ebe57fe5b50565b60018110615ecb57fe5b50565b60018110615ed857fe5b50565b60058110615ee557fe5b50565b615ef181615d1f565b8114615efc57600080fd5b50565b615f0881615d31565b8114615f1357600080fd5b50565b615f1f81615d3d565b8114615f2a57600080fd5b50565b615f3681615dc9565b8114615f4157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa365627a7a723158205f33e53652fbcc4e40cf8fabb16455511155474ecd3ab3c3f82c24ef227535356c6578706572696d656e74616cf564736f6c634300050c0040
Deployed Bytecode Sourcemap
13652:10475:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16217:579;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16217:579:0;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;13953:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13953:24:0;;;:::i;:::-;;;;;;;;;;;;;;;;4915:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4915:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;14152:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14152:36:0;;;:::i;:::-;;;;;;;;;;;;;;;;1935:152;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1935:152:0;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;18788:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18788:116:0;;;:::i;:::-;;;;;;;;;;;;;;;;13825:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13825:19:0;;;:::i;:::-;;;;;;;;;;;;;;;;1418:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1418:91:0;;;:::i;:::-;;;;;;;;;;;;;;;;2093:304;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2093:304:0;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;21465:569;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21465:569:0;;;;;;;;;;;;;;;;:::i;:::-;;14860:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14860:89:0;;;;;;;;;;;;;;;;:::i;:::-;;23731:181;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23731:181:0;;;;;;;;;;;;;;;;:::i;:::-;;5097:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5097:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;2403:210;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2403:210:0;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;22084:255;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22084:255:0;;;:::i;:::-;;18035:166;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18035:166:0;;;:::i;:::-;;;;;;;;;;;;;;;;14953:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14953:85:0;;;;;;;;;;;;;;;;:::i;:::-;;14032:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14032:18:0;;;:::i;:::-;;;;;;;;;;;;;;;;13902:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13902:22:0;;;:::i;:::-;;;;;;;;;;;;;;;;18205:120;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18205:120:0;;;:::i;:::-;;;;;;;;;;;;;;;;20677:96;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20677:96:0;;;;;;;;;;;;;;;;:::i;:::-;;1515:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1515:110:0;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;22345:219;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22345:219:0;;;:::i;:::-;;;;;;;;;;;;;;;;6115:140;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6115:140:0;;;:::i;:::-;;22570:154;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22570:154:0;;;:::i;:::-;;;;;;;;;;;;;;;;20125:546;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20125:546:0;;;:::i;:::-;;20777:141;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20777:141:0;;;;;;;;;;;;;;;;:::i;:::-;;14767:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14767:89:0;;;;;;;;;;;;;;;;:::i;:::-;;13929:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13929:19:0;;;:::i;:::-;;;;;;;;;;;;;;;;5818:79;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5818:79:0;;;:::i;:::-;;;;;;;;;;;;;;;;13982:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13982:19:0;;;:::i;:::-;;;;;;;;;;;;;;;;6015:94;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6015:94:0;;;:::i;:::-;;;;;;;;;;;;;;;;5004:87;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5004:87:0;;;:::i;:::-;;;;;;;;;;;;;;;;17750:279;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17750:279:0;;;:::i;:::-;;15360:97;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15360:97:0;;;;;;;;;;;;;;;;:::i;:::-;;15505:706;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15505:706:0;;;:::i;:::-;;;;;;;;;;;;;;;;2619:261;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2619:261:0;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;18329:248;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18329:248:0;;;:::i;:::-;;;;;;;;;;;;;;;;1631:158;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1631:158:0;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;15147:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15147:100:0;;;;;;;;;;;;;;;;:::i;:::-;;17379:107;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17379:107:0;;;:::i;:::-;;;;;;;;;;;;;;;;15042:101;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15042:101:0;;;;;;;;;;;;;;;;:::i;:::-;;18908:115;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18908:115:0;;;:::i;:::-;;;;;;;;;;;;;;;;14006:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14006:21:0;;;:::i;:::-;;;;;;;;;;;;;;;;22777:919;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22777:919:0;;;;;;;;;;;;;;;;:::i;:::-;;1795:134;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1795:134:0;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;20922:131;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20922:131:0;;;;;;;;;;;;;;;;:::i;:::-;;6261:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6261:109:0;;;;;;;;;;;;;;;;:::i;:::-;;18581:203;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18581:203:0;;;:::i;:::-;;;;;;;;;;;;;;;;15251:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15251:105:0;;;;;;;;;;;;;;;;:::i;:::-;;23947:177;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23947:177:0;;;:::i;:::-;;13874:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13874:23:0;;;:::i;:::-;;;;;;;;;;;;;;;;17492:120;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17492:120:0;;;:::i;:::-;;;;;;;;;;;;;;;;17616:128;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17616:128:0;;;:::i;:::-;;;;;;;;;;;;;;;;13849:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13849:20:0;;;:::i;:::-;;;;;;;;;;;;;;;;16217:579;16268:4;16283:19;16316:1;16305:13;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;16283:35;;16338:22;;;;;;;;16351:4;16338:22;;;;;;16358:1;16338:22;;;16327:5;16333:1;16327:8;;;;;;;;;;;;;:33;;;;16371:22;;:::i;:::-;16396:70;;;;;;;;16408:4;16396:70;;;;;;16414:21;16396:70;;;;;;;;;;;;16437:20;16396:70;;;;;;;;;;;;16459:6;16396:70;;;16371:95;;16475:21;;:::i;:::-;16522:18;16505:3;:14;;:35;;;;;;;;;;;;;;;;;;;;;;;16565:1;16549:3;:13;;:17;;;;;16588:3;16575;:10;;:16;;;;16622:6;;16600:3;:19;;:28;;;;;16664:4;16637:3;:16;;:32;;;;;;;;;;;16680:24;16724:1;16707:19;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;16680:46;;16745:3;16735:4;16740:1;16735:7;;;;;;;;;;;;;:13;;;;16764:4;;;;;;;;;;;16759:18;;;16778:5;16785:4;16759:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16759:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16759:31:0;;;;16217:579;;;;;;;:::o;13953:24::-;;;;;;;;;;;;;:::o;4915:83::-;4952:13;4985:5;4978:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4915:83;:::o;14152:36::-;;;;;;;;;;;;;:::o;1935:152::-;2001:4;2018:39;2027:12;:10;:12::i;:::-;2041:7;2050:6;2018:8;:39::i;:::-;2075:4;2068:11;;1935:152;;;;:::o;18788:116::-;18835:7;18865;;;;;;;;;;;18858:25;;;18892:4;18858:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18858:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18858:40:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;18858:40:0;;;;;;;;;18851:47;;18788:116;:::o;13825:19::-;;;;:::o;1418:91::-;1462:7;1489:12;;1482:19;;1418:91;:::o;2093:304::-;2182:4;2199:36;2209:6;2217:9;2228:6;2199:9;:36::i;:::-;2246:121;2255:6;2263:12;:10;:12::i;:::-;2277:89;2315:6;2277:89;;;;;;;;;;;;;;;;;:11;:19;2289:6;2277:19;;;;;;;;;;;;;;;:33;2297:12;:10;:12::i;:::-;2277:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;2246:8;:121::i;:::-;2385:4;2378:11;;2093:304;;;;;:::o;21465:569::-;5377:1;5360:13;;:18;;;;;;;;;;;5389:20;5412:13;;5389:36;;21564:1;21554:7;:11;21546:54;;;;;;;;;;;;;;;;;;;;;;21616:22;:20;:22::i;:::-;21609:4;:29;;;;21649:66;21680:10;21700:4;21707:7;21656:5;;;;;;;;;;;21649:30;;;;:66;;;;;;:::i;:::-;21726:11;:9;:11::i;:::-;21780:14;21797:1;21780:18;;21819:1;21811:4;;:9;21807:150;;;21842:7;21833:16;;21867:7;21860:4;:14;;;;21807:150;;;21910:37;21942:4;;21911:25;21923:12;;21911:7;:11;;:25;;;;:::i;:::-;21910:31;;:37;;;;:::i;:::-;21901:46;;21807:150;21972:22;:20;:22::i;:::-;21965:4;:29;;;;22003:25;22009:10;22021:6;22003:5;:25::i;:::-;5436:1;5472:13;;5456:12;:29;5448:73;;;;;;;;;;;;;;;;;;;;;;21465:569;;:::o;14860:89::-;5943:9;:7;:9::i;:::-;5935:54;;;;;;;;;;;;;;;;;;;;;;14934:9;14927:4;;:16;;;;;;;;;;;;;;;;;;14860:89;:::o;23731:181::-;5943:9;:7;:9::i;:::-;5935:54;;;;;;;;;;;;;;;;;;;;;;23809:8;23820:13;:23;;;23852:4;23820:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23820:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23820:38:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;23820:38:0;;;;;;;;;23809:49;;23867:13;:22;;;23890:10;23902:3;23867:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23867:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23867:39:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;23867:39:0;;;;;;;;;;6000:1;23731:181;:::o;5097:83::-;5138:5;5163:9;;;;;;;;;;;5156:16;;5097:83;:::o;2403:210::-;2483:4;2500:83;2509:12;:10;:12::i;:::-;2523:7;2532:50;2571:10;2532:11;:25;2544:12;:10;:12::i;:::-;2532:25;;;;;;;;;;;;;;;:34;2558:7;2532:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;2500:8;:83::i;:::-;2601:4;2594:11;;2403:210;;;;:::o;22084:255::-;5377:1;5360:13;;:18;;;;;;;;;;;5389:20;5412:13;;5389:36;;5943:9;:7;:9::i;:::-;5935:54;;;;;;;;;;;;;;;;;;;;;;22171:6;22187:5;;;;;;;;;;;22180:23;;;22212:4;22180:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22180:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22180:38:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;22180:38:0;;;;;;;;;22171:47;;22239:1;22235;:5;22227:48;;;;;;;;;;;;;;;;;;;;;;22284:11;:9;:11::i;:::-;22311:22;:20;:22::i;:::-;22304:4;:29;;;;6000:1;5472:13;;5456:12;:29;5448:73;;;;;;;;;;;;;;;;;;;;;;22084:255;:::o;18035:166::-;18079:7;18097:14;;:::i;:::-;18119:4;;;;;;;;;;;18114:24;;;18139:22;;;;;;;;18152:4;18139:22;;;;;;18159:1;18139:22;;;18163:6;;18114:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18114:56:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18114:56:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;18114:56:0;;;;;;;;;18097:73;;18186:3;:9;;;18179:16;;;18035:166;:::o;14953:85::-;5943:9;:7;:9::i;:::-;5935:54;;;;;;;;;;;;;;;;;;;;;;15024:8;15018:3;;:14;;;;;;;;;;;;;;;;;;14953:85;:::o;14032:18::-;;;;;;;;;;;;;:::o;13902:22::-;;;;;;;;;;;;;:::o;18205:120::-;18253:7;18285:8;;;;;;;;;;;18278:26;;;18313:4;18278:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18278:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18278:41:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;18278:41:0;;;;;;;;;18271:48;;18205:120;:::o;20677:96::-;20731:9;:7;:9::i;:::-;20726:23;;;20750:5;;;;;;;;;;;20757:6;20765:1;20726:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20726:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20726:41:0;;;;20677:96;:::o;1515:110::-;1572:7;1599:9;:18;1609:7;1599:18;;;;;;;;;;;;;;;;1592:25;;1515:110;;;:::o;22345:219::-;22398:4;22420:138;22548:9;:7;:9::i;:::-;22420:115;22521:13;:11;:13::i;:::-;22420:88;22494:13;:11;:13::i;:::-;22420:61;22457:23;:21;:23::i;:::-;22420:24;:22;:24::i;:::-;:36;;:61;;;;:::i;:::-;:73;;:88;;;;:::i;:::-;:100;;:115;;;;:::i;:::-;:127;;:138;;;;:::i;:::-;22413:145;;22345:219;:::o;6115:140::-;5943:9;:7;:9::i;:::-;5935:54;;;;;;;;;;;;;;;;;;;;;;6214:1;6177:40;;6198:6;;;;;;;;;;;6177:40;;;;;;;;;;;;6245:1;6228:6;;:19;;;;;;;;;;;;;;;;;;6115:140::o;22570:154::-;22623:4;22636:10;22649:22;:20;:22::i;:::-;22636:35;;22685:33;22705:12;;22685:15;22695:4;22685:5;:9;;:15;;;;:::i;:::-;:19;;:33;;;;:::i;:::-;22678:40;;;22570:154;:::o;20125:546::-;20160:18;20181:11;:9;:11::i;:::-;20160:32;;20220:8;;;;;;;;;;;20205:23;;;;;;;;:11;:23;;;;;;;;;20201:59;;20239:13;:11;:13::i;:::-;20201:59;20284:1;20272:9;:7;:9::i;:::-;:13;20268:369;;;20315:11;20300:26;;;;;;;;:11;:26;;;;;;;;;20296:74;;;20339:21;20350:9;:7;:9::i;:::-;20339:10;:21::i;:::-;;20296:74;20397:14;20382:29;;;;;;;;:11;:29;;;;;;;;;20378:80;;;20424:24;20438:9;:7;:9::i;:::-;20424:13;:24::i;:::-;20378:80;20485:15;20470:30;;;;;;;;:11;:30;;;;;;;;;20466:82;;;20513:25;20528:9;:7;:9::i;:::-;20513:14;:25::i;:::-;20466:82;20575:11;20560:26;;;;;;;;:11;:26;;;;;;;;;20556:74;;;20599:21;20610:9;:7;:9::i;:::-;20599:10;:21::i;:::-;20556:74;20268:369;20654:11;20643:8;;:22;;;;;;;;;;;;;;;;;;;;;;;;20125:546;:::o;20777:141::-;20884:1;20845:7;;;;;;;;;;;20837:21;;;20867:4;20874:6;20837:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20837:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20837:44:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;20837:44:0;;;;;;;;;:48;20829:83;;;;;;;;;;;;;;;;;;;;;;20777:141;:::o;14767:89::-;5943:9;:7;:9::i;:::-;5935:54;;;;;;;;;;;;;;;;;;;;;;14841:9;14834:4;;:16;;;;;;;;;;;;;;;;;;14767:89;:::o;13929:19::-;;;;;;;;;;;;;:::o;5818:79::-;5856:7;5883:6;;;;;;;;;;;5876:13;;5818:79;:::o;13982:19::-;;;;;;;;;;;;;:::o;6015:94::-;6055:4;6095:6;;;;;;;;;;;6079:22;;:12;:10;:12::i;:::-;:22;;;6072:29;;6015:94;:::o;5004:87::-;5043:13;5076:7;5069:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5004:87;:::o;17750:279::-;17790:45;17816:8;;;;;;;;;;;17831:2;17797:5;;;;;;;;;;;17790:25;;;;:45;;;;;:::i;:::-;17870:41;17896:4;;;;;;;;;;;17907:2;17877:5;;;;;;;;;;;17870:25;;;;:41;;;;;:::i;:::-;17920:50;17946:13;:11;:13::i;:::-;17966:2;17927:5;;;;;;;;;;;17920:25;;;;:50;;;;;:::i;:::-;17979:44;18005:7;;;;;;;;;;;18019:2;17986:5;;;;;;;;;;;17979:25;;;;:44;;;;;:::i;:::-;17750:279::o;15360:97::-;5943:9;:7;:9::i;:::-;5935:54;;;;;;;;;;;;;;;;;;;;;;15440:11;15431:6;:20;;;;15360:97;:::o;15505:706::-;15547:6;15564:12;15577;15590;15603;15633:3;;;;;;;;;;;15619:28;;;15648:5;;;;;;;;;;;15619:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15619:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15619:35:0;;;;;;39:16:-1;36:1;17:17;2:54;15619:35:0;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;15619:35:0;;;;;;;;;15562:92;;;;;;;;;15661:11;15675:1;15661:15;;15694:3;15687:4;:10;15683:43;;;15714:4;15708:10;;15683:43;15743:3;15736:4;:10;15732:43;;;15763:4;15757:10;;15732:43;15792:3;15785:4;:10;15781:43;;;15812:4;15806:10;;15781:43;15841:3;15834:4;:10;15830:43;;;15861:4;15855:10;;15830:43;15881:18;15902:11;15881:32;;15931:4;15924:3;:11;15920:59;;;15960:11;15946:25;;15920:59;15996:4;15989:3;:11;15985:59;;;16025:11;16011:25;;15985:59;16061:4;16054:3;:11;16050:62;;;16090:14;16076:28;;16050:62;16129:4;16122:3;:11;16118:63;;;16158:15;16144:29;;16118:63;16194:11;16187:18;;;;;;;;15505:706;:::o;2619:261::-;2704:4;2721:129;2730:12;:10;:12::i;:::-;2744:7;2753:96;2792:15;2753:96;;;;;;;;;;;;;;;;;:11;:25;2765:12;:10;:12::i;:::-;2753:25;;;;;;;;;;;;;;;:34;2779:7;2753:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;2721:8;:129::i;:::-;2868:4;2861:11;;2619:261;;;;:::o;18329:248::-;18384:7;18433:9;18445:17;:15;:17::i;:::-;18433:29;;18477:1;18473;:5;18469:88;;;18493:56;18544:4;18493:46;18508:8;;;;;;;;;;;18499:37;;;:39;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18499:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18499:39:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;18499:39:0;;;;;;;;;18493:1;:5;;:46;;;;:::i;:::-;:50;;:56;;;;:::i;:::-;18489:60;;18469:88;18570:1;18563:8;;;18329:248;:::o;1631:158::-;1700:4;1717:42;1727:12;:10;:12::i;:::-;1741:9;1752:6;1717:9;:42::i;:::-;1777:4;1770:11;;1631:158;;;;:::o;15147:100::-;5943:9;:7;:9::i;:::-;5935:54;;;;;;;;;;;;;;;;;;;;;;15230:11;15218:9;;:23;;;;;;;;;;;;;;;;;;15147:100;:::o;17379:107::-;17419:7;17449:5;;;;;;;;;;;17442:23;;;17474:4;17442:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17442:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17442:38:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;17442:38:0;;;;;;;;;17435:45;;17379:107;:::o;15042:101::-;5943:9;:7;:9::i;:::-;5935:54;;;;;;;;;;;;;;;;;;;;;;15125:12;15115:7;;:22;;;;;;;;;;;;;;;;;;15042:101;:::o;18908:115::-;18952:7;18982:9;;;;;;;;;;;18975:27;;;19011:4;18975:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18975:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18975:42:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;18975:42:0;;;;;;;;;18968:49;;18908:115;:::o;14006:21::-;;;;:::o;22777:919::-;5377:1;5360:13;;:18;;;;;;;;;;;5389:20;5412:13;;5389:36;;22876:1;22866:7;:11;22858:55;;;;;;;;;;;;;;;;;;;;;;22924:16;22943:21;22953:10;22943:9;:21::i;:::-;22924:40;;22992:8;22981:7;:19;;22973:52;;;;;;;;;;;;;;;;;;;;;;23088:22;:20;:22::i;:::-;23081:4;:29;;;;23173:9;23185:37;23209:12;;23186:17;23195:7;23186:4;;:8;;:17;;;;:::i;:::-;23185:23;;:37;;;;:::i;:::-;23173:49;;23259:67;23285:7;23259:67;;;;;;;;;;;;;;;;;:9;:21;23269:10;23259:21;;;;;;;;;;;;;;;;:25;;:67;;;;;:::i;:::-;23235:9;:21;23245:10;23235:21;;;;;;;;;;;;;;;:91;;;;23350:25;23367:7;23350:12;;:16;;:25;;;;:::i;:::-;23335:12;:40;;;;23420:1;23391:41;;23400:10;23391:41;;;23424:7;23391:41;;;;;;;;;;;;;;;23471:9;23490:5;;;;;;;;;;;23483:23;;;23515:4;23483:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23483:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23483:38:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;23483:38:0;;;;;;;;;23471:50;;23538:1;23534;:5;23530:47;;;23552:15;23565:1;23552:12;:15::i;:::-;23530:47;23587:41;23614:10;23626:1;23594:5;;;;;;;;;;;23587:26;;;;:41;;;;;:::i;:::-;23639:11;:9;:11::i;:::-;23666:22;:20;:22::i;:::-;23659:4;:29;;;;5436:1;;;5472:13;;5456:12;:29;5448:73;;;;;;;;;;;;;;;;;;;;;;22777:919;;:::o;1795:134::-;1867:7;1894:11;:18;1906:5;1894:18;;;;;;;;;;;;;;;:27;1913:7;1894:27;;;;;;;;;;;;;;;;1887:34;;1795:134;;;;:::o;20922:131::-;21018:1;20992:8;;;;;;;;;;;20983:23;;;21007:6;20983:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20983:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20983:31:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;20983:31:0;;;;;;;;;:36;20975:72;;;;;;;;;;;;;;;;;;;;;;20922:131;:::o;6261:109::-;5943:9;:7;:9::i;:::-;5935:54;;;;;;;;;;;;;;;;;;;;;;6334:28;6353:8;6334:18;:28::i;:::-;6261:109;:::o;18581:203::-;18635:7;18651:9;18663:16;:14;:16::i;:::-;18651:28;;18694:1;18690;:5;18686:78;;;18718:7;;;;;;;;;;;18710:31;;;18750:4;18710:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18710:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18710:46:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;18710:46:0;;;;;;;;;18706:50;;18686:78;18777:1;18770:8;;;18581:203;:::o;15251:105::-;5943:9;:7;:9::i;:::-;5935:54;;;;;;;;;;;;;;;;;;;;;;15337:13;15326:8;;:24;;;;;;;;;;;;;;;;;;15251:105;:::o;23947:177::-;5943:9;:7;:9::i;:::-;5935:54;;;;;;;;;;;;;;;;;;;;;;24003:11;24020:10;:15;;24050:4;24042:21;;;24020:48;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;24002:66:0;;;24085:6;24077:41;;;;;;;;;;;;;;;;;;;;;;6000:1;23947:177::o;13874:23::-;;;;;;;;;;;;;:::o;17492:120::-;17532:7;17584:4;;;;;;;;;;;17555:49;;;:51;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17555:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17555:51:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;17555:51:0;;;;;;;;;17548:58;;17492:120;:::o;17616:128::-;17660:7;17712:4;;;;;;;;;;;17683:53;;;:55;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17683:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17683:55:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;17683:55:0;;;;;;;;;17676:62;;17616:128;:::o;13849:20::-;;;;;;;;;;;;;:::o;852:98::-;897:15;932:10;925:17;;852:98;:::o;4031:338::-;4142:1;4125:19;;:5;:19;;;;4117:68;;;;;;;;;;;;;;;;;;;;;;4223:1;4204:21;;:7;:21;;;;4196:68;;;;;;;;;;;;;;;;;;;;;;4307:6;4277:11;:18;4289:5;4277:18;;;;;;;;;;;;;;;:27;4296:7;4277:27;;;;;;;;;;;;;;;:36;;;;4345:7;4329:32;;4338:5;4329:32;;;4354:6;4329:32;;;;;;;;;;;;;;;4031:338;;;:::o;2886:471::-;3002:1;2984:20;;:6;:20;;;;2976:70;;;;;;;;;;;;;;;;;;;;;;3086:1;3065:23;;:9;:23;;;;3057:71;;;;;;;;;;;;;;;;;;;;;;3161;3183:6;3161:71;;;;;;;;;;;;;;;;;:9;:17;3171:6;3161:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;3141:9;:17;3151:6;3141:17;;;;;;;;;;;;;;;:91;;;;3266:32;3291:6;3266:9;:20;3276:9;3266:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;3243:9;:20;3253:9;3243:20;;;;;;;;;;;;;;;:55;;;;3331:9;3314:35;;3323:6;3314:35;;;3342:6;3314:35;;;;;;;;;;;;;;;2886:471;;;:::o;6965:192::-;7051:7;7084:1;7079;:6;;7087:12;7071:29;;;;;;;;;;;;;;;;;;;;;;;;;7111:9;7127:1;7123;:5;7111:17;;7148:1;7141:8;;;6965:192;;;;;:::o;9320:204::-;9421:95;9440:5;9470;:18;;;:27;;;;9499:4;9505:2;9509:5;9447:68;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9447:68:0;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;9447:68:0;9421:18;:95::i;:::-;9320:204;;;;:::o;7163:250::-;7221:7;7250:1;7245;:6;7241:47;;;7275:1;7268:8;;;;7241:47;7300:9;7316:1;7312;:5;7300:17;;7345:1;7340;7336;:5;;;;;;:10;7328:56;;;;;;;;;;;;;;;;;;;;;;7404:1;7397:8;;;7163:250;;;;;:::o;7419:132::-;7477:7;7504:39;7508:1;7511;7504:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;7497:46;;7419:132;;;;:::o;3363:308::-;3458:1;3439:21;;:7;:21;;;;3431:65;;;;;;;;;;;;;;;;;;;;;;3524:24;3541:6;3524:12;;:16;;:24;;;;:::i;:::-;3509:12;:39;;;;3580:30;3603:6;3580:9;:18;3590:7;3580:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;3559:9;:18;3569:7;3559:18;;;;;;;;;;;;;;;:51;;;;3647:7;3626:37;;3643:1;3626:37;;;3656:6;3626:37;;;;;;;;;;;;;;;3363:308;;:::o;6636:181::-;6694:7;6714:9;6730:1;6726;:5;6714:17;;6755:1;6750;:6;;6742:46;;;;;;;;;;;;;;;;;;;;;;6808:1;6801:8;;;6636:181;;;;:::o;19029:412::-;19068:14;19085:17;:15;:17::i;:::-;19068:34;;19122:1;19113:6;:10;19109:57;;;19134:24;19151:6;19134:16;:24::i;:::-;19109:57;19181:13;:11;:13::i;:::-;19172:22;;19214:1;19205:6;:10;19201:53;;;19226:20;19239:6;19226:12;:20::i;:::-;19201:53;19269:16;:14;:16::i;:::-;19260:25;;19305:1;19296:6;:10;19292:56;;;19317:23;19333:6;19317:15;:23::i;:::-;19292:56;19363:13;:11;:13::i;:::-;19354:22;;19396:1;19387:6;:10;19383:53;;;19408:20;19421:6;19408:12;:20::i;:::-;19383:53;19029:412;:::o;9532:347::-;9637:1;9628:5;:10;9627:62;;;;9687:1;9644:5;:15;;;9668:4;9675:7;9644:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9644:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9644:39:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9644:39:0;;;;;;;;;:44;9627:62;9619:152;;;;;;;;;;;;;;;;;;;;;;9782:89;9801:5;9831;:13;;;:22;;;;9855:7;9864:5;9808:62;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9808:62:0;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;9808:62:0;9782:18;:89::i;:::-;9532:347;;;:::o;6823:136::-;6881:7;6908:43;6912:1;6915;6908:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;6901:50;;6823:136;;;;:::o;19447:672::-;19518:15;19506:27;;;;;;;;:8;;;;;;;;;;;:27;;;;;;;;;19502:259;;;19544:9;19556:17;:15;:17::i;:::-;19544:29;;19582:10;19595:24;:22;:24::i;:::-;19582:37;;19642:7;19636:2;:13;;19628:44;;;;;;;;;;;;;;;;;;;;;;19681:14;19698:22;19717:2;19698:14;19704:7;19698:1;:5;;:14;;;;:::i;:::-;:18;;:22;;;;:::i;:::-;19681:39;;19729:24;19746:6;19729:16;:24::i;:::-;19502:259;;;;19783:11;19771:23;;;;;;;;:8;;;;;;;;;;;:23;;;;;;;;;19767:131;;;19830:7;19813:13;:11;:13::i;:::-;:24;;19805:55;;;;;;;;;;;;;;;;;;;;;;19869:21;19882:7;19869:12;:21::i;:::-;19767:131;19920:11;19908:23;;;;;;;;:8;;;;;;;;;;;:23;;;;;;;;;19904:131;;;19967:7;19950:13;:11;:13::i;:::-;:24;;19942:55;;;;;;;;;;;;;;;;;;;;;;20006:21;20019:7;20006:12;:21::i;:::-;19904:131;20057:14;20045:26;;;;;;;;:8;;;;;;;;;;;:26;;;;;;;;;20041:73;;;20082:24;20098:7;20082:15;:24::i;:::-;20041:73;19447:672;:::o;9136:176::-;9219:85;9238:5;9268;:14;;;:23;;;;9293:2;9297:5;9245:58;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9245:58:0;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;9245:58:0;9219:18;:85::i;:::-;9136:176;;;:::o;6376:229::-;6470:1;6450:22;;:8;:22;;;;6442:73;;;;;;;;;;;;;;;;;;;;;;6560:8;6531:38;;6552:6;;;;;;;;;;;6531:38;;;;;;;;;;;;6589:8;6580:6;;:17;;;;;;;;;;;;;;;;;;6376:229;:::o;10516:598::-;10604:27;10612:5;10604:25;;;:27::i;:::-;10596:71;;;;;;;;;;;;;;;;;;;;;;10741:12;10755:23;10790:5;10782:19;;10802:4;10782:25;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;10740:67:0;;;;10826:7;10818:52;;;;;;;;;;;;;;;;;;;;;;10907:1;10887:10;:17;:21;10883:224;;;11029:10;11018:30;;;;;;;;;;;;;;11010:85;;;;;;;;;;;;;;;;;;;;;;10883:224;10516:598;;;;:::o;7557:258::-;7643:7;7742:1;7738;:5;7745:12;7730:28;;;;;;;;;;;;;;;;;;;;;;;;;7769:9;7785:1;7781;:5;;;;;;7769:17;;7806:1;7799:8;;;7557:258;;;;;:::o;21303:139::-;21405:1;21377:8;;;;;;;;;;;21368:25;;;21394:6;21368:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21368:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21368:33:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;21368:33:0;;;;;;;;;:38;21360:76;;;;;;;;;;;;;;;;;;;;;;21303:139;:::o;16802:571::-;16858:19;16891:1;16880:13;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;16858:35;;16913:22;;;;;;;;16926:4;16913:22;;;;;;16933:1;16913:22;;;16902:5;16908:1;16902:8;;;;;;;;;;;;;:33;;;;16946:22;;:::i;:::-;16971:71;;;;;;;;16983:5;16971:71;;;;;;16990:21;16971:71;;;;;;;;;;;;17013:20;16971:71;;;;;;;;;;;;17035:6;16971:71;;;16946:96;;17051:21;;:::i;:::-;17098:19;17081:3;:14;;:36;;;;;;;;;;;;;;;;;;;;;;;17142:1;17126:3;:13;;:17;;;;;17165:3;17152;:10;;:16;;;;17199:6;;17177:3;:19;;:28;;;;;17241:4;17214:3;:16;;:32;;;;;;;;;;;17257:24;17301:1;17284:19;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;17257:46;;17322:3;17312:4;17317:1;17312:7;;;;;;;;;;;;;:13;;;;17341:4;;;;;;;;;;;17336:18;;;17355:5;17362:4;17336:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17336:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17336:31:0;;;;16802:571;;;;;:::o;21152:147::-;21263:1;21224:7;;;;;;;;;;;21216:21;;;21246:4;21253:6;21216:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21216:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21216:44:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;21216:44:0;;;;;;;;;:48;21208:85;;;;;;;;;;;;;;;;;;;;;;21152:147;:::o;21057:91::-;21117:9;;;;;;;;;;;21110:24;;;21135:6;21110:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21110:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21110:32:0;;;;21057:91;:::o;8153:374::-;8213:4;8230:16;8257:19;8279:66;8257:88;;;;8448:7;8436:20;8424:32;;8488:3;8476:15;;:8;:15;;:42;;;;;8507:11;8495:8;:23;;8476:42;8468:51;;;;8153:374;;;:::o;13652:10475::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;;85:6;72:20;63:29;;97:33;124:5;97:33;;;57:78;;;;;142:134;;226:6;220:13;211:22;;238:33;265:5;238:33;;;205:71;;;;;283:128;;364:6;358:13;349:22;;376:30;400:5;376:30;;;343:68;;;;;418:156;;511:6;498:20;489:29;;523:46;563:5;523:46;;;483:91;;;;;582:444;;695:3;688:4;680:6;676:17;672:27;662:2;;713:1;710;703:12;662:2;743:6;737:13;765:65;780:49;822:6;780:49;;;765:65;;;756:74;;850:6;843:5;836:21;886:4;878:6;874:17;919:4;912:5;908:16;954:3;945:6;940:3;936:16;933:25;930:2;;;971:1;968;961:12;930:2;981:39;1013:6;1008:3;1003;981:39;;;655:371;;;;;;;;1059:493;;1180:4;1168:9;1163:3;1159:19;1155:30;1152:2;;;1198:1;1195;1188:12;1152:2;1216:20;1231:4;1216:20;;;1207:29;;1286:1;1317:57;1370:3;1361:6;1350:9;1346:22;1317:57;;;1311:3;1304:5;1300:15;1293:82;1246:140;1437:2;1470:60;1526:3;1517:6;1506:9;1502:22;1470:60;;;1463:4;1456:5;1452:16;1445:86;1396:146;1146:406;;;;;1559:130;;1639:6;1626:20;1617:29;;1651:33;1678:5;1651:33;;;1611:78;;;;;1696:134;;1780:6;1774:13;1765:22;;1792:33;1819:5;1792:33;;;1759:71;;;;;1837:241;;1941:2;1929:9;1920:7;1916:23;1912:32;1909:2;;;1957:1;1954;1947:12;1909:2;1992:1;2009:53;2054:7;2045:6;2034:9;2030:22;2009:53;;;1999:63;;1971:97;1903:175;;;;;2085:263;;2200:2;2188:9;2179:7;2175:23;2171:32;2168:2;;;2216:1;2213;2206:12;2168:2;2251:1;2268:64;2324:7;2315:6;2304:9;2300:22;2268:64;;;2258:74;;2230:108;2162:186;;;;;2355:366;;;2476:2;2464:9;2455:7;2451:23;2447:32;2444:2;;;2492:1;2489;2482:12;2444:2;2527:1;2544:53;2589:7;2580:6;2569:9;2565:22;2544:53;;;2534:63;;2506:97;2634:2;2652:53;2697:7;2688:6;2677:9;2673:22;2652:53;;;2642:63;;2613:98;2438:283;;;;;;2728:491;;;;2866:2;2854:9;2845:7;2841:23;2837:32;2834:2;;;2882:1;2879;2872:12;2834:2;2917:1;2934:53;2979:7;2970:6;2959:9;2955:22;2934:53;;;2924:63;;2896:97;3024:2;3042:53;3087:7;3078:6;3067:9;3063:22;3042:53;;;3032:63;;3003:98;3132:2;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;;;3140:63;;3111:98;2828:391;;;;;;3226:366;;;3347:2;3335:9;3326:7;3322:23;3318:32;3315:2;;;3363:1;3360;3353:12;3315:2;3398:1;3415:53;3460:7;3451:6;3440:9;3436:22;3415:53;;;3405:63;;3377:97;3505:2;3523:53;3568:7;3559:6;3548:9;3544:22;3523:53;;;3513:63;;3484:98;3309:283;;;;;;3599:257;;3711:2;3699:9;3690:7;3686:23;3682:32;3679:2;;;3727:1;3724;3717:12;3679:2;3762:1;3779:61;3832:7;3823:6;3812:9;3808:22;3779:61;;;3769:71;;3741:105;3673:183;;;;;3863:267;;3980:2;3968:9;3959:7;3955:23;3951:32;3948:2;;;3996:1;3993;3986:12;3948:2;4031:1;4048:66;4106:7;4097:6;4086:9;4082:22;4048:66;;;4038:76;;4010:110;3942:188;;;;;4137:908;;;;;;4330:3;4318:9;4309:7;4305:23;4301:33;4298:2;;;4347:1;4344;4337:12;4298:2;4403:1;4392:9;4388:17;4382:24;4426:18;4418:6;4415:30;4412:2;;;4458:1;4455;4448:12;4412:2;4478:74;4544:7;4535:6;4524:9;4520:22;4478:74;;;4468:84;;4361:197;4589:2;4607:64;4663:7;4654:6;4643:9;4639:22;4607:64;;;4597:74;;4568:109;4708:2;4726:64;4782:7;4773:6;4762:9;4758:22;4726:64;;;4716:74;;4687:109;4827:2;4845:64;4901:7;4892:6;4881:9;4877:22;4845:64;;;4835:74;;4806:109;4946:3;4965:64;5021:7;5012:6;5001:9;4997:22;4965:64;;;4955:74;;4925:110;4292:753;;;;;;;;;5052:305;;5188:2;5176:9;5167:7;5163:23;5159:32;5156:2;;;5204:1;5201;5194:12;5156:2;5239:1;5256:85;5333:7;5324:6;5313:9;5309:22;5256:85;;;5246:95;;5218:129;5150:207;;;;;5364:241;;5468:2;5456:9;5447:7;5443:23;5439:32;5436:2;;;5484:1;5481;5474:12;5436:2;5519:1;5536:53;5581:7;5572:6;5561:9;5557:22;5536:53;;;5526:63;;5498:97;5430:175;;;;;5612:263;;5727:2;5715:9;5706:7;5702:23;5698:32;5695:2;;;5743:1;5740;5733:12;5695:2;5778:1;5795:64;5851:7;5842:6;5831:9;5827:22;5795:64;;;5785:74;;5757:108;5689:186;;;;;5883:253;;6032:98;6126:3;6118:6;6032:98;;;6018:112;;6011:125;;;;;6145:249;;6268:86;6350:3;6342:6;6268:86;;;6383:4;6378:3;6374:14;6360:28;;6261:133;;;;;6402:142;6493:45;6532:5;6493:45;;;6488:3;6481:58;6475:69;;;6551:103;6624:24;6642:5;6624:24;;;6619:3;6612:37;6606:48;;;6661:113;6744:24;6762:5;6744:24;;;6739:3;6732:37;6726:48;;;6848:1040;;7041:78;7113:5;7041:78;;;7132:110;7235:6;7230:3;7132:110;;;7125:117;;7265:3;7307:4;7299:6;7295:17;7290:3;7286:27;7334:80;7408:5;7334:80;;;7434:7;7462:1;7447:402;7472:6;7469:1;7466:13;7447:402;;;7534:9;7528:4;7524:20;7519:3;7512:33;7579:6;7573:13;7601:112;7708:4;7693:13;7601:112;;;7593:120;;7730:84;7807:6;7730:84;;;7720:94;;7837:4;7832:3;7828:14;7821:21;;7504:345;7494:1;7491;7487:9;7482:14;;7447:402;;;7451:14;7862:4;7855:11;;7879:3;7872:10;;7020:868;;;;;;;;;;7951:834;;8132:72;8198:5;8132:72;;;8217:104;8314:6;8309:3;8217:104;;;8210:111;;8342:74;8410:5;8342:74;;;8436:7;8464:1;8449:314;8474:6;8471:1;8468:13;8449:314;;;8541:6;8535:13;8562:99;8657:3;8642:13;8562:99;;;8555:106;;8678:78;8749:6;8678:78;;;8668:88;;8506:257;8496:1;8493;8489:9;8484:14;;8449:314;;;8453:14;8776:3;8769:10;;8111:674;;;;;;;;8793:94;8860:21;8875:5;8860:21;;;8855:3;8848:34;8842:45;;;8894:104;8971:21;8986:5;8971:21;;;8966:3;8959:34;8953:45;;;9005:356;;9133:38;9165:5;9133:38;;;9183:88;9264:6;9259:3;9183:88;;;9176:95;;9276:52;9321:6;9316:3;9309:4;9302:5;9298:16;9276:52;;;9349:6;9344:3;9340:16;9333:23;;9113:248;;;;;;9368:315;;9464:34;9492:5;9464:34;;;9510:60;9563:6;9558:3;9510:60;;;9503:67;;9575:52;9620:6;9615:3;9608:4;9601:5;9597:16;9575:52;;;9648:29;9670:6;9648:29;;;9643:3;9639:39;9632:46;;9444:239;;;;;;9690:142;9776:50;9820:5;9776:50;;;9771:3;9764:63;9758:74;;;9839:156;9932:57;9983:5;9932:57;;;9927:3;9920:70;9914:81;;;10002:150;10092:54;10140:5;10092:54;;;10087:3;10080:67;10074:78;;;10159:144;10251:46;10291:5;10251:46;;;10246:3;10239:59;10233:70;;;10310:140;10400:44;10438:5;10400:44;;;10395:3;10388:57;10382:68;;;10457:347;;10569:39;10602:5;10569:39;;;10620:71;10684:6;10679:3;10620:71;;;10613:78;;10696:52;10741:6;10736:3;10729:4;10722:5;10718:16;10696:52;;;10769:29;10791:6;10769:29;;;10764:3;10760:39;10753:46;;10549:255;;;;;;10812:465;;10972:67;11036:2;11031:3;10972:67;;;10965:74;;11072:66;11068:1;11063:3;11059:11;11052:87;11173:66;11168:2;11163:3;11159:12;11152:88;11268:2;11263:3;11259:12;11252:19;;10958:319;;;;11286:364;;11446:67;11510:2;11505:3;11446:67;;;11439:74;;11546:66;11542:1;11537:3;11533:11;11526:87;11641:2;11636:3;11632:12;11625:19;;11432:218;;;;11659:465;;11819:67;11883:2;11878:3;11819:67;;;11812:74;;11919:66;11915:1;11910:3;11906:11;11899:87;12020:66;12015:2;12010:3;12006:12;11999:88;12115:2;12110:3;12106:12;12099:19;;11805:319;;;;12133:465;;12293:67;12357:2;12352:3;12293:67;;;12286:74;;12393:66;12389:1;12384:3;12380:11;12373:87;12494:66;12489:2;12484:3;12480:12;12473:88;12589:2;12584:3;12580:12;12573:19;;12279:319;;;;12607:364;;12767:67;12831:2;12826:3;12767:67;;;12760:74;;12867:66;12863:1;12858:3;12854:11;12847:87;12962:2;12957:3;12953:12;12946:19;;12753:218;;;;12980:364;;13140:67;13204:2;13199:3;13140:67;;;13133:74;;13240:66;13236:1;13231:3;13227:11;13220:87;13335:2;13330:3;13326:12;13319:19;;13126:218;;;;13353:364;;13513:67;13577:2;13572:3;13513:67;;;13506:74;;13613:66;13609:1;13604:3;13600:11;13593:87;13708:2;13703:3;13699:12;13692:19;;13499:218;;;;13726:364;;13886:67;13950:2;13945:3;13886:67;;;13879:74;;13986:66;13982:1;13977:3;13973:11;13966:87;14081:2;14076:3;14072:12;14065:19;;13872:218;;;;14099:465;;14259:67;14323:2;14318:3;14259:67;;;14252:74;;14359:66;14355:1;14350:3;14346:11;14339:87;14460:66;14455:2;14450:3;14446:12;14439:88;14555:2;14550:3;14546:12;14539:19;;14245:319;;;;14573:364;;14733:67;14797:2;14792:3;14733:67;;;14726:74;;14833:66;14829:1;14824:3;14820:11;14813:87;14928:2;14923:3;14919:12;14912:19;;14719:218;;;;14946:364;;15106:67;15170:2;15165:3;15106:67;;;15099:74;;15206:66;15202:1;15197:3;15193:11;15186:87;15301:2;15296:3;15292:12;15285:19;;15092:218;;;;15319:364;;15479:67;15543:2;15538:3;15479:67;;;15472:74;;15579:66;15575:1;15570:3;15566:11;15559:87;15674:2;15669:3;15665:12;15658:19;;15465:218;;;;15692:364;;15852:67;15916:2;15911:3;15852:67;;;15845:74;;15952:66;15948:1;15943:3;15939:11;15932:87;16047:2;16042:3;16038:12;16031:19;;15838:218;;;;16065:465;;16225:67;16289:2;16284:3;16225:67;;;16218:74;;16325:66;16321:1;16316:3;16312:11;16305:87;16426:66;16421:2;16416:3;16412:12;16405:88;16521:2;16516:3;16512:12;16505:19;;16211:319;;;;16539:296;;16716:83;16797:1;16792:3;16716:83;;;16709:90;;16827:1;16822:3;16818:11;16811:18;;16702:133;;;;16844:364;;17004:67;17068:2;17063:3;17004:67;;;16997:74;;17104:66;17100:1;17095:3;17091:11;17084:87;17199:2;17194:3;17190:12;17183:19;;16990:218;;;;17217:465;;17377:67;17441:2;17436:3;17377:67;;;17370:74;;17477:66;17473:1;17468:3;17464:11;17457:87;17578:66;17573:2;17568:3;17564:12;17557:88;17673:2;17668:3;17664:12;17657:19;;17363:319;;;;17691:364;;17851:67;17915:2;17910:3;17851:67;;;17844:74;;17951:66;17947:1;17942:3;17938:11;17931:87;18046:2;18041:3;18037:12;18030:19;;17837:218;;;;18064:364;;18224:67;18288:2;18283:3;18224:67;;;18217:74;;18324:66;18320:1;18315:3;18311:11;18304:87;18419:2;18414:3;18410:12;18403:19;;18210:218;;;;18437:465;;18597:67;18661:2;18656:3;18597:67;;;18590:74;;18697:66;18693:1;18688:3;18684:11;18677:87;18798:66;18793:2;18788:3;18784:12;18777:88;18893:2;18888:3;18884:12;18877:19;;18583:319;;;;18911:364;;19071:67;19135:2;19130:3;19071:67;;;19064:74;;19171:66;19167:1;19162:3;19158:11;19151:87;19266:2;19261:3;19257:12;19250:19;;19057:218;;;;19284:465;;19444:67;19508:2;19503:3;19444:67;;;19437:74;;19544:66;19540:1;19535:3;19531:11;19524:87;19645:66;19640:2;19635:3;19631:12;19624:88;19740:2;19735:3;19731:12;19724:19;;19430:319;;;;19758:364;;19918:67;19982:2;19977:3;19918:67;;;19911:74;;20018:66;20014:1;20009:3;20005:11;19998:87;20113:2;20108:3;20104:12;20097:19;;19904:218;;;;20131:364;;20291:67;20355:2;20350:3;20291:67;;;20284:74;;20391:66;20387:1;20382:3;20378:11;20371:87;20486:2;20481:3;20477:12;20470:19;;20277:218;;;;20564:1605;;20707:5;20702:3;20698:15;20797:3;20790:5;20786:15;20780:22;20808:75;20878:3;20873;20869:13;20855:12;20808:75;;;20728:161;20967:4;20960:5;20956:16;20950:23;20979:63;21036:4;21031:3;21027:14;21013:12;20979:63;;;20899:149;21123:4;21116:5;21112:16;21106:23;21135:117;21246:4;21241:3;21237:14;21223:12;21135:117;;;21058:200;21342:4;21335:5;21331:16;21325:23;21354:63;21411:4;21406:3;21402:14;21388:12;21354:63;;;21268:155;21509:4;21502:5;21498:16;21492:23;21521:63;21578:4;21573:3;21569:14;21555:12;21521:63;;;21433:157;21671:4;21664:5;21660:16;21654:23;21683:64;21740:5;21735:3;21731:15;21717:12;21683:64;;;21600:153;21836:4;21829:5;21825:16;21819:23;21848:64;21905:5;21900:3;21896:15;21882:12;21848:64;;;21763:155;21991:4;21984:5;21980:16;21974:23;22044:3;22038:4;22034:14;22026:5;22021:3;22017:15;22010:39;22064:67;22126:4;22112:12;22064:67;;;22056:75;;21928:215;22160:4;22153:11;;20680:1489;;;;;;22239:815;22376:4;22371:3;22367:14;22459:3;22452:5;22448:15;22442:22;22470:56;22521:3;22516;22512:13;22498:12;22470:56;;;22396:136;22613:4;22606:5;22602:16;22596:23;22625:83;22702:4;22697:3;22693:14;22679:12;22625:83;;;22542:172;22786:4;22779:5;22775:16;22769:23;22798:80;22872:4;22867:3;22863:14;22849:12;22798:80;;;22724:160;22958:4;22951:5;22947:16;22941:23;22970:63;23027:4;23022:3;23018:14;23004:12;22970:63;;;22894:145;22349:705;;;;23110:457;23233:4;23228:3;23224:14;23317:3;23310:5;23306:15;23300:22;23328:62;23385:3;23380;23376:13;23362:12;23328:62;;;23253:143;23471:4;23464:5;23460:16;23454:23;23483:63;23540:4;23535:3;23531:14;23517:12;23483:63;;;23406:146;23206:361;;;;23623:467;23756:4;23751:3;23747:14;23840:3;23833:5;23829:15;23823:22;23851:62;23908:3;23903;23899:13;23885:12;23851:62;;;23776:143;23994:4;23987:5;23983:16;23977:23;24006:63;24063:4;24058:3;24054:14;24040:12;24006:63;;;23929:146;23729:361;;;;24097:103;24170:24;24188:5;24170:24;;;24165:3;24158:37;24152:48;;;24207:113;24290:24;24308:5;24290:24;;;24285:3;24278:37;24272:48;;;24327:107;24406:22;24422:5;24406:22;;;24401:3;24394:35;24388:46;;;24441:262;;24585:93;24674:3;24665:6;24585:93;;;24578:100;;24695:3;24688:10;;24566:137;;;;;24710:370;;24908:147;25051:3;24908:147;;;24901:154;;25072:3;25065:10;;24889:191;;;;25087:213;;25205:2;25194:9;25190:18;25182:26;;25219:71;25287:1;25276:9;25272:17;25263:6;25219:71;;;25176:124;;;;;25307:229;;25433:2;25422:9;25418:18;25410:26;;25447:79;25523:1;25512:9;25508:17;25499:6;25447:79;;;25404:132;;;;;25543:340;;25697:2;25686:9;25682:18;25674:26;;25711:79;25787:1;25776:9;25772:17;25763:6;25711:79;;;25801:72;25869:2;25858:9;25854:18;25845:6;25801:72;;;25668:215;;;;;;25890:324;;26036:2;26025:9;26021:18;26013:26;;26050:71;26118:1;26107:9;26103:17;26094:6;26050:71;;;26132:72;26200:2;26189:9;26185:18;26176:6;26132:72;;;26007:207;;;;;;26221:435;;26395:2;26384:9;26380:18;26372:26;;26409:71;26477:1;26466:9;26462:17;26453:6;26409:71;;;26491:72;26559:2;26548:9;26544:18;26535:6;26491:72;;;26574;26642:2;26631:9;26627:18;26618:6;26574:72;;;26366:290;;;;;;;26663:324;;26809:2;26798:9;26794:18;26786:26;;26823:71;26891:1;26880:9;26876:17;26867:6;26823:71;;;26905:72;26973:2;26962:9;26958:18;26949:6;26905:72;;;26780:207;;;;;;26994:449;;27175:2;27164:9;27160:18;27152:26;;27189:71;27257:1;27246:9;27242:17;27233:6;27189:71;;;27271:72;27339:2;27328:9;27324:18;27315:6;27271:72;;;27354:79;27429:2;27418:9;27414:18;27405:6;27354:79;;;27146:297;;;;;;;27450:788;;27780:2;27769:9;27765:18;27757:26;;27830:9;27824:4;27820:20;27816:1;27805:9;27801:17;27794:47;27855:144;27994:4;27985:6;27855:144;;;27847:152;;28047:9;28041:4;28037:20;28032:2;28021:9;28017:18;28010:48;28072:156;28223:4;28214:6;28072:156;;;28064:164;;27751:487;;;;;;28245:201;;28357:2;28346:9;28342:18;28334:26;;28371:65;28433:1;28422:9;28418:17;28409:6;28371:65;;;28328:118;;;;;28453:231;;28580:2;28569:9;28565:18;28557:26;;28594:80;28671:1;28660:9;28656:17;28647:6;28594:80;;;28551:133;;;;;28691:301;;28829:2;28818:9;28814:18;28806:26;;28879:9;28873:4;28869:20;28865:1;28854:9;28850:17;28843:47;28904:78;28977:4;28968:6;28904:78;;;28896:86;;28800:192;;;;;28999:407;;29190:2;29179:9;29175:18;29167:26;;29240:9;29234:4;29230:20;29226:1;29215:9;29211:17;29204:47;29265:131;29391:4;29265:131;;;29257:139;;29161:245;;;;29413:407;;29604:2;29593:9;29589:18;29581:26;;29654:9;29648:4;29644:20;29640:1;29629:9;29625:17;29618:47;29679:131;29805:4;29679:131;;;29671:139;;29575:245;;;;29827:407;;30018:2;30007:9;30003:18;29995:26;;30068:9;30062:4;30058:20;30054:1;30043:9;30039:17;30032:47;30093:131;30219:4;30093:131;;;30085:139;;29989:245;;;;30241:407;;30432:2;30421:9;30417:18;30409:26;;30482:9;30476:4;30472:20;30468:1;30457:9;30453:17;30446:47;30507:131;30633:4;30507:131;;;30499:139;;30403:245;;;;30655:407;;30846:2;30835:9;30831:18;30823:26;;30896:9;30890:4;30886:20;30882:1;30871:9;30867:17;30860:47;30921:131;31047:4;30921:131;;;30913:139;;30817:245;;;;31069:407;;31260:2;31249:9;31245:18;31237:26;;31310:9;31304:4;31300:20;31296:1;31285:9;31281:17;31274:47;31335:131;31461:4;31335:131;;;31327:139;;31231:245;;;;31483:407;;31674:2;31663:9;31659:18;31651:26;;31724:9;31718:4;31714:20;31710:1;31699:9;31695:17;31688:47;31749:131;31875:4;31749:131;;;31741:139;;31645:245;;;;31897:407;;32088:2;32077:9;32073:18;32065:26;;32138:9;32132:4;32128:20;32124:1;32113:9;32109:17;32102:47;32163:131;32289:4;32163:131;;;32155:139;;32059:245;;;;32311:407;;32502:2;32491:9;32487:18;32479:26;;32552:9;32546:4;32542:20;32538:1;32527:9;32523:17;32516:47;32577:131;32703:4;32577:131;;;32569:139;;32473:245;;;;32725:407;;32916:2;32905:9;32901:18;32893:26;;32966:9;32960:4;32956:20;32952:1;32941:9;32937:17;32930:47;32991:131;33117:4;32991:131;;;32983:139;;32887:245;;;;33139:407;;33330:2;33319:9;33315:18;33307:26;;33380:9;33374:4;33370:20;33366:1;33355:9;33351:17;33344:47;33405:131;33531:4;33405:131;;;33397:139;;33301:245;;;;33553:407;;33744:2;33733:9;33729:18;33721:26;;33794:9;33788:4;33784:20;33780:1;33769:9;33765:17;33758:47;33819:131;33945:4;33819:131;;;33811:139;;33715:245;;;;33967:407;;34158:2;34147:9;34143:18;34135:26;;34208:9;34202:4;34198:20;34194:1;34183:9;34179:17;34172:47;34233:131;34359:4;34233:131;;;34225:139;;34129:245;;;;34381:407;;34572:2;34561:9;34557:18;34549:26;;34622:9;34616:4;34612:20;34608:1;34597:9;34593:17;34586:47;34647:131;34773:4;34647:131;;;34639:139;;34543:245;;;;34795:407;;34986:2;34975:9;34971:18;34963:26;;35036:9;35030:4;35026:20;35022:1;35011:9;35007:17;35000:47;35061:131;35187:4;35061:131;;;35053:139;;34957:245;;;;35209:407;;35400:2;35389:9;35385:18;35377:26;;35450:9;35444:4;35440:20;35436:1;35425:9;35421:17;35414:47;35475:131;35601:4;35475:131;;;35467:139;;35371:245;;;;35623:407;;35814:2;35803:9;35799:18;35791:26;;35864:9;35858:4;35854:20;35850:1;35839:9;35835:17;35828:47;35889:131;36015:4;35889:131;;;35881:139;;35785:245;;;;36037:407;;36228:2;36217:9;36213:18;36205:26;;36278:9;36272:4;36268:20;36264:1;36253:9;36249:17;36242:47;36303:131;36429:4;36303:131;;;36295:139;;36199:245;;;;36451:407;;36642:2;36631:9;36627:18;36619:26;;36692:9;36686:4;36682:20;36678:1;36667:9;36663:17;36656:47;36717:131;36843:4;36717:131;;;36709:139;;36613:245;;;;36865:407;;37056:2;37045:9;37041:18;37033:26;;37106:9;37100:4;37096:20;37092:1;37081:9;37077:17;37070:47;37131:131;37257:4;37131:131;;;37123:139;;37027:245;;;;37279:407;;37470:2;37459:9;37455:18;37447:26;;37520:9;37514:4;37510:20;37506:1;37495:9;37491:17;37484:47;37545:131;37671:4;37545:131;;;37537:139;;37441:245;;;;37693:407;;37884:2;37873:9;37869:18;37861:26;;37934:9;37928:4;37924:20;37920:1;37909:9;37905:17;37898:47;37959:131;38085:4;37959:131;;;37951:139;;37855:245;;;;38107:407;;38298:2;38287:9;38283:18;38275:26;;38348:9;38342:4;38338:20;38334:1;38323:9;38319:17;38312:47;38373:131;38499:4;38373:131;;;38365:139;;38269:245;;;;38521:404;;38707:2;38696:9;38692:18;38684:26;;38721:111;38829:1;38818:9;38814:17;38805:6;38721:111;;;38843:72;38911:2;38900:9;38896:18;38887:6;38843:72;;;38678:247;;;;;;38932:213;;39050:2;39039:9;39035:18;39027:26;;39064:71;39132:1;39121:9;39117:17;39108:6;39064:71;;;39021:124;;;;;39152:205;;39266:2;39255:9;39251:18;39243:26;;39280:67;39344:1;39333:9;39329:17;39320:6;39280:67;;;39237:120;;;;;39364:256;;39426:2;39420:9;39410:19;;39464:4;39456:6;39452:17;39563:6;39551:10;39548:22;39527:18;39515:10;39512:34;39509:62;39506:2;;;39584:1;39581;39574:12;39506:2;39604:10;39600:2;39593:22;39404:216;;;;;39627:322;;39771:18;39763:6;39760:30;39757:2;;;39803:1;39800;39793:12;39757:2;39870:4;39866:9;39859:4;39851:6;39847:17;39843:33;39835:41;;39934:4;39928;39924:15;39916:23;;39694:255;;;;39956:175;;40066:3;40058:11;;40104:4;40099:3;40095:14;40087:22;;40052:79;;;;40138:169;;40242:3;40234:11;;40280:4;40275:3;40271:14;40263:22;;40228:79;;;;40314:161;;40447:5;40441:12;40431:22;;40412:63;;;;40482:155;;40609:5;40603:12;40593:22;;40574:63;;;;40644:117;;40733:5;40727:12;40717:22;;40698:63;;;;40768:121;;40861:5;40855:12;40845:22;;40826:63;;;;40896:122;;40990:5;40984:12;40974:22;;40955:63;;;;41025:132;;41147:4;41142:3;41138:14;41130:22;;41124:33;;;;41164:126;;41280:4;41275:3;41271:14;41263:22;;41257:33;;;;41298:202;;41452:6;41447:3;41440:19;41489:4;41484:3;41480:14;41465:29;;41433:67;;;;;41509:196;;41657:6;41652:3;41645:19;41694:4;41689:3;41685:14;41670:29;;41638:67;;;;;41714:152;;41818:6;41813:3;41806:19;41855:4;41850:3;41846:14;41831:29;;41799:67;;;;;41875:144;;42010:3;41995:18;;41988:31;;;;;42028:163;;42143:6;42138:3;42131:19;42180:4;42175:3;42171:14;42156:29;;42124:67;;;;;42199:91;;42261:24;42279:5;42261:24;;;42250:35;;42244:46;;;;42297:85;;42370:5;42363:13;42356:21;42345:32;;42339:43;;;;42389:104;;42464:24;42482:5;42464:24;;;42453:35;;42447:46;;;;42500:136;;42577:5;42566:16;;42583:48;42625:5;42583:48;;;42560:76;;;;42643:150;;42727:5;42716:16;;42733:55;42782:5;42733:55;;;42710:83;;;;42800:144;;42881:5;42870:16;;42887:52;42933:5;42887:52;;;42864:80;;;;42951:128;;43024:5;43013:16;;43030:44;43068:5;43030:44;;;43007:72;;;;43086:84;;43158:6;43151:5;43147:18;43136:29;;43130:40;;;;43177:121;;43250:42;43243:5;43239:54;43228:65;;43222:76;;;;43305:72;;43367:5;43356:16;;43350:27;;;;43384:81;;43455:4;43448:5;43444:16;43433:27;;43427:38;;;;43472:129;;43559:37;43590:5;43559:37;;;43546:50;;43540:61;;;;43608:136;;43700:39;43733:5;43700:39;;;43687:52;;43681:63;;;;43751:150;;43850:46;43890:5;43850:46;;;43837:59;;43831:70;;;;43908:144;;44004:43;44041:5;44004:43;;;43991:56;;43985:67;;;;44059:128;;44147:35;44176:5;44147:35;;;44134:48;;44128:59;;;;44194:114;;44280:23;44297:5;44280:23;;;44267:36;;44261:47;;;;44315:121;;44394:37;44425:5;44394:37;;;44381:50;;44375:61;;;;44443:108;;44522:24;44540:5;44522:24;;;44509:37;;44503:48;;;;44559:268;44624:1;44631:101;44645:6;44642:1;44639:13;44631:101;;;44721:1;44716:3;44712:11;44706:18;44702:1;44697:3;44693:11;44686:39;44667:2;44664:1;44660:10;44655:15;;44631:101;;;44747:6;44744:1;44741:13;44738:2;;;44812:1;44803:6;44798:3;44794:16;44787:27;44738:2;44608:219;;;;;44835:97;;44923:2;44919:7;44914:2;44907:5;44903:14;44899:28;44889:38;;44883:49;;;;44940:106;45024:1;45017:5;45014:12;45004:2;;45030:9;45004:2;44998:48;;45053:113;45144:1;45137:5;45134:12;45124:2;;45150:9;45124:2;45118:48;;45173:110;45261:1;45254:5;45251:12;45241:2;;45267:9;45241:2;45235:48;;45290:102;45370:1;45363:5;45360:12;45350:2;;45376:9;45350:2;45344:48;;45399:117;45468:24;45486:5;45468:24;;;45461:5;45458:35;45448:2;;45507:1;45504;45497:12;45448:2;45442:74;;45523:111;45589:21;45604:5;45589:21;;;45582:5;45579:32;45569:2;;45625:1;45622;45615:12;45569:2;45563:71;;45641:143;45723:37;45754:5;45723:37;;;45716:5;45713:48;45703:2;;45775:1;45772;45765:12;45703:2;45697:87;;45791:117;45860:24;45878:5;45860:24;;;45853:5;45850:35;45840:2;;45899:1;45896;45889:12;45840:2;45834:74;
Swarm Source
bzzr://5f33e53652fbcc4e40cf8fabb16455511155474ecd3ab3c3f82c24ef22753535
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.