Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
InstaVaultCompBridge
Compiler Version
v0.5.12+commit.7709ece9
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-12-17 */ pragma solidity ^0.5.12; interface GemLike { function approve(address, uint) external; function transfer(address, uint) external; function transferFrom(address, address, uint) external; function deposit() external payable; function withdraw(uint) external; } interface ManagerLike { function cdpCan(address, uint, address) external view returns (uint); function ilks(uint) external view returns (bytes32); function owns(uint) external view returns (address); function urns(uint) external view returns (address); function vat() external view returns (address); function open(bytes32, address) external returns (uint); function give(uint, address) external; function cdpAllow(uint, address, uint) external; function urnAllow(address, uint) external; function frob(uint, int, int) external; function flux(uint, address, uint) external; function move(uint, address, uint) external; function exit( address, uint, address, uint ) external; function quit(uint, address) external; function enter(address, uint) external; function shift(uint, uint) external; } interface VatLike { function can(address, address) external view returns (uint); function ilks(bytes32) external view returns (uint, uint, uint, uint, uint); function dai(address) external view returns (uint); function urns(bytes32, address) external view returns (uint, uint); function frob( bytes32, address, address, address, int, int ) external; function hope(address) external; function move(address, address, uint) external; function gem(bytes32, address) external view returns (uint); } interface GemJoinLike { function dec() external returns (uint); function gem() external returns (GemLike); function join(address, uint) external payable; function exit(address, uint) external; } interface DaiJoinLike { function vat() external returns (VatLike); function dai() external returns (GemLike); function join(address, uint) external payable; function exit(address, uint) external; } interface HopeLike { function hope(address) external; function nope(address) external; } interface JugLike { function drip(bytes32) external returns (uint); } interface TokenInterface { function allowance(address, address) external view returns (uint); function balanceOf(address) external view returns (uint); function approve(address, uint) external; function transfer(address, uint) external returns (bool); function transferFrom(address, address, uint) external returns (bool); function deposit() external payable; function withdraw(uint) external; } interface PepInterface { function peek() external returns (bytes32, bool); } interface MakerOracleInterface { function read() external view returns (bytes32); } interface UniswapExchange { function getEthToTokenOutputPrice(uint256 tokensBought) external view returns (uint256 ethSold); function getTokenToEthOutputPrice(uint256 ethBought) external view returns (uint256 tokensSold); function tokenToTokenSwapOutput( uint256 tokensBought, uint256 maxTokensSold, uint256 maxEthSold, uint256 deadline, address tokenAddr ) external returns (uint256 tokensSold); } interface PoolInterface { function accessToken(address[] calldata ctknAddr, uint[] calldata tknAmt, bool isCompound) external; function paybackToken(address[] calldata ctknAddr, bool isCompound) external payable; } interface CTokenInterface { function redeem(uint redeemTokens) external returns (uint); function redeemUnderlying(uint redeemAmount) external returns (uint); function borrow(uint borrowAmount) external returns (uint); function liquidateBorrow(address borrower, uint repayAmount, address cTokenCollateral) external returns (uint); function liquidateBorrow(address borrower, address cTokenCollateral) external payable; function exchangeRateCurrent() external returns (uint); function getCash() external view returns (uint); function totalBorrowsCurrent() external returns (uint); function borrowRatePerBlock() external view returns (uint); function supplyRatePerBlock() external view returns (uint); function totalReserves() external view returns (uint); function reserveFactorMantissa() external view returns (uint); function borrowBalanceCurrent(address account) external returns (uint); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256 balance); function allowance(address, address) external view returns (uint); function approve(address, uint) external; function transfer(address, uint) external returns (bool); function transferFrom(address, address, uint) external returns (bool); } interface CERC20Interface { function mint(uint mintAmount) external returns (uint); // For ERC20 function repayBorrow(uint repayAmount) external returns (uint); // For ERC20 function repayBorrowBehalf(address borrower, uint repayAmount) external returns (uint); // For ERC20 function borrowBalanceCurrent(address account) external returns (uint); } interface CETHInterface { function mint() external payable; // For ETH function repayBorrow() external payable; // For ETH function repayBorrowBehalf(address borrower) external payable; // For ETH function borrowBalanceCurrent(address account) external returns (uint); } interface ComptrollerInterface { function enterMarkets(address[] calldata cTokens) external returns (uint[] memory); function exitMarket(address cTokenAddress) external returns (uint); function getAssetsIn(address account) external view returns (address[] memory); function getAccountLiquidity(address account) external view returns (uint, uint, uint); } interface CompOracleInterface { function getUnderlyingPrice(address) external view returns (uint); } interface InstaMcdAddress { function manager() external view returns (address); function dai() external view returns (address); function daiJoin() external view returns (address); function vat() external view returns (address); function jug() external view returns (address); function ethAJoin() external view returns (address); } interface OtcInterface { function getPayAmount(address, address, uint) external view returns (uint); function buyAllAmount( address, uint, address, uint ) external; } contract DSMath { function sub(uint x, uint y) internal pure returns (uint z) { z = x - y <= x ? x - y : 0; } function add(uint x, uint y) internal pure returns (uint z) { require((z = x + y) >= x, "math-not-safe"); } function mul(uint x, uint y) internal pure returns (uint z) { require(y == 0 || (z = x * y) / y == x, "math-not-safe"); } uint constant WAD = 10 ** 18; uint constant RAY = 10 ** 27; function rmul(uint x, uint y) internal pure returns (uint z) { z = add(mul(x, y), RAY / 2) / RAY; } function rdiv(uint x, uint y) internal pure returns (uint z) { z = add(mul(x, RAY), y / 2) / y; } function wmul(uint x, uint y) internal pure returns (uint z) { z = add(mul(x, y), WAD / 2) / WAD; } function wdiv(uint x, uint y) internal pure returns (uint z) { z = add(mul(x, WAD), y / 2) / y; } function toInt(uint x) internal pure returns (int y) { y = int(x); require(y >= 0, "int-overflow"); } function toRad(uint wad) internal pure returns (uint rad) { rad = mul(wad, 10 ** 27); } } contract Helper is DSMath { /** * @dev get ethereum address for trade */ function getAddressETH() public pure returns (address eth) { eth = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; } /** * @dev get MakerDAO MCD Address contract */ function getMcdAddresses() public pure returns (address mcd) { mcd = 0xF23196DF1C440345DE07feFbe556a5eF0dcD29F0; } /** * @dev get InstaDApp Liquidity contract */ function getPoolAddr() public pure returns (address poolAddr) { poolAddr = 0x1564D040EC290C743F67F5cB11f3C1958B39872A; } /** * @dev get Compound Comptroller Address */ function getComptrollerAddress() public pure returns (address troller) { troller = 0x3d9819210A31b4961b30EF54bE2aeD79B9c9Cd3B; } /** * @dev get CETH Address */ function getCETHAddress() public pure returns (address cEth) { cEth = 0x4Ddc2D193948926D02f9B1fE9e1daa0718270ED5; } /** * @dev get DAI Address */ function getDAIAddress() public pure returns (address dai) { dai = 0x6B175474E89094C44Da98b954EedeAC495271d0F; } /** * @dev get CDAI Address */ function getCDAIAddress() public pure returns (address cDai) { cDai = 0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643; } /** * @dev setting allowance to compound contracts for the "user proxy" if required */ function setApproval(address erc20, uint srcAmt, address to) internal { TokenInterface erc20Contract = TokenInterface(erc20); uint tokenAllowance = erc20Contract.allowance(address(this), to); if (srcAmt > tokenAllowance) { erc20Contract.approve(to, uint(-1)); } } } contract InstaPoolResolver is Helper { function accessDai(uint daiAmt, bool isCompound) internal { address[] memory borrowAddr = new address[](1); uint[] memory borrowAmt = new uint[](1); borrowAddr[0] = getCDAIAddress(); borrowAmt[0] = daiAmt; PoolInterface(getPoolAddr()).accessToken(borrowAddr, borrowAmt, isCompound); } function returnDai(uint daiAmt, bool isCompound) internal { address[] memory borrowAddr = new address[](1); borrowAddr[0] = getCDAIAddress(); require(TokenInterface(getDAIAddress()).transfer(getPoolAddr(), daiAmt), "Not-enough-DAI"); PoolInterface(getPoolAddr()).paybackToken(borrowAddr, isCompound); } } contract MakerHelper is InstaPoolResolver { event LogOpen(uint cdpNum, address owner); event LogLock(uint cdpNum, uint amtETH, address owner); event LogFree(uint cdpNum, uint amtETH, address owner); event LogDraw(uint cdpNum, uint daiAmt, address owner); event LogWipe(uint cdpNum, uint daiAmt, address owner); /** * @dev Allowance to Maker's contract */ function setMakerAllowance(TokenInterface _token, address _spender) internal { if (_token.allowance(address(this), _spender) != uint(-1)) { _token.approve(_spender, uint(-1)); } } /** * @dev Check if entered amt is valid or not (Used in makerToCompound) */ function checkVault(uint id, uint ethAmt, uint daiAmt) internal view returns (uint ethCol, uint daiDebt) { address manager = InstaMcdAddress(getMcdAddresses()).manager(); address urn = ManagerLike(manager).urns(id); bytes32 ilk = ManagerLike(manager).ilks(id); uint art = 0; (ethCol, art) = VatLike(ManagerLike(manager).vat()).urns(ilk, urn); (,uint rate,,,) = VatLike(ManagerLike(manager).vat()).ilks(ilk); daiDebt = rmul(art,rate); daiDebt = daiAmt < daiDebt ? daiAmt : daiDebt; // if DAI amount > max debt. Set max debt ethCol = ethAmt < ethCol ? ethAmt : ethCol; // if ETH amount > max Col. Set max col } function joinDaiJoin(address urn, uint wad) internal { address daiJoin = InstaMcdAddress(getMcdAddresses()).daiJoin(); // Approves adapter to take the DAI amount DaiJoinLike(daiJoin).dai().approve(daiJoin, wad); // Joins DAI into the vat DaiJoinLike(daiJoin).join(urn, wad); } function _getDrawDart( address vat, address jug, address urn, bytes32 ilk, uint wad ) internal returns (int dart) { // Updates stability fee rate uint rate = JugLike(jug).drip(ilk); // Gets DAI balance of the urn in the vat uint dai = VatLike(vat).dai(urn); // If there was already enough DAI in the vat balance, just exits it without adding more debt if (dai < mul(wad, RAY)) { // Calculates the needed dart so together with the existing dai in the vat is enough to exit wad amount of DAI tokens dart = toInt(sub(mul(wad, RAY), dai) / rate); // This is neeeded due lack of precision. It might need to sum an extra dart wei (for the given DAI wad amount) dart = mul(uint(dart), rate) < mul(wad, RAY) ? dart + 1 : dart; } } function _getWipeDart( address vat, uint dai, address urn, bytes32 ilk ) internal view returns (int dart) { // Gets actual rate from the vat (, uint rate,,,) = VatLike(vat).ilks(ilk); // Gets actual art value of the urn (, uint art) = VatLike(vat).urns(ilk, urn); // Uses the whole dai balance in the vat to reduce the debt dart = toInt(dai / rate); // Checks the calculated dart is not higher than urn.art (total debt), otherwise uses its value dart = uint(dart) <= art ? - dart : - toInt(art); } function joinEthJoin(address urn, uint _wad) internal { address ethJoin = InstaMcdAddress(getMcdAddresses()).ethAJoin(); // Wraps ETH in WETH GemJoinLike(ethJoin).gem().deposit.value(_wad)(); // Approves adapter to take the WETH amount GemJoinLike(ethJoin).gem().approve(address(ethJoin), _wad); // Joins WETH collateral into the vat GemJoinLike(ethJoin).join(urn, _wad); } } contract CompoundHelper is MakerHelper { event LogMint(address erc20, address cErc20, uint tokenAmt, address owner); event LogRedeem(address erc20, address cErc20, uint tokenAmt, address owner); event LogBorrow(address erc20, address cErc20, uint tokenAmt, address owner); event LogRepay(address erc20, address cErc20, uint tokenAmt, address owner); /** * @dev Compound Enter Market which allows borrowing */ function enterMarket(address cErc20) internal { ComptrollerInterface troller = ComptrollerInterface(getComptrollerAddress()); address[] memory markets = troller.getAssetsIn(address(this)); bool isEntered = false; for (uint i = 0; i < markets.length; i++) { if (markets[i] == cErc20) { isEntered = true; } } if (!isEntered) { address[] memory toEnter = new address[](1); toEnter[0] = cErc20; troller.enterMarkets(toEnter); } } } contract MakerResolver is CompoundHelper { function flux(uint cdp, address dst, uint wad) internal { address manager = InstaMcdAddress(getMcdAddresses()).manager(); ManagerLike(manager).flux(cdp, dst, wad); } function move(uint cdp, address dst, uint rad) public { address manager = InstaMcdAddress(getMcdAddresses()).manager(); ManagerLike(manager).move(cdp, dst, rad); } function frob(uint cdp, int dink, int dart) internal { address manager = InstaMcdAddress(getMcdAddresses()).manager(); ManagerLike(manager).frob(cdp, dink, dart); } function open() public returns (uint cdp) { address manager = InstaMcdAddress(getMcdAddresses()).manager(); bytes32 ilk = 0x4554482d41000000000000000000000000000000000000000000000000000000; cdp = ManagerLike(manager).open(ilk, address(this)); emit LogOpen(cdp, address(this)); } function give(uint cdp, address usr) public { address manager = InstaMcdAddress(getMcdAddresses()).manager(); ManagerLike(manager).give(cdp, usr); } function lock(uint cdp, uint _wad) internal { address manager = InstaMcdAddress(getMcdAddresses()).manager(); // Receives ETH amount, converts it to WETH and joins it into the vat joinEthJoin(address(this), _wad); // Locks WETH amount into the CDP VatLike(ManagerLike(manager).vat()).frob( ManagerLike(manager).ilks(cdp), ManagerLike(manager).urns(cdp), address(this), address(this), toInt(_wad), 0 ); emit LogLock(cdp, _wad, address(this)); } function free(uint cdp, uint wad) internal { address ethJoin = InstaMcdAddress(getMcdAddresses()).ethAJoin(); // Unlocks WETH amount from the CDP frob( cdp, -toInt(wad), 0 ); // Moves the amount from the CDP urn to proxy's address flux( cdp, address(this), wad ); // Exits WETH amount to proxy address as a token GemJoinLike(ethJoin).exit(address(this), wad); // Converts WETH to ETH GemJoinLike(ethJoin).gem().withdraw(wad); emit LogFree(cdp, wad, address(this)); } function draw(uint cdp, uint wad) internal { address manager = InstaMcdAddress(getMcdAddresses()).manager(); address jug = InstaMcdAddress(getMcdAddresses()).jug(); address daiJoin = InstaMcdAddress(getMcdAddresses()).daiJoin(); address urn = ManagerLike(manager).urns(cdp); address vat = ManagerLike(manager).vat(); bytes32 ilk = ManagerLike(manager).ilks(cdp); // Generates debt in the CDP frob( cdp, 0, _getDrawDart( vat, jug, urn, ilk, wad ) ); // Moves the DAI amount (balance in the vat in rad) to proxy's address move( cdp, address(this), toRad(wad) ); // Allows adapter to access to proxy's DAI balance in the vat if (VatLike(vat).can(address(this), address(daiJoin)) == 0) { VatLike(vat).hope(daiJoin); } // Exits DAI to the user's wallet as a token DaiJoinLike(daiJoin).exit(address(this), wad); emit LogDraw(cdp, wad, address(this)); } function wipe(uint cdp, uint wad) internal { address manager = InstaMcdAddress(getMcdAddresses()).manager(); address vat = ManagerLike(manager).vat(); address urn = ManagerLike(manager).urns(cdp); bytes32 ilk = ManagerLike(manager).ilks(cdp); address own = ManagerLike(manager).owns(cdp); if (own == address(this) || ManagerLike(manager).cdpCan(own, cdp, address(this)) == 1) { // Joins DAI amount into the vat joinDaiJoin(urn, wad); // Paybacks debt to the CDP frob( cdp, 0, _getWipeDart( vat, VatLike(vat).dai(urn), urn, ilk ) ); } else { // Joins DAI amount into the vat joinDaiJoin(address(this), wad); // Paybacks debt to the CDP VatLike(vat).frob( ilk, urn, address(this), address(this), 0, _getWipeDart( vat, wad * RAY, urn, ilk ) ); } emit LogWipe(cdp, wad, address(this)); } /** * @dev Run wipe & Free function together */ function wipeAndFreeMaker( uint cdpNum, uint jam, uint _wad, bool isCompound ) internal { accessDai(_wad, isCompound); wipe(cdpNum, _wad); free(cdpNum, jam); } /** * @dev Run Lock & Draw function together */ function lockAndDrawMaker( uint cdpNum, uint jam, uint _wad, bool isCompound ) internal { lock(cdpNum, jam); draw(cdpNum, _wad); returnDai(_wad, isCompound); } } contract CompoundResolver is MakerResolver { /** * @dev Deposit ETH and mint CETH */ function mintCEth(uint tokenAmt) internal { enterMarket(getCETHAddress()); CETHInterface cToken = CETHInterface(getCETHAddress()); cToken.mint.value(tokenAmt)(); emit LogMint( getAddressETH(), getCETHAddress(), tokenAmt, msg.sender ); } /** * @dev borrow DAI */ function borrowDAIComp(uint daiAmt, bool isCompound) internal { enterMarket(getCDAIAddress()); require(CTokenInterface(getCDAIAddress()).borrow(daiAmt) == 0, "got collateral?"); // Returning Liquidity to Liquidity Contract returnDai(daiAmt, isCompound); emit LogBorrow( getDAIAddress(), getCDAIAddress(), daiAmt, address(this) ); } /** * @dev Pay DAI Debt */ function repayDaiComp(uint tokenAmt, bool isCompound) internal returns (uint wipeAmt) { CERC20Interface cToken = CERC20Interface(getCDAIAddress()); uint daiBorrowed = cToken.borrowBalanceCurrent(address(this)); wipeAmt = tokenAmt < daiBorrowed ? tokenAmt : daiBorrowed; // Getting Liquidity from Liquidity Contract accessDai(wipeAmt, isCompound); setApproval(getDAIAddress(), wipeAmt, getCDAIAddress()); require(cToken.repayBorrow(wipeAmt) == 0, "transfer approved?"); emit LogRepay( getDAIAddress(), getCDAIAddress(), wipeAmt, address(this) ); } /** * @dev Redeem CETH */ function redeemCETH(uint tokenAmt) internal returns(uint ethAmtReddemed) { CTokenInterface cToken = CTokenInterface(getCETHAddress()); uint cethBal = cToken.balanceOf(address(this)); uint exchangeRate = cToken.exchangeRateCurrent(); uint cethInEth = wmul(cethBal, exchangeRate); setApproval(getCETHAddress(), 2**128, getCETHAddress()); ethAmtReddemed = tokenAmt; if (tokenAmt > cethInEth) { require(cToken.redeem(cethBal) == 0, "something went wrong"); ethAmtReddemed = cethInEth; } else { require(cToken.redeemUnderlying(tokenAmt) == 0, "something went wrong"); } emit LogRedeem( getAddressETH(), getCETHAddress(), ethAmtReddemed, address(this) ); } /** * @dev run mint & borrow together */ function mintAndBorrowComp(uint ethAmt, uint daiAmt, bool isCompound) internal { mintCEth(ethAmt); borrowDAIComp(daiAmt, isCompound); } /** * @dev run payback & redeem together */ function paybackAndRedeemComp(uint ethCol, uint daiDebt, bool isCompound) internal returns (uint ethAmt, uint daiAmt) { daiAmt = repayDaiComp(daiDebt, isCompound); ethAmt = redeemCETH(ethCol); } /** * @dev Check if entered amt is valid or not (Used in makerToCompound) */ function checkCompound(uint ethAmt, uint daiAmt) internal returns (uint ethCol, uint daiDebt) { CTokenInterface cEthContract = CTokenInterface(getCETHAddress()); uint cEthBal = cEthContract.balanceOf(address(this)); uint ethExchangeRate = cEthContract.exchangeRateCurrent(); ethCol = wmul(cEthBal, ethExchangeRate); ethCol = wdiv(ethCol, ethExchangeRate) <= cEthBal ? ethCol : ethCol - 1; ethCol = ethCol <= ethAmt ? ethCol : ethAmt; // Set Max if amount is greater than the Col user have daiDebt = CERC20Interface(getCDAIAddress()).borrowBalanceCurrent(address(this)); daiDebt = daiDebt <= daiAmt ? daiDebt : daiAmt; // Set Max if amount is greater than the Debt user have } } contract BridgeResolver is CompoundResolver { event LogVaultToCompound(uint ethAmt, uint daiAmt); event LogCompoundToVault(uint ethAmt, uint daiAmt); /** * @dev convert Maker CDP into Compound Collateral */ function makerToCompound( uint cdpId, uint ethQty, uint daiQty, bool isCompound // access Liquidity from Compound ) external { // subtracting 0.00000001 ETH from initialPoolBal to solve Compound 8 decimal CETH error. uint initialPoolBal = sub(getPoolAddr().balance, 10000000000); (uint ethAmt, uint daiAmt) = checkVault(cdpId, ethQty, daiQty); wipeAndFreeMaker( cdpId, ethAmt, daiAmt, isCompound ); // Getting Liquidity inside Wipe function enterMarket(getCETHAddress()); enterMarket(getCDAIAddress()); mintAndBorrowComp(ethAmt, daiAmt, isCompound); // Returning Liquidity inside Borrow function uint finalPoolBal = getPoolAddr().balance; assert(finalPoolBal >= initialPoolBal); emit LogVaultToCompound(ethAmt, daiAmt); } /** * @dev convert Compound Collateral into Maker CDP * @param cdpId = 0, if user don't have any CDP */ function compoundToMaker( uint cdpId, uint ethQty, uint daiQty, bool isCompound ) external { // subtracting 0.00000001 ETH from initialPoolBal to solve Compound 8 decimal CETH error. uint initialPoolBal = sub(getPoolAddr().balance, 10000000000); uint cdpNum = cdpId > 0 ? cdpId : open(); (uint ethCol, uint daiDebt) = checkCompound(ethQty, daiQty); (uint ethAmt, uint daiAmt) = paybackAndRedeemComp(ethCol, daiDebt, isCompound); // Getting Liquidity inside Wipe function ethAmt = ethAmt < address(this).balance ? ethAmt : address(this).balance; lockAndDrawMaker( cdpNum, ethAmt, daiAmt, isCompound ); // Returning Liquidity inside Borrow function uint finalPoolBal = getPoolAddr().balance; assert(finalPoolBal >= initialPoolBal); emit LogCompoundToVault(ethAmt, daiAmt); } } contract InstaVaultCompBridge is BridgeResolver { function() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"erc20","type":"address"},{"indexed":false,"internalType":"address","name":"cErc20","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmt","type":"uint256"},{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"LogBorrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"ethAmt","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"daiAmt","type":"uint256"}],"name":"LogCompoundToVault","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"cdpNum","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"daiAmt","type":"uint256"},{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"LogDraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"cdpNum","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amtETH","type":"uint256"},{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"LogFree","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"cdpNum","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amtETH","type":"uint256"},{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"LogLock","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"erc20","type":"address"},{"indexed":false,"internalType":"address","name":"cErc20","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmt","type":"uint256"},{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"LogMint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"cdpNum","type":"uint256"},{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"LogOpen","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"erc20","type":"address"},{"indexed":false,"internalType":"address","name":"cErc20","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmt","type":"uint256"},{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"LogRedeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"erc20","type":"address"},{"indexed":false,"internalType":"address","name":"cErc20","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmt","type":"uint256"},{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"LogRepay","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"ethAmt","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"daiAmt","type":"uint256"}],"name":"LogVaultToCompound","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"cdpNum","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"daiAmt","type":"uint256"},{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"LogWipe","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":false,"inputs":[{"internalType":"uint256","name":"cdpId","type":"uint256"},{"internalType":"uint256","name":"ethQty","type":"uint256"},{"internalType":"uint256","name":"daiQty","type":"uint256"},{"internalType":"bool","name":"isCompound","type":"bool"}],"name":"compoundToMaker","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getAddressETH","outputs":[{"internalType":"address","name":"eth","type":"address"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"getCDAIAddress","outputs":[{"internalType":"address","name":"cDai","type":"address"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"getCETHAddress","outputs":[{"internalType":"address","name":"cEth","type":"address"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"getComptrollerAddress","outputs":[{"internalType":"address","name":"troller","type":"address"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"getDAIAddress","outputs":[{"internalType":"address","name":"dai","type":"address"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"getMcdAddresses","outputs":[{"internalType":"address","name":"mcd","type":"address"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"getPoolAddr","outputs":[{"internalType":"address","name":"poolAddr","type":"address"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"address","name":"usr","type":"address"}],"name":"give","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"cdpId","type":"uint256"},{"internalType":"uint256","name":"ethQty","type":"uint256"},{"internalType":"uint256","name":"daiQty","type":"uint256"},{"internalType":"bool","name":"isCompound","type":"bool"}],"name":"makerToCompound","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rad","type":"uint256"}],"name":"move","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"open","outputs":[{"internalType":"uint256","name":"cdp","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50614979806100206000396000f3fe6080604052600436106100a75760003560e01c8063de25924211610064578063de259242146102bb578063e602951514610312578063f9bda82614610369578063f9f30db6146103c0578063fcafcc6814610425578063fcfff16f14610480576100a7565b806323e92bd1146100a95780634ee9159a14610104578063ab1be6861461015b578063b0b268f8146101b2578063c9ce5d861461020d578063cb46dc3a14610264575b005b3480156100b557600080fd5b50610102600480360360808110156100cc57600080fd5b810190808035906020019092919080359060200190929190803590602001909291908035151590602001909291905050506104ab565b005b34801561011057600080fd5b5061011961059b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561016757600080fd5b506101706105b7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101be57600080fd5b5061020b600480360360808110156101d557600080fd5b810190808035906020019092919080359060200190929190803590602001909291908035151590602001909291905050506105d3565b005b34801561021957600080fd5b50610222610705565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561027057600080fd5b50610279610721565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102c757600080fd5b506102d061073d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561031e57600080fd5b50610327610759565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561037557600080fd5b5061037e610775565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103cc57600080fd5b50610423600480360360608110156103e357600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610791565b005b34801561043157600080fd5b5061047e6004803603604081101561044857600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108ca565b005b34801561048c57600080fd5b506104956109fa565b6040518082815260200191505060405180910390f35b60006104da6104b861073d565b73ffffffffffffffffffffffffffffffffffffffff16316402540be400610be3565b90506000806104ea878787610c02565b915091506104fa8783838761107e565b61050a610505610705565b6110a2565b61051a610515610775565b6110a2565b610525828286611466565b600061052f61073d565b73ffffffffffffffffffffffffffffffffffffffff163190508381101561055257fe5b7f1e8db30f9991399e75a30cd0c82939fabd8d3afa34773233ad399e3cf82f0db38383604051808381526020018281526020019250505060405180910390a15050505050505050565b6000733d9819210a31b4961b30ef54be2aed79b9c9cd3b905090565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee905090565b60006106026105e061073d565b73ffffffffffffffffffffffffffffffffffffffff16316402540be400610be3565b9050600080861161061a576106156109fa565b61061c565b855b905060008061062b878761147e565b9150915060008061063d8484896116eb565b915091503073ffffffffffffffffffffffffffffffffffffffff1631821061067c573073ffffffffffffffffffffffffffffffffffffffff163161067e565b815b915061068c8583838a61170d565b600061069661073d565b73ffffffffffffffffffffffffffffffffffffffff16319050868110156106b957fe5b7fa451a40d99e4f7e3a1c69d6aa7218fd9649ae687a6c3c0dc8e6d0381df0440ac8383604051808381526020018281526020019250505060405180910390a15050505050505050505050565b6000734ddc2d193948926d02f9b1fe9e1daa0718270ed5905090565b600073f23196df1c440345de07fefbe556a5ef0dcd29f0905090565b6000731564d040ec290c743f67f5cb11f3c1958b39872a905090565b6000736b175474e89094c44da98b954eedeac495271d0f905090565b6000735d3a536e4d6dbd6114cc1ead35777bab948e3643905090565b600061079b610721565b73ffffffffffffffffffffffffffffffffffffffff1663481c6a756040518163ffffffff1660e01b815260040160206040518083038186803b1580156107e057600080fd5b505afa1580156107f4573d6000803e3d6000fd5b505050506040513d602081101561080a57600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff1663f9f30db68585856040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156108ac57600080fd5b505af11580156108c0573d6000803e3d6000fd5b5050505050505050565b60006108d4610721565b73ffffffffffffffffffffffffffffffffffffffff1663481c6a756040518163ffffffff1660e01b815260040160206040518083038186803b15801561091957600080fd5b505afa15801561092d573d6000803e3d6000fd5b505050506040513d602081101561094357600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff1663fcafcc6884846040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b1580156109dd57600080fd5b505af11580156109f1573d6000803e3d6000fd5b50505050505050565b600080610a05610721565b73ffffffffffffffffffffffffffffffffffffffff1663481c6a756040518163ffffffff1660e01b815260040160206040518083038186803b158015610a4a57600080fd5b505afa158015610a5e573d6000803e3d6000fd5b505050506040513d6020811015610a7457600080fd5b8101908080519060200190929190505050905060007f4554482d4100000000000000000000000000000000000000000000000000000060001b90508173ffffffffffffffffffffffffffffffffffffffff16636090dec582306040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015610b3657600080fd5b505af1158015610b4a573d6000803e3d6000fd5b505050506040513d6020811015610b6057600080fd5b810190808051906020019092919050505092507fdb6aca7fb1121b6919a3d633f359770bcadd20c9e848a2ad7dc6bcc94b3d5fdb8330604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1505090565b6000828284031115610bf6576000610bfa565b8183035b905092915050565b6000806000610c0f610721565b73ffffffffffffffffffffffffffffffffffffffff1663481c6a756040518163ffffffff1660e01b815260040160206040518083038186803b158015610c5457600080fd5b505afa158015610c68573d6000803e3d6000fd5b505050506040513d6020811015610c7e57600080fd5b8101908080519060200190929190505050905060008173ffffffffffffffffffffffffffffffffffffffff16632726b073886040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610ce457600080fd5b505afa158015610cf8573d6000803e3d6000fd5b505050506040513d6020811015610d0e57600080fd5b8101908080519060200190929190505050905060008273ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd896040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610d7457600080fd5b505afa158015610d88573d6000803e3d6000fd5b505050506040513d6020811015610d9e57600080fd5b8101908080519060200190929190505050905060008090508373ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015610dfc57600080fd5b505afa158015610e10573d6000803e3d6000fd5b505050506040513d6020811015610e2657600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16632424be5c83856040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050604080518083038186803b158015610eba57600080fd5b505afa158015610ece573d6000803e3d6000fd5b505050506040513d6040811015610ee457600080fd5b810190808051906020019092919080519060200190929190505050809250819750505060008473ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015610f4f57600080fd5b505afa158015610f63573d6000803e3d6000fd5b505050506040513d6020811015610f7957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663d9638d36846040518263ffffffff1660e01b81526004018082815260200191505060a06040518083038186803b158015610fda57600080fd5b505afa158015610fee573d6000803e3d6000fd5b505050506040513d60a081101561100457600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505050505091505061104d8282611731565b955085881061105c578561105e565b875b955086891061106d578661106f565b885b96505050505050935093915050565b6110888282611779565b611092848361195a565b61109c8484611fe2565b50505050565b60006110ac61059b565b905060608173ffffffffffffffffffffffffffffffffffffffff1663abfceffc306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060006040518083038186803b15801561112d57600080fd5b505afa158015611141573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561116b57600080fd5b810190808051604051939291908464010000000082111561118b57600080fd5b838201915060208201858111156111a157600080fd5b82518660208202830111640100000000821117156111be57600080fd5b8083526020830192505050908051906020019060200280838360005b838110156111f55780820151818401526020810190506111da565b505050509050016040525050509050600080905060008090505b8251811015611271578473ffffffffffffffffffffffffffffffffffffffff1683828151811061123b57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141561126457600191505b808060010191505061120f565b508061146057606060016040519080825280602002602001820160405280156112a95781602001602082028038833980820191505090505b50905084816000815181106112ba57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508373ffffffffffffffffffffffffffffffffffffffff1663c2998238826040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019060200280838360005b83811015611363578082015181840152602081019050611348565b5050505090500192505050600060405180830381600087803b15801561138857600080fd5b505af115801561139c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156113c657600080fd5b81019080805160405193929190846401000000008211156113e657600080fd5b838201915060208201858111156113fc57600080fd5b825186602082028301116401000000008211171561141957600080fd5b8083526020830192505050908051906020019060200280838360005b83811015611450578082015181840152602081019050611435565b5050505090500160405250505050505b50505050565b61146f83612294565b61147982826123f6565b505050565b600080600061148b610705565b905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561150c57600080fd5b505afa158015611520573d6000803e3d6000fd5b505050506040513d602081101561153657600080fd5b8101908080519060200190929190505050905060008273ffffffffffffffffffffffffffffffffffffffff1663bd6d894d6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561159357600080fd5b505af11580156115a7573d6000803e3d6000fd5b505050506040513d60208110156115bd57600080fd5b810190808051906020019092919050505090506115da82826125ff565b9450816115e7868361263f565b11156115f657600185036115f8565b845b945086851115611608578661160a565b845b9450611614610775565b73ffffffffffffffffffffffffffffffffffffffff166317bfdfbc306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561169257600080fd5b505af11580156116a6573d6000803e3d6000fd5b505050506040513d60208110156116bc57600080fd5b81019080805190602001909291905050509350858411156116dd57856116df565b835b93505050509250929050565b6000806116f88484612677565b905061170385612962565b9150935093915050565b6117178484612dee565b61172184836131b2565b61172b82826137ce565b50505050565b60006b033b2e3c9fd0803ce800000061176961174d8585613a58565b60026b033b2e3c9fd0803ce80000008161176357fe5b04613aed565b8161177057fe5b04905092915050565b606060016040519080825280602002602001820160405280156117ab5781602001602082028038833980820191505090505b509050606060016040519080825280602002602001820160405280156117e05781602001602082028038833980820191505090505b5090506117eb610775565b826000815181106117f857fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050838160008151811061184057fe5b60200260200101818152505061185461073d565b73ffffffffffffffffffffffffffffffffffffffff16638d92577d8383866040518463ffffffff1660e01b815260040180806020018060200184151515158152602001838103835286818151815260200191508051906020019060200280838360005b838110156118d25780820151818401526020810190506118b7565b50505050905001838103825285818151815260200191508051906020019060200280838360005b838110156119145780820151818401526020810190506118f9565b5050505090500195505050505050600060405180830381600087803b15801561193c57600080fd5b505af1158015611950573d6000803e3d6000fd5b5050505050505050565b6000611964610721565b73ffffffffffffffffffffffffffffffffffffffff1663481c6a756040518163ffffffff1660e01b815260040160206040518083038186803b1580156119a957600080fd5b505afa1580156119bd573d6000803e3d6000fd5b505050506040513d60208110156119d357600080fd5b8101908080519060200190929190505050905060008173ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015611a2e57600080fd5b505afa158015611a42573d6000803e3d6000fd5b505050506040513d6020811015611a5857600080fd5b8101908080519060200190929190505050905060008273ffffffffffffffffffffffffffffffffffffffff16632726b073866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611abe57600080fd5b505afa158015611ad2573d6000803e3d6000fd5b505050506040513d6020811015611ae857600080fd5b8101908080519060200190929190505050905060008373ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd876040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611b4e57600080fd5b505afa158015611b62573d6000803e3d6000fd5b505050506040513d6020811015611b7857600080fd5b8101908080519060200190929190505050905060008473ffffffffffffffffffffffffffffffffffffffff16638161b120886040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611bde57600080fd5b505afa158015611bf2573d6000803e3d6000fd5b505050506040513d6020811015611c0857600080fd5b810190808051906020019092919050505090503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480611d48575060018573ffffffffffffffffffffffffffffffffffffffff16635aebb460838a306040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015611d0b57600080fd5b505afa158015611d1f573d6000803e3d6000fd5b505050506040513d6020811015611d3557600080fd5b8101908080519060200190929190505050145b15611e2a57611d578387613b70565b611e25876000611e20878873ffffffffffffffffffffffffffffffffffffffff16636c25b346896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611dde57600080fd5b505afa158015611df2573d6000803e3d6000fd5b505050506040513d6020811015611e0857600080fd5b81019080805190602001909291905050508888613dc1565b613f8a565b611f66565b611e343087613b70565b8373ffffffffffffffffffffffffffffffffffffffff166376088703838530306000611e708b6b033b2e3c9fd0803ce80000008f028c8c613dc1565b6040518763ffffffff1660e01b8152600401808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019650505050505050600060405180830381600087803b158015611f4d57600080fd5b505af1158015611f61573d6000803e3d6000fd5b505050505b7fa0a1c91e0329ae556992a79c058e542f3937b17e351f625652179970767ea452878730604051808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a150505050505050565b6000611fec610721565b73ffffffffffffffffffffffffffffffffffffffff166395a540e66040518163ffffffff1660e01b815260040160206040518083038186803b15801561203157600080fd5b505afa158015612045573d6000803e3d6000fd5b505050506040513d602081101561205b57600080fd5b810190808051906020019092919050505090506120858361207b84614097565b6000036000613f8a565b612090833084614118565b8073ffffffffffffffffffffffffffffffffffffffff1663ef693bed30846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561211757600080fd5b505af115801561212b573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff16637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561217757600080fd5b505af115801561218b573d6000803e3d6000fd5b505050506040513d60208110156121a157600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561220457600080fd5b505af1158015612218573d6000803e3d6000fd5b505050507f4f22dce702f7b8a0962b1bc4815e7e9184adc445f9d2039dcafd9eb1c2b36a37838330604051808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a1505050565b6122a461229f610705565b6110a2565b60006122ae610705565b90508073ffffffffffffffffffffffffffffffffffffffff16631249c58b836040518263ffffffff1660e01b81526004016000604051808303818588803b1580156122f857600080fd5b505af115801561230c573d6000803e3d6000fd5b50505050507f252c64862cdd4fb87064b61720da12074c8fdddf7233c8d163c925c85072c42c61233a6105b7565b612342610705565b8433604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390a15050565b612406612401610775565b6110a2565b6000612410610775565b73ffffffffffffffffffffffffffffffffffffffff1663c5ebeaec846040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561246257600080fd5b505af1158015612476573d6000803e3d6000fd5b505050506040513d602081101561248c57600080fd5b810190808051906020019092919050505014612510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f676f7420636f6c6c61746572616c3f000000000000000000000000000000000081525060200191505060405180910390fd5b61251a82826137ce565b7f9f31c249eb0814475f16a619e1fdf5e62f46db8cb233ff1b951adddcf7133b95612543610759565b61254b610775565b8430604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390a15050565b6000670de0b6b3a764000061262f6126178585613a58565b6002670de0b6b3a76400008161262957fe5b04613aed565b8161263657fe5b04905092915050565b60008161266761265785670de0b6b3a7640000613a58565b6002858161266157fe5b04613aed565b8161266e57fe5b04905092915050565b600080612682610775565b905060008173ffffffffffffffffffffffffffffffffffffffff166317bfdfbc306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561270557600080fd5b505af1158015612719573d6000803e3d6000fd5b505050506040513d602081101561272f57600080fd5b8101908080519060200190929190505050905080851061274f5780612751565b845b925061275d8385611779565b612776612768610759565b84612771610775565b614251565b60008273ffffffffffffffffffffffffffffffffffffffff16630e752702856040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156127cb57600080fd5b505af11580156127df573d6000803e3d6000fd5b505050506040513d60208110156127f557600080fd5b810190808051906020019092919050505014612879576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f7472616e7366657220617070726f7665643f000000000000000000000000000081525060200191505060405180910390fd5b7ff9c0c8ae7fcb0ae66722c0fd985dd186c5f04475693482e4836363ea60e00de26128a2610759565b6128aa610775565b8530604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390a1505092915050565b60008061296d610705565b905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156129ee57600080fd5b505afa158015612a02573d6000803e3d6000fd5b505050506040513d6020811015612a1857600080fd5b8101908080519060200190929190505050905060008273ffffffffffffffffffffffffffffffffffffffff1663bd6d894d6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612a7557600080fd5b505af1158015612a89573d6000803e3d6000fd5b505050506040513d6020811015612a9f57600080fd5b810190808051906020019092919050505090506000612abe83836125ff565b9050612aea612acb610705565b700100000000000000000000000000000000612ae5610705565b614251565b85945080861115612c005760008473ffffffffffffffffffffffffffffffffffffffff1663db006a75856040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015612b4a57600080fd5b505af1158015612b5e573d6000803e3d6000fd5b505050506040513d6020811015612b7457600080fd5b810190808051906020019092919050505014612bf8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f736f6d657468696e672077656e742077726f6e6700000000000000000000000081525060200191505060405180910390fd5b809450612d04565b60008473ffffffffffffffffffffffffffffffffffffffff1663852a12e3886040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015612c5557600080fd5b505af1158015612c69573d6000803e3d6000fd5b505050506040513d6020811015612c7f57600080fd5b810190808051906020019092919050505014612d03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f736f6d657468696e672077656e742077726f6e6700000000000000000000000081525060200191505060405180910390fd5b5b7fd985ae7abab418a80621f7b292cdc98b964715f22de84b4f4c9183795b47d14b612d2d6105b7565b612d35610705565b8730604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390a150505050919050565b6000612df8610721565b73ffffffffffffffffffffffffffffffffffffffff1663481c6a756040518163ffffffff1660e01b815260040160206040518083038186803b158015612e3d57600080fd5b505afa158015612e51573d6000803e3d6000fd5b505050506040513d6020811015612e6757600080fd5b81019080805190602001909291905050509050612e843083614415565b8073ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015612eca57600080fd5b505afa158015612ede573d6000803e3d6000fd5b505050506040513d6020811015612ef457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663760887038273ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612f7157600080fd5b505afa158015612f85573d6000803e3d6000fd5b505050506040513d6020811015612f9b57600080fd5b81019080805190602001909291905050508373ffffffffffffffffffffffffffffffffffffffff16632726b073876040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612ffd57600080fd5b505afa158015613011573d6000803e3d6000fd5b505050506040513d602081101561302757600080fd5b8101908080519060200190929190505050303061304388614097565b60006040518763ffffffff1660e01b8152600401808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019650505050505050600060405180830381600087803b15801561312257600080fd5b505af1158015613136573d6000803e3d6000fd5b505050507fc488e0bbcf79010a656060bc8e2ac383156c161a6320ea3e44a6e804a0273bc3838330604051808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a1505050565b60006131bc610721565b73ffffffffffffffffffffffffffffffffffffffff1663481c6a756040518163ffffffff1660e01b815260040160206040518083038186803b15801561320157600080fd5b505afa158015613215573d6000803e3d6000fd5b505050506040513d602081101561322b57600080fd5b810190808051906020019092919050505090506000613248610721565b73ffffffffffffffffffffffffffffffffffffffff166384718d896040518163ffffffff1660e01b815260040160206040518083038186803b15801561328d57600080fd5b505afa1580156132a1573d6000803e3d6000fd5b505050506040513d60208110156132b757600080fd5b8101908080519060200190929190505050905060006132d4610721565b73ffffffffffffffffffffffffffffffffffffffff1663c11645bc6040518163ffffffff1660e01b815260040160206040518083038186803b15801561331957600080fd5b505afa15801561332d573d6000803e3d6000fd5b505050506040513d602081101561334357600080fd5b8101908080519060200190929190505050905060008373ffffffffffffffffffffffffffffffffffffffff16632726b073876040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156133a957600080fd5b505afa1580156133bd573d6000803e3d6000fd5b505050506040513d60208110156133d357600080fd5b8101908080519060200190929190505050905060008473ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b15801561342e57600080fd5b505afa158015613442573d6000803e3d6000fd5b505050506040513d602081101561345857600080fd5b8101908080519060200190929190505050905060008573ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd896040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156134be57600080fd5b505afa1580156134d2573d6000803e3d6000fd5b505050506040513d60208110156134e857600080fd5b8101908080519060200190929190505050905061351388600061350e858988878e614749565b613f8a565b61352688306135218a614925565b610791565b60008273ffffffffffffffffffffffffffffffffffffffff16634538c4eb30876040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156135d957600080fd5b505afa1580156135ed573d6000803e3d6000fd5b505050506040513d602081101561360357600080fd5b810190808051906020019092919050505014156136b2578173ffffffffffffffffffffffffffffffffffffffff1663a3b22fc4856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561369957600080fd5b505af11580156136ad573d6000803e3d6000fd5b505050505b8373ffffffffffffffffffffffffffffffffffffffff1663ef693bed30896040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561373957600080fd5b505af115801561374d573d6000803e3d6000fd5b505050507f2552409de7c93ad237013bdc31f6351559f2d50c8b43d20b83fc75639a55e431888830604051808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a15050505050505050565b606060016040519080825280602002602001820160405280156138005781602001602082028038833980820191505090505b50905061380b610775565b8160008151811061381857fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061385a610759565b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61387d61073d565b856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156138e757600080fd5b505af11580156138fb573d6000803e3d6000fd5b505050506040513d602081101561391157600080fd5b8101908080519060200190929190505050613994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f742d656e6f7567682d44414900000000000000000000000000000000000081525060200191505060405180910390fd5b61399c61073d565b73ffffffffffffffffffffffffffffffffffffffff16636009a7e382846040518363ffffffff1660e01b8152600401808060200183151515158152602001828103825284818151815260200191508051906020019060200280838360005b83811015613a155780820151818401526020810190506139fa565b505050509050019350505050600060405180830381600087803b158015613a3b57600080fd5b505af1158015613a4f573d6000803e3d6000fd5b50505050505050565b600080821480613a755750828283850292508281613a7257fe5b04145b613ae7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6d6174682d6e6f742d736166650000000000000000000000000000000000000081525060200191505060405180910390fd5b92915050565b6000828284019150811015613b6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6d6174682d6e6f742d736166650000000000000000000000000000000000000081525060200191505060405180910390fd5b92915050565b6000613b7a610721565b73ffffffffffffffffffffffffffffffffffffffff1663c11645bc6040518163ffffffff1660e01b815260040160206040518083038186803b158015613bbf57600080fd5b505afa158015613bd3573d6000803e3d6000fd5b505050506040513d6020811015613be957600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff1663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381600087803b158015613c4457600080fd5b505af1158015613c58573d6000803e3d6000fd5b505050506040513d6020811015613c6e57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663095ea7b382846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015613d0557600080fd5b505af1158015613d19573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff16633b4da69f84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015613da457600080fd5b505af1158015613db8573d6000803e3d6000fd5b50505050505050565b6000808573ffffffffffffffffffffffffffffffffffffffff1663d9638d36846040518263ffffffff1660e01b81526004018082815260200191505060a06040518083038186803b158015613e1557600080fd5b505afa158015613e29573d6000803e3d6000fd5b505050506040513d60a0811015613e3f57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505050505091505060008673ffffffffffffffffffffffffffffffffffffffff16632424be5c85876040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050604080518083038186803b158015613f0457600080fd5b505afa158015613f18573d6000803e3d6000fd5b505050506040513d6040811015613f2e57600080fd5b810190808051906020019092919080519060200190929190505050915050613f5e828781613f5857fe5b04614097565b925080831115613f7957613f7181614097565b600003613f7e565b826000035b92505050949350505050565b6000613f94610721565b73ffffffffffffffffffffffffffffffffffffffff1663481c6a756040518163ffffffff1660e01b815260040160206040518083038186803b158015613fd957600080fd5b505afa158015613fed573d6000803e3d6000fd5b505050506040513d602081101561400357600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff166345e6bdcd8585856040518463ffffffff1660e01b8152600401808481526020018381526020018281526020019350505050600060405180830381600087803b15801561407957600080fd5b505af115801561408d573d6000803e3d6000fd5b5050505050505050565b60008190506000811215614113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f696e742d6f766572666c6f77000000000000000000000000000000000000000081525060200191505060405180910390fd5b919050565b6000614122610721565b73ffffffffffffffffffffffffffffffffffffffff1663481c6a756040518163ffffffff1660e01b815260040160206040518083038186803b15801561416757600080fd5b505afa15801561417b573d6000803e3d6000fd5b505050506040513d602081101561419157600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff16639bb8f8388585856040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561423357600080fd5b505af1158015614247573d6000803e3d6000fd5b5050505050505050565b600083905060008173ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561430957600080fd5b505afa15801561431d573d6000803e3d6000fd5b505050506040513d602081101561433357600080fd5b810190808051906020019092919050505090508084111561440e578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156143f557600080fd5b505af1158015614409573d6000803e3d6000fd5b505050505b5050505050565b600061441f610721565b73ffffffffffffffffffffffffffffffffffffffff166395a540e66040518163ffffffff1660e01b815260040160206040518083038186803b15801561446457600080fd5b505afa158015614478573d6000803e3d6000fd5b505050506040513d602081101561448e57600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff16637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156144e957600080fd5b505af11580156144fd573d6000803e3d6000fd5b505050506040513d602081101561451357600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561456b57600080fd5b505af115801561457f573d6000803e3d6000fd5b50505050508073ffffffffffffffffffffffffffffffffffffffff16637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156145cc57600080fd5b505af11580156145e0573d6000803e3d6000fd5b505050506040513d60208110156145f657600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663095ea7b382846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561468d57600080fd5b505af11580156146a1573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff16633b4da69f84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561472c57600080fd5b505af1158015614740573d6000803e3d6000fd5b50505050505050565b6000808573ffffffffffffffffffffffffffffffffffffffff166344e2a5a8856040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561479f57600080fd5b505af11580156147b3573d6000803e3d6000fd5b505050506040513d60208110156147c957600080fd5b8101908080519060200190929190505050905060008773ffffffffffffffffffffffffffffffffffffffff16636c25b346876040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561485b57600080fd5b505afa15801561486f573d6000803e3d6000fd5b505050506040513d602081101561488557600080fd5b810190808051906020019092919050505090506148ae846b033b2e3c9fd0803ce8000000613a58565b81101561491a576148e5826148d86148d2876b033b2e3c9fd0803ce8000000613a58565b84610be3565b816148df57fe5b04614097565b92506148fd846b033b2e3c9fd0803ce8000000613a58565b6149078484613a58565b106149125782614917565b600183015b92505b505095945050505050565b600061493d826b033b2e3c9fd0803ce8000000613a58565b905091905056fea265627a7a723158201ed6d1fc200e55d133aebf6d7441e204fb481a89479519e82f6c19c8b86f72f164736f6c634300050c0032
Deployed Bytecode
0x6080604052600436106100a75760003560e01c8063de25924211610064578063de259242146102bb578063e602951514610312578063f9bda82614610369578063f9f30db6146103c0578063fcafcc6814610425578063fcfff16f14610480576100a7565b806323e92bd1146100a95780634ee9159a14610104578063ab1be6861461015b578063b0b268f8146101b2578063c9ce5d861461020d578063cb46dc3a14610264575b005b3480156100b557600080fd5b50610102600480360360808110156100cc57600080fd5b810190808035906020019092919080359060200190929190803590602001909291908035151590602001909291905050506104ab565b005b34801561011057600080fd5b5061011961059b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561016757600080fd5b506101706105b7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101be57600080fd5b5061020b600480360360808110156101d557600080fd5b810190808035906020019092919080359060200190929190803590602001909291908035151590602001909291905050506105d3565b005b34801561021957600080fd5b50610222610705565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561027057600080fd5b50610279610721565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102c757600080fd5b506102d061073d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561031e57600080fd5b50610327610759565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561037557600080fd5b5061037e610775565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103cc57600080fd5b50610423600480360360608110156103e357600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610791565b005b34801561043157600080fd5b5061047e6004803603604081101561044857600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108ca565b005b34801561048c57600080fd5b506104956109fa565b6040518082815260200191505060405180910390f35b60006104da6104b861073d565b73ffffffffffffffffffffffffffffffffffffffff16316402540be400610be3565b90506000806104ea878787610c02565b915091506104fa8783838761107e565b61050a610505610705565b6110a2565b61051a610515610775565b6110a2565b610525828286611466565b600061052f61073d565b73ffffffffffffffffffffffffffffffffffffffff163190508381101561055257fe5b7f1e8db30f9991399e75a30cd0c82939fabd8d3afa34773233ad399e3cf82f0db38383604051808381526020018281526020019250505060405180910390a15050505050505050565b6000733d9819210a31b4961b30ef54be2aed79b9c9cd3b905090565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee905090565b60006106026105e061073d565b73ffffffffffffffffffffffffffffffffffffffff16316402540be400610be3565b9050600080861161061a576106156109fa565b61061c565b855b905060008061062b878761147e565b9150915060008061063d8484896116eb565b915091503073ffffffffffffffffffffffffffffffffffffffff1631821061067c573073ffffffffffffffffffffffffffffffffffffffff163161067e565b815b915061068c8583838a61170d565b600061069661073d565b73ffffffffffffffffffffffffffffffffffffffff16319050868110156106b957fe5b7fa451a40d99e4f7e3a1c69d6aa7218fd9649ae687a6c3c0dc8e6d0381df0440ac8383604051808381526020018281526020019250505060405180910390a15050505050505050505050565b6000734ddc2d193948926d02f9b1fe9e1daa0718270ed5905090565b600073f23196df1c440345de07fefbe556a5ef0dcd29f0905090565b6000731564d040ec290c743f67f5cb11f3c1958b39872a905090565b6000736b175474e89094c44da98b954eedeac495271d0f905090565b6000735d3a536e4d6dbd6114cc1ead35777bab948e3643905090565b600061079b610721565b73ffffffffffffffffffffffffffffffffffffffff1663481c6a756040518163ffffffff1660e01b815260040160206040518083038186803b1580156107e057600080fd5b505afa1580156107f4573d6000803e3d6000fd5b505050506040513d602081101561080a57600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff1663f9f30db68585856040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156108ac57600080fd5b505af11580156108c0573d6000803e3d6000fd5b5050505050505050565b60006108d4610721565b73ffffffffffffffffffffffffffffffffffffffff1663481c6a756040518163ffffffff1660e01b815260040160206040518083038186803b15801561091957600080fd5b505afa15801561092d573d6000803e3d6000fd5b505050506040513d602081101561094357600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff1663fcafcc6884846040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b1580156109dd57600080fd5b505af11580156109f1573d6000803e3d6000fd5b50505050505050565b600080610a05610721565b73ffffffffffffffffffffffffffffffffffffffff1663481c6a756040518163ffffffff1660e01b815260040160206040518083038186803b158015610a4a57600080fd5b505afa158015610a5e573d6000803e3d6000fd5b505050506040513d6020811015610a7457600080fd5b8101908080519060200190929190505050905060007f4554482d4100000000000000000000000000000000000000000000000000000060001b90508173ffffffffffffffffffffffffffffffffffffffff16636090dec582306040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015610b3657600080fd5b505af1158015610b4a573d6000803e3d6000fd5b505050506040513d6020811015610b6057600080fd5b810190808051906020019092919050505092507fdb6aca7fb1121b6919a3d633f359770bcadd20c9e848a2ad7dc6bcc94b3d5fdb8330604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1505090565b6000828284031115610bf6576000610bfa565b8183035b905092915050565b6000806000610c0f610721565b73ffffffffffffffffffffffffffffffffffffffff1663481c6a756040518163ffffffff1660e01b815260040160206040518083038186803b158015610c5457600080fd5b505afa158015610c68573d6000803e3d6000fd5b505050506040513d6020811015610c7e57600080fd5b8101908080519060200190929190505050905060008173ffffffffffffffffffffffffffffffffffffffff16632726b073886040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610ce457600080fd5b505afa158015610cf8573d6000803e3d6000fd5b505050506040513d6020811015610d0e57600080fd5b8101908080519060200190929190505050905060008273ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd896040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610d7457600080fd5b505afa158015610d88573d6000803e3d6000fd5b505050506040513d6020811015610d9e57600080fd5b8101908080519060200190929190505050905060008090508373ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015610dfc57600080fd5b505afa158015610e10573d6000803e3d6000fd5b505050506040513d6020811015610e2657600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16632424be5c83856040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050604080518083038186803b158015610eba57600080fd5b505afa158015610ece573d6000803e3d6000fd5b505050506040513d6040811015610ee457600080fd5b810190808051906020019092919080519060200190929190505050809250819750505060008473ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015610f4f57600080fd5b505afa158015610f63573d6000803e3d6000fd5b505050506040513d6020811015610f7957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663d9638d36846040518263ffffffff1660e01b81526004018082815260200191505060a06040518083038186803b158015610fda57600080fd5b505afa158015610fee573d6000803e3d6000fd5b505050506040513d60a081101561100457600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505050505091505061104d8282611731565b955085881061105c578561105e565b875b955086891061106d578661106f565b885b96505050505050935093915050565b6110888282611779565b611092848361195a565b61109c8484611fe2565b50505050565b60006110ac61059b565b905060608173ffffffffffffffffffffffffffffffffffffffff1663abfceffc306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060006040518083038186803b15801561112d57600080fd5b505afa158015611141573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561116b57600080fd5b810190808051604051939291908464010000000082111561118b57600080fd5b838201915060208201858111156111a157600080fd5b82518660208202830111640100000000821117156111be57600080fd5b8083526020830192505050908051906020019060200280838360005b838110156111f55780820151818401526020810190506111da565b505050509050016040525050509050600080905060008090505b8251811015611271578473ffffffffffffffffffffffffffffffffffffffff1683828151811061123b57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141561126457600191505b808060010191505061120f565b508061146057606060016040519080825280602002602001820160405280156112a95781602001602082028038833980820191505090505b50905084816000815181106112ba57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508373ffffffffffffffffffffffffffffffffffffffff1663c2998238826040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019060200280838360005b83811015611363578082015181840152602081019050611348565b5050505090500192505050600060405180830381600087803b15801561138857600080fd5b505af115801561139c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156113c657600080fd5b81019080805160405193929190846401000000008211156113e657600080fd5b838201915060208201858111156113fc57600080fd5b825186602082028301116401000000008211171561141957600080fd5b8083526020830192505050908051906020019060200280838360005b83811015611450578082015181840152602081019050611435565b5050505090500160405250505050505b50505050565b61146f83612294565b61147982826123f6565b505050565b600080600061148b610705565b905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561150c57600080fd5b505afa158015611520573d6000803e3d6000fd5b505050506040513d602081101561153657600080fd5b8101908080519060200190929190505050905060008273ffffffffffffffffffffffffffffffffffffffff1663bd6d894d6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561159357600080fd5b505af11580156115a7573d6000803e3d6000fd5b505050506040513d60208110156115bd57600080fd5b810190808051906020019092919050505090506115da82826125ff565b9450816115e7868361263f565b11156115f657600185036115f8565b845b945086851115611608578661160a565b845b9450611614610775565b73ffffffffffffffffffffffffffffffffffffffff166317bfdfbc306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561169257600080fd5b505af11580156116a6573d6000803e3d6000fd5b505050506040513d60208110156116bc57600080fd5b81019080805190602001909291905050509350858411156116dd57856116df565b835b93505050509250929050565b6000806116f88484612677565b905061170385612962565b9150935093915050565b6117178484612dee565b61172184836131b2565b61172b82826137ce565b50505050565b60006b033b2e3c9fd0803ce800000061176961174d8585613a58565b60026b033b2e3c9fd0803ce80000008161176357fe5b04613aed565b8161177057fe5b04905092915050565b606060016040519080825280602002602001820160405280156117ab5781602001602082028038833980820191505090505b509050606060016040519080825280602002602001820160405280156117e05781602001602082028038833980820191505090505b5090506117eb610775565b826000815181106117f857fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050838160008151811061184057fe5b60200260200101818152505061185461073d565b73ffffffffffffffffffffffffffffffffffffffff16638d92577d8383866040518463ffffffff1660e01b815260040180806020018060200184151515158152602001838103835286818151815260200191508051906020019060200280838360005b838110156118d25780820151818401526020810190506118b7565b50505050905001838103825285818151815260200191508051906020019060200280838360005b838110156119145780820151818401526020810190506118f9565b5050505090500195505050505050600060405180830381600087803b15801561193c57600080fd5b505af1158015611950573d6000803e3d6000fd5b5050505050505050565b6000611964610721565b73ffffffffffffffffffffffffffffffffffffffff1663481c6a756040518163ffffffff1660e01b815260040160206040518083038186803b1580156119a957600080fd5b505afa1580156119bd573d6000803e3d6000fd5b505050506040513d60208110156119d357600080fd5b8101908080519060200190929190505050905060008173ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015611a2e57600080fd5b505afa158015611a42573d6000803e3d6000fd5b505050506040513d6020811015611a5857600080fd5b8101908080519060200190929190505050905060008273ffffffffffffffffffffffffffffffffffffffff16632726b073866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611abe57600080fd5b505afa158015611ad2573d6000803e3d6000fd5b505050506040513d6020811015611ae857600080fd5b8101908080519060200190929190505050905060008373ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd876040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611b4e57600080fd5b505afa158015611b62573d6000803e3d6000fd5b505050506040513d6020811015611b7857600080fd5b8101908080519060200190929190505050905060008473ffffffffffffffffffffffffffffffffffffffff16638161b120886040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611bde57600080fd5b505afa158015611bf2573d6000803e3d6000fd5b505050506040513d6020811015611c0857600080fd5b810190808051906020019092919050505090503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480611d48575060018573ffffffffffffffffffffffffffffffffffffffff16635aebb460838a306040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015611d0b57600080fd5b505afa158015611d1f573d6000803e3d6000fd5b505050506040513d6020811015611d3557600080fd5b8101908080519060200190929190505050145b15611e2a57611d578387613b70565b611e25876000611e20878873ffffffffffffffffffffffffffffffffffffffff16636c25b346896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611dde57600080fd5b505afa158015611df2573d6000803e3d6000fd5b505050506040513d6020811015611e0857600080fd5b81019080805190602001909291905050508888613dc1565b613f8a565b611f66565b611e343087613b70565b8373ffffffffffffffffffffffffffffffffffffffff166376088703838530306000611e708b6b033b2e3c9fd0803ce80000008f028c8c613dc1565b6040518763ffffffff1660e01b8152600401808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019650505050505050600060405180830381600087803b158015611f4d57600080fd5b505af1158015611f61573d6000803e3d6000fd5b505050505b7fa0a1c91e0329ae556992a79c058e542f3937b17e351f625652179970767ea452878730604051808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a150505050505050565b6000611fec610721565b73ffffffffffffffffffffffffffffffffffffffff166395a540e66040518163ffffffff1660e01b815260040160206040518083038186803b15801561203157600080fd5b505afa158015612045573d6000803e3d6000fd5b505050506040513d602081101561205b57600080fd5b810190808051906020019092919050505090506120858361207b84614097565b6000036000613f8a565b612090833084614118565b8073ffffffffffffffffffffffffffffffffffffffff1663ef693bed30846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561211757600080fd5b505af115801561212b573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff16637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561217757600080fd5b505af115801561218b573d6000803e3d6000fd5b505050506040513d60208110156121a157600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561220457600080fd5b505af1158015612218573d6000803e3d6000fd5b505050507f4f22dce702f7b8a0962b1bc4815e7e9184adc445f9d2039dcafd9eb1c2b36a37838330604051808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a1505050565b6122a461229f610705565b6110a2565b60006122ae610705565b90508073ffffffffffffffffffffffffffffffffffffffff16631249c58b836040518263ffffffff1660e01b81526004016000604051808303818588803b1580156122f857600080fd5b505af115801561230c573d6000803e3d6000fd5b50505050507f252c64862cdd4fb87064b61720da12074c8fdddf7233c8d163c925c85072c42c61233a6105b7565b612342610705565b8433604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390a15050565b612406612401610775565b6110a2565b6000612410610775565b73ffffffffffffffffffffffffffffffffffffffff1663c5ebeaec846040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561246257600080fd5b505af1158015612476573d6000803e3d6000fd5b505050506040513d602081101561248c57600080fd5b810190808051906020019092919050505014612510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f676f7420636f6c6c61746572616c3f000000000000000000000000000000000081525060200191505060405180910390fd5b61251a82826137ce565b7f9f31c249eb0814475f16a619e1fdf5e62f46db8cb233ff1b951adddcf7133b95612543610759565b61254b610775565b8430604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390a15050565b6000670de0b6b3a764000061262f6126178585613a58565b6002670de0b6b3a76400008161262957fe5b04613aed565b8161263657fe5b04905092915050565b60008161266761265785670de0b6b3a7640000613a58565b6002858161266157fe5b04613aed565b8161266e57fe5b04905092915050565b600080612682610775565b905060008173ffffffffffffffffffffffffffffffffffffffff166317bfdfbc306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561270557600080fd5b505af1158015612719573d6000803e3d6000fd5b505050506040513d602081101561272f57600080fd5b8101908080519060200190929190505050905080851061274f5780612751565b845b925061275d8385611779565b612776612768610759565b84612771610775565b614251565b60008273ffffffffffffffffffffffffffffffffffffffff16630e752702856040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156127cb57600080fd5b505af11580156127df573d6000803e3d6000fd5b505050506040513d60208110156127f557600080fd5b810190808051906020019092919050505014612879576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f7472616e7366657220617070726f7665643f000000000000000000000000000081525060200191505060405180910390fd5b7ff9c0c8ae7fcb0ae66722c0fd985dd186c5f04475693482e4836363ea60e00de26128a2610759565b6128aa610775565b8530604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390a1505092915050565b60008061296d610705565b905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156129ee57600080fd5b505afa158015612a02573d6000803e3d6000fd5b505050506040513d6020811015612a1857600080fd5b8101908080519060200190929190505050905060008273ffffffffffffffffffffffffffffffffffffffff1663bd6d894d6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612a7557600080fd5b505af1158015612a89573d6000803e3d6000fd5b505050506040513d6020811015612a9f57600080fd5b810190808051906020019092919050505090506000612abe83836125ff565b9050612aea612acb610705565b700100000000000000000000000000000000612ae5610705565b614251565b85945080861115612c005760008473ffffffffffffffffffffffffffffffffffffffff1663db006a75856040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015612b4a57600080fd5b505af1158015612b5e573d6000803e3d6000fd5b505050506040513d6020811015612b7457600080fd5b810190808051906020019092919050505014612bf8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f736f6d657468696e672077656e742077726f6e6700000000000000000000000081525060200191505060405180910390fd5b809450612d04565b60008473ffffffffffffffffffffffffffffffffffffffff1663852a12e3886040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015612c5557600080fd5b505af1158015612c69573d6000803e3d6000fd5b505050506040513d6020811015612c7f57600080fd5b810190808051906020019092919050505014612d03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f736f6d657468696e672077656e742077726f6e6700000000000000000000000081525060200191505060405180910390fd5b5b7fd985ae7abab418a80621f7b292cdc98b964715f22de84b4f4c9183795b47d14b612d2d6105b7565b612d35610705565b8730604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390a150505050919050565b6000612df8610721565b73ffffffffffffffffffffffffffffffffffffffff1663481c6a756040518163ffffffff1660e01b815260040160206040518083038186803b158015612e3d57600080fd5b505afa158015612e51573d6000803e3d6000fd5b505050506040513d6020811015612e6757600080fd5b81019080805190602001909291905050509050612e843083614415565b8073ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015612eca57600080fd5b505afa158015612ede573d6000803e3d6000fd5b505050506040513d6020811015612ef457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663760887038273ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612f7157600080fd5b505afa158015612f85573d6000803e3d6000fd5b505050506040513d6020811015612f9b57600080fd5b81019080805190602001909291905050508373ffffffffffffffffffffffffffffffffffffffff16632726b073876040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612ffd57600080fd5b505afa158015613011573d6000803e3d6000fd5b505050506040513d602081101561302757600080fd5b8101908080519060200190929190505050303061304388614097565b60006040518763ffffffff1660e01b8152600401808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019650505050505050600060405180830381600087803b15801561312257600080fd5b505af1158015613136573d6000803e3d6000fd5b505050507fc488e0bbcf79010a656060bc8e2ac383156c161a6320ea3e44a6e804a0273bc3838330604051808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a1505050565b60006131bc610721565b73ffffffffffffffffffffffffffffffffffffffff1663481c6a756040518163ffffffff1660e01b815260040160206040518083038186803b15801561320157600080fd5b505afa158015613215573d6000803e3d6000fd5b505050506040513d602081101561322b57600080fd5b810190808051906020019092919050505090506000613248610721565b73ffffffffffffffffffffffffffffffffffffffff166384718d896040518163ffffffff1660e01b815260040160206040518083038186803b15801561328d57600080fd5b505afa1580156132a1573d6000803e3d6000fd5b505050506040513d60208110156132b757600080fd5b8101908080519060200190929190505050905060006132d4610721565b73ffffffffffffffffffffffffffffffffffffffff1663c11645bc6040518163ffffffff1660e01b815260040160206040518083038186803b15801561331957600080fd5b505afa15801561332d573d6000803e3d6000fd5b505050506040513d602081101561334357600080fd5b8101908080519060200190929190505050905060008373ffffffffffffffffffffffffffffffffffffffff16632726b073876040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156133a957600080fd5b505afa1580156133bd573d6000803e3d6000fd5b505050506040513d60208110156133d357600080fd5b8101908080519060200190929190505050905060008473ffffffffffffffffffffffffffffffffffffffff166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b15801561342e57600080fd5b505afa158015613442573d6000803e3d6000fd5b505050506040513d602081101561345857600080fd5b8101908080519060200190929190505050905060008573ffffffffffffffffffffffffffffffffffffffff16632c2cb9fd896040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156134be57600080fd5b505afa1580156134d2573d6000803e3d6000fd5b505050506040513d60208110156134e857600080fd5b8101908080519060200190929190505050905061351388600061350e858988878e614749565b613f8a565b61352688306135218a614925565b610791565b60008273ffffffffffffffffffffffffffffffffffffffff16634538c4eb30876040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156135d957600080fd5b505afa1580156135ed573d6000803e3d6000fd5b505050506040513d602081101561360357600080fd5b810190808051906020019092919050505014156136b2578173ffffffffffffffffffffffffffffffffffffffff1663a3b22fc4856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561369957600080fd5b505af11580156136ad573d6000803e3d6000fd5b505050505b8373ffffffffffffffffffffffffffffffffffffffff1663ef693bed30896040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561373957600080fd5b505af115801561374d573d6000803e3d6000fd5b505050507f2552409de7c93ad237013bdc31f6351559f2d50c8b43d20b83fc75639a55e431888830604051808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a15050505050505050565b606060016040519080825280602002602001820160405280156138005781602001602082028038833980820191505090505b50905061380b610775565b8160008151811061381857fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061385a610759565b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61387d61073d565b856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156138e757600080fd5b505af11580156138fb573d6000803e3d6000fd5b505050506040513d602081101561391157600080fd5b8101908080519060200190929190505050613994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f742d656e6f7567682d44414900000000000000000000000000000000000081525060200191505060405180910390fd5b61399c61073d565b73ffffffffffffffffffffffffffffffffffffffff16636009a7e382846040518363ffffffff1660e01b8152600401808060200183151515158152602001828103825284818151815260200191508051906020019060200280838360005b83811015613a155780820151818401526020810190506139fa565b505050509050019350505050600060405180830381600087803b158015613a3b57600080fd5b505af1158015613a4f573d6000803e3d6000fd5b50505050505050565b600080821480613a755750828283850292508281613a7257fe5b04145b613ae7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6d6174682d6e6f742d736166650000000000000000000000000000000000000081525060200191505060405180910390fd5b92915050565b6000828284019150811015613b6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6d6174682d6e6f742d736166650000000000000000000000000000000000000081525060200191505060405180910390fd5b92915050565b6000613b7a610721565b73ffffffffffffffffffffffffffffffffffffffff1663c11645bc6040518163ffffffff1660e01b815260040160206040518083038186803b158015613bbf57600080fd5b505afa158015613bd3573d6000803e3d6000fd5b505050506040513d6020811015613be957600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff1663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381600087803b158015613c4457600080fd5b505af1158015613c58573d6000803e3d6000fd5b505050506040513d6020811015613c6e57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663095ea7b382846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015613d0557600080fd5b505af1158015613d19573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff16633b4da69f84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015613da457600080fd5b505af1158015613db8573d6000803e3d6000fd5b50505050505050565b6000808573ffffffffffffffffffffffffffffffffffffffff1663d9638d36846040518263ffffffff1660e01b81526004018082815260200191505060a06040518083038186803b158015613e1557600080fd5b505afa158015613e29573d6000803e3d6000fd5b505050506040513d60a0811015613e3f57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505050505091505060008673ffffffffffffffffffffffffffffffffffffffff16632424be5c85876040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050604080518083038186803b158015613f0457600080fd5b505afa158015613f18573d6000803e3d6000fd5b505050506040513d6040811015613f2e57600080fd5b810190808051906020019092919080519060200190929190505050915050613f5e828781613f5857fe5b04614097565b925080831115613f7957613f7181614097565b600003613f7e565b826000035b92505050949350505050565b6000613f94610721565b73ffffffffffffffffffffffffffffffffffffffff1663481c6a756040518163ffffffff1660e01b815260040160206040518083038186803b158015613fd957600080fd5b505afa158015613fed573d6000803e3d6000fd5b505050506040513d602081101561400357600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff166345e6bdcd8585856040518463ffffffff1660e01b8152600401808481526020018381526020018281526020019350505050600060405180830381600087803b15801561407957600080fd5b505af115801561408d573d6000803e3d6000fd5b5050505050505050565b60008190506000811215614113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f696e742d6f766572666c6f77000000000000000000000000000000000000000081525060200191505060405180910390fd5b919050565b6000614122610721565b73ffffffffffffffffffffffffffffffffffffffff1663481c6a756040518163ffffffff1660e01b815260040160206040518083038186803b15801561416757600080fd5b505afa15801561417b573d6000803e3d6000fd5b505050506040513d602081101561419157600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff16639bb8f8388585856040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b15801561423357600080fd5b505af1158015614247573d6000803e3d6000fd5b5050505050505050565b600083905060008173ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561430957600080fd5b505afa15801561431d573d6000803e3d6000fd5b505050506040513d602081101561433357600080fd5b810190808051906020019092919050505090508084111561440e578173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156143f557600080fd5b505af1158015614409573d6000803e3d6000fd5b505050505b5050505050565b600061441f610721565b73ffffffffffffffffffffffffffffffffffffffff166395a540e66040518163ffffffff1660e01b815260040160206040518083038186803b15801561446457600080fd5b505afa158015614478573d6000803e3d6000fd5b505050506040513d602081101561448e57600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff16637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156144e957600080fd5b505af11580156144fd573d6000803e3d6000fd5b505050506040513d602081101561451357600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561456b57600080fd5b505af115801561457f573d6000803e3d6000fd5b50505050508073ffffffffffffffffffffffffffffffffffffffff16637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156145cc57600080fd5b505af11580156145e0573d6000803e3d6000fd5b505050506040513d60208110156145f657600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663095ea7b382846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561468d57600080fd5b505af11580156146a1573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff16633b4da69f84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561472c57600080fd5b505af1158015614740573d6000803e3d6000fd5b50505050505050565b6000808573ffffffffffffffffffffffffffffffffffffffff166344e2a5a8856040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561479f57600080fd5b505af11580156147b3573d6000803e3d6000fd5b505050506040513d60208110156147c957600080fd5b8101908080519060200190929190505050905060008773ffffffffffffffffffffffffffffffffffffffff16636c25b346876040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561485b57600080fd5b505afa15801561486f573d6000803e3d6000fd5b505050506040513d602081101561488557600080fd5b810190808051906020019092919050505090506148ae846b033b2e3c9fd0803ce8000000613a58565b81101561491a576148e5826148d86148d2876b033b2e3c9fd0803ce8000000613a58565b84610be3565b816148df57fe5b04614097565b92506148fd846b033b2e3c9fd0803ce8000000613a58565b6149078484613a58565b106149125782614917565b600183015b92505b505095945050505050565b600061493d826b033b2e3c9fd0803ce8000000613a58565b905091905056fea265627a7a723158201ed6d1fc200e55d133aebf6d7441e204fb481a89479519e82f6c19c8b86f72f164736f6c634300050c0032
Deployed Bytecode Sourcemap
27276:88:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25221:931;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25221:931:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;25221:931:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8761:142;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8761:142:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8156:126;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8156:126:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;26287:980;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26287:980:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;26287:980:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8959:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8959:129:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8355:128;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8355:128:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8555:134;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8555:134:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9143:126;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9143:126:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9325:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9325:129:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15673:186;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15673:186:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15673:186:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16389:171;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16389:171:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16389:171:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16062:319;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16062:319:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25221:931;25502:19;25524:39;25528:13;:11;:13::i;:::-;:21;;;25551:11;25524:3;:39::i;:::-;25502:61;;25577:11;25590;25605:33;25616:5;25623:6;25631;25605:10;:33::i;:::-;25576:62;;;;25649:114;25680:5;25700:6;25721;25742:10;25649:16;:114::i;:::-;25818:29;25830:16;:14;:16::i;:::-;25818:11;:29::i;:::-;25858;25870:16;:14;:16::i;:::-;25858:11;:29::i;:::-;25898:45;25916:6;25924;25932:10;25898:17;:45::i;:::-;26002:17;26022:13;:11;:13::i;:::-;:21;;;26002:41;;26077:14;26061:12;:30;;26054:38;;;;26110:34;26129:6;26137;26110:34;;;;;;;;;;;;;;;;;;;;;;;;25221:931;;;;;;;;:::o;8761:142::-;8815:15;8853:42;8843:52;;8761:142;:::o;8156:126::-;8202:11;8232:42;8226:48;;8156:126;:::o;26287:980::-;26534:19;26556:39;26560:13;:11;:13::i;:::-;:21;;;26583:11;26556:3;:39::i;:::-;26534:61;;26608:11;26630:1;26622:5;:9;:26;;26642:6;:4;:6::i;:::-;26622:26;;;26634:5;26622:26;26608:40;;26660:11;26673:12;26689:29;26703:6;26711;26689:13;:29::i;:::-;26659:59;;;;26730:11;26743;26758:49;26779:6;26787:7;26796:10;26758:20;:49::i;:::-;26729:78;;;;26886:4;26878:21;;;26869:6;:30;:63;;26919:4;26911:21;;;26869:63;;;26902:6;26869:63;26860:72;;26943:115;26974:6;26995;27016;27037:10;26943:16;:115::i;:::-;27117:17;27137:13;:11;:13::i;:::-;:21;;;27117:41;;27192:14;27176:12;:30;;27169:38;;;;27225:34;27244:6;27252;27225:34;;;;;;;;;;;;;;;;;;;;;;;;26287:980;;;;;;;;;;;:::o;8959:129::-;9006:12;9038:42;9031:49;;8959:129;:::o;8355:128::-;8403:11;8433:42;8427:48;;8355:128;:::o;8555:134::-;8599:16;8639:42;8628:53;;8555:134;:::o;9143:126::-;9189:11;9219:42;9213:48;;9143:126;:::o;9325:129::-;9372:12;9404:42;9397:49;;9325:129;:::o;15673:186::-;15738:15;15772:17;:15;:17::i;:::-;15756:42;;;:44;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15756:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15756:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15756:44:0;;;;;;;;;;;;;;;;15738:62;;15823:7;15811:25;;;15837:3;15842;15847;15811:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15811:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15811:40:0;;;;15673:186;;;;:::o;16389:171::-;16444:15;16478:17;:15;:17::i;:::-;16462:42;;;:44;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16462:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16462:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16462:44:0;;;;;;;;;;;;;;;;16444:62;;16529:7;16517:25;;;16543:3;16548;16517:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16517:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16517:35:0;;;;16389:171;;;:::o;16062:319::-;16094:8;16115:15;16149:17;:15;:17::i;:::-;16133:42;;;:44;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16133:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16133:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16133:44:0;;;;;;;;;;;;;;;;16115:62;;16188:11;16202:66;16188:80;;;;16297:7;16285:25;;;16311:3;16324:4;16285:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16285:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16285:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16285:45:0;;;;;;;;;;;;;;;;16279:51;;16346:27;16354:3;16367:4;16346:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;16062:319;;;:::o;6878:105::-;6930:6;6962:1;6957;6953;:5;:10;;:22;;6974:1;6953:22;;;6970:1;6966;:5;6953:22;6949:26;;6878:105;;;;:::o;11361:694::-;11439:11;11452:12;11477:15;11511:17;:15;:17::i;:::-;11495:42;;;:44;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11495:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11495:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11495:44:0;;;;;;;;;;;;;;;;11477:62;;11550:11;11576:7;11564:25;;;11590:2;11564:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11564:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11564:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11564:29:0;;;;;;;;;;;;;;;;11550:43;;11604:11;11630:7;11618:25;;;11644:2;11618:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11618:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11618:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11618:29:0;;;;;;;;;;;;;;;;11604:43;;11658:8;11669:1;11658:12;;11717:7;11705:24;;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11705:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11705:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11705:26:0;;;;;;;;;;;;;;;;11697:40;;;11738:3;11743;11697:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11697:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11697:50:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11697:50:0;;;;;;;;;;;;;;;;;;;;;;;;;11681:66;;;;;;;;11760:9;11796:7;11784:24;;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11784:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11784:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11784:26:0;;;;;;;;;;;;;;;;11776:40;;;11817:3;11776:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11776:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11776:45:0;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;11776:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11758:63;;;;;;11842:14;11847:3;11851:4;11842;:14::i;:::-;11832:24;;11886:7;11877:6;:16;:35;;11905:7;11877:35;;;11896:6;11877:35;11867:45;;11983:6;11974;:15;:33;;12001:6;11974:33;;;11992:6;11974:33;11965:42;;11361:694;;;;;;;;;;;:::o;20472:237::-;20617:27;20627:4;20633:10;20617:9;:27::i;:::-;20655:18;20660:6;20668:4;20655;:18::i;:::-;20684:17;20689:6;20697:3;20684:4;:17::i;:::-;20472:237;;;;:::o;14843:575::-;14900:28;14952:23;:21;:23::i;:::-;14900:76;;14987:24;15014:7;:19;;;15042:4;15014:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15014:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15014:34:0;;;;;;39:16:-1;36:1;17:17;2:54;15014:34: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;13:2;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15014:34:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;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;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;385:12;380:3;373:25;421:4;416:3;412:14;405:21;;0:433;;15014:34:0;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;15014:34:0;;;;;;;;;;;14987:61;;15059:14;15076:5;15059:22;;15097:6;15106:1;15097:10;;15092:145;15113:7;:14;15109:1;:18;15092:145;;;15167:6;15153:20;;:7;15161:1;15153:10;;;;;;;;;;;;;;:20;;;15149:77;;;15206:4;15194:16;;15149:77;15129:3;;;;;;;15092:145;;;;15252:9;15247:164;;15278:24;15319:1;15305:16;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;15305:16:0;;;;15278:43;;15349:6;15336:7;15344:1;15336:10;;;;;;;;;;;;;:19;;;;;;;;;;;15370:7;:20;;;15391:7;15370:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;15370:29:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15370:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15370:29:0;;;;;;39:16:-1;36:1;17:17;2:54;15370:29: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;13:2;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15370:29:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;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;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;385:12;380:3;373:25;421:4;416:3;412:14;405:21;;0:433;;15370:29:0;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;15370:29:0;;;;;;;;;;;;15247:164;;14843:575;;;;:::o;23667:158::-;23757:16;23766:6;23757:8;:16::i;:::-;23784:33;23798:6;23806:10;23784:13;:33::i;:::-;23667:158;;;:::o;24213:754::-;24280:11;24293:12;24318:28;24365:16;:14;:16::i;:::-;24318:64;;24393:12;24408;:22;;;24439:4;24408:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24408:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24408:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24408:37:0;;;;;;;;;;;;;;;;24393:52;;24456:20;24479:12;:32;;;:34;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24479:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24479:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24479:34:0;;;;;;;;;;;;;;;;24456:57;;24533:30;24538:7;24547:15;24533:4;:30::i;:::-;24524:39;;24616:7;24583:29;24588:6;24596:15;24583:4;:29::i;:::-;:40;;:62;;24644:1;24635:6;:10;24583:62;;;24626:6;24583:62;24574:71;;24675:6;24665;:16;;:34;;24693:6;24665:34;;;24684:6;24665:34;24656:43;;24793:16;:14;:16::i;:::-;24777:54;;;24840:4;24777:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24777:69:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24777:69:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24777:69:0;;;;;;;;;;;;;;;;24767:79;;24878:6;24867:7;:17;;:36;;24897:6;24867:36;;;24887:7;24867:36;24857:46;;24213:754;;;;;;;;:::o;23894:217::-;23986:11;23999;24032:33;24045:7;24054:10;24032:12;:33::i;:::-;24023:42;;24085:18;24096:6;24085:10;:18::i;:::-;24076:27;;23894:217;;;;;;:::o;20782:237::-;20927:17;20932:6;20940:3;20927:4;:17::i;:::-;20955:18;20960:6;20968:4;20955;:18::i;:::-;20984:27;20994:4;21000:10;20984:9;:27::i;:::-;20782:237;;;;:::o;7335:113::-;7388:6;7318:8;7411:23;7415:9;7419:1;7422;7415:3;:9::i;:::-;7432:1;7318:8;7426:7;;;;;;7411:3;:23::i;:::-;:29;;;;;;7407:33;;7335:113;;;;:::o;9940:336::-;10009:27;10053:1;10039:16;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;10039:16:0;;;;10009:46;;10066:23;10103:1;10092:13;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;10092:13:0;;;;10066:39;;10132:16;:14;:16::i;:::-;10116:10;10127:1;10116:13;;;;;;;;;;;;;:32;;;;;;;;;;;10174:6;10159:9;10169:1;10159:12;;;;;;;;;;;;;:21;;;;;10205:13;:11;:13::i;:::-;10191:40;;;10232:10;10244:9;10255:10;10191:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10191:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10191:75:0;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10191:75:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10191:75:0;;;;9940:336;;;;:::o;19042:1357::-;19096:15;19130:17;:15;:17::i;:::-;19114:42;;;:44;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19114:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19114:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19114:44:0;;;;;;;;;;;;;;;;19096:62;;19169:11;19195:7;19183:24;;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19183:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19183:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19183:26:0;;;;;;;;;;;;;;;;19169:40;;19220:11;19246:7;19234:25;;;19260:3;19234:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19234:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19234:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19234:30:0;;;;;;;;;;;;;;;;19220:44;;19275:11;19301:7;19289:25;;;19315:3;19289:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19289:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19289:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19289:30:0;;;;;;;;;;;;;;;;19275:44;;19332:11;19358:7;19346:25;;;19372:3;19346:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19346:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19346:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19346:30:0;;;;;;;;;;;;;;;;19332:44;;19406:4;19391:20;;:3;:20;;;:81;;;;19471:1;19427:7;19415:27;;;19443:3;19448;19461:4;19415:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19415:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19415:52:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19415:52:0;;;;;;;;;;;;;;;;:57;19391:81;19387:957;;;19535:21;19547:3;19552;19535:11;:21::i;:::-;19612:233;19635:3;19657:1;19677:153;19712:3;19746;19738:16;;;19755:3;19738:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19738:21:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19738:21:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19738:21:0;;;;;;;;;;;;;;;;19782:3;19808;19677:12;:153::i;:::-;19612:4;:233::i;:::-;19387:957;;;19925:31;19945:4;19952:3;19925:11;:31::i;:::-;20020:3;20012:17;;;20048:3;20070;20100:4;20132;20156:1;20176:141;20211:3;7318:8;20237:3;:9;20269:3;20295;20176:12;:141::i;:::-;20012:320;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20012:320:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20012:320:0;;;;19387:957;20359:32;20367:3;20372;20385:4;20359:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19042:1357;;;;;;;:::o;17165:657::-;17219:15;17253:17;:15;:17::i;:::-;17237:43;;;:45;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17237:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17237:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17237:45:0;;;;;;;;;;;;;;;;17219:63;;17338:75;17357:3;17376:10;17382:3;17376:5;:10::i;:::-;17375:11;;17401:1;17338:4;:75::i;:::-;17489:79;17508:3;17534:4;17554:3;17489:4;:79::i;:::-;17649:7;17637:25;;;17671:4;17678:3;17637:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17637:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17637:45:0;;;;17738:7;17726:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17726:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17726:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17726:26:0;;;;;;;;;;;;;;;;:35;;;17762:3;17726:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17726:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17726:40:0;;;;17782:32;17790:3;17795;17808:4;17782:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17165:657;;;:::o;21139:338::-;21192:29;21204:16;:14;:16::i;:::-;21192:11;:29::i;:::-;21232:20;21269:16;:14;:16::i;:::-;21232:54;;21297:6;:11;;;21315:8;21297:29;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21297:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21297:29:0;;;;;21342:127;21364:15;:13;:15::i;:::-;21394:16;:14;:16::i;:::-;21425:8;21448:10;21342:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21139:338;;:::o;21527:442::-;21600:29;21612:16;:14;:16::i;:::-;21600:11;:29::i;:::-;21700:1;21664:16;:14;:16::i;:::-;21648:40;;;21689:6;21648:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21648:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21648:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21648:48:0;;;;;;;;;;;;;;;;:53;21640:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21786:29;21796:6;21804:10;21786:9;:29::i;:::-;21831:130;21855:15;:13;:15::i;:::-;21885:16;:14;:16::i;:::-;21916:6;21945:4;21831:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21527:442;;:::o;7575:113::-;7628:6;7283:8;7651:23;7655:9;7659:1;7662;7655:3;:9::i;:::-;7672:1;7283:8;7666:7;;;;;;7651:3;:23::i;:::-;:29;;;;;;7647:33;;7575:113;;;;:::o;7696:111::-;7749:6;7798:1;7772:23;7776:11;7780:1;7283:8;7776:3;:11::i;:::-;7793:1;7789;:5;;;;;;7772:3;:23::i;:::-;:27;;;;;;7768:31;;7696:111;;;;:::o;22021:684::-;22093:12;22118:22;22159:16;:14;:16::i;:::-;22118:58;;22187:16;22206:6;:27;;;22242:4;22206:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22206:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22206:42:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22206:42:0;;;;;;;;;;;;;;;;22187:61;;22280:11;22269:8;:22;:47;;22305:11;22269:47;;;22294:8;22269:47;22259:57;;22381:30;22391:7;22400:10;22381:9;:30::i;:::-;22422:55;22434:15;:13;:15::i;:::-;22451:7;22460:16;:14;:16::i;:::-;22422:11;:55::i;:::-;22527:1;22496:6;:18;;;22515:7;22496:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22496:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22496:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22496:27:0;;;;;;;;;;;;;;;;:32;22488:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22567:130;22590:15;:13;:15::i;:::-;22620:16;:14;:16::i;:::-;22651:7;22681:4;22567:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22021:684;;;;;;:::o;22756:845::-;22808:19;22840:22;22881:16;:14;:16::i;:::-;22840:58;;22909:12;22924:6;:16;;;22949:4;22924:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22924:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22924:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22924:31:0;;;;;;;;;;;;;;;;22909:46;;22966:17;22986:6;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22986:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22986:28:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22986:28:0;;;;;;;;;;;;;;;;22966:48;;23025:14;23042:27;23047:7;23056:12;23042:4;:27::i;:::-;23025:44;;23080:55;23092:16;:14;:16::i;:::-;23110:6;23118:16;:14;:16::i;:::-;23080:11;:55::i;:::-;23163:8;23146:25;;23197:9;23186:8;:20;23182:258;;;23257:1;23231:6;:13;;;23245:7;23231:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23231:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23231:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23231:22:0;;;;;;;;;;;;;;;;:27;23223:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23315:9;23298:26;;23182:258;;;23402:1;23365:6;:23;;;23389:8;23365:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23365:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23365:33:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23365:33:0;;;;;;;;;;;;;;;;:38;23357:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23182:258;23455:138;23479:15;:13;:15::i;:::-;23509:16;:14;:16::i;:::-;23540:14;23577:4;23455:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22756:845;;;;;;;:::o;16568:589::-;16623:15;16657:17;:15;:17::i;:::-;16641:42;;;:44;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16641:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16641:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16641:44:0;;;;;;;;;;;;;;;;16623:62;;16775:32;16795:4;16802;16775:11;:32::i;:::-;16881:7;16869:24;;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16869:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16869:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16869:26:0;;;;;;;;;;;;;;;;16861:40;;;16928:7;16916:25;;;16942:3;16916:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16916:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16916:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16916:30:0;;;;;;;;;;;;;;;;16973:7;16961:25;;;16987:3;16961:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16961:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16961:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16961:30:0;;;;;;;;;;;;;;;;17014:4;17042;17062:11;17068:4;17062:5;:11::i;:::-;17088:1;16861:239;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16861:239:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16861:239:0;;;;17116:33;17124:3;17129:4;17143;17116:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16568:589;;;:::o;17830:1204::-;17884:15;17918:17;:15;:17::i;:::-;17902:42;;;:44;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17902:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17902:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17902:44:0;;;;;;;;;;;;;;;;17884:62;;17957:11;17987:17;:15;:17::i;:::-;17971:38;;;:40;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17971:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17971:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17971:40:0;;;;;;;;;;;;;;;;17957:54;;18022:15;18056:17;:15;:17::i;:::-;18040:42;;;:44;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18040:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18040:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18040:44:0;;;;;;;;;;;;;;;;18022:62;;18095:11;18121:7;18109:25;;;18135:3;18109:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18109:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18109:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18109:30:0;;;;;;;;;;;;;;;;18095:44;;18150:11;18176:7;18164:24;;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18164:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18164:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18164:26:0;;;;;;;;;;;;;;;;18150:40;;18201:11;18227:7;18215:25;;;18241:3;18215:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18215:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18215:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18215:30:0;;;;;;;;;;;;;;;;18201:44;;18294:201;18313:3;18331:1;18347:137;18378:3;18400;18422;18444;18466;18347:12;:137::i;:::-;18294:4;:201::i;:::-;18586:86;18605:3;18631:4;18651:10;18657:3;18651:5;:10::i;:::-;18586:4;:86::i;:::-;18811:1;18766:3;18758:16;;;18783:4;18798:7;18758:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18758:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18758:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18758:49:0;;;;;;;;;;;;;;;;:54;18754:113;;;18837:3;18829:17;;;18847:7;18829:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18829:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18829:26:0;;;;18754:113;18943:7;18931:25;;;18965:4;18972:3;18931:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18931:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18931:45:0;;;;18992:32;19000:3;19005;19018:4;18992:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17830:1204;;;;;;;;:::o;10284:343::-;10353:27;10397:1;10383:16;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;10383:16:0;;;;10353:46;;10426:16;:14;:16::i;:::-;10410:10;10421:1;10410:13;;;;;;;;;;;;;:32;;;;;;;;;;;10476:15;:13;:15::i;:::-;10461:40;;;10502:13;:11;:13::i;:::-;10517:6;10461:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10461:63:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10461:63:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10461:63:0;;;;;;;;;;;;;;;;10453:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10568:13;:11;:13::i;:::-;10554:41;;;10596:10;10608;10554:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10554:65:0;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10554:65:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10554:65:0;;;;10284:343;;;:::o;7120:135::-;7172:6;7204:1;7199;:6;:30;;;;7228:1;7223;7218;7214;:5;7210:9;;;7209:15;;;;;;:20;7199:30;7191:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7120:135;;;;:::o;6991:121::-;7043:6;7085:1;7079;7075;:5;7071:9;;;7070:16;;7062:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6991:121;;;;:::o;12063:326::-;12127:15;12161:17;:15;:17::i;:::-;12145:42;;;:44;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12145:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12145:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12145:44:0;;;;;;;;;;;;;;;;12127:62;;12264:7;12252:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12252:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12252:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12252:26:0;;;;;;;;;;;;;;;;:34;;;12287:7;12296:3;12252:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12252:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12252:48:0;;;;12358:7;12346:25;;;12372:3;12377;12346:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12346:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12346:35:0;;;;12063:326;;;:::o;13306:622::-;13443:8;13514:9;13538:3;13530:17;;;13548:3;13530:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13530:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13530:22:0;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;13530:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13511:41;;;;;;13611:8;13631:3;13623:17;;;13641:3;13646;13623:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13623:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13623:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13623:27:0;;;;;;;;;;;;;;;;;;;;;;;;;13608:42;;;13739:17;13751:4;13745:3;:10;;;;;;13739:5;:17::i;:::-;13732:24;;13893:3;13884:4;13879:17;;:41;;13910:10;13916:3;13910:5;:10::i;:::-;13908:12;;13879:41;;;13901:4;13899:6;;13879:41;13872:48;;13306:622;;;;;;;;:::o;15867:187::-;15931:15;15965:17;:15;:17::i;:::-;15949:42;;;:44;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15949:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15949:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15949:44:0;;;;;;;;;;;;;;;;15931:62;;16016:7;16004:25;;;16030:3;16035:4;16041;16004:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16004:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16004:42:0;;;;15867:187;;;;:::o;7815:124::-;7861:5;7887:1;7879:10;;7913:1;7908;:6;;7900:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7815:124;;;:::o;15477:188::-;15544:15;15578:17;:15;:17::i;:::-;15562:42;;;:44;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15562:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15562:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15562:44:0;;;;;;;;;;;;;;;;15544:62;;15629:7;15617:25;;;15643:3;15648;15653;15617:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15617:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15617:40:0;;;;15477:188;;;;:::o;9566:317::-;9647:28;9693:5;9647:52;;9710:19;9732:13;:23;;;9764:4;9771:2;9732:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9732:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9732:42:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9732:42:0;;;;;;;;;;;;;;;;9710:64;;9798:14;9789:6;:23;9785:91;;;9829:13;:21;;;9851:2;9860;9829:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9829:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9829:35:0;;;;9785:91;9566:317;;;;;:::o;13936:441::-;14001:15;14035:17;:15;:17::i;:::-;14019:43;;;:45;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14019:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14019:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14019:45:0;;;;;;;;;;;;;;;;14001:63;;14117:7;14105:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14105:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14105:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14105:26:0;;;;;;;;;;;;;;;;:34;;;14146:4;14105:48;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14105:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14105:48:0;;;;;14229:7;14217:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14217:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14217:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14217:26:0;;;;;;;;;;;;;;;;:34;;;14260:7;14270:4;14217:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14217:58:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14217:58:0;;;;14345:7;14333:25;;;14359:3;14364:4;14333:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14333:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14333:36:0;;;;13936:441;;;:::o;12397:901::-;12551:8;12616:9;12636:3;12628:17;;;12646:3;12628:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12628:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12628:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12628:22:0;;;;;;;;;;;;;;;;12616:34;;12714:8;12733:3;12725:16;;;12742:3;12725:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12725:21:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12725:21:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12725:21:0;;;;;;;;;;;;;;;;12714:32;;12872:13;12876:3;7318:8;12872:3;:13::i;:::-;12866:3;:19;12862:429;;;13040:37;13072:4;13046:23;13050:13;13054:3;7318:8;13050:3;:13::i;:::-;13065:3;13046;:23::i;:::-;:30;;;;;;13040:5;:37::i;:::-;13033:44;;13248:13;13252:3;7318:8;13248:3;:13::i;:::-;13224:21;13233:4;13240;13224:3;:21::i;:::-;:37;:55;;13275:4;13224:55;;;13271:1;13264:4;:8;13224:55;13217:62;;12862:429;12397:901;;;;;;;;;:::o;7947:101::-;7995:8;8022:18;8026:3;8031:8;8022:3;:18::i;:::-;8016:24;;7947:101;;;:::o
Swarm Source
bzzr://1ed6d1fc200e55d133aebf6d7441e204fb481a89479519e82f6c19c8b86f72f1
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
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.