Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 479 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
To Pie | 11190261 | 1599 days ago | IN | 16.49661597 ETH | 0.04587621 | ||||
To Pie | 11189626 | 1599 days ago | IN | 12.80848807 ETH | 0.03576969 | ||||
To Pie | 11189463 | 1599 days ago | IN | 9.42828645 ETH | 0.02560444 | ||||
To Pie | 11187016 | 1600 days ago | IN | 9.54996732 ETH | 0.03088351 | ||||
To Pie | 11185300 | 1600 days ago | IN | 25.91090286 ETH | 0.06813276 | ||||
To Pie | 11181667 | 1601 days ago | IN | 18.50178102 ETH | 0.0545062 | ||||
To Pie | 11178171 | 1601 days ago | IN | 28.60271064 ETH | 0.06813276 | ||||
To Pie | 11175494 | 1602 days ago | IN | 10.93179347 ETH | 0.03238055 | ||||
To Pie | 11173112 | 1602 days ago | IN | 67.89854577 ETH | 0.03406638 | ||||
To Pie | 11172600 | 1602 days ago | IN | 65.68313368 ETH | 0.01942851 | ||||
To Pie | 11172565 | 1602 days ago | IN | 67.95962502 ETH | 0.03608469 | ||||
To Pie | 11171819 | 1602 days ago | IN | 14.67254543 ETH | 0.03065974 | ||||
To Pie | 11171272 | 1602 days ago | IN | 10.00872515 ETH | 0.01942833 | ||||
To Pie | 11170096 | 1602 days ago | IN | 14.78411972 ETH | 0.02875215 | ||||
To Pie | 11168469 | 1603 days ago | IN | 13.91630363 ETH | 0.02895642 | ||||
To Pie | 11167040 | 1603 days ago | IN | 13.97248618 ETH | 0.0272531 | ||||
To Pie | 11164402 | 1603 days ago | IN | 15.21039453 ETH | 0.03747301 | ||||
To Pie | 11163844 | 1603 days ago | IN | 12.02864815 ETH | 0.03200555 | ||||
To Pie | 11159767 | 1604 days ago | IN | 0.67593776 ETH | 0.04574542 | ||||
To Pie | 11159721 | 1604 days ago | IN | 0.6754606 ETH | 0.05817546 | ||||
To Pie | 11159691 | 1604 days ago | IN | 0.67563274 ETH | 0.04441644 | ||||
To Pie | 11158843 | 1604 days ago | IN | 2.22061554 ETH | 0.07949067 | ||||
To Pie | 11157465 | 1604 days ago | IN | 15.53090622 ETH | 0.08418943 | ||||
To Pie | 11156518 | 1605 days ago | IN | 12.73517096 ETH | 0.0531041 | ||||
To Pie | 11156314 | 1605 days ago | IN | 40.52544907 ETH | 0.05180936 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Method | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|---|
- | 12891326 | 1337 days ago | 0.07775978 ETH | ||||
- | 12891326 | 1337 days ago | 1.55519539 ETH | ||||
- | 12891326 | 1337 days ago | 1.63295518 ETH | ||||
- | 12871642 | 1340 days ago | 0.09131279 ETH | ||||
- | 12871642 | 1340 days ago | 1.82625582 ETH | ||||
- | 12871642 | 1340 days ago | 1.91756861 ETH | ||||
- | 12870087 | 1340 days ago | 0.09182574 ETH | ||||
- | 12870087 | 1340 days ago | 1.83651069 ETH | ||||
- | 12870087 | 1340 days ago | 1.92833644 ETH | ||||
- | 12862932 | 1341 days ago | 0.09221173 ETH | ||||
- | 12862932 | 1341 days ago | 1.844234 ETH | ||||
- | 12862932 | 1341 days ago | 1.93644573 ETH | ||||
- | 12817854 | 1348 days ago | 0.10992445 ETH | ||||
- | 12817854 | 1348 days ago | 2.19848795 ETH | ||||
- | 12817854 | 1348 days ago | 2.3084124 ETH | ||||
- | 12770707 | 1356 days ago | 0.05599197 ETH | ||||
- | 12770707 | 1356 days ago | 1.11983914 ETH | ||||
- | 12770707 | 1356 days ago | 1.17583111 ETH | ||||
- | 12770589 | 1356 days ago | 0.12447314 ETH | ||||
- | 12770589 | 1356 days ago | 2.48946228 ETH | ||||
- | 12770589 | 1356 days ago | 2.61393543 ETH | ||||
- | 12769505 | 1356 days ago | 0.06909535 ETH | ||||
- | 12769505 | 1356 days ago | 1.3951012 ETH | ||||
- | 12769505 | 1356 days ago | 1.46419656 ETH | ||||
- | 12751264 | 1359 days ago | 0.0686896 ETH |
Loading...
Loading
Contract Name:
UniswapV2Recipe
Compiler Version
v0.6.4+commit.1dca32f3
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-08-28 */ pragma solidity ^0.6.4; interface IERC20 { event Approval(address indexed _src, address indexed _dst, uint _amount); event Transfer(address indexed _src, address indexed _dst, uint _amount); function totalSupply() external view returns (uint); function balanceOf(address _whom) external view returns (uint); function allowance(address _src, address _dst) external view returns (uint); function approve(address _dst, uint _amount) external returns (bool); function transfer(address _dst, uint _amount) external returns (bool); function transferFrom( address _src, address _dst, uint _amount ) external returns (bool); } // File: localhost/contracts/interfaces/IWETH.sol // File: @emilianobonassi/gas-saver/ChiGasSaver.sol pragma solidity ^0.6.0; interface IFreeFromUpTo { function freeFromUpTo(address from, uint256 value) external returns(uint256 freed); } contract ChiGasSaver { modifier saveGas(address payable sponsor) { uint256 gasStart = gasleft(); _; uint256 gasSpent = 21000 + gasStart - gasleft() + 16 * msg.data.length; IFreeFromUpTo chi = IFreeFromUpTo(0x0000000000004946c0e9F43F4Dee607b0eF1fA1c); chi.freeFromUpTo(sponsor, (gasSpent + 14154) / 41947); } } // File: localhost/contracts/Ownable.sol pragma solidity 0.6.4; // TODO move this generic contract to a seperate repo with all generic smart contracts contract Ownable { bytes32 constant public oSlot = keccak256("Ownable.storage.location"); event OwnerChanged(address indexed previousOwner, address indexed newOwner); // Ownable struct struct os { address owner; } modifier onlyOwner(){ require(msg.sender == los().owner, "Ownable.onlyOwner: msg.sender not owner"); _; } /** @notice Transfer ownership to a new address @param _newOwner Address of the new owner */ function transferOwnership(address _newOwner) onlyOwner external { _setOwner(_newOwner); } /** @notice Internal method to set the owner @param _newOwner Address of the new owner */ function _setOwner(address _newOwner) internal { emit OwnerChanged(los().owner, _newOwner); los().owner = _newOwner; } /** @notice Load ownable storage @return s Storage pointer to the Ownable storage struct */ function los() internal pure returns (os storage s) { bytes32 loc = oSlot; assembly { s_slot := loc } } } // File: localhost/contracts/interfaces/ISmartPoolRegistry.sol pragma solidity 0.6.4; interface ISmartPoolRegistry { function inRegistry(address _pool) external view returns(bool); function entries(uint256 _index) external view returns(address); function addSmartPool(address _smartPool) external; function removeSmartPool(uint256 _index) external; } // File: localhost/contracts/interfaces/IUniswapV2Exchange.sol interface IUniswapV2Exchange { function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); } // File: localhost/contracts/interfaces/IUniswapV2Factory.sol interface IUniswapV2Factory { function getPair(address tokenA, address tokenB) external view returns (address pair); } // File: localhost/contracts/interfaces/IPSmartPool.sol pragma solidity ^0.6.4; interface IPSmartPool is IERC20 { function joinPool(uint256 _amount) external; function exitPool(uint256 _amount) external; function getController() external view returns(address); function getTokens() external view returns(address[] memory); function calcTokensForAmount(uint256 _amount) external view returns(address[] memory tokens, uint256[] memory amounts); } // File: localhost/contracts/recipes/LibSafeApproval.sol library LibSafeApprove { function safeApprove(IERC20 _token, address _spender, uint256 _amount) internal { uint256 currentAllowance = _token.allowance(address(this), _spender); // Do nothing if allowance is already set to this value if(currentAllowance == _amount) { return; } // If approval is not zero reset it to zero first if(currentAllowance != 0) { _token.approve(_spender, 0); } // do the actual approval _token.approve(_spender, _amount); } } // File: localhost/contracts/recipes/SafeMath.sol // a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math) library SafeMath { function add(uint x, uint y) internal pure returns (uint z) { require((z = x + y) >= x, 'ds-math-add-overflow'); } function sub(uint x, uint y) internal pure returns (uint z) { require((z = x - y) <= x, 'ds-math-sub-underflow'); } function mul(uint x, uint y) internal pure returns (uint z) { require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow'); } } // File: @uniswap/v2-core/contracts/interfaces/IUniswapV2Pair.sol pragma solidity >=0.5.0; interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } // File: localhost/contracts/recipes/UniLib.sol pragma solidity >=0.5.0; library UniLib { using SafeMath for uint; // returns sorted token addresses, used to handle return values from pairs sorted in this order function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) { require(tokenA != tokenB, 'UniLib: IDENTICAL_ADDRESSES'); (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA); require(token0 != address(0), 'UniLib: ZERO_ADDRESS'); } // calculates the CREATE2 address for a pair without making any external calls function pairFor(address factory, address tokenA, address tokenB) internal pure returns (address pair) { (address token0, address token1) = sortTokens(tokenA, tokenB); pair = address(uint(keccak256(abi.encodePacked( hex'ff', factory, keccak256(abi.encodePacked(token0, token1)), hex'96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f' // init code hash )))); } // fetches and sorts the reserves for a pair function getReserves(address factory, address tokenA, address tokenB) internal view returns (uint reserveA, uint reserveB) { (address token0,) = sortTokens(tokenA, tokenB); (uint reserve0, uint reserve1,) = IUniswapV2Pair(pairFor(factory, tokenA, tokenB)).getReserves(); (reserveA, reserveB) = tokenA == token0 ? (reserve0, reserve1) : (reserve1, reserve0); } // given some amount of an asset and pair reserves, returns an equivalent amount of the other asset function quote(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint amountB) { require(amountA > 0, 'UniLib: INSUFFICIENT_AMOUNT'); require(reserveA > 0 && reserveB > 0, 'UniLib: INSUFFICIENT_LIQUIDITY'); amountB = amountA.mul(reserveB) / reserveA; } // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) internal pure returns (uint amountOut) { require(amountIn > 0, 'UniLib: INSUFFICIENT_INPUT_AMOUNT'); require(reserveIn > 0 && reserveOut > 0, 'UniLib: INSUFFICIENT_LIQUIDITY'); uint amountInWithFee = amountIn.mul(997); uint numerator = amountInWithFee.mul(reserveOut); uint denominator = reserveIn.mul(1000).add(amountInWithFee); amountOut = numerator / denominator; } // given an output amount of an asset and pair reserves, returns a required input amount of the other asset function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) internal pure returns (uint amountIn) { require(amountOut > 0, 'UniLib: INSUFFICIENT_OUTPUT_AMOUNT'); require(reserveIn > 0 && reserveOut > 0, 'UniLib: INSUFFICIENT_LIQUIDITY'); uint numerator = reserveIn.mul(amountOut).mul(1000); uint denominator = reserveOut.sub(amountOut).mul(997); amountIn = (numerator / denominator).add(1); } // performs chained getAmountOut calculations on any number of pairs function getAmountsOut(address factory, uint amountIn, address[] memory path) internal view returns (uint[] memory amounts) { require(path.length >= 2, 'UniLib: INVALID_PATH'); amounts = new uint[](path.length); amounts[0] = amountIn; for (uint i; i < path.length - 1; i++) { (uint reserveIn, uint reserveOut) = getReserves(factory, path[i], path[i + 1]); amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut); } } // performs chained getAmountIn calculations on any number of pairs function getAmountsIn(address factory, uint amountOut, address[] memory path) internal view returns (uint[] memory amounts) { require(path.length >= 2, 'UniLib: INVALID_PATH'); amounts = new uint[](path.length); amounts[amounts.length - 1] = amountOut; for (uint i = path.length - 1; i > 0; i--) { (uint reserveIn, uint reserveOut) = getReserves(factory, path[i - 1], path[i]); amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut); } } } // File: localhost/contracts/interfaces/IERC20.sol interface IWETH is IERC20 { function deposit() external payable; function withdraw(uint wad) external; } // File: localhost/contracts/recipes/UniswapV2Recipe.sol pragma solidity 0.6.4; contract UniswapV2Recipe is Ownable, ChiGasSaver { using LibSafeApprove for IERC20; IWETH constant public WETH = IWETH(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2); IUniswapV2Factory constant uniswapFactory = IUniswapV2Factory(0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f); ISmartPoolRegistry constant public registry = ISmartPoolRegistry(0x412a5d5eC35fF185D6BfF32a367a985e1FB7c296); address payable public constant gasSponsor = 0x3bFdA5285416eB06Ebc8bc0aBf7d105813af06d0; bool private isPaused = false; // Pauzer modifier revertIfPaused { if (isPaused) { revert("[UniswapV2Recipe] is Paused"); } else { _; } } function togglePause() public onlyOwner { isPaused = !isPaused; } constructor() public { _setOwner(msg.sender); } // Max eth amount enforced by msg.value function toPie(address _pie, uint256 _poolAmount) external payable revertIfPaused saveGas(gasSponsor) { require(registry.inRegistry(_pie), "Not a Pie"); uint256 totalEth = calcToPie(_pie, _poolAmount); require(msg.value >= totalEth, "Amount ETH too low"); WETH.deposit{value: totalEth}(); _toPie(_pie, _poolAmount); // return excess ETH if(address(this).balance != 0) { // Send any excess ETH back msg.sender.transfer(address(this).balance); } // Transfer pool tokens to msg.sender IERC20 pie = IERC20(_pie); IERC20(pie).transfer(msg.sender, pie.balanceOf(address(this))); } function _toPie(address _pie, uint256 _poolAmount) internal { (address[] memory tokens, uint256[] memory amounts) = IPSmartPool(_pie).calcTokensForAmount(_poolAmount); for(uint256 i = 0; i < tokens.length; i++) { if(registry.inRegistry(tokens[i])) { _toPie(tokens[i], amounts[i]); } else { IUniswapV2Exchange pair = IUniswapV2Exchange(UniLib.pairFor(address(uniswapFactory), tokens[i], address(WETH))); (uint256 reserveA, uint256 reserveB) = UniLib.getReserves(address(uniswapFactory), address(WETH), tokens[i]); uint256 amountIn = UniLib.getAmountIn(amounts[i], reserveA, reserveB); // UniswapV2 does not pull the token WETH.transfer(address(pair), amountIn); if(token0Or1(address(WETH), tokens[i]) == 0) { pair.swap(amounts[i], 0, address(this), new bytes(0)); } else { pair.swap(0, amounts[i], address(this), new bytes(0)); } } IERC20(tokens[i]).safeApprove(_pie, amounts[i]); } IPSmartPool pie = IPSmartPool(_pie); pie.joinPool(_poolAmount); } function calcToPie(address _pie, uint256 _poolAmount) public view returns(uint256) { (address[] memory tokens, uint256[] memory amounts) = IPSmartPool(_pie).calcTokensForAmount(_poolAmount); uint256 totalEth = 0; for(uint256 i = 0; i < tokens.length; i++) { if(registry.inRegistry(tokens[i])) { totalEth += calcToPie(tokens[i], amounts[i]); } else { (uint256 reserveA, uint256 reserveB) = UniLib.getReserves(address(uniswapFactory), address(WETH), tokens[i]); totalEth += UniLib.getAmountIn(amounts[i], reserveA, reserveB); } } return totalEth; } // TODO recursive exit function toEth(address _pie, uint256 _poolAmount, uint256 _minEthAmount) external revertIfPaused saveGas(gasSponsor) { uint256 totalEth = calcToPie(_pie, _poolAmount); require(_minEthAmount <= totalEth, "Output ETH amount too low"); IPSmartPool pie = IPSmartPool(_pie); (address[] memory tokens, uint256[] memory amounts) = IPSmartPool(_pie).calcTokensForAmount(_poolAmount); pie.transferFrom(msg.sender, address(this), _poolAmount); pie.exitPool(_poolAmount); for(uint256 i = 0; i < tokens.length; i++) { (uint256 reserveA, uint256 reserveB) = UniLib.getReserves(address(uniswapFactory), tokens[i], address(WETH)); uint256 wethAmountOut = UniLib.getAmountOut(amounts[i], reserveA, reserveB); IUniswapV2Exchange pair = IUniswapV2Exchange(UniLib.pairFor(address(uniswapFactory), tokens[i], address(WETH))); // Uniswap V2 does not pull the token IERC20(tokens[i]).transfer(address(pair), amounts[i]); if(token0Or1(address(WETH), tokens[i]) == 0) { pair.swap(0, wethAmountOut, address(this), new bytes(0)); } else { pair.swap(wethAmountOut, 0, address(this), new bytes(0)); } } WETH.withdraw(totalEth); msg.sender.transfer(address(this).balance); } function calcToEth(address _pie, uint256 _poolAmountOut) external view returns(uint256) { (address[] memory tokens, uint256[] memory amounts) = IPSmartPool(_pie).calcTokensForAmount(_poolAmountOut); uint256 totalEth = 0; for(uint256 i = 0; i < tokens.length; i++) { (uint256 reserveA, uint256 reserveB) = UniLib.getReserves(address(uniswapFactory), tokens[i], address(WETH)); totalEth += UniLib.getAmountOut(amounts[i], reserveA, reserveB); } return totalEth; } function token0Or1(address tokenA, address tokenB) internal view returns(uint256) { (address token0, address token1) = UniLib.sortTokens(tokenA, tokenB); if(token0 == tokenB) { return 0; } return 1; } function die() public onlyOwner { address payable _to = payable(los().owner); selfdestruct(_to); } function saveEth() external onlyOwner { msg.sender.transfer(address(this).balance); } function saveToken(address _token) external onlyOwner { IERC20 token = IERC20(_token); token.transfer(msg.sender, token.balanceOf(address(this))); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"contract IWETH","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pie","type":"address"},{"internalType":"uint256","name":"_poolAmountOut","type":"uint256"}],"name":"calcToEth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pie","type":"address"},{"internalType":"uint256","name":"_poolAmount","type":"uint256"}],"name":"calcToPie","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"die","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gasSponsor","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oSlot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registry","outputs":[{"internalType":"contract ISmartPoolRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"saveEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"saveToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pie","type":"address"},{"internalType":"uint256","name":"_poolAmount","type":"uint256"},{"internalType":"uint256","name":"_minEthAmount","type":"uint256"}],"name":"toEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pie","type":"address"},{"internalType":"uint256","name":"_poolAmount","type":"uint256"}],"name":"toPie","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"togglePause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526000805460ff191690553480156200001b57600080fd5b5062000030336001600160e01b036200003616565b620000f3565b6001600160a01b038116620000536001600160e01b03620000be16565b546040516001600160a01b03909116907fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c90600090a3806200009d6001600160e01b03620000be16565b80546001600160a01b0319166001600160a01b039290921691909117905550565b604080517f4f776e61626c652e73746f726167652e6c6f636174696f6e00000000000000008152905190819003601801902090565b61274080620001036000396000f3fe6080604052600436106100c25760003560e01c80637b1039991161007f578063c4ae316811610059578063c4ae31681461023d578063e560ce9c14610252578063f090784314610285578063f2fde38b1461029a576100c2565b80637b103999146101fe5780639528432b14610213578063ad5c464814610228576100c2565b80630a8eafe2146100c75780632040f65414610108578063335d15e31461015357806335f469941461018c5780636edfcd23146101a1578063731dae7e146101d2575b600080fd5b3480156100d357600080fd5b50610106600480360360608110156100ea57600080fd5b506001600160a01b0381351690602081013590604001356102cd565b005b34801561011457600080fd5b506101416004803603604081101561012b57600080fd5b506001600160a01b038135169060200135610b37565b60408051918252519081900360200190f35b34801561015f57600080fd5b506101416004803603604081101561017657600080fd5b506001600160a01b038135169060200135610d48565b34801561019857600080fd5b50610106611057565b3480156101ad57600080fd5b506101b66110bf565b604080516001600160a01b039092168252519081900360200190f35b610106600480360360408110156101e857600080fd5b506001600160a01b0381351690602001356110d7565b34801561020a57600080fd5b506101b66114c0565b34801561021f57600080fd5b506101066114d8565b34801561023457600080fd5b506101b6611556565b34801561024957600080fd5b5061010661156e565b34801561025e57600080fd5b506101066004803603602081101561027557600080fd5b50356001600160a01b03166115d1565b34801561029157600080fd5b5061014161171d565b3480156102a657600080fd5b50610106600480360360208110156102bd57600080fd5b50356001600160a01b031661174d565b60005460ff1615610325576040805162461bcd60e51b815260206004820152601b60248201527f5b556e697377617056325265636970655d206973205061757365640000000000604482015290519081900360640190fd5b733bfda5285416eb06ebc8bc0abf7d105813af06d060005a9050600061034b8686610d48565b9050808411156103a2576040805162461bcd60e51b815260206004820152601960248201527f4f75747075742045544820616d6f756e7420746f6f206c6f7700000000000000604482015290519081900360640190fd5b6000869050606080886001600160a01b031663371babdc896040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b1580156103ee57600080fd5b505afa158015610402573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604090815281101561042b57600080fd5b8101908080516040519392919084600160201b82111561044a57600080fd5b90830190602082018581111561045f57600080fd5b82518660208202830111600160201b8211171561047b57600080fd5b82525081516020918201928201910280838360005b838110156104a8578181015183820152602001610490565b5050505090500160405260200180516040519392919084600160201b8211156104d057600080fd5b9083019060208201858111156104e557600080fd5b82518660208202830111600160201b8211171561050157600080fd5b82525081516020918201928201910280838360005b8381101561052e578181015183820152602001610516565b5050505090500160405250505091509150826001600160a01b03166323b872dd33308b6040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b031681526020018281526020019350505050602060405180830381600087803b1580156105b957600080fd5b505af11580156105cd573d6000803e3d6000fd5b505050506040513d60208110156105e357600080fd5b50506040805163be1d24ad60e01b8152600481018a905290516001600160a01b0385169163be1d24ad91602480830192600092919082900301818387803b15801561062d57600080fd5b505af1158015610641573d6000803e3d6000fd5b506000925050505b82518110156109d75760008061069b735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f86858151811061067957fe5b602002602001015173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26117a5565b9150915060006106bf8585815181106106b057fe5b60200260200101518484611873565b90506000610709735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f8887815181106106e757fe5b602002602001015173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2611979565b905086858151811061071757fe5b60200260200101516001600160a01b031663a9059cbb8288888151811061073a57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561079157600080fd5b505af11580156107a5573d6000803e3d6000fd5b505050506040513d60208110156107bb57600080fd5b505086516107f29073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2908990889081106107e557fe5b6020026020010151611a39565b6108e057604080516000808252602082019283905263022c0d9f60e01b835260248201818152604483018690523060648401819052608060848501908152845160a486018190526001600160a01b0388169663022c0d9f968a9590939092909160c48501918083838b5b8381101561087457818101518382015260200161085c565b50505050905090810190601f1680156108a15780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156108c357600080fd5b505af11580156108d7573d6000803e3d6000fd5b505050506109c7565b604080516000808252602082019283905263022c0d9f60e01b835260248201858152604483018290523060648401819052608060848501908152845160a486018190526001600160a01b0388169663022c0d9f968a969590939092909160c48501918083838a5b8381101561095f578181015183820152602001610947565b50505050905090810190601f16801561098c5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156109ae57600080fd5b505af11580156109c2573d6000803e3d6000fd5b505050505b5050600190920191506106499050565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b0316632e1a7d4d856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610a3257600080fd5b505af1158015610a46573d6000803e3d6000fd5b50506040513392504780156108fc029250906000818181858888f19350505050158015610a77573d6000803e3d6000fd5b506000935050601036029150505a830301615208810191506d4946c0e9f43f4dee607b0ef1fa1c90819063079d229f90869061a3db9061895201046040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610b0157600080fd5b505af1158015610b15573d6000803e3d6000fd5b505050506040513d6020811015610b2b57600080fd5b5050505050505b505050565b6000606080846001600160a01b031663371babdc856040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015610b8057600080fd5b505afa158015610b94573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040908152811015610bbd57600080fd5b8101908080516040519392919084600160201b821115610bdc57600080fd5b908301906020820185811115610bf157600080fd5b82518660208202830111600160201b82111715610c0d57600080fd5b82525081516020918201928201910280838360005b83811015610c3a578181015183820152602001610c22565b5050505090500160405260200180516040519392919084600160201b821115610c6257600080fd5b908301906020820185811115610c7757600080fd5b82518660208202830111600160201b82111715610c9357600080fd5b82525081516020918201928201910280838360005b83811015610cc0578181015183820152602001610ca8565b5050505090500160405250505091509150600080905060008090505b8351811015610d3c57600080610d0c735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f87858151811061067957fe5b91509150610d2e858481518110610d1f57fe5b60200260200101518383611873565b909301925050600101610cdc565b50925050505b92915050565b6000606080846001600160a01b031663371babdc856040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015610d9157600080fd5b505afa158015610da5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040908152811015610dce57600080fd5b8101908080516040519392919084600160201b821115610ded57600080fd5b908301906020820185811115610e0257600080fd5b82518660208202830111600160201b82111715610e1e57600080fd5b82525081516020918201928201910280838360005b83811015610e4b578181015183820152602001610e33565b5050505090500160405260200180516040519392919084600160201b821115610e7357600080fd5b908301906020820185811115610e8857600080fd5b82518660208202830111600160201b82111715610ea457600080fd5b82525081516020918201928201910280838360005b83811015610ed1578181015183820152602001610eb9565b5050505090500160405250505091509150600080905060008090505b8351811015610d3c5773412a5d5ec35ff185d6bff32a367a985e1fb7c2966001600160a01b031663e4ec552b858381518110610f2557fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610f7357600080fd5b505afa158015610f87573d6000803e3d6000fd5b505050506040513d6020811015610f9d57600080fd5b505115610fdd57610fd4848281518110610fb357fe5b6020026020010151848381518110610fc757fe5b6020026020010151610d48565b8201915061104f565b600080611026735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc288868151811061101957fe5b60200260200101516117a5565b9150915061104885848151811061103957fe5b60200260200101518383611a7c565b8401935050505b600101610eed565b61105f611b82565b546001600160a01b031633146110a65760405162461bcd60e51b81526004018080602001828103825260278152602001806126e46027913960400191505060405180910390fd5b60006110b0611b82565b546001600160a01b0316905080ff5b733bfda5285416eb06ebc8bc0abf7d105813af06d081565b60005460ff161561112f576040805162461bcd60e51b815260206004820152601b60248201527f5b556e697377617056325265636970655d206973205061757365640000000000604482015290519081900360640190fd5b733bfda5285416eb06ebc8bc0abf7d105813af06d060005a6040805163e4ec552b60e01b81526001600160a01b0387166004820152905191925073412a5d5ec35ff185d6bff32a367a985e1fb7c2969163e4ec552b91602480820192602092909190829003018186803b1580156111a557600080fd5b505afa1580156111b9573d6000803e3d6000fd5b505050506040513d60208110156111cf57600080fd5b505161120e576040805162461bcd60e51b81526020600482015260096024820152684e6f7420612050696560b81b604482015290519081900360640190fd5b600061121a8585610d48565b905080341015611266576040805162461bcd60e51b8152602060048201526012602482015271416d6f756e742045544820746f6f206c6f7760701b604482015290519081900360640190fd5b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156112b557600080fd5b505af11580156112c9573d6000803e3d6000fd5b50505050506112d88585611bb2565b471561130c5760405133904780156108fc02916000818181858888f1935050505015801561130a573d6000803e3d6000fd5b505b604080516370a0823160e01b8152306004820152905186916001600160a01b0383169163a9059cbb91339184916370a08231916024808301926020929190829003018186803b15801561135e57600080fd5b505afa158015611372573d6000803e3d6000fd5b505050506040513d602081101561138857600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b1580156113d957600080fd5b505af11580156113ed573d6000803e3d6000fd5b505050506040513d602081101561140357600080fd5b5060009250506010360290505a830301615208810191506d4946c0e9f43f4dee607b0ef1fa1c90819063079d229f90869061a3db9061895201046040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561148c57600080fd5b505af11580156114a0573d6000803e3d6000fd5b505050506040513d60208110156114b657600080fd5b5050505050505050565b73412a5d5ec35ff185d6bff32a367a985e1fb7c29681565b6114e0611b82565b546001600160a01b031633146115275760405162461bcd60e51b81526004018080602001828103825260278152602001806126e46027913960400191505060405180910390fd5b60405133904780156108fc02916000818181858888f19350505050158015611553573d6000803e3d6000fd5b50565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b611576611b82565b546001600160a01b031633146115bd5760405162461bcd60e51b81526004018080602001828103825260278152602001806126e46027913960400191505060405180910390fd5b6000805460ff19811660ff90911615179055565b6115d9611b82565b546001600160a01b031633146116205760405162461bcd60e51b81526004018080602001828103825260278152602001806126e46027913960400191505060405180910390fd5b604080516370a0823160e01b8152306004820152905182916001600160a01b0383169163a9059cbb91339184916370a08231916024808301926020929190829003018186803b15801561167257600080fd5b505afa158015611686573d6000803e3d6000fd5b505050506040513d602081101561169c57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b1580156116ed57600080fd5b505af1158015611701573d6000803e3d6000fd5b505050506040513d602081101561171757600080fd5b50505050565b604080517727bbb730b136329739ba37b930b3b2973637b1b0ba34b7b760411b8152905190819003601801902081565b611755611b82565b546001600160a01b0316331461179c5760405162461bcd60e51b81526004018080602001828103825260278152602001806126e46027913960400191505060405180910390fd5b6115538161228e565b60008060006117b48585612300565b5090506000806117c5888888611979565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156117fd57600080fd5b505afa158015611811573d6000803e3d6000fd5b505050506040513d606081101561182757600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b0387811690841614611861578082611864565b81815b90999098509650505050505050565b60008084116118b35760405162461bcd60e51b81526004018080602001828103825260218152602001806126c36021913960400191505060405180910390fd5b6000831180156118c35750600082115b611914576040805162461bcd60e51b815260206004820152601e60248201527f556e694c69623a20494e53554646494349454e545f4c49515549444954590000604482015290519081900360640190fd5b6000611928856103e563ffffffff6123eb16565b9050600061193c828563ffffffff6123eb16565b9050600061196283611956886103e863ffffffff6123eb16565b9063ffffffff61244e16565b905080828161196d57fe5b04979650505050505050565b60008060006119888585612300565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401529a90941b9093166069840152607d8301989098527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6000806000611a488585612300565b91509150836001600160a01b0316826001600160a01b03161415611a7157600092505050610d42565b506001949350505050565b6000808411611abc5760405162461bcd60e51b81526004018080602001828103825260228152602001806126a16022913960400191505060405180910390fd5b600083118015611acc5750600082115b611b1d576040805162461bcd60e51b815260206004820152601e60248201527f556e694c69623a20494e53554646494349454e545f4c49515549444954590000604482015290519081900360640190fd5b6000611b416103e8611b35868863ffffffff6123eb16565b9063ffffffff6123eb16565b90506000611b5b6103e5611b35868963ffffffff61249d16565b9050611b786001828481611b6b57fe5b049063ffffffff61244e16565b9695505050505050565b604080517727bbb730b136329739ba37b930b3b2973637b1b0ba34b7b760411b8152905190819003601801902090565b606080836001600160a01b031663371babdc846040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015611bf957600080fd5b505afa158015611c0d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040908152811015611c3657600080fd5b8101908080516040519392919084600160201b821115611c5557600080fd5b908301906020820185811115611c6a57600080fd5b82518660208202830111600160201b82111715611c8657600080fd5b82525081516020918201928201910280838360005b83811015611cb3578181015183820152602001611c9b565b5050505090500160405260200180516040519392919084600160201b821115611cdb57600080fd5b908301906020820185811115611cf057600080fd5b82518660208202830111600160201b82111715611d0c57600080fd5b82525081516020918201928201910280838360005b83811015611d39578181015183820152602001611d21565b505050509050016040525050509150915060008090505b825181101561222e5773412a5d5ec35ff185d6bff32a367a985e1fb7c2966001600160a01b031663e4ec552b848381518110611d8857fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611dd657600080fd5b505afa158015611dea573d6000803e3d6000fd5b505050506040513d6020811015611e0057600080fd5b505115611e3c57611e37838281518110611e1657fe5b6020026020010151838381518110611e2a57fe5b6020026020010151611bb2565b6121e2565b6000611e62735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f8584815181106106e757fe5b9050600080611ea0735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc288878151811061101957fe5b915091506000611ec4868681518110611eb557fe5b60200260200101518484611a7c565b6040805163a9059cbb60e01b81526001600160a01b038716600482015260248101839052905191925073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc29163a9059cbb916044808201926020929091908290030181600087803b158015611f2b57600080fd5b505af1158015611f3f573d6000803e3d6000fd5b505050506040513d6020811015611f5557600080fd5b50508651611f7f9073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2908990889081106107e557fe5b6120b257836001600160a01b031663022c0d9f878781518110611f9e57fe5b602002602001015160003060006040519080825280601f01601f191660200182016040528015611fd5576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561204657818101518382015260200161202e565b50505050905090810190601f1680156120735780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561209557600080fd5b505af11580156120a9573d6000803e3d6000fd5b505050506121dd565b836001600160a01b031663022c0d9f60008888815181106120cf57fe5b60200260200101513060006040519080825280601f01601f191660200182016040528015612104576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561217557818101518382015260200161215d565b50505050905090810190601f1680156121a25780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156121c457600080fd5b505af11580156121d8573d6000803e3d6000fd5b505050505b505050505b612226858383815181106121f257fe5b602002602001015185848151811061220657fe5b60200260200101516001600160a01b03166124ed9092919063ffffffff16565b600101611d50565b506000849050806001600160a01b03166334e7a19f856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561227a57600080fd5b505af1158015610b2b573d6000803e3d6000fd5b806001600160a01b03166122a0611b82565b546040516001600160a01b03909116907fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c90600090a3806122df611b82565b80546001600160a01b0319166001600160a01b039290921691909117905550565b600080826001600160a01b0316846001600160a01b0316141561236a576040805162461bcd60e51b815260206004820152601b60248201527f556e694c69623a204944454e544943414c5f4144445245535345530000000000604482015290519081900360640190fd5b826001600160a01b0316846001600160a01b03161061238a57828461238d565b83835b90925090506001600160a01b0382166123e4576040805162461bcd60e51b8152602060048201526014602482015273556e694c69623a205a45524f5f4144445245535360601b604482015290519081900360640190fd5b9250929050565b60008115806124065750508082028282828161240357fe5b04145b610d42576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820182811015610d42576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fd5b80820382811115610d42576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b60408051636eb1769f60e11b81523060048201526001600160a01b038481166024830152915160009286169163dd62ed3e916044808301926020929190829003018186803b15801561253e57600080fd5b505afa158015612552573d6000803e3d6000fd5b505050506040513d602081101561256857600080fd5b505190508181141561257a5750610b32565b801561260e57836001600160a01b031663095ea7b38460006040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156125e157600080fd5b505af11580156125f5573d6000803e3d6000fd5b505050506040513d602081101561260b57600080fd5b50505b836001600160a01b031663095ea7b384846040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561266e57600080fd5b505af1158015612682573d6000803e3d6000fd5b505050506040513d602081101561269857600080fd5b50505050505056fe556e694c69623a20494e53554646494349454e545f4f55545055545f414d4f554e54556e694c69623a20494e53554646494349454e545f494e5055545f414d4f554e544f776e61626c652e6f6e6c794f776e65723a206d73672e73656e646572206e6f74206f776e6572a26469706673582212205c2f498802ddb8648fccbd501744fa8547cfd85c500cfd23e4f6d3afc53ae78864736f6c63430006040033
Deployed Bytecode
0x6080604052600436106100c25760003560e01c80637b1039991161007f578063c4ae316811610059578063c4ae31681461023d578063e560ce9c14610252578063f090784314610285578063f2fde38b1461029a576100c2565b80637b103999146101fe5780639528432b14610213578063ad5c464814610228576100c2565b80630a8eafe2146100c75780632040f65414610108578063335d15e31461015357806335f469941461018c5780636edfcd23146101a1578063731dae7e146101d2575b600080fd5b3480156100d357600080fd5b50610106600480360360608110156100ea57600080fd5b506001600160a01b0381351690602081013590604001356102cd565b005b34801561011457600080fd5b506101416004803603604081101561012b57600080fd5b506001600160a01b038135169060200135610b37565b60408051918252519081900360200190f35b34801561015f57600080fd5b506101416004803603604081101561017657600080fd5b506001600160a01b038135169060200135610d48565b34801561019857600080fd5b50610106611057565b3480156101ad57600080fd5b506101b66110bf565b604080516001600160a01b039092168252519081900360200190f35b610106600480360360408110156101e857600080fd5b506001600160a01b0381351690602001356110d7565b34801561020a57600080fd5b506101b66114c0565b34801561021f57600080fd5b506101066114d8565b34801561023457600080fd5b506101b6611556565b34801561024957600080fd5b5061010661156e565b34801561025e57600080fd5b506101066004803603602081101561027557600080fd5b50356001600160a01b03166115d1565b34801561029157600080fd5b5061014161171d565b3480156102a657600080fd5b50610106600480360360208110156102bd57600080fd5b50356001600160a01b031661174d565b60005460ff1615610325576040805162461bcd60e51b815260206004820152601b60248201527f5b556e697377617056325265636970655d206973205061757365640000000000604482015290519081900360640190fd5b733bfda5285416eb06ebc8bc0abf7d105813af06d060005a9050600061034b8686610d48565b9050808411156103a2576040805162461bcd60e51b815260206004820152601960248201527f4f75747075742045544820616d6f756e7420746f6f206c6f7700000000000000604482015290519081900360640190fd5b6000869050606080886001600160a01b031663371babdc896040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b1580156103ee57600080fd5b505afa158015610402573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604090815281101561042b57600080fd5b8101908080516040519392919084600160201b82111561044a57600080fd5b90830190602082018581111561045f57600080fd5b82518660208202830111600160201b8211171561047b57600080fd5b82525081516020918201928201910280838360005b838110156104a8578181015183820152602001610490565b5050505090500160405260200180516040519392919084600160201b8211156104d057600080fd5b9083019060208201858111156104e557600080fd5b82518660208202830111600160201b8211171561050157600080fd5b82525081516020918201928201910280838360005b8381101561052e578181015183820152602001610516565b5050505090500160405250505091509150826001600160a01b03166323b872dd33308b6040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b031681526020018281526020019350505050602060405180830381600087803b1580156105b957600080fd5b505af11580156105cd573d6000803e3d6000fd5b505050506040513d60208110156105e357600080fd5b50506040805163be1d24ad60e01b8152600481018a905290516001600160a01b0385169163be1d24ad91602480830192600092919082900301818387803b15801561062d57600080fd5b505af1158015610641573d6000803e3d6000fd5b506000925050505b82518110156109d75760008061069b735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f86858151811061067957fe5b602002602001015173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26117a5565b9150915060006106bf8585815181106106b057fe5b60200260200101518484611873565b90506000610709735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f8887815181106106e757fe5b602002602001015173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2611979565b905086858151811061071757fe5b60200260200101516001600160a01b031663a9059cbb8288888151811061073a57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561079157600080fd5b505af11580156107a5573d6000803e3d6000fd5b505050506040513d60208110156107bb57600080fd5b505086516107f29073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2908990889081106107e557fe5b6020026020010151611a39565b6108e057604080516000808252602082019283905263022c0d9f60e01b835260248201818152604483018690523060648401819052608060848501908152845160a486018190526001600160a01b0388169663022c0d9f968a9590939092909160c48501918083838b5b8381101561087457818101518382015260200161085c565b50505050905090810190601f1680156108a15780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156108c357600080fd5b505af11580156108d7573d6000803e3d6000fd5b505050506109c7565b604080516000808252602082019283905263022c0d9f60e01b835260248201858152604483018290523060648401819052608060848501908152845160a486018190526001600160a01b0388169663022c0d9f968a969590939092909160c48501918083838a5b8381101561095f578181015183820152602001610947565b50505050905090810190601f16801561098c5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156109ae57600080fd5b505af11580156109c2573d6000803e3d6000fd5b505050505b5050600190920191506106499050565b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b0316632e1a7d4d856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610a3257600080fd5b505af1158015610a46573d6000803e3d6000fd5b50506040513392504780156108fc029250906000818181858888f19350505050158015610a77573d6000803e3d6000fd5b506000935050601036029150505a830301615208810191506d4946c0e9f43f4dee607b0ef1fa1c90819063079d229f90869061a3db9061895201046040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610b0157600080fd5b505af1158015610b15573d6000803e3d6000fd5b505050506040513d6020811015610b2b57600080fd5b5050505050505b505050565b6000606080846001600160a01b031663371babdc856040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015610b8057600080fd5b505afa158015610b94573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040908152811015610bbd57600080fd5b8101908080516040519392919084600160201b821115610bdc57600080fd5b908301906020820185811115610bf157600080fd5b82518660208202830111600160201b82111715610c0d57600080fd5b82525081516020918201928201910280838360005b83811015610c3a578181015183820152602001610c22565b5050505090500160405260200180516040519392919084600160201b821115610c6257600080fd5b908301906020820185811115610c7757600080fd5b82518660208202830111600160201b82111715610c9357600080fd5b82525081516020918201928201910280838360005b83811015610cc0578181015183820152602001610ca8565b5050505090500160405250505091509150600080905060008090505b8351811015610d3c57600080610d0c735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f87858151811061067957fe5b91509150610d2e858481518110610d1f57fe5b60200260200101518383611873565b909301925050600101610cdc565b50925050505b92915050565b6000606080846001600160a01b031663371babdc856040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015610d9157600080fd5b505afa158015610da5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040908152811015610dce57600080fd5b8101908080516040519392919084600160201b821115610ded57600080fd5b908301906020820185811115610e0257600080fd5b82518660208202830111600160201b82111715610e1e57600080fd5b82525081516020918201928201910280838360005b83811015610e4b578181015183820152602001610e33565b5050505090500160405260200180516040519392919084600160201b821115610e7357600080fd5b908301906020820185811115610e8857600080fd5b82518660208202830111600160201b82111715610ea457600080fd5b82525081516020918201928201910280838360005b83811015610ed1578181015183820152602001610eb9565b5050505090500160405250505091509150600080905060008090505b8351811015610d3c5773412a5d5ec35ff185d6bff32a367a985e1fb7c2966001600160a01b031663e4ec552b858381518110610f2557fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610f7357600080fd5b505afa158015610f87573d6000803e3d6000fd5b505050506040513d6020811015610f9d57600080fd5b505115610fdd57610fd4848281518110610fb357fe5b6020026020010151848381518110610fc757fe5b6020026020010151610d48565b8201915061104f565b600080611026735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc288868151811061101957fe5b60200260200101516117a5565b9150915061104885848151811061103957fe5b60200260200101518383611a7c565b8401935050505b600101610eed565b61105f611b82565b546001600160a01b031633146110a65760405162461bcd60e51b81526004018080602001828103825260278152602001806126e46027913960400191505060405180910390fd5b60006110b0611b82565b546001600160a01b0316905080ff5b733bfda5285416eb06ebc8bc0abf7d105813af06d081565b60005460ff161561112f576040805162461bcd60e51b815260206004820152601b60248201527f5b556e697377617056325265636970655d206973205061757365640000000000604482015290519081900360640190fd5b733bfda5285416eb06ebc8bc0abf7d105813af06d060005a6040805163e4ec552b60e01b81526001600160a01b0387166004820152905191925073412a5d5ec35ff185d6bff32a367a985e1fb7c2969163e4ec552b91602480820192602092909190829003018186803b1580156111a557600080fd5b505afa1580156111b9573d6000803e3d6000fd5b505050506040513d60208110156111cf57600080fd5b505161120e576040805162461bcd60e51b81526020600482015260096024820152684e6f7420612050696560b81b604482015290519081900360640190fd5b600061121a8585610d48565b905080341015611266576040805162461bcd60e51b8152602060048201526012602482015271416d6f756e742045544820746f6f206c6f7760701b604482015290519081900360640190fd5b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156112b557600080fd5b505af11580156112c9573d6000803e3d6000fd5b50505050506112d88585611bb2565b471561130c5760405133904780156108fc02916000818181858888f1935050505015801561130a573d6000803e3d6000fd5b505b604080516370a0823160e01b8152306004820152905186916001600160a01b0383169163a9059cbb91339184916370a08231916024808301926020929190829003018186803b15801561135e57600080fd5b505afa158015611372573d6000803e3d6000fd5b505050506040513d602081101561138857600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b1580156113d957600080fd5b505af11580156113ed573d6000803e3d6000fd5b505050506040513d602081101561140357600080fd5b5060009250506010360290505a830301615208810191506d4946c0e9f43f4dee607b0ef1fa1c90819063079d229f90869061a3db9061895201046040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561148c57600080fd5b505af11580156114a0573d6000803e3d6000fd5b505050506040513d60208110156114b657600080fd5b5050505050505050565b73412a5d5ec35ff185d6bff32a367a985e1fb7c29681565b6114e0611b82565b546001600160a01b031633146115275760405162461bcd60e51b81526004018080602001828103825260278152602001806126e46027913960400191505060405180910390fd5b60405133904780156108fc02916000818181858888f19350505050158015611553573d6000803e3d6000fd5b50565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b611576611b82565b546001600160a01b031633146115bd5760405162461bcd60e51b81526004018080602001828103825260278152602001806126e46027913960400191505060405180910390fd5b6000805460ff19811660ff90911615179055565b6115d9611b82565b546001600160a01b031633146116205760405162461bcd60e51b81526004018080602001828103825260278152602001806126e46027913960400191505060405180910390fd5b604080516370a0823160e01b8152306004820152905182916001600160a01b0383169163a9059cbb91339184916370a08231916024808301926020929190829003018186803b15801561167257600080fd5b505afa158015611686573d6000803e3d6000fd5b505050506040513d602081101561169c57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b1580156116ed57600080fd5b505af1158015611701573d6000803e3d6000fd5b505050506040513d602081101561171757600080fd5b50505050565b604080517727bbb730b136329739ba37b930b3b2973637b1b0ba34b7b760411b8152905190819003601801902081565b611755611b82565b546001600160a01b0316331461179c5760405162461bcd60e51b81526004018080602001828103825260278152602001806126e46027913960400191505060405180910390fd5b6115538161228e565b60008060006117b48585612300565b5090506000806117c5888888611979565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156117fd57600080fd5b505afa158015611811573d6000803e3d6000fd5b505050506040513d606081101561182757600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b0387811690841614611861578082611864565b81815b90999098509650505050505050565b60008084116118b35760405162461bcd60e51b81526004018080602001828103825260218152602001806126c36021913960400191505060405180910390fd5b6000831180156118c35750600082115b611914576040805162461bcd60e51b815260206004820152601e60248201527f556e694c69623a20494e53554646494349454e545f4c49515549444954590000604482015290519081900360640190fd5b6000611928856103e563ffffffff6123eb16565b9050600061193c828563ffffffff6123eb16565b9050600061196283611956886103e863ffffffff6123eb16565b9063ffffffff61244e16565b905080828161196d57fe5b04979650505050505050565b60008060006119888585612300565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401529a90941b9093166069840152607d8301989098527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6000806000611a488585612300565b91509150836001600160a01b0316826001600160a01b03161415611a7157600092505050610d42565b506001949350505050565b6000808411611abc5760405162461bcd60e51b81526004018080602001828103825260228152602001806126a16022913960400191505060405180910390fd5b600083118015611acc5750600082115b611b1d576040805162461bcd60e51b815260206004820152601e60248201527f556e694c69623a20494e53554646494349454e545f4c49515549444954590000604482015290519081900360640190fd5b6000611b416103e8611b35868863ffffffff6123eb16565b9063ffffffff6123eb16565b90506000611b5b6103e5611b35868963ffffffff61249d16565b9050611b786001828481611b6b57fe5b049063ffffffff61244e16565b9695505050505050565b604080517727bbb730b136329739ba37b930b3b2973637b1b0ba34b7b760411b8152905190819003601801902090565b606080836001600160a01b031663371babdc846040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b158015611bf957600080fd5b505afa158015611c0d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040908152811015611c3657600080fd5b8101908080516040519392919084600160201b821115611c5557600080fd5b908301906020820185811115611c6a57600080fd5b82518660208202830111600160201b82111715611c8657600080fd5b82525081516020918201928201910280838360005b83811015611cb3578181015183820152602001611c9b565b5050505090500160405260200180516040519392919084600160201b821115611cdb57600080fd5b908301906020820185811115611cf057600080fd5b82518660208202830111600160201b82111715611d0c57600080fd5b82525081516020918201928201910280838360005b83811015611d39578181015183820152602001611d21565b505050509050016040525050509150915060008090505b825181101561222e5773412a5d5ec35ff185d6bff32a367a985e1fb7c2966001600160a01b031663e4ec552b848381518110611d8857fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611dd657600080fd5b505afa158015611dea573d6000803e3d6000fd5b505050506040513d6020811015611e0057600080fd5b505115611e3c57611e37838281518110611e1657fe5b6020026020010151838381518110611e2a57fe5b6020026020010151611bb2565b6121e2565b6000611e62735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f8584815181106106e757fe5b9050600080611ea0735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc288878151811061101957fe5b915091506000611ec4868681518110611eb557fe5b60200260200101518484611a7c565b6040805163a9059cbb60e01b81526001600160a01b038716600482015260248101839052905191925073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc29163a9059cbb916044808201926020929091908290030181600087803b158015611f2b57600080fd5b505af1158015611f3f573d6000803e3d6000fd5b505050506040513d6020811015611f5557600080fd5b50508651611f7f9073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2908990889081106107e557fe5b6120b257836001600160a01b031663022c0d9f878781518110611f9e57fe5b602002602001015160003060006040519080825280601f01601f191660200182016040528015611fd5576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561204657818101518382015260200161202e565b50505050905090810190601f1680156120735780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561209557600080fd5b505af11580156120a9573d6000803e3d6000fd5b505050506121dd565b836001600160a01b031663022c0d9f60008888815181106120cf57fe5b60200260200101513060006040519080825280601f01601f191660200182016040528015612104576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561217557818101518382015260200161215d565b50505050905090810190601f1680156121a25780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156121c457600080fd5b505af11580156121d8573d6000803e3d6000fd5b505050505b505050505b612226858383815181106121f257fe5b602002602001015185848151811061220657fe5b60200260200101516001600160a01b03166124ed9092919063ffffffff16565b600101611d50565b506000849050806001600160a01b03166334e7a19f856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561227a57600080fd5b505af1158015610b2b573d6000803e3d6000fd5b806001600160a01b03166122a0611b82565b546040516001600160a01b03909116907fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c90600090a3806122df611b82565b80546001600160a01b0319166001600160a01b039290921691909117905550565b600080826001600160a01b0316846001600160a01b0316141561236a576040805162461bcd60e51b815260206004820152601b60248201527f556e694c69623a204944454e544943414c5f4144445245535345530000000000604482015290519081900360640190fd5b826001600160a01b0316846001600160a01b03161061238a57828461238d565b83835b90925090506001600160a01b0382166123e4576040805162461bcd60e51b8152602060048201526014602482015273556e694c69623a205a45524f5f4144445245535360601b604482015290519081900360640190fd5b9250929050565b60008115806124065750508082028282828161240357fe5b04145b610d42576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820182811015610d42576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fd5b80820382811115610d42576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b60408051636eb1769f60e11b81523060048201526001600160a01b038481166024830152915160009286169163dd62ed3e916044808301926020929190829003018186803b15801561253e57600080fd5b505afa158015612552573d6000803e3d6000fd5b505050506040513d602081101561256857600080fd5b505190508181141561257a5750610b32565b801561260e57836001600160a01b031663095ea7b38460006040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156125e157600080fd5b505af11580156125f5573d6000803e3d6000fd5b505050506040513d602081101561260b57600080fd5b50505b836001600160a01b031663095ea7b384846040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561266e57600080fd5b505af1158015612682573d6000803e3d6000fd5b505050506040513d602081101561269857600080fd5b50505050505056fe556e694c69623a20494e53554646494349454e545f4f55545055545f414d4f554e54556e694c69623a20494e53554646494349454e545f494e5055545f414d4f554e544f776e61626c652e6f6e6c794f776e65723a206d73672e73656e646572206e6f74206f776e6572a26469706673582212205c2f498802ddb8648fccbd501744fa8547cfd85c500cfd23e4f6d3afc53ae78864736f6c63430006040033
Deployed Bytecode Sourcemap
12574:6271:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;16216:1388:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16216:1388:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;16216:1388:0;;;;;;;;;;;;;:::i;:::-;;17612:543;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17612:543:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;17612:543:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;15486:692;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15486:692:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;15486:692:0;;;;;;;;:::i;18433:121::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18433:121:0;;;:::i;12982:87::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12982:87:0;;;:::i;:::-;;;;-1:-1:-1;;;;;12982:87:0;;;;;;;;;;;;;;13500:714;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;13500:714:0;;;;;;;;:::i;12867:108::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12867:108:0;;;:::i;18562:99::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18562:99:0;;;:::i;12670:78::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12670:78:0;;;:::i;13299:79::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;13299:79:0;;;:::i;18669:171::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18669:171:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;18669:171:0;-1:-1:-1;;;;;18669:171:0;;:::i;1497:69::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1497:69:0;;;:::i;1989:104::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1989:104:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1989:104:0;-1:-1:-1;;;;;1989:104:0;;:::i;16216:1388::-;13172:8;;;;13168:112;;;13197:37;;;-1:-1:-1;;;13197:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;13168:112;13027:42:::1;1021:16;1040:9;1021:28;;16344:16:::2;16363:28;16373:4;16379:11;16363:9;:28::i;:::-;16344:47;;16427:8;16410:13;:25;;16402:63;;;::::0;;-1:-1:-1;;;16402:63:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;16476:15;16506:4;16476:35;;16525:23;16550:24:::0;16590:4:::2;-1:-1:-1::0;;;;;16578:37:0::2;;16616:11;16578:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::2;2:2;16578:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::2;77:16;74:1;67:27;5:2;16578:50:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;16578:50:0;80:15:-1::0;;::::2;-1:-1:::0;;76:31:::2;65:43:::0;::::2;120:4;113:20:::0;;;7:11;::::2;4:2;;;31:1;28::::0;21:12:::2;4:2;16578:50:0;;;;;;;;;;;;;-1:-1:-1::0;;;14:3:::2;11:20;8:2;;;44:1;41::::0;34:12:::2;8:2;62:21:::0;;::::2;::::0;123:4:::2;114:14:::0;::::2;138:31:::0;;::::2;135:2;;;182:1;179::::0;172:12:::2;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1:::0;;;247:12:::2;244:29;233:116;230:2;;;362:1;359::::0;352:12:::2;230:2;373:25:::0;;-1:-1;16578:50:0;;421:4:-1::2;412:14:::0;;::::2;::::0;16578:50:0;::::2;::::0;::::2;::::0;412:14:-1;16578:50:0;23:1:-1::2;8:100;33:3;30:1;27:10;8:100;;;90:11:::0;;::::2;84:18:::0;71:11;;::::2;64:39:::0;52:2:::2;45:10;8:100;;;12:14;16578:50:0;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;14:3:::2;11:20;8:2;;;44:1;41::::0;34:12:::2;8:2;62:21:::0;;::::2;::::0;123:4:::2;114:14:::0;::::2;138:31:::0;;::::2;135:2;;;182:1;179::::0;172:12:::2;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1:::0;;;247:12:::2;244:29;233:116;230:2;;;362:1;359::::0;352:12:::2;230:2;373:25:::0;;-1:-1;16578:50:0;;421:4:-1::2;412:14:::0;;::::2;::::0;16578:50:0;::::2;::::0;::::2;::::0;412:14:-1;16578:50:0;23:1:-1::2;8:100;33:3;30:1;27:10;8:100;;;90:11:::0;;::::2;84:18:::0;71:11;;::::2;64:39:::0;52:2:::2;45:10;8:100;;;12:14;16578:50:0;;;;;;;;::::0;::::2;;16524:104;;;;16639:3;-1:-1:-1::0;;;;;16639:16:0::2;;16656:10;16676:4;16683:11;16639:56;;;;;;;;;;;;;-1:-1:-1::0;;;;;16639:56:0::2;-1:-1:-1::0;;;;;16639:56:0::2;;;;;;-1:-1:-1::0;;;;;16639:56:0::2;-1:-1:-1::0;;;;;16639:56:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::2;2:2;16639:56:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::2;77:16;74:1;67:27;5:2;16639:56:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::2;4:2;-1:-1:::0;;16706:25:0::2;::::0;;-1:-1:-1;;;16706:25:0;;::::2;::::0;::::2;::::0;;;;;-1:-1:-1;;;;;16706:12:0;::::2;::::0;::::2;::::0;:25;;;;;-1:-1:-1;;16706:25:0;;;;;;;-1:-1:-1;16706:12:0;:25;::::2;;2:2:-1::0;::::2;;;27:1;24::::0;17:12:::2;2:2;16706:25:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::2;77:16;74:1;67:27;5:2;-1:-1:::0;16748:9:0::2;::::0;-1:-1:-1;;;16744:764:0::2;16767:6;:13;16763:1;:17;16744:764;;;16803:16;16821::::0;16841:69:::2;12817:42;16885:6;16892:1;16885:9;;;;;;;;;;;;;;12705:42;16841:18;:69::i;:::-;16802:108;;;;16925:21;16949:51;16969:7;16977:1;16969:10;;;;;;;;;;;;;;16981:8;16991;16949:19;:51::i;:::-;16925:75;;17015:23;17060:65;12817:42;17100:6;17107:1;17100:9;;;;;;;;;;;;;;12705:42;17060:14;:65::i;:::-;17015:111;;17201:6;17208:1;17201:9;;;;;;;;;;;;;;-1:-1:-1::0;;;;;17194:26:0::2;;17229:4;17236:7;17244:1;17236:10;;;;;;;;;;;;;;17194:53;;;;;;;;;;;;;-1:-1:-1::0;;;;;17194:53:0::2;-1:-1:-1::0;;;;;17194:53:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::2;2:2;17194:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::2;77:16;74:1;67:27;5:2;17194:53:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::2;4:2;-1:-1:::0;;17292:9:0;;17267:35:::2;::::0;12705:42:::2;::::0;17292:6;;17299:1;;17292:9;::::2;;;;;;;;;;;17267;:35::i;:::-;17264:233;;17371:12;::::0;;17338:1:::2;17371:12:::0;;;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;17328:56:0;;;;;;;;;;;;;;17364:4:::2;17328:56:::0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17328:9:0;::::2;::::0;::::2;::::0;17341:13;;17371:12;;17328:56;;;;;;;;;;17371:12;17338:1;8:100:-1::2;33:3;30:1;27:10;8:100;;;90:11:::0;;::::2;84:18:::0;71:11;;::::2;64:39:::0;52:2:::2;45:10;8:100;;;12:14;17328:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::2;2:2;17328:56:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::2;77:16;74:1;67:27;5:2;17328:56:0;;;;17264:233;;;17468:12;::::0;;17450:1:::2;17468:12:::0;;;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;17425:56:0;;;;;;;;;;;;;;17461:4:::2;17425:56:::0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17425:9:0;::::2;::::0;::::2;::::0;17435:13;;17450:1;17468:12;;17425:56;;;;;;;;;;17468:12;17450:1;8:100:-1::2;33:3;30:1;27:10;8:100;;;90:11:::0;;::::2;84:18:::0;71:11;;::::2;64:39:::0;52:2:::2;45:10;8:100;;;12:14;17425:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::2;2:2;17425:56:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::2;77:16;74:1;67:27;5:2;17425:56:0;;;;17264:233;-1:-1:-1::0;;16782:3:0::2;::::0;;::::2;::::0;-1:-1:-1;16744:764:0::2;::::0;-1:-1:-1;16744:764:0::2;;;12705:42;-1:-1:-1::0;;;;;17520:13:0::2;;17534:8;17520:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::2;2:2;17520:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::2;77:16;74:1;67:27;5:2;-1:-1:::0;;17554:42:0::2;::::0;:10:::2;::::0;-1:-1:-1;17574:21:0::2;17554:42:::0;::::2;;;::::0;-1:-1:-1;17574:21:0;17554:42:::2;::::0;;;17574:21;17554:10;:42;::::2;;;;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::2;77:16;74:1;67:27;5:2;-1:-1:::0;1072:16:0::1;::::0;-1:-1:-1;;1122:2:0::1;1127:8;1122:20;::::0;-1:-1:-1;;1110:9:0::1;1091:28:::0;;:51;:5:::1;:51:::0;;;-1:-1:-1;1189:42:0::1;::::0;;;1243:16:::1;::::0;1260:7;;1290:5:::1;::::0;1270:16;;1269:26:::1;1243:53;;;;;;;;;;;;;-1:-1:-1::0;;;;;1243:53:0::1;-1:-1:-1::0;;;;;1243:53:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;1243:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;1243:53:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;;;;;;13168:112:0;16216:1388;;;:::o;17612:543::-;17691:7;17712:23;17737:24;17777:4;-1:-1:-1;;;;;17765:37:0;;17803:14;17765:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17765:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17765:53:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;17765:53:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;;;7:11;;4:2;;;31:1;28;21:12;4:2;17765:53:0;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;17765:53:0;;421:4:-1;412:14;;;;17765:53:0;;;;;412:14:-1;17765:53:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;17765:53:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;17765:53:0;;421:4:-1;412:14;;;;17765:53:0;;;;;412:14:-1;17765:53:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;17765:53:0;;;;;;;;;;;17711:107;;;;17831:16;17850:1;17831:20;;17868:9;17880:1;17868:13;;17864:256;17887:6;:13;17883:1;:17;17864:256;;;17923:16;17941;17961:69;12817:42;18005:6;18012:1;18005:9;;;;;;;17961:69;17922:108;;;;18057:51;18077:7;18085:1;18077:10;;;;;;;;;;;;;;18089:8;18099;18057:19;:51::i;:::-;18045:63;;;;-1:-1:-1;;17902:3:0;;17864:256;;;-1:-1:-1;18139:8:0;-1:-1:-1;;;17612:543:0;;;;;:::o;15486:692::-;15560:7;15581:23;15606:24;15646:4;-1:-1:-1;;;;;15634:37:0;;15672:11;15634:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15634:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15634:50:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;15634:50:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;;;7:11;;4:2;;;31:1;28;21:12;4:2;15634:50:0;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;15634:50:0;;421:4:-1;412:14;;;;15634:50:0;;;;;412:14:-1;15634:50:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;15634:50:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;15634:50:0;;421:4:-1;412:14;;;;15634:50:0;;;;;412:14:-1;15634:50:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;15634:50:0;;;;;;;;;;;15580:104;;;;15697:16;15716:1;15697:20;;15734:9;15746:1;15734:13;;15730:413;15753:6;:13;15749:1;:17;15730:413;;;12932:42;-1:-1:-1;;;;;15791:19:0;;15811:6;15818:1;15811:9;;;;;;;;;;;;;;15791:30;;;;;;;;;;;;;-1:-1:-1;;;;;15791:30:0;-1:-1:-1;;;;;15791:30:0;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15791:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15791:30:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;15791:30:0;15788:344;;;15854:32;15864:6;15871:1;15864:9;;;;;;;;;;;;;;15875:7;15883:1;15875:10;;;;;;;;;;;;;;15854:9;:32::i;:::-;15842:44;;;;15788:344;;;15928:16;15946;15966:69;12817:42;12705;16025:6;16032:1;16025:9;;;;;;;;;;;;;;15966:18;:69::i;:::-;15927:108;;;;16066:50;16085:7;16093:1;16085:10;;;;;;;;;;;;;;16097:8;16107;16066:18;:50::i;:::-;16054:62;;;;15788:344;;;15768:3;;15730:413;;18433:121;1785:5;:3;:5::i;:::-;:11;-1:-1:-1;;;;;1785:11:0;1771:10;:25;1763:77;;;;-1:-1:-1;;;1763:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18476:19:::1;18506:5;:3;:5::i;:::-;:11:::0;-1:-1:-1;;;;;18506:11:0::1;::::0;-1:-1:-1;18506:11:0;18529:17:::1;12982:87:::0;13027:42;12982:87;:::o;13500:714::-;13172:8;;;;13168:112;;;13197:37;;;-1:-1:-1;;;13197:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;13168:112;13027:42:::1;1021:16;1040:9;13621:25:::2;::::0;;-1:-1:-1;;;13621:25:0;;-1:-1:-1;;;;;13621:25:0;::::2;;::::0;::::2;::::0;;;1021:28;;-1:-1:-1;12932:42:0::2;::::0;13621:19:::2;::::0;:25;;;;;::::2;::::0;;;;;;;;;12932:42;13621:25;::::2;;2:2:-1::0;::::2;;;27:1;24::::0;17:12:::2;2:2;13621:25:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::2;77:16;74:1;67:27;5:2;13621:25:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::2;4:2;-1:-1:::0;13621:25:0;13613:47:::2;;;::::0;;-1:-1:-1;;;13613:47:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;13613:47:0;;;;;;;;;;;;;::::2;;13671:16;13690:28;13700:4;13706:11;13690:9;:28::i;:::-;13671:47;;13750:8;13737:9;:21;;13729:52;;;::::0;;-1:-1:-1;;;13729:52:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;13729:52:0;;;;;;;;;;;;;::::2;;12705:42;-1:-1:-1::0;;;;;13794:12:0::2;;13814:8;13794:31;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::2;2:2;13794:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::2;77:16;74:1;67:27;5:2;13794:31:0;;;;;13838:25;13845:4;13851:11;13838:6;:25::i;:::-;13909:21;:26:::0;13906:141:::2;;13993:42;::::0;:10:::2;::::0;14013:21:::2;13993:42:::0;::::2;;;::::0;::::2;::::0;;;14013:21;13993:10;:42;::::2;;;;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::2;77:16;74:1;67:27;5:2;13993:42:0;13906:141;14177:28;::::0;;-1:-1:-1;;;14177:28:0;;14199:4:::2;14177:28;::::0;::::2;::::0;;;14126:4;;-1:-1:-1;;;;;14144:20:0;::::2;::::0;::::2;::::0;14165:10:::2;::::0;14144:20;;14177:13:::2;::::0;:28;;;;;::::2;::::0;;;;;;;;14144:20;14177:28;::::2;;2:2:-1::0;::::2;;;27:1;24::::0;17:12:::2;2:2;14177:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::2;77:16;74:1;67:27;5:2;14177:28:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::2;4:2;-1:-1:::0;14177:28:0;14144:62:::2;::::0;;-1:-1:-1;;;;;;14144:62:0::2;::::0;;;;;;-1:-1:-1;;;;;14144:62:0;;::::2;;::::0;::::2;::::0;;;;;;;;;;;;;;14177:28:::2;::::0;14144:62;;;;;;;-1:-1:-1;14144:62:0;;::::2;;2:2:-1::0;::::2;;;27:1;24::::0;17:12:::2;2:2;14144:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::2;77:16;74:1;67:27;5:2;14144:62:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::2;4:2;-1:-1:::0;1072:16:0::1;::::0;-1:-1:-1;;1122:2:0::1;1127:8;1122:20;::::0;-1:-1:-1;1110:9:0::1;1091:28:::0;;:51;:5:::1;:51:::0;;;-1:-1:-1;1189:42:0::1;::::0;;;1243:16:::1;::::0;1260:7;;1290:5:::1;::::0;1270:16;;1269:26:::1;1243:53;;;;;;;;;;;;;-1:-1:-1::0;;;;;1243:53:0::1;-1:-1:-1::0;;;;;1243:53:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;1243:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;1243:53:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;;;;;;13500:714:0;;:::o;12867:108::-;12932:42;12867:108;:::o;18562:99::-;1785:5;:3;:5::i;:::-;:11;-1:-1:-1;;;;;1785:11:0;1771:10;:25;1763:77;;;;-1:-1:-1;;;1763:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18611:42:::1;::::0;:10:::1;::::0;18631:21:::1;18611:42:::0;::::1;;;::::0;::::1;::::0;;;18631:21;18611:10;:42;::::1;;;;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;18611:42:0;18562:99::o:0;12670:78::-;12705:42;12670:78;:::o;13299:79::-;1785:5;:3;:5::i;:::-;:11;-1:-1:-1;;;;;1785:11:0;1771:10;:25;1763:77;;;;-1:-1:-1;;;1763:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13362:8:::1;::::0;;-1:-1:-1;;13350:20:0;::::1;13362:8;::::0;;::::1;13361:9;13350:20;::::0;;13299:79::o;18669:171::-;1785:5;:3;:5::i;:::-;:11;-1:-1:-1;;;;;1785:11:0;1771:10;:25;1763:77;;;;-1:-1:-1;;;1763:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18801:30:::1;::::0;;-1:-1:-1;;;18801:30:0;;18825:4:::1;18801:30;::::0;::::1;::::0;;;18756:6;;-1:-1:-1;;;;;18774:14:0;::::1;::::0;::::1;::::0;18789:10:::1;::::0;18774:14;;18801:15:::1;::::0;:30;;;;;::::1;::::0;;;;;;;;18774:14;18801:30;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;18801:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;18801:30:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;18801:30:0;18774:58:::1;::::0;;-1:-1:-1;;;;;;18774:58:0::1;::::0;;;;;;-1:-1:-1;;;;;18774:58:0;;::::1;;::::0;::::1;::::0;;;;;;;;;;;;;;18801:30:::1;::::0;18774:58;;;;;;;-1:-1:-1;18774:58:0;;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;18774:58:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;18774:58:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;;;;18669:171:0:o;1497:69::-;1529:37;;;-1:-1:-1;;;1529:37:0;;;;;;;;;;;;1497:69;:::o;1989:104::-;1785:5;:3;:5::i;:::-;:11;-1:-1:-1;;;;;1785:11:0;1771:10;:25;1763:77;;;;-1:-1:-1;;;1763:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2065:20:::1;2075:9;2065;:20::i;9105:391::-:0;9198:13;9213;9240:14;9259:26;9270:6;9278;9259:10;:26::i;:::-;9239:46;;;9297:13;9312;9345:32;9353:7;9362:6;9370;9345:7;:32::i;:::-;-1:-1:-1;;;;;9330:60:0;;:62;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9330:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9330:62:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;9330:62:0;;;;;;;9296:96;;;;;-1:-1:-1;9296:96:0;;-1:-1:-1;;;;;;9426:16:0;;;;;;;:62;;9469:8;9479;9426:62;;;9446:8;9456;9426:62;9403:85;;;;-1:-1:-1;9105:391:0;-1:-1:-1;;;;;;;9105:391:0:o;10032:497::-;10125:14;10171:1;10160:8;:12;10152:58;;;;-1:-1:-1;;;10152:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10241:1;10229:9;:13;:31;;;;;10259:1;10246:10;:14;10229:31;10221:74;;;;;-1:-1:-1;;;10221:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10306:20;10329:17;:8;10342:3;10329:17;:12;:17;:::i;:::-;10306:40;-1:-1:-1;10357:14:0;10374:31;10306:40;10394:10;10374:31;:19;:31;:::i;:::-;10357:48;-1:-1:-1;10416:16:0;10435:40;10459:15;10435:19;:9;10449:4;10435:19;:13;:19;:::i;:::-;:23;:40;:23;:40;:::i;:::-;10416:59;;10510:11;10498:9;:23;;;;;;;10032:497;-1:-1:-1;;;;;;;10032:497:0:o;8569:478::-;8658:12;8684:14;8700;8718:26;8729:6;8737;8718:10;:26::i;:::-;8882:32;;;-1:-1:-1;;8882:32:0;;;;;;;;;;;;;;;;;;;;;;;;;22::-1;26:21;;;22:32;6:49;;8882:32:0;;;;;8872:43;;;;;;-1:-1:-1;;;;;;8785:251:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;8785:251:0;;;;;;;8775:262;;;;;;;;;8569:478;-1:-1:-1;;;;;8569:478:0:o;18163:258::-;18236:7;18257:14;18273;18291:33;18309:6;18317;18291:17;:33::i;:::-;18256:68;;;;18350:6;-1:-1:-1;;;;;18340:16:0;:6;-1:-1:-1;;;;;18340:16:0;;18337:56;;;18380:1;18373:8;;;;;;18337:56;-1:-1:-1;18412:1:0;;18163:258;-1:-1:-1;;;;18163:258:0:o;10650:452::-;10743:13;10789:1;10777:9;:13;10769:60;;;;-1:-1:-1;;;10769:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10860:1;10848:9;:13;:31;;;;;10878:1;10865:10;:14;10848:31;10840:74;;;;;-1:-1:-1;;;10840:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10925:14;10942:34;10971:4;10942:24;:9;10956;10942:24;:13;:24;:::i;:::-;:28;:34;:28;:34;:::i;:::-;10925:51;-1:-1:-1;10987:16:0;11006:34;11036:3;11006:25;:10;11021:9;11006:25;:14;:25;:::i;:34::-;10987:53;;11062:32;11092:1;11075:11;11063:9;:23;;;;;;;11062:32;:29;:32;:::i;:::-;11051:43;10650:452;-1:-1:-1;;;;;;10650:452:0:o;2488:148::-;1529:37;;;-1:-1:-1;;;1529:37:0;;;;;;;;;;;;;2590:39::o;14222:1256::-;14294:23;14319:24;14359:4;-1:-1:-1;;;;;14347:37:0;;14385:11;14347:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14347:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14347:50:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;14347:50:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;;;7:11;;4:2;;;31:1;28;21:12;4:2;14347:50:0;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;14347:50:0;;421:4:-1;412:14;;;;14347:50:0;;;;;412:14:-1;14347:50:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14347:50:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;14347:50:0;;421:4:-1;412:14;;;;14347:50:0;;;;;412:14:-1;14347:50:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14347:50:0;;;;;;;;;;;14293:104;;;;14414:9;14426:1;14414:13;;14410:977;14433:6;:13;14429:1;:17;14410:977;;;12932:42;-1:-1:-1;;;;;14471:19:0;;14491:6;14498:1;14491:9;;;;;;;;;;;;;;14471:30;;;;;;;;;;;;;-1:-1:-1;;;;;14471:30:0;-1:-1:-1;;;;;14471:30:0;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14471:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14471:30:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14471:30:0;14468:844;;;14522:29;14529:6;14536:1;14529:9;;;;;;;;;;;;;;14540:7;14548:1;14540:10;;;;;;;;;;;;;;14522:6;:29::i;:::-;14468:844;;;14592:23;14637:65;12817:42;14677:6;14684:1;14677:9;;;;;;;14637:65;14592:111;;14725:16;14743;14763:69;12817:42;12705;14822:6;14829:1;14822:9;;;;;;;14763:69;14724:108;;;;14851:16;14870:50;14889:7;14897:1;14889:10;;;;;;;;;;;;;;14901:8;14911;14870:18;:50::i;:::-;14995:38;;;-1:-1:-1;;;14995:38:0;;-1:-1:-1;;;;;14995:38:0;;;;;;;;;;;;;;14851:69;;-1:-1:-1;12705:42:0;;14995:13;;:38;;;;;;;;;;;;;;;-1:-1:-1;12705:42:0;14995:38;;;2:2:-1;;;;27:1;24;17:12;2:2;14995:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14995:38:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;15082:9:0;;15057:35;;12705:42;;15082:6;;15089:1;;15082:9;;;;;15057:35;15054:243;;15122:4;-1:-1:-1;;;;;15122:9:0;;15132:7;15140:1;15132:10;;;;;;;;;;;;;;15144:1;15155:4;15172:1;15162:12;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;108:14;15162:12:0;87:42:-1;143:17;;-1:-1;15162:12:0;;15122:53;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15122:53:0;-1:-1:-1;;;;;15122:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;15122:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15122:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15122:53:0;;;;15054:243;;;15224:4;-1:-1:-1;;;;;15224:9:0;;15234:1;15237:7;15245:1;15237:10;;;;;;;;;;;;;;15257:4;15274:1;15264:12;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;108:14;15264:12:0;87:42:-1;143:17;;-1:-1;15264:12:0;;15224:53;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15224:53:0;-1:-1:-1;;;;;15224:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;15224:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15224:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15224:53:0;;;;15054:243;14468:844;;;;;15328:47;15358:4;15364:7;15372:1;15364:10;;;;;;;;;;;;;;15335:6;15342:1;15335:9;;;;;;;;;;;;;;-1:-1:-1;;;;;15328:29:0;;;:47;;;;;:::i;:::-;14448:3;;14410:977;;;;15399:15;15429:4;15399:35;;15445:3;-1:-1:-1;;;;;15445:12:0;;15458:11;15445:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15445:25:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;2219:141:0;2308:9;-1:-1:-1;;;;;2282:36:0;2295:5;:3;:5::i;:::-;:11;2282:36;;-1:-1:-1;;;;;2295:11:0;;;;2282:36;;2295:11;;2282:36;2343:9;2329:5;:3;:5::i;:::-;:23;;-1:-1:-1;;;;;;2329:23:0;-1:-1:-1;;;;;2329:23:0;;;;;;;;;;-1:-1:-1;2219:141:0:o;8148:329::-;8223:14;8239;8284:6;-1:-1:-1;;;;;8274:16:0;:6;-1:-1:-1;;;;;8274:16:0;;;8266:56;;;;;-1:-1:-1;;;8266:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8361:6;-1:-1:-1;;;;;8352:15:0;:6;-1:-1:-1;;;;;8352:15:0;;:53;;8390:6;8398;8352:53;;;8371:6;8379;8352:53;8333:72;;-1:-1:-1;8333:72:0;-1:-1:-1;;;;;;8424:20:0;;8416:53;;;;;-1:-1:-1;;;8416:53:0;;;;;;;;;;;;-1:-1:-1;;;8416:53:0;;;;;;;;;;;;;;;8148:329;;;;;:::o;5216:142::-;5268:6;5295;;;:30;;-1:-1:-1;;5310:5:0;;;5324:1;5319;5310:5;5319:1;5305:15;;;;;:20;5295:30;5287:63;;;;;-1:-1:-1;;;5287:63:0;;;;;;;;;;;;-1:-1:-1;;;5287:63:0;;;;;;;;;;;;;;4943:128;5027:5;;;5022:16;;;;5014:49;;;;;-1:-1:-1;;;5014:49:0;;;;;;;;;;;;-1:-1:-1;;;5014:49:0;;;;;;;;;;;;;;5079:129;5163:5;;;5158:16;;;;5150:50;;;;;-1:-1:-1;;;5150:50:0;;;;;;;;;;;;-1:-1:-1;;;5150:50:0;;;;;;;;;;;;;;4210:541;4328:41;;;-1:-1:-1;;;4328:41:0;;4353:4;4328:41;;;;-1:-1:-1;;;;;4328:41:0;;;;;;;;;4301:24;;4328:16;;;;;:41;;;;;;;;;;;;;;:16;:41;;;2:2:-1;;;;27:1;24;17:12;2:2;4328:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4328:41:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;4328:41:0;;-1:-1:-1;4450:27:0;;;4447:65;;;4494:7;;;4447:65;4586:21;;4583:80;;4624:6;-1:-1:-1;;;;;4624:14:0;;4639:8;4649:1;4624:27;;;;;;;;;;;;;-1:-1:-1;;;;;4624:27:0;-1:-1:-1;;;;;4624:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4624:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4624:27:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;4583:80:0;4710:6;-1:-1:-1;;;;;4710:14:0;;4725:8;4735:7;4710:33;;;;;;;;;;;;;-1:-1:-1;;;;;4710:33:0;-1:-1:-1;;;;;4710:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4710:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4710:33:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;4210:541:0;;;:::o
Swarm Source
ipfs://5c2f498802ddb8648fccbd501744fa8547cfd85c500cfd23e4f6d3afc53ae788
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
BSC | 100.00% | $3 | 1 | $3 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.