Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 61,822 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Turn Out | 15537205 | 830 days ago | IN | 0 ETH | 0.00074855 | ||||
Change Block Lim... | 15537198 | 830 days ago | IN | 0 ETH | 0.00034181 | ||||
Erc Tran | 15537186 | 830 days ago | IN | 20 ETH | 0.00689488 | ||||
Change Block Lim... | 15537156 | 830 days ago | IN | 0 ETH | 0.00027414 | ||||
Change Tran Addi... | 15537151 | 830 days ago | IN | 0 ETH | 0.00023511 | ||||
Change Token All... | 15537146 | 830 days ago | IN | 0 ETH | 0.00044267 | ||||
Change Tran Eth | 15537130 | 830 days ago | IN | 0 ETH | 0.00042867 | ||||
Change Mapping | 15537129 | 830 days ago | IN | 0 ETH | 0.00113492 | ||||
Turn Out | 10455687 | 1623 days ago | IN | 0 ETH | 0.00646979 | ||||
Turn Out | 10455687 | 1623 days ago | IN | 0 ETH | 0.00646979 | ||||
Turn Out | 10455687 | 1623 days ago | IN | 0 ETH | 0.00646979 | ||||
Turn Out | 10455687 | 1623 days ago | IN | 0 ETH | 0.00646979 | ||||
Turn Out | 10455687 | 1623 days ago | IN | 0 ETH | 0.00646979 | ||||
Change Mapping | 10455666 | 1623 days ago | IN | 0 ETH | 0.0025165 | ||||
Turn Out | 10454971 | 1624 days ago | IN | 0 ETH | 0.00404626 | ||||
Turn Out | 10454971 | 1624 days ago | IN | 0 ETH | 0.00404626 | ||||
Turn Out | 10454971 | 1624 days ago | IN | 0 ETH | 0.00404626 | ||||
Turn Out | 10454971 | 1624 days ago | IN | 0 ETH | 0.00404626 | ||||
Turn Out | 10454971 | 1624 days ago | IN | 0 ETH | 0.00404626 | ||||
Turn Out | 10454510 | 1624 days ago | IN | 0 ETH | 0.00388441 | ||||
Turn Out | 10454510 | 1624 days ago | IN | 0 ETH | 0.00388441 | ||||
Turn Out | 10454510 | 1624 days ago | IN | 0 ETH | 0.00388441 | ||||
Turn Out | 10454510 | 1624 days ago | IN | 0 ETH | 0.00388441 | ||||
Turn Out | 10454510 | 1624 days ago | IN | 0 ETH | 0.00388441 | ||||
Turn Out | 10454056 | 1624 days ago | IN | 0 ETH | 0.00247872 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
15537186 | 830 days ago | 20 ETH | ||||
15537186 | 830 days ago | Contract Creation | 0 ETH | |||
10449655 | 1624 days ago | 0.1 ETH | ||||
10449655 | 1624 days ago | 10 ETH | ||||
10449655 | 1624 days ago | Contract Creation | 0 ETH | |||
10449646 | 1624 days ago | 0.1 ETH | ||||
10449646 | 1624 days ago | 10 ETH | ||||
10449646 | 1624 days ago | Contract Creation | 0 ETH | |||
10449642 | 1624 days ago | 0.1 ETH | ||||
10449642 | 1624 days ago | 10 ETH | ||||
10449642 | 1624 days ago | Contract Creation | 0 ETH | |||
10449636 | 1624 days ago | 0.1 ETH | ||||
10449636 | 1624 days ago | 10 ETH | ||||
10449636 | 1624 days ago | Contract Creation | 0 ETH | |||
10449630 | 1624 days ago | 0.1 ETH | ||||
10449630 | 1624 days ago | 10 ETH | ||||
10449630 | 1624 days ago | Contract Creation | 0 ETH | |||
10449623 | 1624 days ago | 0.1 ETH | ||||
10449623 | 1624 days ago | 10 ETH | ||||
10449623 | 1624 days ago | Contract Creation | 0 ETH | |||
10449616 | 1624 days ago | 0.1 ETH | ||||
10449616 | 1624 days ago | 10 ETH | ||||
10449616 | 1624 days ago | Contract Creation | 0 ETH | |||
10449612 | 1624 days ago | 0.1 ETH | ||||
10449612 | 1624 days ago | 10 ETH |
Loading...
Loading
Contract Name:
NEST_3_OfferFactory
Compiler Version
v0.5.17+commit.d19bba13
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-06-09 */ /** *Submitted for verification at Etherscan.io on 2020-06-09 */ pragma solidity ^0.5.12; /** * @title Quotation data contract * @dev Verification of quotation contract */ contract NEST_3_OfferData { mapping (address => bool) addressMapping; // Deployed quote contracts NEST_2_Mapping mappingContract; // Mapping contract /** * @dev Initialization method * @param map Mapping contract address */ constructor(address map) public{ mappingContract = NEST_2_Mapping(map); } /** * @dev Initialization method * @param map Mapping contract address */ function changeMapping(address map) public onlyOwner { mappingContract = NEST_2_Mapping(map); } /** * @dev Initialization method * @param contractAddress Address of quotation contract * @return existence of quotation contract */ function checkContract(address contractAddress) public view returns (bool){ require(contractAddress != address(0x0)); return addressMapping[contractAddress]; } /** * @dev Add quote contract address * @param contractAddress Address of quotation contract */ function addContractAddress(address contractAddress) public { require(address(mappingContract.checkAddress("offerFactory")) == msg.sender); addressMapping[contractAddress] = true; } modifier onlyOwner(){ require(mappingContract.checkOwners(msg.sender) == true); _; } } /** * @title Quotation factory * @dev Quotation mining */ contract NEST_3_OfferFactory { using SafeMath for uint256; using address_make_payable for address; mapping(address => bool) tokenAllow; // Insured mining token NEST_2_Mapping mappingContract; // Mapping contract NEST_3_OfferData dataContract; // Data contract NEST_2_OfferPrice offerPrice; // Price contract NEST_3_OrePoolLogic orePoolLogic; // Mining contract NEST_NodeAssignment NNcontract; // NestNode contract ERC20 nestToken; // nestToken address abonusAddress; // Dividend pool address coderAddress; // Developer address uint256 miningETH = 10; // Quotation mining service charge mining proportion, 10 thousandths uint256 tranEth = 2; // Service charge proportion of the bill of lading, 2 ‰ uint256 blockLimit = 25; // Block interval upper limit uint256 tranAddition = 2; // Transaction bonus uint256 coderAmount = 5; // Developer ratio uint256 NNAmount = 15; // Guardian node proportion uint256 otherAmount = 80; // Distributable proportion uint256 leastEth = 10 ether; // Minimum offer eth uint256 offerSpan = 10 ether; // Quotation eth span // log Personal asset contract event offerTokenContractAddress(address contractAddress); // log Quotation contract, token address, ETH quantity, erc20 quantity event offerContractAddress(address contractAddress, address tokenAddress, uint256 ethAmount, uint256 erc20Amount); // log Transaction, transaction initiator, transaction token address, transaction token quantity, purchase token address, purchase token quantity, traded quotation contract address, traded user address event offerTran(address tranSender, address tranToken, uint256 tranAmount,address otherToken, uint256 otherAmount, address tradedContract, address tradedOwner); /** * @dev Initialization method * @param map Mapping contract address */ constructor (address map) public { mappingContract = NEST_2_Mapping(map); offerPrice = NEST_2_OfferPrice(address(mappingContract.checkAddress("offerPrice"))); orePoolLogic = NEST_3_OrePoolLogic(address(mappingContract.checkAddress("miningCalculation"))); abonusAddress = mappingContract.checkAddress("abonus"); nestToken = ERC20(mappingContract.checkAddress("nest")); NNcontract = NEST_NodeAssignment(address(mappingContract.checkAddress("nodeAssignment"))); coderAddress = mappingContract.checkAddress("coder"); dataContract = NEST_3_OfferData(address(mappingContract.checkAddress("offerData"))); } /** * @dev Change mapping contract * @param map Mapping contract address */ function changeMapping(address map) public onlyOwner { mappingContract = NEST_2_Mapping(map); offerPrice = NEST_2_OfferPrice(address(mappingContract.checkAddress("offerPrice"))); orePoolLogic = NEST_3_OrePoolLogic(address(mappingContract.checkAddress("miningCalculation"))); abonusAddress = mappingContract.checkAddress("abonus"); nestToken = ERC20(mappingContract.checkAddress("nest")); NNcontract = NEST_NodeAssignment(address(mappingContract.checkAddress("nodeAssignment"))); coderAddress = mappingContract.checkAddress("coder"); dataContract = NEST_3_OfferData(address(mappingContract.checkAddress("offerData"))); } /** * @dev Quotation mining * @param ethAmount ETH amount * @param erc20Amount erc20 amount * @param erc20Address erc20Token address */ function offer(uint256 ethAmount, uint256 erc20Amount, address erc20Address) public payable { require(address(msg.sender) == address(tx.origin)); uint256 ethMining = ethAmount.mul(miningETH).div(1000); require(msg.value == ethAmount.add(ethMining)); require(tokenAllow[erc20Address]); createOffer(ethAmount,erc20Amount,erc20Address,ethMining); orePoolLogic.oreDrawing.value(ethMining)(erc20Address); } /** * @dev Generate quote * @param ethAmount ETH amount * @param erc20Amount erc20 amount * @param erc20Address erc20Token address * @param mining Mining Commission */ function createOffer(uint256 ethAmount, uint256 erc20Amount, address erc20Address, uint256 mining) private { require(ethAmount >= leastEth); require(ethAmount % offerSpan == 0); require(erc20Amount % (ethAmount.div(offerSpan)) == 0); require(erc20Amount > 0); ERC20 token = ERC20(erc20Address); require(token.balanceOf(address(msg.sender)) >= erc20Amount); require(token.allowance(address(msg.sender), address(this)) >= erc20Amount); NEST_3_OfferContract newContract = new NEST_3_OfferContract(ethAmount,erc20Amount,erc20Address,mining,address(mappingContract)); dataContract.addContractAddress(address(newContract)); emit offerContractAddress(address(newContract), address(erc20Address), ethAmount, erc20Amount); token.transferFrom(address(msg.sender), address(newContract), erc20Amount); newContract.offerAssets.value(ethAmount)(); offerPrice.addPrice(ethAmount,erc20Amount,erc20Address); } /** * @dev Take out quoted assets * @param contractAddress Address of quotation contract */ function turnOut(address contractAddress) public { require(address(msg.sender) == address(tx.origin)); require(dataContract.checkContract(contractAddress)); NEST_3_OfferContract offerContract = NEST_3_OfferContract(contractAddress); offerContract.turnOut(); uint256 miningEth = offerContract.checkServiceCharge(); uint256 blockNum = offerContract.checkBlockNum(); address tokenAddress = offerContract.checkTokenAddress(); if (miningEth > 0) { uint256 miningAmount = orePoolLogic.mining(miningEth, blockNum, address(this),tokenAddress); uint256 coder = miningAmount.mul(coderAmount).div(100); uint256 NN = miningAmount.mul(NNAmount).div(100); uint256 other = miningAmount.mul(otherAmount).div(100); nestToken.transfer(address(tx.origin), other); require(nestToken.approve(address(NNcontract), NN)); NNcontract.bookKeeping(NN); nestToken.transfer(coderAddress, coder); } } /** * @dev Transfer erc20 to buy eth * @param ethAmount Offer ETH amount * @param tokenAmount Offer erc20 amount * @param contractAddress Address of quotation contract * @param tranEthAmount ETH amount of transaction * @param tranTokenAmount erc20 amount of transaction * @param tranTokenAddress erc20Token address */ function ethTran(uint256 ethAmount, uint256 tokenAmount, address contractAddress, uint256 tranEthAmount, uint256 tranTokenAmount, address tranTokenAddress) public payable { require(address(msg.sender) == address(tx.origin)); require(dataContract.checkContract(contractAddress)); require(ethAmount >= tranEthAmount.mul(tranAddition)); uint256 serviceCharge = tranEthAmount.mul(tranEth).div(1000); require(msg.value == ethAmount.add(tranEthAmount).add(serviceCharge)); require(tranEthAmount % offerSpan == 0); createOffer(ethAmount,tokenAmount,tranTokenAddress,0); NEST_3_OfferContract offerContract = NEST_3_OfferContract(contractAddress); offerContract.changeOfferEth.value(tranEthAmount)(tranTokenAmount, tranTokenAddress); offerPrice.changePrice(tranEthAmount,tranTokenAmount,tranTokenAddress,offerContract.checkBlockNum()); emit offerTran(address(tx.origin), address(0x0), tranEthAmount,address(tranTokenAddress),tranTokenAmount,contractAddress,offerContract.checkOwner()); repayEth(abonusAddress,serviceCharge); } /** * @dev Transfer eth to buy erc20 * @param ethAmount Offer ETH amount * @param tokenAmount Offer erc20 amount * @param contractAddress Address of quotation contract * @param tranEthAmount ETH amount of transaction * @param tranTokenAmount erc20 amount of transaction * @param tranTokenAddress erc20Token address */ function ercTran(uint256 ethAmount, uint256 tokenAmount, address contractAddress, uint256 tranEthAmount, uint256 tranTokenAmount, address tranTokenAddress) public payable { require(address(msg.sender) == address(tx.origin)); require(dataContract.checkContract(contractAddress)); require(ethAmount >= tranEthAmount.mul(tranAddition)); uint256 serviceCharge = tranEthAmount.mul(tranEth).div(1000); require(msg.value == ethAmount.add(serviceCharge)); require(tranEthAmount % offerSpan == 0); createOffer(ethAmount,tokenAmount,tranTokenAddress,0); NEST_3_OfferContract offerContract = NEST_3_OfferContract(contractAddress); ERC20 token = ERC20(tranTokenAddress); require(token.balanceOf(address(msg.sender)) >= tranTokenAmount); require(token.allowance(address(msg.sender), address(this)) >= tranTokenAmount); token.transferFrom(address(msg.sender), address(offerContract), tranTokenAmount); offerContract.changeOfferErc(tranEthAmount,tranTokenAmount, tranTokenAddress); offerPrice.changePrice(tranEthAmount,tranTokenAmount,tranTokenAddress,offerContract.checkBlockNum()); emit offerTran(address(tx.origin),address(tranTokenAddress),tranTokenAmount, address(0x0), tranEthAmount,contractAddress,offerContract.checkOwner()); repayEth(abonusAddress,serviceCharge); } function repayEth(address accountAddress, uint256 asset) private { address payable addr = accountAddress.make_payable(); addr.transfer(asset); } // View block interval upper limit function checkBlockLimit() public view returns(uint256) { return blockLimit; } // View quotation handling fee function checkMiningETH() public view returns (uint256) { return miningETH; } // View transaction charges function checkTranEth() public view returns (uint256) { return tranEth; } // View whether token allows mining function checkTokenAllow(address token) public view returns(bool) { return tokenAllow[token]; } // View transaction bonus function checkTranAddition() public view returns(uint256) { return tranAddition; } // View development allocation proportion function checkCoderAmount() public view returns(uint256) { return coderAmount; } // View the allocation proportion of guardian nodes function checkNNAmount() public view returns(uint256) { return NNAmount; } // View user assignable proportion function checkOtherAmount() public view returns(uint256) { return otherAmount; } // View minimum quote eth function checkleastEth() public view returns(uint256) { return leastEth; } // View quote eth span function checkOfferSpan() public view returns(uint256) { return offerSpan; } function changeMiningETH(uint256 num) public onlyOwner { miningETH = num; } function changeTranEth(uint256 num) public onlyOwner { tranEth = num; } function changeBlockLimit(uint256 num) public onlyOwner { blockLimit = num; } function changeTokenAllow(address token, bool allow) public onlyOwner { tokenAllow[token] = allow; } function changeTranAddition(uint256 num) public onlyOwner { require(num > 0); tranAddition = num; } function changeInitialRatio(uint256 coderNum, uint256 NNNum, uint256 otherNum) public onlyOwner { require(coderNum > 0 && coderNum <= 5); require(NNNum > 0 && coderNum <= 15); require(coderNum.add(NNNum).add(otherNum) == 100); coderAmount = coderNum; NNAmount = NNNum; otherAmount = otherNum; } function changeLeastEth(uint256 num) public onlyOwner { require(num > 0); leastEth = num; } function changeOfferSpan(uint256 num) public onlyOwner { require(num > 0); offerSpan = num; } modifier onlyOwner(){ require(mappingContract.checkOwners(msg.sender) == true); _; } } /** * @title Quotation contract */ contract NEST_3_OfferContract { using SafeMath for uint256; using address_make_payable for address; address owner; // Owner uint256 ethAmount; // ETH amount uint256 tokenAmount; // Token amount address tokenAddress; // Token address uint256 dealEthAmount; // Transaction eth quantity uint256 dealTokenAmount; // Transaction token quantity uint256 blockNum; // This quotation block uint256 serviceCharge; // Service Charge bool hadReceive = false; // Received NEST_2_Mapping mappingContract; // Mapping contract NEST_3_OfferFactory offerFactory; // Quotation factory /** * @dev initialization * @param _ethAmount Offer ETH amount * @param _tokenAmount Offer erc20 amount * @param _tokenAddress Token address * @param miningEth Service Charge * @param map Mapping contract */ constructor (uint256 _ethAmount, uint256 _tokenAmount, address _tokenAddress, uint256 miningEth,address map) public { mappingContract = NEST_2_Mapping(address(map)); offerFactory = NEST_3_OfferFactory(address(mappingContract.checkAddress("offerFactory"))); require(msg.sender == address(offerFactory)); owner = address(tx.origin); ethAmount = _ethAmount; tokenAmount = _tokenAmount; tokenAddress = _tokenAddress; dealEthAmount = _ethAmount; dealTokenAmount = _tokenAmount; serviceCharge = miningEth; blockNum = block.number; } function offerAssets() public payable onlyFactory { require(ERC20(tokenAddress).balanceOf(address(this)) >= tokenAmount); } function changeOfferEth(uint256 _tokenAmount, address _tokenAddress) public payable onlyFactory { require(checkContractState() == 0); require(dealEthAmount >= msg.value); require(dealTokenAmount >= _tokenAmount); require(_tokenAddress == tokenAddress); require(_tokenAmount == dealTokenAmount.mul(msg.value).div(dealEthAmount)); ERC20(tokenAddress).transfer(address(tx.origin), _tokenAmount); dealEthAmount = dealEthAmount.sub(msg.value); dealTokenAmount = dealTokenAmount.sub(_tokenAmount); } function changeOfferErc(uint256 _ethAmount, uint256 _tokenAmount, address _tokenAddress) public onlyFactory { require(checkContractState() == 0); require(dealEthAmount >= _ethAmount); require(dealTokenAmount >= _tokenAmount); require(_tokenAddress == tokenAddress); require(_tokenAmount == dealTokenAmount.mul(_ethAmount).div(dealEthAmount)); repayEth(address(tx.origin), _ethAmount); dealEthAmount = dealEthAmount.sub(_ethAmount); dealTokenAmount = dealTokenAmount.sub(_tokenAmount); } function repayEth(address accountAddress, uint256 asset) private { address payable addr = accountAddress.make_payable(); addr.transfer(asset); } function turnOut() public onlyFactory { require(address(tx.origin) == owner); require(checkContractState() == 1); require(hadReceive == false); uint256 ethAssets; uint256 tokenAssets; (ethAssets, tokenAssets,) = checkAssets(); repayEth(owner, ethAssets); ERC20(address(tokenAddress)).transfer(owner, tokenAssets); hadReceive = true; } function checkContractState() public view returns (uint256) { if (block.number.sub(blockNum) > offerFactory.checkBlockLimit()) { return 1; } return 0; } function checkDealAmount() public view returns(uint256 leftEth, uint256 leftErc20, address erc20Address) { return (dealEthAmount, dealTokenAmount, tokenAddress); } function checkPrice() public view returns(uint256 _ethAmount, uint256 _tokenAmount, address _tokenAddress) { return (ethAmount, tokenAmount, tokenAddress); } function checkAssets() public view returns(uint256 _ethAmount, uint256 _tokenAmount, address _tokenAddress) { return (address(this).balance, ERC20(address(tokenAddress)).balanceOf(address(this)), address(tokenAddress)); } function checkTokenAddress() public view returns(address){ return tokenAddress; } function checkOwner() public view returns(address) { return owner; } function checkBlockNum() public view returns (uint256) { return blockNum; } function checkServiceCharge() public view returns(uint256) { return serviceCharge; } function checkHadReceive() public view returns(bool) { return hadReceive; } modifier onlyFactory(){ require(msg.sender == address(mappingContract.checkAddress("offerFactory"))); _; } } /** * @title Price contract */ contract NEST_2_OfferPrice{ using SafeMath for uint256; using address_make_payable for address; NEST_2_Mapping mappingContract; // Mapping contract NEST_3_OfferFactory offerFactory; // Quotation factory contract struct Price { // Price structure uint256 ethAmount; // ETH amount uint256 erc20Amount; // erc20 amount uint256 blockNum; // Last quotation block number, current price block } struct addressPrice { // Token price information structure mapping(uint256 => Price) tokenPrice; // Token price, Block number = > price Price latestPrice; // Latest price } mapping(address => addressPrice) tokenInfo; // Token price information uint256 priceCost = 0.01 ether; // Price charge uint256 priceCostUser = 2; // Price expense user proportion uint256 priceCostAbonus = 8; // Proportion of price expense dividend pool mapping(uint256 => mapping(address => address)) blockAddress; // Last person of block quotation address abonusAddress; // Dividend pool // Real time price toekn, ETH quantity, erc20 quantity event nowTokenPrice(address a, uint256 b, uint256 c); /** * @dev Initialization method * @param map Mapping contract address */ constructor (address map) public { mappingContract = NEST_2_Mapping(address(map)); offerFactory = NEST_3_OfferFactory(address(mappingContract.checkAddress("offerFactory"))); abonusAddress = address(mappingContract.checkAddress("abonus")); } /** * @dev Initialization method * @param map Mapping contract address */ function changeMapping(address map) public onlyOwner { mappingContract = NEST_2_Mapping(map); offerFactory = NEST_3_OfferFactory(address(mappingContract.checkAddress("offerFactory"))); abonusAddress = address(mappingContract.checkAddress("abonus")); } /** * @dev Increase price * @param _ethAmount ETH amount * @param _tokenAmount Token amount * @param _tokenAddress Token address */ function addPrice(uint256 _ethAmount, uint256 _tokenAmount, address _tokenAddress) public onlyFactory { uint256 blockLimit = offerFactory.checkBlockLimit(); uint256 middleBlock = block.number.sub(blockLimit); uint256 priceBlock = tokenInfo[_tokenAddress].latestPrice.blockNum; while(priceBlock >= middleBlock || tokenInfo[_tokenAddress].tokenPrice[priceBlock].ethAmount == 0){ priceBlock = tokenInfo[_tokenAddress].tokenPrice[priceBlock].blockNum; if (priceBlock == 0) { break; } } tokenInfo[_tokenAddress].latestPrice.ethAmount = tokenInfo[_tokenAddress].tokenPrice[priceBlock].ethAmount; tokenInfo[_tokenAddress].latestPrice.erc20Amount = tokenInfo[_tokenAddress].tokenPrice[priceBlock].erc20Amount; tokenInfo[_tokenAddress].tokenPrice[block.number].ethAmount = tokenInfo[_tokenAddress].tokenPrice[block.number].ethAmount.add(_ethAmount); // 增加eth数 tokenInfo[_tokenAddress].tokenPrice[block.number].erc20Amount = tokenInfo[_tokenAddress].tokenPrice[block.number].erc20Amount.add(_tokenAmount); // 增加ercrc20数 if (tokenInfo[_tokenAddress].latestPrice.blockNum != block.number) { tokenInfo[_tokenAddress].tokenPrice[block.number].blockNum = tokenInfo[_tokenAddress].latestPrice.blockNum; // 记录上一次报价区块号 tokenInfo[_tokenAddress].latestPrice.blockNum = block.number; // 记录本次报价区块号 } blockAddress[block.number][_tokenAddress] = address(tx.origin); emit nowTokenPrice(_tokenAddress,tokenInfo[_tokenAddress].latestPrice.ethAmount, tokenInfo[_tokenAddress].latestPrice.erc20Amount); } /** * @dev Update price * @param _tokenAddress Token address * @return ethAmount ETH amount * @return erc20Amount Token amount * @return token Token address */ function updateAndCheckPriceNow(address _tokenAddress) public payable returns(uint256 ethAmount, uint256 erc20Amount, address token) { if (msg.sender != tx.origin && msg.sender != address(offerFactory)) { require(msg.value == priceCost); } uint256 blockLimit = offerFactory.checkBlockLimit(); uint256 middleBlock = block.number.sub(blockLimit); uint256 priceBlock = tokenInfo[_tokenAddress].latestPrice.blockNum; while(priceBlock >= middleBlock || tokenInfo[_tokenAddress].tokenPrice[priceBlock].ethAmount == 0){ priceBlock = tokenInfo[_tokenAddress].tokenPrice[priceBlock].blockNum; if (priceBlock == 0) { break; } } tokenInfo[_tokenAddress].latestPrice.ethAmount = tokenInfo[_tokenAddress].tokenPrice[priceBlock].ethAmount; tokenInfo[_tokenAddress].latestPrice.erc20Amount = tokenInfo[_tokenAddress].tokenPrice[priceBlock].erc20Amount; if (msg.value > 0) { repayEth(abonusAddress, msg.value.mul(priceCostAbonus).div(10)); repayEth(blockAddress[priceBlock][_tokenAddress], msg.value.mul(priceCostUser).div(10)); } return (tokenInfo[_tokenAddress].latestPrice.ethAmount,tokenInfo[_tokenAddress].latestPrice.erc20Amount, _tokenAddress); } function repayEth(address accountAddress, uint256 asset) private { address payable addr = accountAddress.make_payable(); addr.transfer(asset); } /** * @dev Change price * @param _ethAmount ETH amount * @param _tokenAmount Token amount * @param _tokenAddress Token address * @param blockNum Block number */ function changePrice(uint256 _ethAmount, uint256 _tokenAmount, address _tokenAddress, uint256 blockNum) public onlyFactory { tokenInfo[_tokenAddress].tokenPrice[blockNum].ethAmount = tokenInfo[_tokenAddress].tokenPrice[blockNum].ethAmount.sub(_ethAmount); tokenInfo[_tokenAddress].tokenPrice[blockNum].erc20Amount = tokenInfo[_tokenAddress].tokenPrice[blockNum].erc20Amount.sub(_tokenAmount); } function checkPriceForBlock(address tokenAddress, uint256 blockNum) public view returns (uint256 ethAmount, uint256 erc20Amount, uint256 frontBlock) { require(msg.sender == tx.origin); return (tokenInfo[tokenAddress].tokenPrice[blockNum].ethAmount, tokenInfo[tokenAddress].tokenPrice[blockNum].erc20Amount,tokenInfo[tokenAddress].tokenPrice[blockNum].blockNum); } function checkPriceNow(address tokenAddress) public view returns (uint256 ethAmount, uint256 erc20Amount,uint256 frontBlock) { require(msg.sender == tx.origin); return (tokenInfo[tokenAddress].latestPrice.ethAmount,tokenInfo[tokenAddress].latestPrice.erc20Amount,tokenInfo[tokenAddress].latestPrice.blockNum); } function checkPriceHistoricalAverage(address tokenAddress, uint256 blockNum) public view returns (uint256) { require(msg.sender == tx.origin); uint256 blockLimit = offerFactory.checkBlockLimit(); uint256 middleBlock = block.number.sub(blockLimit); uint256 priceBlock = tokenInfo[tokenAddress].latestPrice.blockNum; while(priceBlock >= middleBlock){ priceBlock = tokenInfo[tokenAddress].tokenPrice[priceBlock].blockNum; if (priceBlock == 0) { break; } } uint256 frontBlock = priceBlock; uint256 price = 0; uint256 priceTimes = 0; while(frontBlock >= blockNum){ uint256 erc20Amount = tokenInfo[tokenAddress].tokenPrice[frontBlock].erc20Amount; uint256 ethAmount = tokenInfo[tokenAddress].tokenPrice[frontBlock].ethAmount; price = price.add(erc20Amount.mul(1 ether).div(ethAmount)); priceTimes = priceTimes.add(1); frontBlock = tokenInfo[tokenAddress].tokenPrice[frontBlock].blockNum; if (frontBlock == 0) { break; } } return price.div(priceTimes); } function checkPriceForBlockPay(address tokenAddress, uint256 blockNum) public payable returns (uint256 ethAmount, uint256 erc20Amount, uint256 frontBlock) { require(msg.value == priceCost); require(tokenInfo[tokenAddress].tokenPrice[blockNum].ethAmount != 0); repayEth(abonusAddress, msg.value.mul(priceCostAbonus).div(10)); repayEth(blockAddress[blockNum][tokenAddress], msg.value.mul(priceCostUser).div(10)); return (tokenInfo[tokenAddress].tokenPrice[blockNum].ethAmount, tokenInfo[tokenAddress].tokenPrice[blockNum].erc20Amount,tokenInfo[tokenAddress].tokenPrice[blockNum].blockNum); } function checkPriceHistoricalAveragePay(address tokenAddress, uint256 blockNum) public payable returns (uint256) { require(msg.value == priceCost); uint256 blockLimit = offerFactory.checkBlockLimit(); uint256 middleBlock = block.number.sub(blockLimit); uint256 priceBlock = tokenInfo[tokenAddress].latestPrice.blockNum; while(priceBlock >= middleBlock){ priceBlock = tokenInfo[tokenAddress].tokenPrice[priceBlock].blockNum; if (priceBlock == 0) { break; } } repayEth(abonusAddress, msg.value.mul(priceCostAbonus).div(10)); repayEth(blockAddress[priceBlock][tokenAddress], msg.value.mul(priceCostUser).div(10)); uint256 frontBlock = priceBlock; uint256 price = 0; uint256 priceTimes = 0; while(frontBlock >= blockNum){ uint256 erc20Amount = tokenInfo[tokenAddress].tokenPrice[frontBlock].erc20Amount; uint256 ethAmount = tokenInfo[tokenAddress].tokenPrice[frontBlock].ethAmount; price = price.add(erc20Amount.mul(1 ether).div(ethAmount)); priceTimes = priceTimes.add(1); frontBlock = tokenInfo[tokenAddress].tokenPrice[frontBlock].blockNum; if (frontBlock == 0) { break; } } return price.div(priceTimes); } function checkLatestBlock(address token) public view returns(uint256) { return tokenInfo[token].latestPrice.blockNum; } function changePriceCost(uint256 amount) public onlyOwner { require(amount > 0); priceCost = amount; } function checkPriceCost() public view returns(uint256) { return priceCost; } function changePriceCostProportion(uint256 user, uint256 abonus) public onlyOwner { require(user.add(abonus) == 10); priceCostUser = user; priceCostAbonus = abonus; } function checkPriceCostProportion() public view returns(uint256 user, uint256 abonus) { return (priceCostUser, priceCostAbonus); } modifier onlyFactory(){ require(msg.sender == address(mappingContract.checkAddress("offerFactory"))); _; } modifier onlyOwner(){ require(mappingContract.checkOwners(msg.sender) == true); _; } } contract NEST_NodeAssignment { function bookKeeping(uint256 amount) public; } contract NEST_3_OrePoolLogic { function oreDrawing(address token) public payable; function mining(uint256 amount, uint256 blockNum, address target, address token) public returns(uint256); } contract NEST_2_Mapping { function checkAddress(string memory name) public view returns (address contractAddress); function checkOwners(address man) public view returns (bool); } library address_make_payable { function make_payable(address x) internal pure returns (address payable) { return address(uint160(x)); } } contract ERC20 { function totalSupply() public view returns (uint supply); function balanceOf( address who ) public view returns (uint value); function allowance( address owner, address spender ) public view returns (uint _allowance); function transfer( address to, uint256 value) external; function transferFrom( address from, address to, uint value) public; function approve( address spender, uint value ) public returns (bool ok); event Transfer( address indexed from, address indexed to, uint value); event Approval( address indexed owner, address indexed spender, uint value); } /** * @title SafeMath * @dev Math operations with safety checks that revert on error */ library SafeMath { int256 constant private INT256_MIN = -2**255; /** * @dev Multiplies two unsigned integers, reverts on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b); return c; } /** * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a); uint256 c = a - b; return c; } /** * @dev Adds two unsigned integers, reverts on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a); return c; } /** * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo), * reverts when dividing by zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0); return a % b; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"map","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":false,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"ethAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"erc20Amount","type":"uint256"}],"name":"offerContractAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"contractAddress","type":"address"}],"name":"offerTokenContractAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"tranSender","type":"address"},{"indexed":false,"internalType":"address","name":"tranToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"tranAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"otherToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"otherAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"tradedContract","type":"address"},{"indexed":false,"internalType":"address","name":"tradedOwner","type":"address"}],"name":"offerTran","type":"event"},{"constant":false,"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"changeBlockLimit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"coderNum","type":"uint256"},{"internalType":"uint256","name":"NNNum","type":"uint256"},{"internalType":"uint256","name":"otherNum","type":"uint256"}],"name":"changeInitialRatio","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"changeLeastEth","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"map","type":"address"}],"name":"changeMapping","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"changeMiningETH","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"changeOfferSpan","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bool","name":"allow","type":"bool"}],"name":"changeTokenAllow","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"changeTranAddition","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"changeTranEth","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"checkBlockLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"checkCoderAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"checkMiningETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"checkNNAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"checkOfferSpan","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"checkOtherAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"checkTokenAllow","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"checkTranAddition","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"checkTranEth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"checkleastEth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"ethAmount","type":"uint256"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tranEthAmount","type":"uint256"},{"internalType":"uint256","name":"tranTokenAmount","type":"uint256"},{"internalType":"address","name":"tranTokenAddress","type":"address"}],"name":"ercTran","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"ethAmount","type":"uint256"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tranEthAmount","type":"uint256"},{"internalType":"uint256","name":"tranTokenAmount","type":"uint256"},{"internalType":"address","name":"tranTokenAddress","type":"address"}],"name":"ethTran","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"ethAmount","type":"uint256"},{"internalType":"uint256","name":"erc20Amount","type":"uint256"},{"internalType":"address","name":"erc20Address","type":"address"}],"name":"offer","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"turnOut","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052600a6009556002600a556019600b556002600c556005600d55600f600e556050600f55678ac7230489e80000601055678ac7230489e800006011553480156200004c57600080fd5b506040516200356638038062003566833981810160405260208110156200007257600080fd5b5051600180546001600160a01b0319166001600160a01b038084169190911791829055604080516347f3bf4360e11b8152602060048201819052600a6024830152696f66666572507269636560b01b604483015291519390921692638fe77e86926064808201939291829003018186803b158015620000f057600080fd5b505afa15801562000105573d6000803e3d6000fd5b505050506040513d60208110156200011c57600080fd5b5051600380546001600160a01b0319166001600160a01b03928316179055600154604080516347f3bf4360e11b8152602060048201819052601160248301527036b4b734b733a1b0b631bab630ba34b7b760791b604483015291519290931692638fe77e869260648083019392829003018186803b1580156200019e57600080fd5b505afa158015620001b3573d6000803e3d6000fd5b505050506040513d6020811015620001ca57600080fd5b5051600480546001600160a01b0319166001600160a01b03928316178155600154604080516347f3bf4360e11b81526020938101849052600660248201526561626f6e757360d01b604482015290519190931692638fe77e86926064808301939192829003018186803b1580156200024157600080fd5b505afa15801562000256573d6000803e3d6000fd5b505050506040513d60208110156200026d57600080fd5b5051600780546001600160a01b0319166001600160a01b03928316179055600154604080516347f3bf4360e11b8152602060048083018290526024830152631b995cdd60e21b604483015291519290931692638fe77e869260648083019392829003018186803b158015620002e157600080fd5b505afa158015620002f6573d6000803e3d6000fd5b505050506040513d60208110156200030d57600080fd5b5051600680546001600160a01b0319166001600160a01b03928316179055600154604080516347f3bf4360e11b8152602060048201819052600e60248301526d1b9bd919505cdcda59db9b595b9d60921b604483015291519290931692638fe77e869260648083019392829003018186803b1580156200038c57600080fd5b505afa158015620003a1573d6000803e3d6000fd5b505050506040513d6020811015620003b857600080fd5b5051600580546001600160a01b0319166001600160a01b03928316178155600154604080516347f3bf4360e11b815260206004820181905260248201949094526431b7b232b960d91b604482015290519190931692638fe77e86926064808301939192829003018186803b1580156200043057600080fd5b505afa15801562000445573d6000803e3d6000fd5b505050506040513d60208110156200045c57600080fd5b5051600880546001600160a01b0319166001600160a01b03928316179055600154604080516347f3bf4360e11b815260206004820181905260096024830152686f666665724461746160b81b604483015291519290931692638fe77e869260648083019392829003018186803b158015620004d657600080fd5b505afa158015620004eb573d6000803e3d6000fd5b505050506040513d60208110156200050257600080fd5b5051600280546001600160a01b0319166001600160a01b039092169190911790555061303280620005346000396000f3fe6080604052600436106200015e5760003560e01c80639b54359611620000c7578063da5e882b1162000079578063da5e882b1462000464578063e5d69e3f146200047c578063e9ec551d14620004aa578063f0bbe1ba14620004e1578063f6a4932f146200050f578063faee70221462000544576200015e565b80639b5435961462000358578063a781e7f81462000370578063b3dad73614620003a7578063b86f255814620003d5578063c27237881462000403578063cbc7ef09146200044c576200015e565b80634139c74c11620001215780634139c74c146200025f57806352a8e51114620002a857806360a8c98f14620002d657806379ac269114620003105780637a3d77ff14620003285780638d7092e61462000340576200015e565b80630716d2071462000163578063187f3d9814620001a457806326a203cb14620001ce5780632a9300f014620001fc57806334e66f1e1462000247575b600080fd5b3480156200017057600080fd5b50620001a2600480360360408110156200018957600080fd5b506001600160a01b03813516906020013515156200055c565b005b348015620001b157600080fd5b50620001bc62000610565b60408051918252519081900360200190f35b348015620001db57600080fd5b50620001a260048036036020811015620001f457600080fd5b503562000616565b3480156200020957600080fd5b5062000233600480360360208110156200022257600080fd5b50356001600160a01b0316620006a4565b604080519115158252519081900360200190f35b3480156200025457600080fd5b50620001bc620006c2565b620001a2600480360360c08110156200027757600080fd5b508035906020810135906001600160a01b03604082013581169160608101359160808201359160a0013516620006c8565b348015620002b557600080fd5b50620001a260048036036020811015620002ce57600080fd5b503562000beb565b348015620002e357600080fd5b50620001a260048036036060811015620002fc57600080fd5b508035906020810135906040013562000c79565b3480156200031d57600080fd5b50620001bc62000d79565b3480156200033557600080fd5b50620001bc62000d7f565b3480156200034d57600080fd5b50620001bc62000d85565b3480156200036557600080fd5b50620001bc62000d8b565b3480156200037d57600080fd5b50620001a2600480360360208110156200039657600080fd5b50356001600160a01b031662000d91565b348015620003b457600080fd5b50620001a260048036036020811015620003cd57600080fd5b5035620012cc565b348015620003e257600080fd5b50620001a260048036036020811015620003fb57600080fd5b50356200135a565b620001a2600480360360c08110156200041b57600080fd5b508035906020810135906001600160a01b03604082013581169160608101359160808201359160a0013516620013f6565b3480156200045957600080fd5b50620001bc62001789565b3480156200047157600080fd5b50620001bc6200178f565b3480156200048957600080fd5b50620001a260048036036020811015620004a257600080fd5b503562001795565b348015620004b757600080fd5b50620001a260048036036020811015620004d057600080fd5b50356001600160a01b031662001831565b348015620004ee57600080fd5b50620001a2600480360360208110156200050757600080fd5b503562001d5d565b620001a2600480360360608110156200052757600080fd5b50803590602081013590604001356001600160a01b031662001df9565b3480156200055157600080fd5b50620001bc62001ee3565b6001546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b158015620005a857600080fd5b505afa158015620005bd573d6000803e3d6000fd5b505050506040513d6020811015620005d457600080fd5b50511515600114620005e557600080fd5b6001600160a01b03919091166000908152602081905260409020805460ff1916911515919091179055565b600c5490565b6001546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b1580156200066257600080fd5b505afa15801562000677573d6000803e3d6000fd5b505050506040513d60208110156200068e57600080fd5b505115156001146200069f57600080fd5b600a55565b6001600160a01b031660009081526020819052604090205460ff1690565b600a5490565b333214620006d557600080fd5b600254604080516335ec491560e21b81526001600160a01b0387811660048301529151919092169163d7b12454916024808301926020929190829003018186803b1580156200072357600080fd5b505afa15801562000738573d6000803e3d6000fd5b505050506040513d60208110156200074f57600080fd5b50516200075b57600080fd5b600c546200077190849063ffffffff62001ee916565b8610156200077e57600080fd5b6000620007ab6103e86200079e600a548762001ee990919063ffffffff16565b9063ffffffff62001f1d16565b9050620007bf878263ffffffff62001f4116565b3414620007cb57600080fd5b6011548481620007d757fe5b0615620007e357600080fd5b620007f2878784600062001f54565b604080516370a0823160e01b815233600482015290518691849186916001600160a01b038416916370a0823191602480820192602092909190829003018186803b1580156200084057600080fd5b505afa15801562000855573d6000803e3d6000fd5b505050506040513d60208110156200086c57600080fd5b505110156200087a57600080fd5b60408051636eb1769f60e11b8152336004820152306024820152905186916001600160a01b0384169163dd62ed3e91604480820192602092909190829003018186803b158015620008ca57600080fd5b505afa158015620008df573d6000803e3d6000fd5b505050506040513d6020811015620008f657600080fd5b505110156200090457600080fd5b604080516323b872dd60e01b81523360048201526001600160a01b038481166024830152604482018890529151918316916323b872dd9160648082019260009290919082900301818387803b1580156200095d57600080fd5b505af115801562000972573d6000803e3d6000fd5b5050604080516355ae99b360e11b8152600481018a9052602481018990526001600160a01b0388811660448301529151918616935063ab5d3366925060648082019260009290919082900301818387803b158015620009d057600080fd5b505af1158015620009e5573d6000803e3d6000fd5b50505050600360009054906101000a90046001600160a01b03166001600160a01b0316635d4d3bf7878787866001600160a01b0316637aae3c6d6040518163ffffffff1660e01b815260040160206040518083038186803b15801562000a4a57600080fd5b505afa15801562000a5f573d6000803e3d6000fd5b505050506040513d602081101562000a7657600080fd5b5051604080516001600160e01b031960e088901b168152600481019590955260248501939093526001600160a01b039091166044840152606483015251608480830192600092919082900301818387803b15801562000ad457600080fd5b505af115801562000ae9573d6000803e3d6000fd5b505050507f94863d1ccc5859b0296648c08f2f0df6fcef54806943ec24fd1809c5fbd867b032858760008a8c886001600160a01b031663cdbce03d6040518163ffffffff1660e01b815260040160206040518083038186803b15801562000b4f57600080fd5b505afa15801562000b64573d6000803e3d6000fd5b505050506040513d602081101562000b7b57600080fd5b5051604080516001600160a01b03988916815296881660208801528681019590955292861660608601526080850191909152841660a08401529290921660c082015290519081900360e00190a160075462000be0906001600160a01b03168462002338565b505050505050505050565b6001546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b15801562000c3757600080fd5b505afa15801562000c4c573d6000803e3d6000fd5b505050506040513d602081101562000c6357600080fd5b5051151560011462000c7457600080fd5b600b55565b6001546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b15801562000cc557600080fd5b505afa15801562000cda573d6000803e3d6000fd5b505050506040513d602081101562000cf157600080fd5b5051151560011462000d0257600080fd5b60008311801562000d14575060058311155b62000d1e57600080fd5b60008211801562000d305750600f8311155b62000d3a57600080fd5b62000d5e8162000d51858563ffffffff62001f4116565b9063ffffffff62001f4116565b60641462000d6b57600080fd5b600d92909255600e55600f55565b600e5490565b600d5490565b60115490565b600f5490565b6001546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b15801562000ddd57600080fd5b505afa15801562000df2573d6000803e3d6000fd5b505050506040513d602081101562000e0957600080fd5b5051151560011462000e1a57600080fd5b600180546001600160a01b0319166001600160a01b038381169190911791829055604080516347f3bf4360e11b8152602060048201819052600a6024830152696f66666572507269636560b01b604483015291519390921692638fe77e86926064808201939291829003018186803b15801562000e9657600080fd5b505afa15801562000eab573d6000803e3d6000fd5b505050506040513d602081101562000ec257600080fd5b5051600380546001600160a01b0319166001600160a01b03928316179055600154604080516347f3bf4360e11b8152602060048201819052601160248301527036b4b734b733a1b0b631bab630ba34b7b760791b604483015291519290931692638fe77e869260648083019392829003018186803b15801562000f4457600080fd5b505afa15801562000f59573d6000803e3d6000fd5b505050506040513d602081101562000f7057600080fd5b5051600480546001600160a01b0319166001600160a01b03928316178155600154604080516347f3bf4360e11b81526020938101849052600660248201526561626f6e757360d01b604482015290519190931692638fe77e86926064808301939192829003018186803b15801562000fe757600080fd5b505afa15801562000ffc573d6000803e3d6000fd5b505050506040513d60208110156200101357600080fd5b5051600780546001600160a01b0319166001600160a01b03928316179055600154604080516347f3bf4360e11b8152602060048083018290526024830152631b995cdd60e21b604483015291519290931692638fe77e869260648083019392829003018186803b1580156200108757600080fd5b505afa1580156200109c573d6000803e3d6000fd5b505050506040513d6020811015620010b357600080fd5b5051600680546001600160a01b0319166001600160a01b03928316179055600154604080516347f3bf4360e11b8152602060048201819052600e60248301526d1b9bd919505cdcda59db9b595b9d60921b604483015291519290931692638fe77e869260648083019392829003018186803b1580156200113257600080fd5b505afa15801562001147573d6000803e3d6000fd5b505050506040513d60208110156200115e57600080fd5b5051600580546001600160a01b0319166001600160a01b03928316178155600154604080516347f3bf4360e11b815260206004820181905260248201949094526431b7b232b960d91b604482015290519190931692638fe77e86926064808301939192829003018186803b158015620011d657600080fd5b505afa158015620011eb573d6000803e3d6000fd5b505050506040513d60208110156200120257600080fd5b5051600880546001600160a01b0319166001600160a01b03928316179055600154604080516347f3bf4360e11b815260206004820181905260096024830152686f666665724461746160b81b604483015291519290931692638fe77e869260648083019392829003018186803b1580156200127c57600080fd5b505afa15801562001291573d6000803e3d6000fd5b505050506040513d6020811015620012a857600080fd5b5051600280546001600160a01b0319166001600160a01b0390921691909117905550565b6001546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b1580156200131857600080fd5b505afa1580156200132d573d6000803e3d6000fd5b505050506040513d60208110156200134457600080fd5b505115156001146200135557600080fd5b600955565b6001546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b158015620013a657600080fd5b505afa158015620013bb573d6000803e3d6000fd5b505050506040513d6020811015620013d257600080fd5b50511515600114620013e357600080fd5b60008111620013f157600080fd5b600c55565b3332146200140357600080fd5b600254604080516335ec491560e21b81526001600160a01b0387811660048301529151919092169163d7b12454916024808301926020929190829003018186803b1580156200145157600080fd5b505afa15801562001466573d6000803e3d6000fd5b505050506040513d60208110156200147d57600080fd5b50516200148957600080fd5b600c546200149f90849063ffffffff62001ee916565b861015620014ac57600080fd5b6000620014cc6103e86200079e600a548762001ee990919063ffffffff16565b9050620014e58162000d51898763ffffffff62001f4116565b3414620014f157600080fd5b6011548481620014fd57fe5b06156200150957600080fd5b62001518878784600062001f54565b60408051637239b53360e11b8152600481018590526001600160a01b0384811660248301529151879283169163e4736a6691889160448082019260009290919082900301818588803b1580156200156e57600080fd5b505af115801562001583573d6000803e3d6000fd5b5050505050600360009054906101000a90046001600160a01b03166001600160a01b0316635d4d3bf7868686856001600160a01b0316637aae3c6d6040518163ffffffff1660e01b815260040160206040518083038186803b158015620015e957600080fd5b505afa158015620015fe573d6000803e3d6000fd5b505050506040513d60208110156200161557600080fd5b5051604080516001600160e01b031960e088901b168152600481019590955260248501939093526001600160a01b039091166044840152606483015251608480830192600092919082900301818387803b1580156200167357600080fd5b505af115801562001688573d6000803e3d6000fd5b505050507f94863d1ccc5859b0296648c08f2f0df6fcef54806943ec24fd1809c5fbd867b03260008786888b876001600160a01b031663cdbce03d6040518163ffffffff1660e01b815260040160206040518083038186803b158015620016ee57600080fd5b505afa15801562001703573d6000803e3d6000fd5b505050506040513d60208110156200171a57600080fd5b5051604080516001600160a01b03988916815296881660208801528681019590955292861660608601526080850191909152841660a08401529290921660c082015290519081900360e00190a16007546200177f906001600160a01b03168362002338565b5050505050505050565b600b5490565b60095490565b6001546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b158015620017e157600080fd5b505afa158015620017f6573d6000803e3d6000fd5b505050506040513d60208110156200180d57600080fd5b505115156001146200181e57600080fd5b600081116200182c57600080fd5b601055565b3332146200183e57600080fd5b600254604080516335ec491560e21b81526001600160a01b0384811660048301529151919092169163d7b12454916024808301926020929190829003018186803b1580156200188c57600080fd5b505afa158015620018a1573d6000803e3d6000fd5b505050506040513d6020811015620018b857600080fd5b5051620018c457600080fd5b6000819050806001600160a01b03166328a8ef1f6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200190557600080fd5b505af11580156200191a573d6000803e3d6000fd5b505050506000816001600160a01b031663b4f58a766040518163ffffffff1660e01b815260040160206040518083038186803b1580156200195a57600080fd5b505afa1580156200196f573d6000803e3d6000fd5b505050506040513d60208110156200198657600080fd5b505160408051637aae3c6d60e01b815290519192506000916001600160a01b03851691637aae3c6d916004808301926020929190829003018186803b158015620019cf57600080fd5b505afa158015620019e4573d6000803e3d6000fd5b505050506040513d6020811015620019fb57600080fd5b50516040805163027860a760e11b815290519192506000916001600160a01b038616916304f0c14e916004808301926020929190829003018186803b15801562001a4457600080fd5b505afa15801562001a59573d6000803e3d6000fd5b505050506040513d602081101562001a7057600080fd5b50519050821562001d56576004805460408051635e54b15760e01b8152928301869052602483018590523060448401526001600160a01b03848116606485015290516000939190921691635e54b1579160848082019260209290919082900301818787803b15801562001ae257600080fd5b505af115801562001af7573d6000803e3d6000fd5b505050506040513d602081101562001b0e57600080fd5b5051600d5490915060009062001b34906064906200079e90859063ffffffff62001ee916565b9050600062001b5560646200079e600e548662001ee990919063ffffffff16565b9050600062001b7660646200079e600f548762001ee990919063ffffffff16565b6006546040805163a9059cbb60e01b81523260048201526024810184905290519293506001600160a01b039091169163a9059cbb9160448082019260009290919082900301818387803b15801562001bcd57600080fd5b505af115801562001be2573d6000803e3d6000fd5b50506006546005546040805163095ea7b360e01b81526001600160a01b03928316600482015260248101889052905191909216935063095ea7b3925060448083019260209291908290030181600087803b15801562001c4057600080fd5b505af115801562001c55573d6000803e3d6000fd5b505050506040513d602081101562001c6c57600080fd5b505162001c7857600080fd5b60055460408051634062602560e01b81526004810185905290516001600160a01b039092169163406260259160248082019260009290919082900301818387803b15801562001cc657600080fd5b505af115801562001cdb573d6000803e3d6000fd5b50506006546008546040805163a9059cbb60e01b81526001600160a01b03928316600482015260248101899052905191909216935063a9059cbb9250604480830192600092919082900301818387803b15801562001d3857600080fd5b505af115801562001d4d573d6000803e3d6000fd5b50505050505050505b5050505050565b6001546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b15801562001da957600080fd5b505afa15801562001dbe573d6000803e3d6000fd5b505050506040513d602081101562001dd557600080fd5b5051151560011462001de657600080fd5b6000811162001df457600080fd5b601155565b33321462001e0657600080fd5b600062001e266103e86200079e6009548762001ee990919063ffffffff16565b905062001e3a848263ffffffff62001f4116565b341462001e4657600080fd5b6001600160a01b03821660009081526020819052604090205460ff1662001e6c57600080fd5b62001e7a8484848462001f54565b6004805460408051631a2f46d160e31b81526001600160a01b03868116948201949094529051929091169163d17a3688918491602480830192600092919082900301818588803b15801562001ece57600080fd5b505af115801562000be0573d6000803e3d6000fd5b60105490565b60008262001efa5750600062001f17565b8282028284828162001f0857fe5b041462001f1457600080fd5b90505b92915050565b600080821162001f2c57600080fd5b600082848162001f3857fe5b04949350505050565b60008282018381101562001f1457600080fd5b60105484101562001f6457600080fd5b601154848162001f7057fe5b061562001f7c57600080fd5b60115462001f9290859063ffffffff62001f1d16565b838162001f9b57fe5b061562001fa757600080fd5b6000831162001fb557600080fd5b604080516370a0823160e01b81523360048201529051839185916001600160a01b038416916370a08231916024808301926020929190829003018186803b1580156200200057600080fd5b505afa15801562002015573d6000803e3d6000fd5b505050506040513d60208110156200202c57600080fd5b505110156200203a57600080fd5b60408051636eb1769f60e11b8152336004820152306024820152905185916001600160a01b0384169163dd62ed3e91604480820192602092909190829003018186803b1580156200208a57600080fd5b505afa1580156200209f573d6000803e3d6000fd5b505050506040513d6020811015620020b657600080fd5b50511015620020c457600080fd5b60015460405160009187918791879187916001600160a01b031690620020ea9062002391565b94855260208501939093526001600160a01b03918216604080860191909152606085019190915291166080830152519081900360a001906000f08015801562002137573d6000803e3d6000fd5b506002546040805163b11ce2db60e01b81526001600160a01b038085166004830152915193945091169163b11ce2db9160248082019260009290919082900301818387803b1580156200218957600080fd5b505af11580156200219e573d6000803e3d6000fd5b5050604080516001600160a01b038086168252881660208201528082018a90526060810189905290517fccacfd869caa3e2e845afe470f00dcb777e77639814c6c96bb320b69885e63ce9350908190036080019150a1604080516323b872dd60e01b81523360048201526001600160a01b038381166024830152604482018890529151918416916323b872dd9160648082019260009290919082900301818387803b1580156200224d57600080fd5b505af115801562002262573d6000803e3d6000fd5b50505050806001600160a01b03166308ad57b5876040518263ffffffff1660e01b81526004016000604051808303818588803b158015620022a257600080fd5b505af1158015620022b7573d6000803e3d6000fd5b5050600354604080516336af3c8160e01b8152600481018c9052602481018b90526001600160a01b038a8116604483015291519190921694506336af3c8193506064808301935060009282900301818387803b1580156200231757600080fd5b505af11580156200232c573d6000803e3d6000fd5b50505050505050505050565b60006200234e836001600160a01b03166200238e565b6040519091506001600160a01b0382169083156108fc029084906000818181858888f1935050505015801562002388573d6000803e3d6000fd5b50505050565b90565b610c5e80620023a08339019056fe60806040526008805460ff1916905534801561001a57600080fd5b50604051610c5e380380610c5e833981810160405260a081101561003d57600080fd5b508051602080830151604080850151606086015160809096015160088054610100600160a81b0319166101006001600160a01b038085168202929092179283905585516347f3bf4360e11b815260048101899052600c60248201526b6f66666572466163746f727960a01b60448201529551989996989497939592041692638fe77e8692606480840193919291829003018186803b1580156100de57600080fd5b505afa1580156100f2573d6000803e3d6000fd5b505050506040513d602081101561010857600080fd5b5051600980546001600160a01b0319166001600160a01b03928316179081905516331461013457600080fd5b50600080546001600160a01b0319908116321790915560018590556002849055600380546001600160a01b0394909416939091169290921790915560049290925560055560075543600655610ad08061018e6000396000f3fe6080604052600436106100c25760003560e01c80637aae3c6d1161007f578063b4f58a7611610059578063b4f58a76146101f8578063b6bc03541461020d578063cdbce03d14610236578063e4736a661461024b576100c2565b80637aae3c6d1461018f5780638fc3047d146101a4578063ab5d3366146101b9576100c2565b806304f0c14e146100c757806308ad57b5146100f857806313e24862146101025780631b1bddc91461012957806328a8ef1f1461016557806371aa8fd91461017a575b600080fd5b3480156100d357600080fd5b506100dc610277565b604080516001600160a01b039092168252519081900360200190f35b610100610287565b005b34801561010e57600080fd5b506101176103b9565b60408051918252519081900360200190f35b34801561013557600080fd5b5061013e610452565b6040805193845260208401929092526001600160a01b031682820152519081900360600190f35b34801561017157600080fd5b50610100610469565b34801561018657600080fd5b5061013e6105f5565b34801561019b57600080fd5b5061011761068a565b3480156101b057600080fd5b5061013e610690565b3480156101c557600080fd5b50610100600480360360608110156101dc57600080fd5b50803590602081013590604001356001600160a01b03166106a7565b34801561020457600080fd5b50610117610809565b34801561021957600080fd5b5061022261080f565b604080519115158252519081900360200190f35b34801561024257600080fd5b506100dc610818565b6101006004803603604081101561026157600080fd5b50803590602001356001600160a01b0316610827565b6003546001600160a01b03165b90565b600854604080516347f3bf4360e11b8152602060048201819052600c60248301526b6f66666572466163746f727960a01b604483015291516101009093046001600160a01b031692638fe77e8692606480840193919291829003018186803b1580156102f257600080fd5b505afa158015610306573d6000803e3d6000fd5b505050506040513d602081101561031c57600080fd5b50516001600160a01b0316331461033257600080fd5b600254600354604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561038057600080fd5b505afa158015610394573d6000803e3d6000fd5b505050506040513d60208110156103aa57600080fd5b505110156103b757600080fd5b565b6009546040805163cbc7ef0960e01b815290516000926001600160a01b03169163cbc7ef09916004808301926020929190829003018186803b1580156103fe57600080fd5b505afa158015610412573d6000803e3d6000fd5b505050506040513d602081101561042857600080fd5b505160065461043e90439063ffffffff6109de16565b111561044c57506001610284565b50600090565b6004546005546003546001600160a01b0316909192565b600854604080516347f3bf4360e11b8152602060048201819052600c60248301526b6f66666572466163746f727960a01b604483015291516101009093046001600160a01b031692638fe77e8692606480840193919291829003018186803b1580156104d457600080fd5b505afa1580156104e8573d6000803e3d6000fd5b505050506040513d60208110156104fe57600080fd5b50516001600160a01b0316331461051457600080fd5b6000546001600160a01b0316321461052b57600080fd5b6105336103b9565b60011461053f57600080fd5b60085460ff161561054f57600080fd5b60008061055a6105f5565b506000549193509150610576906001600160a01b0316836109f8565b600354600080546040805163a9059cbb60e01b81526001600160a01b039283166004820152602481018690529051919093169263a9059cbb92604480830193919282900301818387803b1580156105cc57600080fd5b505af11580156105e0573d6000803e3d6000fd5b50506008805460ff1916600117905550505050565b600354604080516370a0823160e01b815230600482015290516000928392839247926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561064657600080fd5b505afa15801561065a573d6000803e3d6000fd5b505050506040513d602081101561067057600080fd5b505160035491945092506001600160a01b03169050909192565b60065490565b6001546002546003546001600160a01b0316909192565b600854604080516347f3bf4360e11b8152602060048201819052600c60248301526b6f66666572466163746f727960a01b604483015291516101009093046001600160a01b031692638fe77e8692606480840193919291829003018186803b15801561071257600080fd5b505afa158015610726573d6000803e3d6000fd5b505050506040513d602081101561073c57600080fd5b50516001600160a01b0316331461075257600080fd5b61075a6103b9565b1561076457600080fd5b82600454101561077357600080fd5b81600554101561078257600080fd5b6003546001600160a01b0382811691161461079c57600080fd5b6107c36004546107b785600554610a4b90919063ffffffff16565b9063ffffffff610a7916565b82146107ce57600080fd5b6107d832846109f8565b6004546107eb908463ffffffff6109de16565b600455600554610801908363ffffffff6109de16565b600555505050565b60075490565b60085460ff1690565b6000546001600160a01b031690565b600854604080516347f3bf4360e11b8152602060048201819052600c60248301526b6f66666572466163746f727960a01b604483015291516101009093046001600160a01b031692638fe77e8692606480840193919291829003018186803b15801561089257600080fd5b505afa1580156108a6573d6000803e3d6000fd5b505050506040513d60208110156108bc57600080fd5b50516001600160a01b031633146108d257600080fd5b6108da6103b9565b156108e457600080fd5b3460045410156108f357600080fd5b81600554101561090257600080fd5b6003546001600160a01b0382811691161461091c57600080fd5b6109376004546107b734600554610a4b90919063ffffffff16565b821461094257600080fd5b6003546040805163a9059cbb60e01b81523260048201526024810185905290516001600160a01b039092169163a9059cbb9160448082019260009290919082900301818387803b15801561099557600080fd5b505af11580156109a9573d6000803e3d6000fd5b50506004546109c1925090503463ffffffff6109de16565b6004556005546109d7908363ffffffff6109de16565b6005555050565b6000828211156109ed57600080fd5b508082035b92915050565b6000610a0c836001600160a01b0316610284565b6040519091506001600160a01b0382169083156108fc029084906000818181858888f19350505050158015610a45573d6000803e3d6000fd5b50505050565b600082610a5a575060006109f2565b82820282848281610a6757fe5b0414610a7257600080fd5b9392505050565b6000808211610a8757600080fd5b6000828481610a9257fe5b0494935050505056fea265627a7a723158201cb3b3a6bc39aa2268040c9e5bd5824f82ca28f71fdd5aa97d7006d3c8f3488764736f6c63430005110032a265627a7a7231582009ede0439f6bd9257a4f561eeb5bcdb4d3cfff7a7b68a664378a18b0791aaaee64736f6c634300051100320000000000000000000000005e7db2ffc5b2c7c47103e4f21c702bc402603fbf
Deployed Bytecode
0x6080604052600436106200015e5760003560e01c80639b54359611620000c7578063da5e882b1162000079578063da5e882b1462000464578063e5d69e3f146200047c578063e9ec551d14620004aa578063f0bbe1ba14620004e1578063f6a4932f146200050f578063faee70221462000544576200015e565b80639b5435961462000358578063a781e7f81462000370578063b3dad73614620003a7578063b86f255814620003d5578063c27237881462000403578063cbc7ef09146200044c576200015e565b80634139c74c11620001215780634139c74c146200025f57806352a8e51114620002a857806360a8c98f14620002d657806379ac269114620003105780637a3d77ff14620003285780638d7092e61462000340576200015e565b80630716d2071462000163578063187f3d9814620001a457806326a203cb14620001ce5780632a9300f014620001fc57806334e66f1e1462000247575b600080fd5b3480156200017057600080fd5b50620001a2600480360360408110156200018957600080fd5b506001600160a01b03813516906020013515156200055c565b005b348015620001b157600080fd5b50620001bc62000610565b60408051918252519081900360200190f35b348015620001db57600080fd5b50620001a260048036036020811015620001f457600080fd5b503562000616565b3480156200020957600080fd5b5062000233600480360360208110156200022257600080fd5b50356001600160a01b0316620006a4565b604080519115158252519081900360200190f35b3480156200025457600080fd5b50620001bc620006c2565b620001a2600480360360c08110156200027757600080fd5b508035906020810135906001600160a01b03604082013581169160608101359160808201359160a0013516620006c8565b348015620002b557600080fd5b50620001a260048036036020811015620002ce57600080fd5b503562000beb565b348015620002e357600080fd5b50620001a260048036036060811015620002fc57600080fd5b508035906020810135906040013562000c79565b3480156200031d57600080fd5b50620001bc62000d79565b3480156200033557600080fd5b50620001bc62000d7f565b3480156200034d57600080fd5b50620001bc62000d85565b3480156200036557600080fd5b50620001bc62000d8b565b3480156200037d57600080fd5b50620001a2600480360360208110156200039657600080fd5b50356001600160a01b031662000d91565b348015620003b457600080fd5b50620001a260048036036020811015620003cd57600080fd5b5035620012cc565b348015620003e257600080fd5b50620001a260048036036020811015620003fb57600080fd5b50356200135a565b620001a2600480360360c08110156200041b57600080fd5b508035906020810135906001600160a01b03604082013581169160608101359160808201359160a0013516620013f6565b3480156200045957600080fd5b50620001bc62001789565b3480156200047157600080fd5b50620001bc6200178f565b3480156200048957600080fd5b50620001a260048036036020811015620004a257600080fd5b503562001795565b348015620004b757600080fd5b50620001a260048036036020811015620004d057600080fd5b50356001600160a01b031662001831565b348015620004ee57600080fd5b50620001a2600480360360208110156200050757600080fd5b503562001d5d565b620001a2600480360360608110156200052757600080fd5b50803590602081013590604001356001600160a01b031662001df9565b3480156200055157600080fd5b50620001bc62001ee3565b6001546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b158015620005a857600080fd5b505afa158015620005bd573d6000803e3d6000fd5b505050506040513d6020811015620005d457600080fd5b50511515600114620005e557600080fd5b6001600160a01b03919091166000908152602081905260409020805460ff1916911515919091179055565b600c5490565b6001546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b1580156200066257600080fd5b505afa15801562000677573d6000803e3d6000fd5b505050506040513d60208110156200068e57600080fd5b505115156001146200069f57600080fd5b600a55565b6001600160a01b031660009081526020819052604090205460ff1690565b600a5490565b333214620006d557600080fd5b600254604080516335ec491560e21b81526001600160a01b0387811660048301529151919092169163d7b12454916024808301926020929190829003018186803b1580156200072357600080fd5b505afa15801562000738573d6000803e3d6000fd5b505050506040513d60208110156200074f57600080fd5b50516200075b57600080fd5b600c546200077190849063ffffffff62001ee916565b8610156200077e57600080fd5b6000620007ab6103e86200079e600a548762001ee990919063ffffffff16565b9063ffffffff62001f1d16565b9050620007bf878263ffffffff62001f4116565b3414620007cb57600080fd5b6011548481620007d757fe5b0615620007e357600080fd5b620007f2878784600062001f54565b604080516370a0823160e01b815233600482015290518691849186916001600160a01b038416916370a0823191602480820192602092909190829003018186803b1580156200084057600080fd5b505afa15801562000855573d6000803e3d6000fd5b505050506040513d60208110156200086c57600080fd5b505110156200087a57600080fd5b60408051636eb1769f60e11b8152336004820152306024820152905186916001600160a01b0384169163dd62ed3e91604480820192602092909190829003018186803b158015620008ca57600080fd5b505afa158015620008df573d6000803e3d6000fd5b505050506040513d6020811015620008f657600080fd5b505110156200090457600080fd5b604080516323b872dd60e01b81523360048201526001600160a01b038481166024830152604482018890529151918316916323b872dd9160648082019260009290919082900301818387803b1580156200095d57600080fd5b505af115801562000972573d6000803e3d6000fd5b5050604080516355ae99b360e11b8152600481018a9052602481018990526001600160a01b0388811660448301529151918616935063ab5d3366925060648082019260009290919082900301818387803b158015620009d057600080fd5b505af1158015620009e5573d6000803e3d6000fd5b50505050600360009054906101000a90046001600160a01b03166001600160a01b0316635d4d3bf7878787866001600160a01b0316637aae3c6d6040518163ffffffff1660e01b815260040160206040518083038186803b15801562000a4a57600080fd5b505afa15801562000a5f573d6000803e3d6000fd5b505050506040513d602081101562000a7657600080fd5b5051604080516001600160e01b031960e088901b168152600481019590955260248501939093526001600160a01b039091166044840152606483015251608480830192600092919082900301818387803b15801562000ad457600080fd5b505af115801562000ae9573d6000803e3d6000fd5b505050507f94863d1ccc5859b0296648c08f2f0df6fcef54806943ec24fd1809c5fbd867b032858760008a8c886001600160a01b031663cdbce03d6040518163ffffffff1660e01b815260040160206040518083038186803b15801562000b4f57600080fd5b505afa15801562000b64573d6000803e3d6000fd5b505050506040513d602081101562000b7b57600080fd5b5051604080516001600160a01b03988916815296881660208801528681019590955292861660608601526080850191909152841660a08401529290921660c082015290519081900360e00190a160075462000be0906001600160a01b03168462002338565b505050505050505050565b6001546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b15801562000c3757600080fd5b505afa15801562000c4c573d6000803e3d6000fd5b505050506040513d602081101562000c6357600080fd5b5051151560011462000c7457600080fd5b600b55565b6001546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b15801562000cc557600080fd5b505afa15801562000cda573d6000803e3d6000fd5b505050506040513d602081101562000cf157600080fd5b5051151560011462000d0257600080fd5b60008311801562000d14575060058311155b62000d1e57600080fd5b60008211801562000d305750600f8311155b62000d3a57600080fd5b62000d5e8162000d51858563ffffffff62001f4116565b9063ffffffff62001f4116565b60641462000d6b57600080fd5b600d92909255600e55600f55565b600e5490565b600d5490565b60115490565b600f5490565b6001546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b15801562000ddd57600080fd5b505afa15801562000df2573d6000803e3d6000fd5b505050506040513d602081101562000e0957600080fd5b5051151560011462000e1a57600080fd5b600180546001600160a01b0319166001600160a01b038381169190911791829055604080516347f3bf4360e11b8152602060048201819052600a6024830152696f66666572507269636560b01b604483015291519390921692638fe77e86926064808201939291829003018186803b15801562000e9657600080fd5b505afa15801562000eab573d6000803e3d6000fd5b505050506040513d602081101562000ec257600080fd5b5051600380546001600160a01b0319166001600160a01b03928316179055600154604080516347f3bf4360e11b8152602060048201819052601160248301527036b4b734b733a1b0b631bab630ba34b7b760791b604483015291519290931692638fe77e869260648083019392829003018186803b15801562000f4457600080fd5b505afa15801562000f59573d6000803e3d6000fd5b505050506040513d602081101562000f7057600080fd5b5051600480546001600160a01b0319166001600160a01b03928316178155600154604080516347f3bf4360e11b81526020938101849052600660248201526561626f6e757360d01b604482015290519190931692638fe77e86926064808301939192829003018186803b15801562000fe757600080fd5b505afa15801562000ffc573d6000803e3d6000fd5b505050506040513d60208110156200101357600080fd5b5051600780546001600160a01b0319166001600160a01b03928316179055600154604080516347f3bf4360e11b8152602060048083018290526024830152631b995cdd60e21b604483015291519290931692638fe77e869260648083019392829003018186803b1580156200108757600080fd5b505afa1580156200109c573d6000803e3d6000fd5b505050506040513d6020811015620010b357600080fd5b5051600680546001600160a01b0319166001600160a01b03928316179055600154604080516347f3bf4360e11b8152602060048201819052600e60248301526d1b9bd919505cdcda59db9b595b9d60921b604483015291519290931692638fe77e869260648083019392829003018186803b1580156200113257600080fd5b505afa15801562001147573d6000803e3d6000fd5b505050506040513d60208110156200115e57600080fd5b5051600580546001600160a01b0319166001600160a01b03928316178155600154604080516347f3bf4360e11b815260206004820181905260248201949094526431b7b232b960d91b604482015290519190931692638fe77e86926064808301939192829003018186803b158015620011d657600080fd5b505afa158015620011eb573d6000803e3d6000fd5b505050506040513d60208110156200120257600080fd5b5051600880546001600160a01b0319166001600160a01b03928316179055600154604080516347f3bf4360e11b815260206004820181905260096024830152686f666665724461746160b81b604483015291519290931692638fe77e869260648083019392829003018186803b1580156200127c57600080fd5b505afa15801562001291573d6000803e3d6000fd5b505050506040513d6020811015620012a857600080fd5b5051600280546001600160a01b0319166001600160a01b0390921691909117905550565b6001546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b1580156200131857600080fd5b505afa1580156200132d573d6000803e3d6000fd5b505050506040513d60208110156200134457600080fd5b505115156001146200135557600080fd5b600955565b6001546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b158015620013a657600080fd5b505afa158015620013bb573d6000803e3d6000fd5b505050506040513d6020811015620013d257600080fd5b50511515600114620013e357600080fd5b60008111620013f157600080fd5b600c55565b3332146200140357600080fd5b600254604080516335ec491560e21b81526001600160a01b0387811660048301529151919092169163d7b12454916024808301926020929190829003018186803b1580156200145157600080fd5b505afa15801562001466573d6000803e3d6000fd5b505050506040513d60208110156200147d57600080fd5b50516200148957600080fd5b600c546200149f90849063ffffffff62001ee916565b861015620014ac57600080fd5b6000620014cc6103e86200079e600a548762001ee990919063ffffffff16565b9050620014e58162000d51898763ffffffff62001f4116565b3414620014f157600080fd5b6011548481620014fd57fe5b06156200150957600080fd5b62001518878784600062001f54565b60408051637239b53360e11b8152600481018590526001600160a01b0384811660248301529151879283169163e4736a6691889160448082019260009290919082900301818588803b1580156200156e57600080fd5b505af115801562001583573d6000803e3d6000fd5b5050505050600360009054906101000a90046001600160a01b03166001600160a01b0316635d4d3bf7868686856001600160a01b0316637aae3c6d6040518163ffffffff1660e01b815260040160206040518083038186803b158015620015e957600080fd5b505afa158015620015fe573d6000803e3d6000fd5b505050506040513d60208110156200161557600080fd5b5051604080516001600160e01b031960e088901b168152600481019590955260248501939093526001600160a01b039091166044840152606483015251608480830192600092919082900301818387803b1580156200167357600080fd5b505af115801562001688573d6000803e3d6000fd5b505050507f94863d1ccc5859b0296648c08f2f0df6fcef54806943ec24fd1809c5fbd867b03260008786888b876001600160a01b031663cdbce03d6040518163ffffffff1660e01b815260040160206040518083038186803b158015620016ee57600080fd5b505afa15801562001703573d6000803e3d6000fd5b505050506040513d60208110156200171a57600080fd5b5051604080516001600160a01b03988916815296881660208801528681019590955292861660608601526080850191909152841660a08401529290921660c082015290519081900360e00190a16007546200177f906001600160a01b03168362002338565b5050505050505050565b600b5490565b60095490565b6001546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b158015620017e157600080fd5b505afa158015620017f6573d6000803e3d6000fd5b505050506040513d60208110156200180d57600080fd5b505115156001146200181e57600080fd5b600081116200182c57600080fd5b601055565b3332146200183e57600080fd5b600254604080516335ec491560e21b81526001600160a01b0384811660048301529151919092169163d7b12454916024808301926020929190829003018186803b1580156200188c57600080fd5b505afa158015620018a1573d6000803e3d6000fd5b505050506040513d6020811015620018b857600080fd5b5051620018c457600080fd5b6000819050806001600160a01b03166328a8ef1f6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200190557600080fd5b505af11580156200191a573d6000803e3d6000fd5b505050506000816001600160a01b031663b4f58a766040518163ffffffff1660e01b815260040160206040518083038186803b1580156200195a57600080fd5b505afa1580156200196f573d6000803e3d6000fd5b505050506040513d60208110156200198657600080fd5b505160408051637aae3c6d60e01b815290519192506000916001600160a01b03851691637aae3c6d916004808301926020929190829003018186803b158015620019cf57600080fd5b505afa158015620019e4573d6000803e3d6000fd5b505050506040513d6020811015620019fb57600080fd5b50516040805163027860a760e11b815290519192506000916001600160a01b038616916304f0c14e916004808301926020929190829003018186803b15801562001a4457600080fd5b505afa15801562001a59573d6000803e3d6000fd5b505050506040513d602081101562001a7057600080fd5b50519050821562001d56576004805460408051635e54b15760e01b8152928301869052602483018590523060448401526001600160a01b03848116606485015290516000939190921691635e54b1579160848082019260209290919082900301818787803b15801562001ae257600080fd5b505af115801562001af7573d6000803e3d6000fd5b505050506040513d602081101562001b0e57600080fd5b5051600d5490915060009062001b34906064906200079e90859063ffffffff62001ee916565b9050600062001b5560646200079e600e548662001ee990919063ffffffff16565b9050600062001b7660646200079e600f548762001ee990919063ffffffff16565b6006546040805163a9059cbb60e01b81523260048201526024810184905290519293506001600160a01b039091169163a9059cbb9160448082019260009290919082900301818387803b15801562001bcd57600080fd5b505af115801562001be2573d6000803e3d6000fd5b50506006546005546040805163095ea7b360e01b81526001600160a01b03928316600482015260248101889052905191909216935063095ea7b3925060448083019260209291908290030181600087803b15801562001c4057600080fd5b505af115801562001c55573d6000803e3d6000fd5b505050506040513d602081101562001c6c57600080fd5b505162001c7857600080fd5b60055460408051634062602560e01b81526004810185905290516001600160a01b039092169163406260259160248082019260009290919082900301818387803b15801562001cc657600080fd5b505af115801562001cdb573d6000803e3d6000fd5b50506006546008546040805163a9059cbb60e01b81526001600160a01b03928316600482015260248101899052905191909216935063a9059cbb9250604480830192600092919082900301818387803b15801562001d3857600080fd5b505af115801562001d4d573d6000803e3d6000fd5b50505050505050505b5050505050565b6001546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b15801562001da957600080fd5b505afa15801562001dbe573d6000803e3d6000fd5b505050506040513d602081101562001dd557600080fd5b5051151560011462001de657600080fd5b6000811162001df457600080fd5b601155565b33321462001e0657600080fd5b600062001e266103e86200079e6009548762001ee990919063ffffffff16565b905062001e3a848263ffffffff62001f4116565b341462001e4657600080fd5b6001600160a01b03821660009081526020819052604090205460ff1662001e6c57600080fd5b62001e7a8484848462001f54565b6004805460408051631a2f46d160e31b81526001600160a01b03868116948201949094529051929091169163d17a3688918491602480830192600092919082900301818588803b15801562001ece57600080fd5b505af115801562000be0573d6000803e3d6000fd5b60105490565b60008262001efa5750600062001f17565b8282028284828162001f0857fe5b041462001f1457600080fd5b90505b92915050565b600080821162001f2c57600080fd5b600082848162001f3857fe5b04949350505050565b60008282018381101562001f1457600080fd5b60105484101562001f6457600080fd5b601154848162001f7057fe5b061562001f7c57600080fd5b60115462001f9290859063ffffffff62001f1d16565b838162001f9b57fe5b061562001fa757600080fd5b6000831162001fb557600080fd5b604080516370a0823160e01b81523360048201529051839185916001600160a01b038416916370a08231916024808301926020929190829003018186803b1580156200200057600080fd5b505afa15801562002015573d6000803e3d6000fd5b505050506040513d60208110156200202c57600080fd5b505110156200203a57600080fd5b60408051636eb1769f60e11b8152336004820152306024820152905185916001600160a01b0384169163dd62ed3e91604480820192602092909190829003018186803b1580156200208a57600080fd5b505afa1580156200209f573d6000803e3d6000fd5b505050506040513d6020811015620020b657600080fd5b50511015620020c457600080fd5b60015460405160009187918791879187916001600160a01b031690620020ea9062002391565b94855260208501939093526001600160a01b03918216604080860191909152606085019190915291166080830152519081900360a001906000f08015801562002137573d6000803e3d6000fd5b506002546040805163b11ce2db60e01b81526001600160a01b038085166004830152915193945091169163b11ce2db9160248082019260009290919082900301818387803b1580156200218957600080fd5b505af11580156200219e573d6000803e3d6000fd5b5050604080516001600160a01b038086168252881660208201528082018a90526060810189905290517fccacfd869caa3e2e845afe470f00dcb777e77639814c6c96bb320b69885e63ce9350908190036080019150a1604080516323b872dd60e01b81523360048201526001600160a01b038381166024830152604482018890529151918416916323b872dd9160648082019260009290919082900301818387803b1580156200224d57600080fd5b505af115801562002262573d6000803e3d6000fd5b50505050806001600160a01b03166308ad57b5876040518263ffffffff1660e01b81526004016000604051808303818588803b158015620022a257600080fd5b505af1158015620022b7573d6000803e3d6000fd5b5050600354604080516336af3c8160e01b8152600481018c9052602481018b90526001600160a01b038a8116604483015291519190921694506336af3c8193506064808301935060009282900301818387803b1580156200231757600080fd5b505af11580156200232c573d6000803e3d6000fd5b50505050505050505050565b60006200234e836001600160a01b03166200238e565b6040519091506001600160a01b0382169083156108fc029084906000818181858888f1935050505015801562002388573d6000803e3d6000fd5b50505050565b90565b610c5e80620023a08339019056fe60806040526008805460ff1916905534801561001a57600080fd5b50604051610c5e380380610c5e833981810160405260a081101561003d57600080fd5b508051602080830151604080850151606086015160809096015160088054610100600160a81b0319166101006001600160a01b038085168202929092179283905585516347f3bf4360e11b815260048101899052600c60248201526b6f66666572466163746f727960a01b60448201529551989996989497939592041692638fe77e8692606480840193919291829003018186803b1580156100de57600080fd5b505afa1580156100f2573d6000803e3d6000fd5b505050506040513d602081101561010857600080fd5b5051600980546001600160a01b0319166001600160a01b03928316179081905516331461013457600080fd5b50600080546001600160a01b0319908116321790915560018590556002849055600380546001600160a01b0394909416939091169290921790915560049290925560055560075543600655610ad08061018e6000396000f3fe6080604052600436106100c25760003560e01c80637aae3c6d1161007f578063b4f58a7611610059578063b4f58a76146101f8578063b6bc03541461020d578063cdbce03d14610236578063e4736a661461024b576100c2565b80637aae3c6d1461018f5780638fc3047d146101a4578063ab5d3366146101b9576100c2565b806304f0c14e146100c757806308ad57b5146100f857806313e24862146101025780631b1bddc91461012957806328a8ef1f1461016557806371aa8fd91461017a575b600080fd5b3480156100d357600080fd5b506100dc610277565b604080516001600160a01b039092168252519081900360200190f35b610100610287565b005b34801561010e57600080fd5b506101176103b9565b60408051918252519081900360200190f35b34801561013557600080fd5b5061013e610452565b6040805193845260208401929092526001600160a01b031682820152519081900360600190f35b34801561017157600080fd5b50610100610469565b34801561018657600080fd5b5061013e6105f5565b34801561019b57600080fd5b5061011761068a565b3480156101b057600080fd5b5061013e610690565b3480156101c557600080fd5b50610100600480360360608110156101dc57600080fd5b50803590602081013590604001356001600160a01b03166106a7565b34801561020457600080fd5b50610117610809565b34801561021957600080fd5b5061022261080f565b604080519115158252519081900360200190f35b34801561024257600080fd5b506100dc610818565b6101006004803603604081101561026157600080fd5b50803590602001356001600160a01b0316610827565b6003546001600160a01b03165b90565b600854604080516347f3bf4360e11b8152602060048201819052600c60248301526b6f66666572466163746f727960a01b604483015291516101009093046001600160a01b031692638fe77e8692606480840193919291829003018186803b1580156102f257600080fd5b505afa158015610306573d6000803e3d6000fd5b505050506040513d602081101561031c57600080fd5b50516001600160a01b0316331461033257600080fd5b600254600354604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561038057600080fd5b505afa158015610394573d6000803e3d6000fd5b505050506040513d60208110156103aa57600080fd5b505110156103b757600080fd5b565b6009546040805163cbc7ef0960e01b815290516000926001600160a01b03169163cbc7ef09916004808301926020929190829003018186803b1580156103fe57600080fd5b505afa158015610412573d6000803e3d6000fd5b505050506040513d602081101561042857600080fd5b505160065461043e90439063ffffffff6109de16565b111561044c57506001610284565b50600090565b6004546005546003546001600160a01b0316909192565b600854604080516347f3bf4360e11b8152602060048201819052600c60248301526b6f66666572466163746f727960a01b604483015291516101009093046001600160a01b031692638fe77e8692606480840193919291829003018186803b1580156104d457600080fd5b505afa1580156104e8573d6000803e3d6000fd5b505050506040513d60208110156104fe57600080fd5b50516001600160a01b0316331461051457600080fd5b6000546001600160a01b0316321461052b57600080fd5b6105336103b9565b60011461053f57600080fd5b60085460ff161561054f57600080fd5b60008061055a6105f5565b506000549193509150610576906001600160a01b0316836109f8565b600354600080546040805163a9059cbb60e01b81526001600160a01b039283166004820152602481018690529051919093169263a9059cbb92604480830193919282900301818387803b1580156105cc57600080fd5b505af11580156105e0573d6000803e3d6000fd5b50506008805460ff1916600117905550505050565b600354604080516370a0823160e01b815230600482015290516000928392839247926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561064657600080fd5b505afa15801561065a573d6000803e3d6000fd5b505050506040513d602081101561067057600080fd5b505160035491945092506001600160a01b03169050909192565b60065490565b6001546002546003546001600160a01b0316909192565b600854604080516347f3bf4360e11b8152602060048201819052600c60248301526b6f66666572466163746f727960a01b604483015291516101009093046001600160a01b031692638fe77e8692606480840193919291829003018186803b15801561071257600080fd5b505afa158015610726573d6000803e3d6000fd5b505050506040513d602081101561073c57600080fd5b50516001600160a01b0316331461075257600080fd5b61075a6103b9565b1561076457600080fd5b82600454101561077357600080fd5b81600554101561078257600080fd5b6003546001600160a01b0382811691161461079c57600080fd5b6107c36004546107b785600554610a4b90919063ffffffff16565b9063ffffffff610a7916565b82146107ce57600080fd5b6107d832846109f8565b6004546107eb908463ffffffff6109de16565b600455600554610801908363ffffffff6109de16565b600555505050565b60075490565b60085460ff1690565b6000546001600160a01b031690565b600854604080516347f3bf4360e11b8152602060048201819052600c60248301526b6f66666572466163746f727960a01b604483015291516101009093046001600160a01b031692638fe77e8692606480840193919291829003018186803b15801561089257600080fd5b505afa1580156108a6573d6000803e3d6000fd5b505050506040513d60208110156108bc57600080fd5b50516001600160a01b031633146108d257600080fd5b6108da6103b9565b156108e457600080fd5b3460045410156108f357600080fd5b81600554101561090257600080fd5b6003546001600160a01b0382811691161461091c57600080fd5b6109376004546107b734600554610a4b90919063ffffffff16565b821461094257600080fd5b6003546040805163a9059cbb60e01b81523260048201526024810185905290516001600160a01b039092169163a9059cbb9160448082019260009290919082900301818387803b15801561099557600080fd5b505af11580156109a9573d6000803e3d6000fd5b50506004546109c1925090503463ffffffff6109de16565b6004556005546109d7908363ffffffff6109de16565b6005555050565b6000828211156109ed57600080fd5b508082035b92915050565b6000610a0c836001600160a01b0316610284565b6040519091506001600160a01b0382169083156108fc029084906000818181858888f19350505050158015610a45573d6000803e3d6000fd5b50505050565b600082610a5a575060006109f2565b82820282848281610a6757fe5b0414610a7257600080fd5b9392505050565b6000808211610a8757600080fd5b6000828481610a9257fe5b0494935050505056fea265627a7a723158201cb3b3a6bc39aa2268040c9e5bd5824f82ca28f71fdd5aa97d7006d3c8f3488764736f6c63430005110032a265627a7a7231582009ede0439f6bd9257a4f561eeb5bcdb4d3cfff7a7b68a664378a18b0791aaaee64736f6c63430005110032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000005e7db2ffc5b2c7c47103e4f21c702bc402603fbf
-----Decoded View---------------
Arg [0] : map (address): 0x5E7db2FFc5b2c7C47103e4F21C702bc402603fBf
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000005e7db2ffc5b2c7c47103e4f21c702bc402603fbf
Deployed Bytecode Sourcemap
1762:13360:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14153:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14153:114:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14153:114:0;;;;;;;;;;:::i;:::-;;13058:96;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13058:96:0;;;:::i;:::-;;;;;;;;;;;;;;;;13961:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13961:85:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13961:85:0;;:::i;12909:109::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12909:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12909:109:0;-1:-1:-1;;;;;12909:109:0;;:::i;:::-;;;;;;;;;;;;;;;;;;12772:87;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12772:87:0;;;:::i;10866:1408::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;10866:1408:0;;;;;;;;-1:-1:-1;;;;;10866:1408:0;;;;;;;;;;;;;;;;;;;;;;:::i;14054:91::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14054:91:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14054:91:0;;:::i;14405:353::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14405:353:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14405:353:0;;;;;;;;;;;;:::i;13370:88::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13370:88:0;;;:::i;13210:94::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13210:94:0;;;:::i;13766:90::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13766:90:0;;;:::i;13507:94::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13507:94:0;;;:::i;5075:813::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5075:813:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5075:813:0;-1:-1:-1;;;;;5075:813:0;;:::i;13864:89::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13864:89:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13864:89:0;;:::i;14275:122::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14275:122:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14275:122:0;;:::i;9361:1130::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;9361:1130:0;;;;;;;;-1:-1:-1;;;;;9361:1130:0;;;;;;;;;;;;;;;;;;;;;;:::i;12502:92::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12502:92:0;;;:::i;12639:91::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12639:91:0;;;:::i;14766:114::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14766:114:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14766:114:0;;:::i;7879:1107::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7879:1107:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7879:1107:0;-1:-1:-1;;;;;7879:1107:0;;:::i;14888:116::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14888:116:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14888:116:0;;:::i;6066:460::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6066:460:0;;;;;;;;;;;-1:-1:-1;;;;;6066:460:0;;:::i;13641:88::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13641:88:0;;;:::i;14153:114::-;15051:15;;:39;;;-1:-1:-1;;;15051:39:0;;15079:10;15051:39;;;;;;-1:-1:-1;;;;;15051:15:0;;;;:27;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;15051:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15051:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15051:39:0;:47;;15094:4;15051:47;15043:56;;;;;;-1:-1:-1;;;;;14234:17:0;;;;:10;:17;;;;;;;;;;:25;;-1:-1:-1;;14234:25:0;;;;;;;;;;14153:114::o;13058:96::-;13134:12;;13058:96;:::o;13961:85::-;15051:15;;:39;;;-1:-1:-1;;;15051:39:0;;15079:10;15051:39;;;;;;-1:-1:-1;;;;;15051:15:0;;;;:27;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;15051:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15051:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15051:39:0;:47;;15094:4;15051:47;15043:56;;;;;;14025:7;:13;13961:85::o;12909:109::-;-1:-1:-1;;;;;12993:17:0;12969:4;12993:17;;;;;;;;;;;;;;12909:109::o;12772:87::-;12844:7;;12772:87;:::o;10866:1408::-;11064:10;11087:9;11056:41;11048:50;;;;;;11117:12;;:43;;;-1:-1:-1;;;11117:43:0;;-1:-1:-1;;;;;11117:43:0;;;;;;;;;:12;;;;;:26;;:43;;;;;;;;;;;;;;:12;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;11117:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11117:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11117:43:0;11109:52;;;;;;11211:12;;11193:31;;:13;;:31;:17;:31;:::i;:::-;11180:9;:44;;11172:53;;;;;;11236:21;11260:36;11291:4;11260:26;11278:7;;11260:13;:17;;:26;;;;:::i;:::-;:30;:36;:30;:36;:::i;:::-;11236:60;-1:-1:-1;11328:28:0;:9;11236:60;11328:28;:13;:28;:::i;:::-;11315:9;:41;11307:50;;;;;;11392:9;;11376:13;:25;;;;;;:30;11368:39;;;;;;11418:53;11430:9;11440:11;11452:16;11469:1;11418:11;:53::i;:::-;11623:36;;;-1:-1:-1;;;11623:36:0;;11647:10;11623:36;;;;;;11540:15;;11587:16;;11663:15;;-1:-1:-1;;;;;11623:15:0;;;;;:36;;;;;;;;;;;;;;;:15;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;11623:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11623:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11623:36:0;:55;;11615:64;;;;;;11698:51;;;-1:-1:-1;;;11698:51:0;;11722:10;11698:51;;;;11743:4;11698:51;;;;;;11753:15;;-1:-1:-1;;;;;11698:15:0;;;;;:51;;;;;;;;;;;;;;;:15;:51;;;5:2:-1;;;;30:1;27;20:12;5:2;11698:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11698:51:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11698:51:0;:70;;11690:79;;;;;;11780:80;;;-1:-1:-1;;;11780:80:0;;11807:10;11780:80;;;;-1:-1:-1;;;;;11780:80:0;;;;;;;;;;;;;;;:18;;;;;;:80;;;;;-1:-1:-1;;11780:80:0;;;;;;;;-1:-1:-1;11780:18:0;:80;;;5:2:-1;;;;30:1;27;20:12;5:2;11780:80:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;11871:77:0;;;-1:-1:-1;;;11871:77:0;;;;;;;;;;;;;;-1:-1:-1;;;;;11871:77:0;;;;;;;;;:28;;;;-1:-1:-1;11871:28:0;;-1:-1:-1;11871:77:0;;;;;-1:-1:-1;;11871:77:0;;;;;;;;-1:-1:-1;11871:28:0;:77;;;5:2:-1;;;;30:1;27;20:12;5:2;11871:77:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11871:77:0;;;;11959:10;;;;;;;;;-1:-1:-1;;;;;11959:10:0;-1:-1:-1;;;;;11959:22:0;;11982:13;11996:15;12012:16;12029:13;-1:-1:-1;;;;;12029:27:0;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12029:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12029:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12029:29:0;11959:100;;;-1:-1:-1;;;;;;11959:100:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11959:100:0;;;;;;;;;;;;;;;;;-1:-1:-1;;11959:100:0;;;;;;;-1:-1:-1;11959:100:0;;;;5:2:-1;;;;30:1;27;20:12;5:2;11959:100:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11959:100:0;;;;12075:143;12093:9;12112:16;12130:15;12155:3;12161:13;12175:15;12191:13;-1:-1:-1;;;;;12191:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12191:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12191:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12191:26:0;12075:143;;;-1:-1:-1;;;;;12075:143:0;;;;;;;;12191:26;12075:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12238:13;;12229:37;;-1:-1:-1;;;;;12238:13:0;12252;12229:8;:37::i;:::-;10866:1408;;;;;;;;;:::o;14054:91::-;15051:15;;:39;;;-1:-1:-1;;;15051:39:0;;15079:10;15051:39;;;;;;-1:-1:-1;;;;;15051:15:0;;;;:27;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;15051:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15051:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15051:39:0;:47;;15094:4;15051:47;15043:56;;;;;;14121:10;:16;14054:91::o;14405:353::-;15051:15;;:39;;;-1:-1:-1;;;15051:39:0;;15079:10;15051:39;;;;;;-1:-1:-1;;;;;15051:15:0;;;;:27;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;15051:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15051:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15051:39:0;:47;;15094:4;15051:47;15043:56;;;;;;14531:1;14520:8;:12;:29;;;;;14548:1;14536:8;:13;;14520:29;14512:38;;;;;;14577:1;14569:5;:9;:27;;;;;14594:2;14582:8;:14;;14569:27;14561:36;;;;;;14616:33;14640:8;14616:19;:8;14629:5;14616:19;:12;:19;:::i;:::-;:23;:33;:23;:33;:::i;:::-;14653:3;14616:40;14608:49;;;;;;14668:11;:22;;;;14701:8;:16;14728:11;:22;14405:353::o;13370:88::-;13442:8;;13370:88;:::o;13210:94::-;13285:11;;13210:94;:::o;13766:90::-;13839:9;;13766:90;:::o;13507:94::-;13582:11;;13507:94;:::o;5075:813::-;15051:15;;:39;;;-1:-1:-1;;;15051:39:0;;15079:10;15051:39;;;;;;-1:-1:-1;;;;;15051:15:0;;;;:27;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;15051:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15051:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15051:39:0;:47;;15094:4;15051:47;15043:56;;;;;;5139:15;:37;;-1:-1:-1;;;;;;5139:37:0;-1:-1:-1;;;;;5139:37:0;;;;;;;;;;;5284:42;;;-1:-1:-1;;;5284:42:0;;;;;;;;;;;;;;-1:-1:-1;;;5284:42:0;;;;;;:15;;;;;:28;;:42;;;;;;;;;;;;:15;:42;;;5:2:-1;;;;30:1;27;20:12;5:2;5284:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5284:42:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5284:42:0;5245:10;:83;;-1:-1:-1;;;;;;5245:83:0;-1:-1:-1;;;;;5245:83:0;;;;;;-1:-1:-1;5394:15:0;:49;;;-1:-1:-1;;;5394:49:0;;5284:42;5394:49;;;;;;;;;;;-1:-1:-1;;;5394:49:0;;;;;;:15;;;;;:28;;:49;;;;;5284:42;5394:49;;;;;:15;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;5394:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5394:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5394:49:0;5351:12;:94;;-1:-1:-1;;;;;;5351:94:0;-1:-1:-1;;;;;5351:94:0;;;;;;-1:-1:-1;5472:15:0;:38;;;-1:-1:-1;;;5472:38:0;;5394:49;5472:38;;;;;;;;;;;-1:-1:-1;;;5472:38:0;;;;;;:15;;;;;:28;;:38;;;;;5394:49;;5472:38;;;;;:15;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;5472:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5472:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5472:38:0;5456:13;:54;;-1:-1:-1;;;;;;5456:54:0;-1:-1:-1;;;;;5456:54:0;;;;;;-1:-1:-1;5539:15:0;:36;;;-1:-1:-1;;;5539:36:0;;5472:38;5539:36;;;;;;;;;;;-1:-1:-1;;;5539:36:0;;;;;;:15;;;;;:28;;:36;;;;;5472:38;5539:36;;;;;:15;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;5539:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5539:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5539:36:0;5521:9;:55;;-1:-1:-1;;;;;;5521:55:0;-1:-1:-1;;;;;5521:55:0;;;;;;-1:-1:-1;5669:15:0;:46;;;-1:-1:-1;;;5669:46:0;;5539:36;5669:46;;;;;;;;;;;-1:-1:-1;;;5669:46:0;;;;;;:15;;;;;:28;;:46;;;;;5539:36;5669:46;;;;;:15;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;5669:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5669:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5669:46:0;5628:10;:89;;-1:-1:-1;;;;;;5628:89:0;-1:-1:-1;;;;;5628:89:0;;;;;;-1:-1:-1;5749:15:0;:37;;;-1:-1:-1;;;5749:37:0;;5669:46;5749:37;;;;;;;;;;;;;-1:-1:-1;;;5749:37:0;;;;;;:15;;;;;:28;;:37;;;;;5669:46;;5749:37;;;;;:15;:37;;;5:2:-1;;;;30:1;27;20:12;5:2;5749:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5749:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5749:37:0;5734:12;:52;;-1:-1:-1;;;;;;5734:52:0;-1:-1:-1;;;;;5734:52:0;;;;;;-1:-1:-1;5837:15:0;:41;;;-1:-1:-1;;;5837:41:0;;5749:37;5837:41;;;;;;;;;;;-1:-1:-1;;;5837:41:0;;;;;;:15;;;;;:28;;:41;;;;;5749:37;5837:41;;;;;:15;:41;;;5:2:-1;;;;30:1;27;20:12;5:2;5837:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5837:41:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5837:41:0;5797:12;:83;;-1:-1:-1;;;;;;5797:83:0;-1:-1:-1;;;;;5797:83:0;;;;;;;;;-1:-1:-1;5075:813:0:o;13864:89::-;15051:15;;:39;;;-1:-1:-1;;;15051:39:0;;15079:10;15051:39;;;;;;-1:-1:-1;;;;;15051:15:0;;;;:27;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;15051:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15051:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15051:39:0;:47;;15094:4;15051:47;15043:56;;;;;;13930:9;:15;13864:89::o;14275:122::-;15051:15;;:39;;;-1:-1:-1;;;15051:39:0;;15079:10;15051:39;;;;;;-1:-1:-1;;;;;15051:15:0;;;;:27;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;15051:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15051:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15051:39:0;:47;;15094:4;15051:47;15043:56;;;;;;14358:1;14352:3;:7;14344:16;;;;;;14371:12;:18;14275:122::o;9361:1130::-;9559:10;9582:9;9551:41;9543:50;;;;;;9612:12;;:43;;;-1:-1:-1;;;9612:43:0;;-1:-1:-1;;;;;9612:43:0;;;;;;;;;:12;;;;;:26;;:43;;;;;;;;;;;;;;:12;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;9612:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9612:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9612:43:0;9604:52;;;;;;9706:12;;9688:31;;:13;;:31;:17;:31;:::i;:::-;9675:9;:44;;9667:53;;;;;;9731:21;9755:36;9786:4;9755:26;9773:7;;9755:13;:17;;:26;;;;:::i;:36::-;9731:60;-1:-1:-1;9823:47:0;9731:60;9823:28;:9;9837:13;9823:28;:13;:28;:::i;:47::-;9810:9;:60;9802:69;;;;;;9906:9;;9890:13;:25;;;;;;:30;9882:39;;;;;;9932:53;9944:9;9954:11;9966:16;9983:1;9932:11;:53::i;:::-;10081:84;;;-1:-1:-1;;;10081:84:0;;;;;;;;-1:-1:-1;;;;;10081:84:0;;;;;;;;;10054:15;;10081:28;;;;;10116:13;;10081:84;;;;;9996:34;;10081:84;;;;;;;;10116:13;10081:28;:84;;;5:2:-1;;;;30:1;27;20:12;5:2;10081:84:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10081:84:0;;;;;10176:10;;;;;;;;;-1:-1:-1;;;;;10176:10:0;-1:-1:-1;;;;;10176:22:0;;10199:13;10213:15;10229:16;10246:13;-1:-1:-1;;;;;10246:27:0;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10246:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10246:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10246:29:0;10176:100;;;-1:-1:-1;;;;;;10176:100:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10176:100:0;;;;;;;;;;;;;;;;;-1:-1:-1;;10176:100:0;;;;;;;-1:-1:-1;10176:100:0;;;;5:2:-1;;;;30:1;27;20:12;5:2;10176:100:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10176:100:0;;;;10292:143;10310:9;10330:3;10336:13;10358:16;10376:15;10392;10408:13;-1:-1:-1;;;;;10408:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10408:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10408:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10408:26:0;10292:143;;;-1:-1:-1;;;;;10292:143:0;;;;;;;;10408:26;10292:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10455:13;;10446:37;;-1:-1:-1;;;;;10455:13:0;10469;10446:8;:37::i;:::-;9361:1130;;;;;;;;:::o;12502:92::-;12576:10;;12502:92;:::o;12639:91::-;12713:9;;12639:91;:::o;14766:114::-;15051:15;;:39;;;-1:-1:-1;;;15051:39:0;;15079:10;15051:39;;;;;;-1:-1:-1;;;;;15051:15:0;;;;:27;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;15051:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15051:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15051:39:0;:47;;15094:4;15051:47;15043:56;;;;;;14845:1;14839:3;:7;14831:16;;;;;;14858:8;:14;14766:114::o;7879:1107::-;7955:10;7978:9;7947:41;7939:50;;;;;;8008:12;;:43;;;-1:-1:-1;;;8008:43:0;;-1:-1:-1;;;;;8008:43:0;;;;;;;;;:12;;;;;:26;;:43;;;;;;;;;;;;;;:12;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;8008:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8008:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8008:43:0;8000:52;;;;;;8063:34;8121:15;8063:74;;8148:13;-1:-1:-1;;;;;8148:21:0;;:23;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8148:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8148:23:0;;;;8182:17;8202:13;-1:-1:-1;;;;;8202:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8202:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8202:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8202:34:0;8266:29;;;-1:-1:-1;;;8266:29:0;;;;8202:34;;-1:-1:-1;8247:16:0;;-1:-1:-1;;;;;8266:27:0;;;;;:29;;;;;8202:34;;8266:29;;;;;;;:27;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;8266:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8266:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8266:29:0;8329:33;;;-1:-1:-1;;;8329:33:0;;;;8266:29;;-1:-1:-1;8306:20:0;;-1:-1:-1;;;;;8329:31:0;;;;;:33;;;;;8266:29;;8329:33;;;;;;;:31;:33;;;5:2:-1;;;;30:1;27;20:12;5:2;8329:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8329:33:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8329:33:0;;-1:-1:-1;8377:13:0;;8373:606;;8430:12;;;:68;;;-1:-1:-1;;;8430:68:0;;;;;;;;;;;;;;8479:4;8430:68;;;;-1:-1:-1;;;;;8430:68:0;;;;;;;;;8407:20;;8430:12;;;;;:19;;:68;;;;;;;;;;;;;;;8407:20;8430:12;:68;;;5:2:-1;;;;30:1;27;20:12;5:2;8430:68:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8430:68:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8430:68:0;8546:11;;8430:68;;-1:-1:-1;8513:13:0;;8529:38;;8563:3;;8529:29;;8430:68;;8529:29;:16;:29;:::i;:38::-;8513:54;;8582:10;8595:35;8626:3;8595:26;8612:8;;8595:12;:16;;:26;;;;:::i;:35::-;8582:48;;8645:13;8661:38;8695:3;8661:29;8678:11;;8661:12;:16;;:29;;;;:::i;:38::-;8714:9;;:45;;;-1:-1:-1;;;8714:45:0;;8741:9;8714:45;;;;;;;;;;;;8645:54;;-1:-1:-1;;;;;;8714:9:0;;;;:18;;:45;;;;;:9;;:45;;;;;;;;:9;;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;8714:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;8782:9:0;;8808:10;;8782:42;;;-1:-1:-1;;;8782:42:0;;-1:-1:-1;;;;;8808:10:0;;;8782:42;;;;;;;;;;;;:9;;;;;-1:-1:-1;8782:17:0;;-1:-1:-1;8782:42:0;;;;;;;;;;;;;;:9;;:42;;;5:2:-1;;;;30:1;27;20:12;5:2;8782:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8782:42:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8782:42:0;8774:51;;;;;;8840:10;;:26;;;-1:-1:-1;;;8840:26:0;;;;;;;;;;-1:-1:-1;;;;;8840:10:0;;;;:22;;:26;;;;;:10;;:26;;;;;;;;:10;;:26;;;5:2:-1;;;;30:1;27;20:12;5:2;8840:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;8928:9:0;;8947:12;;8928:39;;;-1:-1:-1;;;8928:39:0;;-1:-1:-1;;;;;8947:12:0;;;8928:39;;;;;;;;;;;;:9;;;;;-1:-1:-1;8928:18:0;;-1:-1:-1;8928:39:0;;;;;:9;;:39;;;;;;;:9;;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;8928:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8928:39:0;;;;8373:606;;;;;7879:1107;;;;;:::o;14888:116::-;15051:15;;:39;;;-1:-1:-1;;;15051:39:0;;15079:10;15051:39;;;;;;-1:-1:-1;;;;;15051:15:0;;;;:27;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;15051:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15051:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15051:39:0;:47;;15094:4;15051:47;15043:56;;;;;;14968:1;14962:3;:7;14954:16;;;;;;14981:9;:15;14888:116::o;6066:460::-;6185:10;6208:9;6177:41;6169:50;;;;;;6230:17;6250:34;6279:4;6250:24;6264:9;;6250;:13;;:24;;;;:::i;:34::-;6230:54;-1:-1:-1;6316:24:0;:9;6230:54;6316:24;:13;:24;:::i;:::-;6303:9;:37;6295:46;;;;;;-1:-1:-1;;;;;6360:24:0;;:10;:24;;;;;;;;;;;;;6352:33;;;;;;6396:57;6408:9;6418:11;6430:12;6443:9;6396:11;:57::i;:::-;6464:12;;;:54;;;-1:-1:-1;;;6464:54:0;;-1:-1:-1;;;;;6464:54:0;;;;;;;;;;;;:12;;;;;:23;;6494:9;;6464:54;;;;;:12;;:54;;;;;;;6494:9;6464:12;:54;;;5:2:-1;;;;30:1;27;20:12;5:2;6464:54:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;13641:88:0;13713:8;;13641:88;:::o;34416:433::-;34474:7;34718:6;34714:47;;-1:-1:-1;34748:1:0;34741:8;;34714:47;34785:5;;;34789:1;34785;:5;:1;34809:5;;;;;:10;34801:19;;;;;;34840:1;-1:-1:-1;34416:433:0;;;;;:::o;34982:303::-;35040:7;35139:1;35135;:5;35127:14;;;;;;35152:9;35168:1;35164;:5;;;;;;;34982:303;-1:-1:-1;;;;34982:303:0:o;35657:150::-;35715:7;35747:5;;;35771:6;;;;35763:15;;;;;6741:1014;6880:8;;6867:9;:21;;6859:30;;;;;;6920:9;;6908;:21;;;;;;:26;6900:35;;;;;;6983:9;;6969:24;;:9;;:24;:13;:24;:::i;:::-;6954:11;:40;;;;;;:45;6946:54;;;;;;7033:1;7019:11;:15;7011:24;;;;;;7098:36;;;-1:-1:-1;;;7098:36:0;;7122:10;7098:36;;;;;;7066:12;;7138:11;;-1:-1:-1;;;;;7098:15:0;;;;;:36;;;;;;;;;;;;;;:15;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;7098:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7098:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7098:36:0;:51;;7090:60;;;;;;7169:51;;;-1:-1:-1;;;7169:51:0;;7193:10;7169:51;;;;7214:4;7169:51;;;;;;7224:11;;-1:-1:-1;;;;;7169:15:0;;;;;:51;;;;;;;;;;;;;;;:15;:51;;;5:2:-1;;;;30:1;27;20:12;5:2;7169:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7169:51:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7169:51:0;:66;;7161:75;;;;;;7357:15;;7282:92;;7247:32;;7307:9;;7317:11;;7329:12;;7342:6;;-1:-1:-1;;;;;7357:15:0;;7282:92;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;7282:92:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7282:92:0;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;7385:12:0;;:53;;;-1:-1:-1;;;7385:53:0;;-1:-1:-1;;;;;7385:53:0;;;;;;;;;7247:127;;-1:-1:-1;7385:12:0;;;:31;;:53;;;;;:12;;:53;;;;;;;;:12;;:53;;;5:2:-1;;;;30:1;27;20:12;5:2;7385:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;7454:89:0;;;-1:-1:-1;;;;;7454:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7454:89:0;;;;;;;-1:-1:-1;7454:89:0;7554:74;;;-1:-1:-1;;;7554:74:0;;7581:10;7554:74;;;;-1:-1:-1;;;;;7554:74:0;;;;;;;;;;;;;;;:18;;;;;;:74;;;;;-1:-1:-1;;7554:74:0;;;;;;;;-1:-1:-1;7554:18:0;:74;;;5:2:-1;;;;30:1;27;20:12;5:2;7554:74:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7554:74:0;;;;7639:11;-1:-1:-1;;;;;7639:23:0;;7669:9;7639:42;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7639:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;7692:10:0;;:55;;;-1:-1:-1;;;7692:55:0;;;;;;;;;;;;;;-1:-1:-1;;;;;7692:55:0;;;;;;;;;:10;;;;;-1:-1:-1;7692:19:0;;-1:-1:-1;7692:55:0;;;;;-1:-1:-1;7692:10:0;;:55;;;;;:10;;:55;;;5:2:-1;;;;30:1;27;20:12;5:2;7692:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7692:55:0;;;;6741:1014;;;;;;:::o;12286:167::-;12362:20;12385:29;:14;-1:-1:-1;;;;;12385:27:0;;:29::i;:::-;12425:20;;12362:52;;-1:-1:-1;;;;;;12425:13:0;;;:20;;;;;12439:5;;12425:20;;;;12439:5;12425:13;:20;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12425:20:0;12286:167;;;:::o;33406:115::-;33511:1;33406:115::o;1762:13360::-;;;;;;;;:::o
Swarm Source
bzzr://09ede0439f6bd9257a4f561eeb5bcdb4d3cfff7a7b68a664378a18b0791aaaee
Loading...
Loading
Loading...
Loading
OVERVIEW
NEST is a decentralized price oracle based on Ethereum.Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.