Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 123 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Seller Cancel | 9434009 | 1842 days ago | IN | 0 ETH | 0.00116197 | ||||
Create Escrow | 9429605 | 1843 days ago | IN | 0.0356612 ETH | 0.0007383 | ||||
Relese Funds | 9381960 | 1850 days ago | IN | 0 ETH | 0.00206568 | ||||
Disable Seller C... | 9381949 | 1850 days ago | IN | 0.00025 ETH | 0.00006374 | ||||
Create Escrow | 9381924 | 1850 days ago | IN | 0.05025 ETH | 0.00028804 | ||||
Seller Cancel | 9381873 | 1850 days ago | IN | 0 ETH | 0.00116175 | ||||
Create Escrow | 9370633 | 1852 days ago | IN | 0.05025 ETH | 0.00028804 | ||||
Relese Funds | 9370600 | 1852 days ago | IN | 0 ETH | 0.00206841 | ||||
Disable Seller C... | 9370590 | 1852 days ago | IN | 0.00025 ETH | 0.00006374 | ||||
Create Escrow | 9370558 | 1852 days ago | IN | 0.05025 ETH | 0.00059059 | ||||
Seller Cancel | 9343412 | 1856 days ago | IN | 0 ETH | 0.00134013 | ||||
Relese Funds | 9343403 | 1856 days ago | IN | 0 ETH | 0.00283287 | ||||
Seller Cancel | 9343368 | 1856 days ago | IN | 0 ETH | 0.00093189 | ||||
Relese Funds | 9337293 | 1857 days ago | IN | 0 ETH | 0.00213051 | ||||
Disable Seller C... | 9337284 | 1857 days ago | IN | 0.00000002 ETH | 0.00025527 | ||||
Create Escrow | 9337278 | 1857 days ago | IN | 0.00000002 ETH | 0.0012276 | ||||
Relese Funds | 9325816 | 1859 days ago | IN | 0 ETH | 0.00213138 | ||||
Disable Seller C... | 9325772 | 1859 days ago | IN | 0.00304624 ETH | 0.00025565 | ||||
Create Escrow | 9325766 | 1859 days ago | IN | 0.00304624 ETH | 0.00101127 | ||||
Relese Funds | 9325629 | 1859 days ago | IN | 0 ETH | 0.0019702 | ||||
Disable Seller C... | 9325624 | 1859 days ago | IN | 0.00028025 ETH | 0.00009376 | ||||
Create Escrow | 9325543 | 1859 days ago | IN | 0.05633095 ETH | 0.00115227 | ||||
Create Escrow | 9325500 | 1859 days ago | IN | 0.1005 ETH | 0.00130606 | ||||
Relese Funds | 9324579 | 1859 days ago | IN | 0 ETH | 0.00206863 | ||||
Disable Seller C... | 9324571 | 1859 days ago | IN | 0.0005 ETH | 0.00006376 |
Latest 12 internal transactions
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
9434009 | 1842 days ago | 0.03548378 ETH | ||||
9381960 | 1850 days ago | 0.04975 ETH | ||||
9381873 | 1850 days ago | 0.05 ETH | ||||
9370600 | 1852 days ago | 0.04975 ETH | ||||
9325629 | 1859 days ago | 0.05577045 ETH | ||||
9324579 | 1859 days ago | 0.0995 ETH | ||||
9271550 | 1867 days ago | 0.0995 ETH | ||||
9176748 | 1883 days ago | 0.0995 ETH | ||||
9176723 | 1883 days ago | 0.1 ETH | ||||
9176708 | 1883 days ago | 0.0995 ETH | ||||
9169684 | 1884 days ago | 0.05980834 ETH | ||||
9165071 | 1885 days ago | 0.05832347 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Future1exchange
Compiler Version
v0.5.12+commit.7709ece9
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-12-21 */ pragma solidity ^0.5.12; contract Token { function transfer(address _to, uint _value) public returns (bool success); function transferFrom(address _from, address _to, uint _value) public returns (bool success); function approve(address _spender, uint _value) public returns (bool success); function allowance(address _owner, address _spender)external view returns(uint256); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath: subtraction overflow"); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, "SafeMath: division by zero"); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0, "SafeMath: modulo by zero"); return a % b; } } contract Future1exchange { using SafeMath for uint256; address public owner; address public feeAddress; uint32 public requestCancelMinimumTime; uint256 public referPercent; // events --- event Created(bytes32 _tradeHash); event SellerCancelDisabled(bytes32 _tradeHash); event SellerRequestedCancel(bytes32 _tradeHash); event CancelledBySeller(bytes32 _tradeHash); event CancelledByBuyer(bytes32 _tradeHash); event Released(bytes32 _tradeHash); event DisputeResolved(bytes32 _tradeHash); constructor (address feeadd) public { owner = msg.sender; feeAddress = feeadd; requestCancelMinimumTime = 2 hours; } struct Escrow { bool escrowStatus; uint256 setTimeSellerCancel; uint256 sellerFee; uint256 buyerFee; uint256 eType; bool sellerDispute; bool buyerDispute; } struct User{ address userAddr; address referralAddr; address referralTokenAddr; uint256 referralType; bool registerStatus; } mapping(address => User) public referral_map; mapping(bytes32 => Escrow) public escrow_map; mapping (address => mapping(address => uint256)) public _token; mapping(address => mapping(address => uint256)) public _referralFee; modifier onlyOwner() { require(msg.sender == owner, "This function is only called by Owner.."); _; } /** @dev external - Set the new owner address, only called by current owner. * @param _newOwner - The new owner address. */ function setOwner(address _newOwner) onlyOwner external { require(_newOwner != address(0), "Invalid Address"); owner = _newOwner; } /** @dev external - Set the new fee address, only called by owner. * @param _newFeeAddress - The new fee address. */ function setFeeAddress(address _newFeeAddress) onlyOwner external { require(_newFeeAddress != address(0), "Invalid Address"); feeAddress = _newFeeAddress; } /** @dev external - Set the new owner address, only called by owner. * @param _newRequestCancelMinimumTime - The new time for requestCancel. */ function setRequestCancellationMinimumTime(uint32 _newRequestCancelMinimumTime) onlyOwner external { requestCancelMinimumTime = _newRequestCancelMinimumTime; } /** @dev external - Set the new owner address, only called by owner. * @param _feePercent - The new fee percent. */ function setFeePercent(uint256 _feePercent) onlyOwner external { require(_feePercent > 0, "Invalid Fee Percent"); referPercent = _feePercent; } /** @dev external - Collect the referral fee from user. * @param _from - The Address who send the fee to the contract for referral. * @param _tokenContract - The Token Contract Address which is selected for referrance by _from. * @param _amount - The Fee Amount * @return bool - true. */ function feeCollect(address _from,address _tokenContract, uint256 _amount) external returns(bool) { require(_from != address(0) && _tokenContract != address(0), "Empty Address"); require(tokenallowance(_tokenContract,_from,address(this)) >= _amount, "Insufficient Allowance"); Token(_tokenContract).transferFrom(_from,address(this),_amount); _referralFee[_from][_tokenContract] = _referralFee[_from][_tokenContract].add(_amount); return true; } /** @dev external - Create the escrow process only call by seller. * @param _tradeId - The unique id for particular trade. * @param _seller - The seller address of particular trade. * @param _buyer - The buyer address of particular trade. * @param _amount - The escrow amount of particular trade is ether/token. * @param _tokenContract - The token contract address for token (or) give address(0) for ether. * @param _sellerFee - The seller transaction/admin fee . * @param _buyerFee - The buyer transaction/admin fee. * @param _type - If the amount is ether it is 1 otherwise it is 2. * @param _sellerCancelInSeconds - To time for cancel the trade by seller. * @param _Ref[0] - The referral address for seller, _Ref[1] - The referral address for buyer. * @param _Tokens[0] - The referral token address for seller, _Tokens[1] - The referral token address for buyer. * @param _Type[0] - The referral type for seller is 0 - ether / 1 - token, _Type[1] - The referral type for buyer 0 - ether / 1 - token. * @return bool - true. */ function createEscrow(uint16 _tradeId, address _seller, address _buyer, uint256 _amount, address _tokenContract, uint256 _sellerFee, uint256 _buyerFee,uint16 _type,uint32 _sellerCancelInSeconds, address[2] calldata _Ref, address[2] calldata _Tokens, uint256[2] calldata _Type) payable external returns(bool) { bytes32 _tradeHash = keccak256(abi.encodePacked(_tradeId,_seller,_buyer,_amount)); registerUser(_seller,_buyer,_Ref[0],_Ref[1],_Tokens[0],_Tokens[1],_Type[0],_Type[1]); //register require (msg.sender == _seller,"Invalid User.."); require (_type==1 || _type == 2, "Invalid Type.. "); require(escrow_map[_tradeHash].escrowStatus==false, "Status Checking Failed.. "); if(_Tokens[0] != address(0)) {// checking seller referral_token require(_Type[0]==1 && _referralFee[_seller][_Tokens[0]]>0,"Insufficient Fee Balance or type mismatch" ); } if(_Tokens[0] == address(0) && _type == 2){ require( _Type[0]==0 && msg.value >= _sellerFee, "Type mismatch or msg.value less then sellerfee"); _referralFee[_seller][_Tokens[0]] += msg.value; //_referralFee[_seller][_Tokens[0]].add(msg.value); } if(_Tokens[0] == address(0) && _type == 1){ require( _Type[0]==0 && msg.value >= _amount.add(_sellerFee), "Type mismatch or msg.value less then sellerfee"); _referralFee[_seller][_Tokens[0]] += _sellerFee; //_referralFee[_seller][_Tokens[0]].add(msg.value); } require(_referralFee[_seller][_Tokens[0]] >= _sellerFee, "Insufficient Fee for this Trade"); if(_type == 1){ require(_tokenContract == address(0), "Invalid Token Address For this Type"); require(_amount<=msg.value && msg.value >0, "Invalid Amount.."); } if(_type == 2){ Token(_tokenContract).transferFrom(_seller,address(this), _amount); } uint256 _sellerCancelAfter = _sellerCancelInSeconds == 0 ? 1 : ((now).add(_sellerCancelInSeconds)); escrow_map[_tradeHash].escrowStatus = true; escrow_map[_tradeHash].setTimeSellerCancel = _sellerCancelAfter; escrow_map[_tradeHash].sellerFee = _sellerFee; escrow_map[_tradeHash].buyerFee = _buyerFee; escrow_map[_tradeHash].eType = _type; emit Created(_tradeHash); //event return true; } /** @dev private - Register the User for referral process. * @param _seller - The seller address of particular trade. * @param _buyer - The buyer address of particular trade. * @param _sellrefer - The referral address for seller. * @param _buyrefer - The referral address for buyer. * @param _sellerToken - The referral token address for seller. * @param _buyerToken - The referral token address for buyer. * @param _sellerFeeType - The referral type for seller is 0 - ether / 1 - token. * @param _buyerFeeType - The referral type for buyer 0 - ether / 1 - token. * @return bool - true. */ function registerUser(address _seller, address _buyer,address _sellrefer,address _buyrefer, address _sellerToken, address _buyerToken, uint256 _sellerFeeType, uint256 _buyerFeeType) private returns(bool) { //seller if(_sellrefer!= address(0)) { // referralAddr checking for referral fee referral_map[_seller].referralAddr =_sellrefer; referral_map[_seller].registerStatus =true; } if(_sellerFeeType == 1) {// referral token for admin fee/referral fee referral_map[_seller].userAddr = _seller; referral_map[_seller].referralTokenAddr = _sellerToken; referral_map[_seller].referralType = _sellerFeeType; } else if(_sellerFeeType == 0) {// referral ether for admin fee/referral fee referral_map[_seller].userAddr = _seller; referral_map[_seller].referralTokenAddr = address(0); referral_map[_seller].referralType = _sellerFeeType; } //buyer if(_buyrefer != address(0)) { // referralAddr checking for referral fee referral_map[_buyer].referralAddr = _buyrefer; referral_map[_buyer].registerStatus =true; } if(_buyerFeeType ==1) {// referral token for admin fee/referral fee referral_map[_buyer].userAddr = _buyer; referral_map[_buyer].referralTokenAddr = _buyerToken; referral_map[_buyer].referralType = _buyerFeeType; } else if(_buyerFeeType == 0) { // referral ether for admin fee/referral fee referral_map[_buyer].userAddr = _buyer; referral_map[_buyer].referralTokenAddr = address(0); referral_map[_buyer].referralType = _buyerFeeType; } return true; } /** @dev external - Withdraw the admin fees collected by the contract. Only the owner can call this . * @param _to - The withdrawal address. * @param _amount - The withdrawal amount. * @param _type - If Ether __type = 1, else _type = 2. * @param _tokenContract - The withdrawal token address. */ function withdrawFees(address payable _to, uint256 _amount,uint16 _type, address _tokenContract) onlyOwner external { if(_type == 1) { require(_amount <= _token[address(this)][address(0)],"Insufficient ether balance"); _token[address(this)][address(0)] = _token[address(this)][address(0)].sub(_amount); _to.transfer(_amount); } else if(_type == 2) { require(_amount <= _token[address(this)][_tokenContract],"Insufficient token balance"); _token[address(this)][_tokenContract] = _token[address(this)][_tokenContract].sub(_amount); Token(_tokenContract).transfer(_to,_amount); } } /** @dev external - Withdraw the referral fees by the seller/buyer/referral address. * @param _amount - The withdrawal amount. * @param _type - If Ether __type = 1, else _type = 2. * @param _tokenContract - The withdrawal token address. * @param _refType - if the new referral token _refType = 0, if already registered referraltoken _refType = 1 */ function withdrawReferral(uint256 _amount,uint16 _type, address _tokenContract, uint256 _refType) external { if(_type == 1) { //ether require(_amount <= _referralFee[msg.sender][address(0)], "Insufficient ether balance"); _referralFee[msg.sender][address(0)] = _referralFee[msg.sender][address(0)].sub(_amount); msg.sender.transfer(_amount); } else if(_type == 2) { //token if(_refType == 0) { // Any user can withdraw their particular token amount require(_amount <= _referralFee[msg.sender][_tokenContract], "Insufficient token balance"); _referralFee[ msg.sender][_tokenContract] = _referralFee[ msg.sender][_tokenContract].sub(_amount); Token(_tokenContract).transfer( msg.sender,_amount); } else if(_refType == 1) { // If seller/ buyer comes, withdraw their referral token amount require(_amount <= _referralFee[msg.sender][referral_map[msg.sender].referralTokenAddr], "Insufficient token balance"); _referralFee[ msg.sender][referral_map[msg.sender].referralTokenAddr] = _referralFee[ msg.sender][referral_map[msg.sender].referralTokenAddr].sub(_amount); Token(referral_map[msg.sender].referralTokenAddr).transfer(msg.sender,_amount); } } } /** @dev payable - After the payment successfull, the buyer clicks mark as paid on that time this function calls. * @param _tradeId - The unique id for particular trade. * @param _seller - The seller address of particular trade. * @param _buyer - The buyer address of particular trade. * @param _amount - The escrow amount of particular trade is ether/token. * @return bool - true. */ function disableSellerCancel(uint16 _tradeId, address payable _seller, address payable _buyer, uint256 _amount) payable public returns(bool) { bytes32 _tradeHash = keccak256(abi.encodePacked(_tradeId,_seller,_buyer,_amount)); require(escrow_map[_tradeHash].escrowStatus == true, "Status Checking Failed.. "); require(escrow_map[_tradeHash].setTimeSellerCancel !=0, "Seller Cancel time is Differ.. "); require(msg.sender == _buyer, "Invalid User.. "); if(referral_map[_buyer].referralTokenAddr != address(0)) { // checking buyer referral_token require(_referralFee[_buyer][referral_map[_buyer].referralTokenAddr]>0,"Insufficient Fee Balance.." ); } if(referral_map[_buyer].referralTokenAddr == address(0) && (escrow_map[_tradeHash].eType == 2)) { require(msg.value >= escrow_map[_tradeHash].buyerFee, "Need more deposit amount for fee"); _referralFee[_buyer][referral_map[_buyer].referralTokenAddr] = _referralFee[_buyer][referral_map[_buyer].referralTokenAddr].add(msg.value); } if(referral_map[_buyer].referralTokenAddr == address(0) && (escrow_map[_tradeHash].eType == 1)) { _referralFee[_buyer][referral_map[_buyer].referralTokenAddr] = _referralFee[_buyer][referral_map[_buyer].referralTokenAddr].add(escrow_map[_tradeHash].buyerFee); } require(_referralFee[_buyer][referral_map[_buyer].referralTokenAddr] >= escrow_map[_tradeHash].buyerFee, "Insufficient Fee for this Trade"); escrow_map[_tradeHash].setTimeSellerCancel = 0; emit SellerCancelDisabled(_tradeHash); // Event return true; } /** @dev external - If the buyer wants to cancel the trade, the escrow send back ether to seller. * @param _tradeId - The unique id for particular trade. * @param _seller - The seller address of particular trade. * @param _buyer - The buyer address of particular trade. * @param _amount - The escrow amount of particular trade is ether/token. * @param tokenadd - The token address which is escrowed by seller. * @return bool - true. */ function buyerCancel(uint16 _tradeId, address payable _seller, address payable _buyer, uint256 _amount,address tokenadd) external returns(bool) { bytes32 _tradeHash = keccak256(abi.encodePacked(_tradeId,_seller,_buyer,_amount)); require(escrow_map[_tradeHash].escrowStatus == true && msg.sender==feeAddress, "Invalid Escrow status or This user not allowed to call"); require(escrow_map[_tradeHash].setTimeSellerCancel > now, "Time Expired Issue.."); if(escrow_map[_tradeHash].eType == 1 ) { _seller.transfer(_amount); } if (escrow_map[_tradeHash].eType== 2) { Token(tokenadd).transfer(_seller,_amount); } delete escrow_map[_tradeHash]; emit CancelledByBuyer(_tradeHash); //Event return true; } /** @dev external - If the seller wants to cancel the trade, the escrow send back ether to seller, Its only called if the buyer missed to pay the amount * @param _tradeId - The unique id for particular trade. * @param _seller - The seller address of particular trade. * @param _buyer - The buyer address of particular trade. * @param _amount - The escrow amount of particular trade is ether/token. * @param tokenadd - The token address which is escrowed by seller. * @return bool - true. */ function sellerCancel(uint16 _tradeId, address payable _seller, address payable _buyer, uint256 _amount, address tokenadd) external returns(bool) { bytes32 _tradeHash = keccak256(abi.encodePacked(_tradeId,_seller,_buyer,_amount)); require(escrow_map[_tradeHash].escrowStatus == true && msg.sender==feeAddress, "Invalid Escrow status or This user not allowed to call"); if(escrow_map[_tradeHash].setTimeSellerCancel <= 1 || escrow_map[_tradeHash].setTimeSellerCancel > now) revert(); if(escrow_map[_tradeHash].eType == 1 ) { _seller.transfer(_amount); } if (escrow_map[_tradeHash].eType == 2) { Token(tokenadd).transfer(_seller,_amount); } delete escrow_map[_tradeHash]; emit CancelledBySeller(_tradeHash); // Event return true; } /** @dev external - If the seller wants to cancel the request, seller calls, If the sellet set time for cancel = 1 and Its only called if the buyer is unresponsive. * @param _tradeId - The unique id for particular trade. * @param _seller - The seller address of particular trade. * @param _buyer - The buyer address of particular trade. * @param _amount - The escrow amount of particular trade is ether/token. * @return bool - true. */ function sellerRequestCancel(uint16 _tradeId, address payable _seller, address payable _buyer, uint256 _amount) external returns(bool) { bytes32 _tradeHash = keccak256(abi.encodePacked(_tradeId,_seller,_buyer,_amount)); require(feeAddress==msg.sender, "This user not allowed to call this function"); require(escrow_map[_tradeHash].escrowStatus == true, "Status Checking Failed.. "); require (escrow_map[_tradeHash].setTimeSellerCancel == 1, "Seller Cancel time is Differ.. "); escrow_map[_tradeHash].setTimeSellerCancel = (now).add(requestCancelMinimumTime); emit SellerRequestedCancel(_tradeHash); // Event return true; } /** @dev external - Call for dispute if the clashes between seller or buyer. * @param _tradeId - The unique id for particular trade. * @param _seller - The seller address of particular trade. * @param _buyer - The buyer address of particular trade. * @param _amount - The escrow amount of particular trade is ether/token. * @param disputetype - if seller disputes disputetype = 1 and if buyer disputes disputetype = 2. * @return bool - true. */ function consumeDispute(uint16 _tradeId, address payable _seller, address payable _buyer, uint256 _amount, uint16 disputetype) external returns (bool) { bytes32 _tradeHash = keccak256(abi.encodePacked(_tradeId,_seller,_buyer,_amount)); require(msg.sender == feeAddress, "This user not allowed to call this function"); require(escrow_map[_tradeHash].escrowStatus == true, " Status Failed.. "); if(disputetype == 1) {// seller escrow_map[_tradeHash].sellerDispute = true; return true; } else if(disputetype == 2) {// buyer escrow_map[_tradeHash].buyerDispute = true; return true; } } /** @dev external - After Confirm Payment Call By Seller, release the funds. * @param _tradeId - The unique id for particular trade. * @param _seller - The seller address of particular trade. * @param _buyer - The buyer address of particular trade. * @param _amount - The escrow amount of particular trade is ether/token. * @param _tokenContract - The token address which is escrowed by seller. * @return bool - true. */ function releseFunds(uint16 _tradeId, address payable _seller, address payable _buyer, uint256 _amount,address _tokenContract) external returns(bool) { require(msg.sender == feeAddress, "This user not allowed to call this function"); bytes32 _tradeHash = keccak256(abi.encodePacked(_tradeId,_seller,_buyer,_amount)); require(escrow_map[_tradeHash].escrowStatus == true, "Status Failed.. "); uint256[2] memory _reffee; uint256 percDiv =uint256((100)).mul(10**18); _reffee[0] = (escrow_map[_tradeHash].sellerFee.mul(referPercent)).div(percDiv); // seller Referral Fee _reffee[1] = (escrow_map[_tradeHash].buyerFee.mul(referPercent)).div(percDiv); // buyer Referral Fee // seller referral process if(referral_map[_seller]. registerStatus == true) { require(_referralFee[_seller][referral_map[_seller].referralTokenAddr] >= escrow_map[_tradeHash].sellerFee, "Insufficient Referral Fee Balance for seller"); _token[address(this)][referral_map[_seller].referralTokenAddr] = _token[address(this)][referral_map[_seller].referralTokenAddr].add(escrow_map[_tradeHash].sellerFee); _referralFee[referral_map[_seller].referralAddr][referral_map[_seller].referralTokenAddr] = _referralFee[referral_map[_seller].referralAddr][referral_map[_seller].referralTokenAddr].add(_reffee[0]); // seller Referral _token[address(this)][referral_map[_seller].referralTokenAddr] = _token[address(this)][referral_map[_seller].referralTokenAddr].sub(_reffee[0]); _referralFee[_seller][referral_map[_seller].referralTokenAddr] = _referralFee[_seller][referral_map[_seller].referralTokenAddr].sub(escrow_map[_tradeHash].sellerFee); } else // seller not registered the referral address, so only admin fee { _reffee[0] = 0; require(_referralFee[_seller][referral_map[_seller].referralTokenAddr] >= escrow_map[_tradeHash].sellerFee, "Insufficient Referral Fee Balance for seller"); _token[address(this)][referral_map[_seller].referralTokenAddr] = _token[address(this)][referral_map[_seller].referralTokenAddr].add(escrow_map[_tradeHash].sellerFee); _token[address(this)][referral_map[_seller].referralTokenAddr] = _token[address(this)][referral_map[_seller].referralTokenAddr].sub(_reffee[0]); _referralFee[_seller][referral_map[_seller].referralTokenAddr] = _referralFee[_seller][referral_map[_seller].referralTokenAddr].sub(escrow_map[_tradeHash].sellerFee); } //buyer referral process if(referral_map[_buyer]. registerStatus == true) { require(_referralFee[_buyer][referral_map[_buyer].referralTokenAddr] >= escrow_map[_tradeHash].buyerFee , "Insufficient Referral Fee Balance for buyer"); _token[address(this)][referral_map[_buyer].referralTokenAddr] = _token[address(this)][referral_map[_buyer].referralTokenAddr].add(escrow_map[_tradeHash].buyerFee); _referralFee[referral_map[_buyer].referralAddr][referral_map[_buyer].referralTokenAddr] = _referralFee[referral_map[_buyer].referralAddr][referral_map[_buyer].referralTokenAddr].add(_reffee[1]); // buyer Referral _token[address(this)][referral_map[_buyer].referralTokenAddr] = _token[address(this)][referral_map[_buyer].referralTokenAddr].sub(_reffee[1]); _referralFee[_buyer][referral_map[_buyer].referralTokenAddr] = _referralFee[_buyer][referral_map[_buyer].referralTokenAddr].sub(escrow_map[_tradeHash].buyerFee); } else //buyer not registered the referral address, so only admin fee { _reffee[1] =0; require(_referralFee[_buyer][referral_map[_buyer].referralTokenAddr] >= escrow_map[_tradeHash].buyerFee, "Insufficient Referral Fee Balance for buyer"); _token[address(this)][referral_map[_buyer].referralTokenAddr] = _token[address(this)][referral_map[_buyer].referralTokenAddr].add(escrow_map[_tradeHash].buyerFee); _token[address(this)][referral_map[_buyer].referralTokenAddr] = _token[address(this)][referral_map[_buyer].referralTokenAddr].sub(_reffee[1]); _referralFee[_buyer][referral_map[_buyer].referralTokenAddr] = _referralFee[_buyer][referral_map[_buyer].referralTokenAddr].sub(escrow_map[_tradeHash].buyerFee); } if(escrow_map[_tradeHash].eType == 1 ) {//ether _buyer.transfer(_amount.sub(escrow_map[_tradeHash].buyerFee)); } if (escrow_map[_tradeHash].eType == 2) {//token Token(_tokenContract).transfer(_buyer,(_amount)); } delete escrow_map[_tradeHash]; emit Released(_tradeHash); return true; } /** @dev external - Its only called by Mediator, because of any issues between seller and buyer (vanish), If the sellerDispute or buyerDispute is true for this trade. * @param _tradeId - The unique id for particular trade. * @param _seller - The seller address of particular trade. * @param _buyer - The buyer address of particular trade. * @param _amount - The escrow amount of particular trade is ether/token. * @param _favour - If the mediator is favour for seller then _favour = 1, if the mediator is favour for buyer then _favour = 2. * @param _tokenContract - The token address which is escrowed by seller. * @return bool - true. */ function disputeByMediator(uint16 _tradeId, address payable _seller, address payable _buyer, uint256 _amount, uint16 _favour, address _tokenContract) external returns(bool) { require(msg.sender == feeAddress,"This user not allowed to call this function"); bytes32 _tradeHash = keccak256(abi.encodePacked(_tradeId,_seller,_buyer,_amount)); require(escrow_map[_tradeHash].sellerDispute == true || escrow_map[_tradeHash].buyerDispute == true, " Seller or Buyer Doesn't Call Dispute"); require(escrow_map[_tradeHash].escrowStatus == true, " Status Failed.."); require(_favour == 1 || _favour == 2, "Invalid Favour Type"); uint256[2] memory _reffee; uint256 percDiv =uint256((100)).mul(10**18); _reffee[0] = (escrow_map[_tradeHash].sellerFee.mul(referPercent)).div(percDiv); // seller Referral Fee _reffee[1] = (escrow_map[_tradeHash].buyerFee.mul(referPercent)).div(percDiv); // buyer Referral Fee // seller referral process if(referral_map[_seller]. registerStatus == true) { require(_referralFee[_seller][referral_map[_seller].referralTokenAddr] >= escrow_map[_tradeHash].sellerFee, "Insufficient Referral Fee Balance for seller"); _token[address(this)][referral_map[_seller].referralTokenAddr] = _token[address(this)][referral_map[_seller].referralTokenAddr].add(escrow_map[_tradeHash].sellerFee); _referralFee[referral_map[_seller].referralAddr][referral_map[_seller].referralTokenAddr] = _referralFee[referral_map[_seller].referralAddr][referral_map[_seller].referralTokenAddr].add(_reffee[0]); // seller Referral _token[address(this)][referral_map[_seller].referralTokenAddr] = _token[address(this)][referral_map[_seller].referralTokenAddr].sub(_reffee[0]); _referralFee[_seller][referral_map[_seller].referralTokenAddr] = _referralFee[_seller][referral_map[_seller].referralTokenAddr].sub(escrow_map[_tradeHash].sellerFee); } else // seller not registered the referral address, so only admin fee { _reffee[0] = 0; require(_referralFee[_seller][referral_map[_seller].referralTokenAddr] >= escrow_map[_tradeHash].sellerFee, "Insufficient Referral Fee Balance for seller"); _token[address(this)][referral_map[_seller].referralTokenAddr] = _token[address(this)][referral_map[_seller].referralTokenAddr].add(escrow_map[_tradeHash].sellerFee); _token[address(this)][referral_map[_seller].referralTokenAddr] = _token[address(this)][referral_map[_seller].referralTokenAddr].sub(_reffee[0]); _referralFee[_seller][referral_map[_seller].referralTokenAddr] = _referralFee[_seller][referral_map[_seller].referralTokenAddr].sub(escrow_map[_tradeHash].sellerFee); } //buyer referral process if(referral_map[_buyer]. registerStatus == true) { require(_referralFee[_buyer][referral_map[_buyer].referralTokenAddr] >= escrow_map[_tradeHash].buyerFee , "Insufficient Referral Fee Balance for buyer"); _token[address(this)][referral_map[_buyer].referralTokenAddr] = _token[address(this)][referral_map[_buyer].referralTokenAddr].add(escrow_map[_tradeHash].buyerFee); _referralFee[referral_map[_buyer].referralAddr][referral_map[_buyer].referralTokenAddr] = _referralFee[referral_map[_buyer].referralAddr][referral_map[_buyer].referralTokenAddr].add(_reffee[1]); // buyer Referral _token[address(this)][referral_map[_buyer].referralTokenAddr] = _token[address(this)][referral_map[_buyer].referralTokenAddr].sub(_reffee[1]); _referralFee[_buyer][referral_map[_buyer].referralTokenAddr] = _referralFee[_buyer][referral_map[_buyer].referralTokenAddr].sub(escrow_map[_tradeHash].buyerFee); } else //buyer not registered the referral address, so only admin fee { _reffee[1] =0; require(_referralFee[_buyer][referral_map[_buyer].referralTokenAddr] >= escrow_map[_tradeHash].buyerFee, "Insufficient Referral Fee Balance for buyer"); _token[address(this)][referral_map[_buyer].referralTokenAddr] = _token[address(this)][referral_map[_buyer].referralTokenAddr].add(escrow_map[_tradeHash].buyerFee); _token[address(this)][referral_map[_buyer].referralTokenAddr] = _token[address(this)][referral_map[_buyer].referralTokenAddr].sub(_reffee[1]); _referralFee[_buyer][referral_map[_buyer].referralTokenAddr] = _referralFee[_buyer][referral_map[_buyer].referralTokenAddr].sub(escrow_map[_tradeHash].buyerFee); } if(escrow_map[_tradeHash].eType == 1) {//ether if(_favour == 1) {//seller _seller.transfer(_amount); } else if (_favour == 2) {//buyer _buyer.transfer(_amount.sub(escrow_map[_tradeHash].buyerFee)); } } if(escrow_map[_tradeHash].eType == 2) {//token if(_favour == 1) { //seller Token(_tokenContract).transfer(_seller,_amount); } else if (_favour == 2) {//buyer Token(_tokenContract).transfer(_buyer,(_amount)); } } delete escrow_map[_tradeHash]; emit DisputeResolved(_tradeHash); // Event return true; } function tokenallowance(address tokenAddr,address _owner,address _spender) public view returns(uint256){ // to check token allowance to contract return Token(tokenAddr).allowance(_owner,_spender); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"feeadd","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_tradeHash","type":"bytes32"}],"name":"CancelledByBuyer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_tradeHash","type":"bytes32"}],"name":"CancelledBySeller","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_tradeHash","type":"bytes32"}],"name":"Created","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_tradeHash","type":"bytes32"}],"name":"DisputeResolved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_tradeHash","type":"bytes32"}],"name":"Released","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_tradeHash","type":"bytes32"}],"name":"SellerCancelDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_tradeHash","type":"bytes32"}],"name":"SellerRequestedCancel","type":"event"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"_referralFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"_token","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint16","name":"_tradeId","type":"uint16"},{"internalType":"address payable","name":"_seller","type":"address"},{"internalType":"address payable","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"tokenadd","type":"address"}],"name":"buyerCancel","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint16","name":"_tradeId","type":"uint16"},{"internalType":"address payable","name":"_seller","type":"address"},{"internalType":"address payable","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint16","name":"disputetype","type":"uint16"}],"name":"consumeDispute","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint16","name":"_tradeId","type":"uint16"},{"internalType":"address","name":"_seller","type":"address"},{"internalType":"address","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"uint256","name":"_sellerFee","type":"uint256"},{"internalType":"uint256","name":"_buyerFee","type":"uint256"},{"internalType":"uint16","name":"_type","type":"uint16"},{"internalType":"uint32","name":"_sellerCancelInSeconds","type":"uint32"},{"internalType":"address[2]","name":"_Ref","type":"address[2]"},{"internalType":"address[2]","name":"_Tokens","type":"address[2]"},{"internalType":"uint256[2]","name":"_Type","type":"uint256[2]"}],"name":"createEscrow","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint16","name":"_tradeId","type":"uint16"},{"internalType":"address payable","name":"_seller","type":"address"},{"internalType":"address payable","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"disableSellerCancel","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint16","name":"_tradeId","type":"uint16"},{"internalType":"address payable","name":"_seller","type":"address"},{"internalType":"address payable","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint16","name":"_favour","type":"uint16"},{"internalType":"address","name":"_tokenContract","type":"address"}],"name":"disputeByMediator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"escrow_map","outputs":[{"internalType":"bool","name":"escrowStatus","type":"bool"},{"internalType":"uint256","name":"setTimeSellerCancel","type":"uint256"},{"internalType":"uint256","name":"sellerFee","type":"uint256"},{"internalType":"uint256","name":"buyerFee","type":"uint256"},{"internalType":"uint256","name":"eType","type":"uint256"},{"internalType":"bool","name":"sellerDispute","type":"bool"},{"internalType":"bool","name":"buyerDispute","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"feeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"feeCollect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"referPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"referral_map","outputs":[{"internalType":"address","name":"userAddr","type":"address"},{"internalType":"address","name":"referralAddr","type":"address"},{"internalType":"address","name":"referralTokenAddr","type":"address"},{"internalType":"uint256","name":"referralType","type":"uint256"},{"internalType":"bool","name":"registerStatus","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint16","name":"_tradeId","type":"uint16"},{"internalType":"address payable","name":"_seller","type":"address"},{"internalType":"address payable","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_tokenContract","type":"address"}],"name":"releseFunds","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"requestCancelMinimumTime","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint16","name":"_tradeId","type":"uint16"},{"internalType":"address payable","name":"_seller","type":"address"},{"internalType":"address payable","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"tokenadd","type":"address"}],"name":"sellerCancel","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint16","name":"_tradeId","type":"uint16"},{"internalType":"address payable","name":"_seller","type":"address"},{"internalType":"address payable","name":"_buyer","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"sellerRequestCancel","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newFeeAddress","type":"address"}],"name":"setFeeAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_feePercent","type":"uint256"}],"name":"setFeePercent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint32","name":"_newRequestCancelMinimumTime","type":"uint32"}],"name":"setRequestCancellationMinimumTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"tokenAddr","type":"address"},{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"tokenallowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address payable","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint16","name":"_type","type":"uint16"},{"internalType":"address","name":"_tokenContract","type":"address"}],"name":"withdrawFees","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint16","name":"_type","type":"uint16"},{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"uint256","name":"_refType","type":"uint256"}],"name":"withdrawReferral","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50604051620045ea380380620045ea8339818101604052602081101561003557600080fd5b5051600080546001600160a01b0319908116331790915560018054751c20000000000000000000000000000000000000000063ffffffff60a01b196001600160a01b0390951691909316179290921617905561455380620000976000396000f3fe60806040526004361061014b5760003560e01c806381bd4638116100b6578063b2e544571161006f578063b2e54457146105f9578063b507af3b1461064c578063b8e5aa6d14610699578063e1c48244146106e2578063f1e7250e1461074f578063fd63f389146107645761014b565b806381bd46381461048b5780638705fcd4146104cb5780638da5cb5b146104fe57806390729d6014610513578063a91b977a1461057b578063b1dd43b4146105b65761014b565b80634d694a34116101085780634d694a34146102c65780635093f08f14610313578063516c72071461037257806360c40fcf146103b75780637038644c1461040e5780637ce3489b146104615761014b565b8063011cced91461015057806305b649931461017e57806313af4035146101b05780631900d0f9146101e357806322643b8d1461022e5780634127535814610295575b600080fd5b34801561015c57600080fd5b506101656107de565b6040805163ffffffff9092168252519081900360200190f35b34801561018a57600080fd5b506101ae600480360360208110156101a157600080fd5b503563ffffffff166107f1565b005b3480156101bc57600080fd5b506101ae600480360360208110156101d357600080fd5b50356001600160a01b0316610860565b3480156101ef57600080fd5b506101ae6004803603608081101561020657600080fd5b506001600160a01b03813581169160208101359161ffff604083013516916060013516610918565b34801561023a57600080fd5b50610281600480360360a081101561025157600080fd5b5061ffff813516906001600160a01b03602082013581169160408101358216916060820135916080013516610bb6565b604080519115158252519081900360200190f35b3480156102a157600080fd5b506102aa610e35565b604080516001600160a01b039092168252519081900360200190f35b3480156102d257600080fd5b50610301600480360360408110156102e957600080fd5b506001600160a01b0381358116916020013516610e44565b60408051918252519081900360200190f35b34801561031f57600080fd5b50610281600480360360c081101561033657600080fd5b5061ffff81358116916001600160a01b036020820135811692604083013582169260608101359260808201359092169160a09091013516610e61565b34801561037e57600080fd5b506103016004803603606081101561039557600080fd5b506001600160a01b038135811691602081013582169160409091013516611c1b565b3480156103c357600080fd5b50610281600480360360a08110156103da57600080fd5b5061ffff81358116916001600160a01b03602082013581169260408301359091169160608101359160809091013516611ca2565b34801561041a57600080fd5b50610281600480360360a081101561043157600080fd5b5061ffff813516906001600160a01b03602082013581169160408101358216916060820135916080013516611e16565b34801561046d57600080fd5b506101ae6004803603602081101561048457600080fd5b50356120b5565b610281600480360360808110156104a157600080fd5b5061ffff813516906001600160a01b0360208201358116916040810135909116906060013561214e565b3480156104d757600080fd5b506101ae600480360360208110156104ee57600080fd5b50356001600160a01b0316612629565b34801561050a57600080fd5b506102aa6126e1565b34801561051f57600080fd5b5061053d6004803603602081101561053657600080fd5b50356126f0565b60408051971515885260208801969096528686019490945260608601929092526080850152151560a0840152151560c0830152519081900360e00190f35b34801561058757600080fd5b506103016004803603604081101561059e57600080fd5b506001600160a01b0381358116916020013516612733565b3480156105c257600080fd5b50610281600480360360608110156105d957600080fd5b506001600160a01b03813581169160208101359091169060400135612750565b34801561060557600080fd5b50610281600480360360a081101561061c57600080fd5b5061ffff813516906001600160a01b036020820135811691604081013582169160608201359160800135166128f6565b34801561065857600080fd5b506102816004803603608081101561066f57600080fd5b5061ffff813516906001600160a01b0360208201358116916040810135909116906060013561343a565b3480156106a557600080fd5b506101ae600480360360808110156106bc57600080fd5b5080359061ffff602082013516906001600160a01b036040820135169060600135613620565b3480156106ee57600080fd5b506107156004803603602081101561070557600080fd5b50356001600160a01b03166139ab565b604080516001600160a01b039687168152948616602086015292909416838301526060830152911515608082015290519081900360a00190f35b34801561075b57600080fd5b506103016139ed565b61028160048036036101e081101561077b57600080fd5b5061ffff81358116916001600160a01b03602082013581169260408301358216926060810135926080820135169160a08201359160c08101359160e0820135169063ffffffff61010082013516906101208101906101608101906101a0016139f3565b600154600160a01b900463ffffffff1681565b6000546001600160a01b0316331461083a5760405162461bcd60e51b81526004018080602001828103825260288152602001806144956028913960400191505060405180910390fd5b6001805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6000546001600160a01b031633146108a95760405162461bcd60e51b81526004018080602001828103825260288152602001806144956028913960400191505060405180910390fd5b6001600160a01b0381166108f6576040805162461bcd60e51b815260206004820152600f60248201526e496e76616c6964204164647265737360881b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146109615760405162461bcd60e51b81526004018080602001828103825260288152602001806144956028913960400191505060405180910390fd5b8161ffff1660011415610a60573060009081526005602090815260408083208380529091529020548311156109dd576040805162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e742065746865722062616c616e6365000000000000604482015290519081900360640190fd5b306000908152600560209081526040808320838052909152902054610a08908463ffffffff613ff516565b3060009081526005602090815260408083208380529091528082209290925590516001600160a01b0386169185156108fc02918691818181858888f19350505050158015610a5a573d6000803e3d6000fd5b50610bb0565b8161ffff1660021415610bb0573060009081526005602090815260408083206001600160a01b0385168452909152902054831115610ae2576040805162461bcd60e51b815260206004820152601a602482015279496e73756666696369656e7420746f6b656e2062616c616e636560301b604482015290519081900360640190fd5b3060009081526005602090815260408083206001600160a01b0385168452909152902054610b16908463ffffffff613ff516565b3060009081526005602090815260408083206001600160a01b0386811680865291845282852095909555815163a9059cbb60e01b81529489166004860152602485018890529051909363a9059cbb9360448083019493928390030190829087803b158015610b8357600080fd5b505af1158015610b97573d6000803e3d6000fd5b505050506040513d6020811015610bad57600080fd5b50505b50505050565b604080516001600160f01b031960f088901b166020808301919091526001600160601b0319606088811b8216602285015287901b166036830152604a80830186905283518084039091018152606a9092018352815191810191909120600081815260049092529181205490919060ff1615156001148015610c4157506001546001600160a01b031633145b610c7c5760405162461bcd60e51b81526004018080602001828103825260368152602001806144bd6036913960400191505060405180910390fd5b6000818152600460205260409020600190810154111580610cad575060008181526004602052604090206001015442105b15610cb757600080fd5b6000818152600460208190526040909120015460011415610d0a576040516001600160a01b0387169085156108fc029086906000818181858888f19350505050158015610d08573d6000803e3d6000fd5b505b6000818152600460208190526040909120015460021415610db257826001600160a01b031663a9059cbb87866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610d8557600080fd5b505af1158015610d99573d6000803e3d6000fd5b505050506040513d6020811015610daf57600080fd5b50505b6000818152600460208181526040808420805460ff19168155600181018590556002810185905560038101859055928301939093556005909101805461ffff19169055815183815291517f366d2b4e6cc37ecebb3d7d41df6d581634fd8137412710a1e086e4ca4656bb589281900390910190a160019150505b95945050505050565b6001546001600160a01b031681565b600560209081526000928352604080842090915290825290205481565b6001546000906001600160a01b03163314610ead5760405162461bcd60e51b815260040180806020018281038252602b81526020018061446a602b913960400191505060405180910390fd5b604080516001600160f01b031960f08a901b166020808301919091526001600160601b031960608a811b8216602285015289901b166036830152604a80830188905283518084039091018152606a9092018352815191810191909120600081815260049092529190206005015460ff16151560011480610f49575060008181526004602052604090206005015460ff6101009091041615156001145b610f845760405162461bcd60e51b81526004018080602001828103825260258152602001806144456025913960400191505060405180910390fd5b60008181526004602052604090205460ff161515600114610fdf576040805162461bcd60e51b815260206004820152601060248201526f1029ba30ba3ab9902330b4b632b2171760811b604482015290519081900360640190fd5b8361ffff1660011480610ff657508361ffff166002145b61103d576040805162461bcd60e51b8152602060048201526013602482015272496e76616c6964204661766f7572205479706560681b604482015290519081900360640190fd5b611045614360565b60006110606064670de0b6b3a764000063ffffffff61405716565b905061109d81611091600254600460008881526020019081526020016000206002015461405790919063ffffffff16565b9063ffffffff6140b716565b82526002546000848152600460205260409020600301546110c99183916110919163ffffffff61405716565b6020808401919091526001600160a01b038a1660009081526003909152604090206004015460ff1615156001141561135f5760008381526004602090815260408083206002908101546001600160a01b03808f16865260068552838620600386528487209093015416855292529091205410156111775760405162461bcd60e51b815260040180806020018281038252602c8152602001806144f3602c913960400191505060405180910390fd5b6000838152600460209081526040808320600290810154308552600584528285206001600160a01b038f81168752600386528487209093015490921685529252909120546111ca9163ffffffff61412116565b3060009081526005602090815260408083206001600160a01b038e8116855260038452828520600281018054831687529285528386209690965587516001909601548116855260068452828520915416845290915290205461122b91614121565b6001600160a01b03808b166000908152600360209081526040808320600181015485168452600683528184206002909101549094168352929052908120919091556112bb9083905b602090810291909101513060009081526005835260408082206001600160a01b038f81168452600386528284206002015416835290935291909120549063ffffffff613ff516565b3060009081526005602090815260408083206001600160a01b038e81168086526003855283862060029081018054841688529386528487209790975589865260048552838620909601549585526006845282852091541684529091529020546113299163ffffffff613ff516565b6001600160a01b03808b166000908152600660209081526040808320600383528184206002015490941683529290522055611512565b60008083528381526004602090815260408083206002908101546001600160a01b038e8116865260068552838620600386528487209093015416855292529091205410156113de5760405162461bcd60e51b815260040180806020018281038252602c8152602001806144f3602c913960400191505060405180910390fd5b6000838152600460209081526040808320600290810154308552600584528285206001600160a01b038f81168752600386528487209093015490921685529252909120546114319163ffffffff61412116565b3060009081526005602090815260408083206001600160a01b038e811685526003845282852060020154168452909152812091909155611472908390611273565b3060009081526005602090815260408083206001600160a01b038e81168086526003855283862060029081018054841688529386528487209790975589865260048552838620909601549585526006845282852091541684529091529020546114e09163ffffffff613ff516565b6001600160a01b03808b1660009081526006602090815260408083206003835281842060020154909416835292905220555b6001600160a01b03881660009081526003602052604090206004015460ff161515600114156117c75760008381526004602090815260408083206003908101546001600160a01b03808e168652600685528386209285528386206002015416855292529091205410156115b65760405162461bcd60e51b815260040180806020018281038252602b8152602001806143d6602b913960400191505060405180910390fd5b6000838152600460209081526040808320600390810154308552600584528285206001600160a01b038e811687529285528386206002015490921685529252909120546116089163ffffffff61412116565b3060009081526005602090815260408083206001600160a01b038d8116855260038452828520600201541684529091529020556116948260015b602090810291909101516001600160a01b03808c16600090815260038452604080822060018101548416835260068652818320600290910154909316825291909352909120549063ffffffff61412116565b6001600160a01b03808a166000908152600360209081526040808320600180820154861685526006845282852060029092015490951684529091529020919091556117249083905b602090810291909101513060009081526005835260408082206001600160a01b038e81168452600386528284206002015416835290935291909120549063ffffffff613ff516565b3060009081526005602090815260408083206001600160a01b038d811680865260038086528487206002018054841688529386528487209790975589865260048552838620909601549585526006845282852091541684529091529020546117919163ffffffff613ff516565b6001600160a01b03808a166000908152600660209081526040808320600383528184206002015490941683529290522055611976565b600060208084018290528482526004815260408083206003908101546001600160a01b038d81168652600685528386209285528386206002015416855292529091205410156118475760405162461bcd60e51b815260040180806020018281038252602b8152602001806143d6602b913960400191505060405180910390fd5b6000838152600460209081526040808320600390810154308552600584528285206001600160a01b038e811687529285528386206002015490921685529252909120546118999163ffffffff61412116565b3060009081526005602090815260408083206001600160a01b038d8116855260038452828520600201541684529091529020556118d78260016116dc565b3060009081526005602090815260408083206001600160a01b038d811680865260038086528487206002018054841688529386528487209790975589865260048552838620909601549585526006845282852091541684529091529020546119449163ffffffff613ff516565b6001600160a01b03808a1660009081526006602090815260408083206003835281842060020154909416835292905220555b6000838152600460208190526040909120015460011415611a43578561ffff16600114156119da576040516001600160a01b038a169088156108fc029089906000818181858888f193505050501580156119d4573d6000803e3d6000fd5b50611a43565b8561ffff1660021415611a43576000838152600460205260409020600301546001600160a01b038916906108fc90611a19908a9063ffffffff613ff516565b6040518115909202916000818181858888f19350505050158015611a41573d6000803e3d6000fd5b505b6000838152600460208190526040909120015460021415611b97578561ffff1660011415611afd57846001600160a01b031663a9059cbb8a896040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611acb57600080fd5b505af1158015611adf573d6000803e3d6000fd5b505050506040513d6020811015611af557600080fd5b50611b979050565b8561ffff1660021415611b9757846001600160a01b031663a9059cbb89896040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611b6a57600080fd5b505af1158015611b7e573d6000803e3d6000fd5b505050506040513d6020811015611b9457600080fd5b50505b6000838152600460208181526040808420805460ff19168155600181018590556002810185905560038101859055928301939093556005909101805461ffff19169055815185815291517f65e0c7182ce84cd9087c1b07dc4b65875578877b885848e4be19ee312f2c3d319281900390910190a15060019998505050505050505050565b60408051636eb1769f60e11b81526001600160a01b0384811660048301528381166024830152915160009286169163dd62ed3e916044808301926020929190829003018186803b158015611c6e57600080fd5b505afa158015611c82573d6000803e3d6000fd5b505050506040513d6020811015611c9857600080fd5b5051949350505050565b6040805160f087901b6001600160f01b031916602080830191909152606087811b6001600160601b031990811660228501529087901b166036830152604a80830186905283518084039091018152606a9092019092528051910120600154600091906001600160a01b03163314611d4a5760405162461bcd60e51b815260040180806020018281038252602b81526020018061446a602b913960400191505060405180910390fd5b60008181526004602052604090205460ff161515600114611da6576040805162461bcd60e51b815260206004820152601160248201527001029ba30ba3ab9902330b4b632b217171607d1b604482015290519081900360640190fd5b8261ffff1660011415611dd9576000908152600460205260409020600501805460ff191660019081179091559050610e2c565b8261ffff1660021415611e0c576000908152600460205260409020600501805461ff001916610100179055506001610e2c565b5095945050505050565b604080516001600160f01b031960f088901b166020808301919091526001600160601b0319606088811b8216602285015287901b166036830152604a80830186905283518084039091018152606a9092018352815191810191909120600081815260049092529181205490919060ff1615156001148015611ea157506001546001600160a01b031633145b611edc5760405162461bcd60e51b81526004018080602001828103825260368152602001806144bd6036913960400191505060405180910390fd5b6000818152600460205260409020600101544210611f39576040805162461bcd60e51b81526020600482015260156024820152742a34b6b2901022bc3834b932b21024b9b9bab2971760591b604482015290519081900360640190fd5b6000818152600460208190526040909120015460011415611f8c576040516001600160a01b0387169085156108fc029086906000818181858888f19350505050158015611f8a573d6000803e3d6000fd5b505b600081815260046020819052604090912001546002141561203457826001600160a01b031663a9059cbb87866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561200757600080fd5b505af115801561201b573d6000803e3d6000fd5b505050506040513d602081101561203157600080fd5b50505b6000818152600460208181526040808420805460ff19168155600181018590556002810185905560038101859055928301939093556005909101805461ffff19169055815183815291517fd9b627ddaa414e8e6c82366cc9c179f6281d73968827cc17038a56852e28ac8b9281900390910190a15060019695505050505050565b6000546001600160a01b031633146120fe5760405162461bcd60e51b81526004018080602001828103825260288152602001806144956028913960400191505060405180910390fd5b60008111612149576040805162461bcd60e51b8152602060048201526013602482015272125b9d985b1a59081199594814195c98d95b9d606a1b604482015290519081900360640190fd5b600255565b604080516001600160f01b031960f087901b166020808301919091526001600160601b0319606087811b8216602285015286901b166036830152604a80830185905283518084039091018152606a9092018352815191810191909120600081815260049092529181205490919060ff161515600114612210576040805162461bcd60e51b8152602060048201526019602482015278029ba30ba3ab99021b432b1b5b4b733902330b4b632b217171603d1b604482015290519081900360640190fd5b600081815260046020526040902060010154612273576040805162461bcd60e51b815260206004820152601f60248201527f53656c6c65722043616e63656c2074696d65206973204469666665722e2e2000604482015290519081900360640190fd5b336001600160a01b038516146122c2576040805162461bcd60e51b815260206004820152600f60248201526e024b73b30b634b2102ab9b2b917171608d1b604482015290519081900360640190fd5b6001600160a01b038481166000908152600360205260409020600201541615612367576001600160a01b038085166000908152600660209081526040808320600383528184206002015490941683529290522054612367576040805162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e74204665652042616c616e63652e2e000000000000604482015290519081900360640190fd5b6001600160a01b03848116600090815260036020526040902060020154161580156123a45750600081815260046020819052604090912001546002145b156124825760008181526004602052604090206003015434101561240f576040805162461bcd60e51b815260206004820181905260248201527f4e656564206d6f7265206465706f73697420616d6f756e7420666f7220666565604482015290519081900360640190fd5b6001600160a01b038085166000908152600660209081526040808320600383528184206002015490941683529290522054612450903463ffffffff61412116565b6001600160a01b0380861660009081526006602090815260408083206003835281842060020154909416835292905220555b6001600160a01b03848116600090815260036020526040902060020154161580156124bf5750600081815260046020819052604090912001546001145b156125435760008181526004602090815260408083206003908101546001600160a01b03808a16865260068552838620928552838620600201541685529252909120546125119163ffffffff61412116565b6001600160a01b0380861660009081526006602090815260408083206003835281842060020154909416835292905220555b60008181526004602090815260408083206003908101546001600160a01b03808a168652600685528386209285528386206002015416855292529091205410156125d4576040805162461bcd60e51b815260206004820152601f60248201527f496e73756666696369656e742046656520666f72207468697320547261646500604482015290519081900360640190fd5b600081815260046020908152604080832060010192909255815183815291517fe95fa7985c7585e90dab2dc46470726468662be06f67d79a31a5012e4bc0edeb9281900390910190a150600195945050505050565b6000546001600160a01b031633146126725760405162461bcd60e51b81526004018080602001828103825260288152602001806144956028913960400191505060405180910390fd5b6001600160a01b0381166126bf576040805162461bcd60e51b815260206004820152600f60248201526e496e76616c6964204164647265737360881b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031681565b600460208190526000918252604090912080546001820154600283015460038401549484015460059094015460ff93841695929491938181169161010090041687565b600660209081526000928352604080842090915290825290205481565b60006001600160a01b0384161580159061277257506001600160a01b03831615155b6127b3576040805162461bcd60e51b815260206004820152600d60248201526c456d707479204164647265737360981b604482015290519081900360640190fd5b816127bf848630611c1b565b101561280b576040805162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b604482015290519081900360640190fd5b604080516323b872dd60e01b81526001600160a01b038681166004830152306024830152604482018590529151918516916323b872dd916064808201926020929091908290030181600087803b15801561286457600080fd5b505af1158015612878573d6000803e3d6000fd5b505050506040513d602081101561288e57600080fd5b50506001600160a01b038085166000908152600660209081526040808320938716835292905220546128c6908363ffffffff61412116565b6001600160a01b038086166000908152600660209081526040808320938816835292905220555060019392505050565b6001546000906001600160a01b031633146129425760405162461bcd60e51b815260040180806020018281038252602b81526020018061446a602b913960400191505060405180910390fd5b604080516001600160f01b031960f089901b166020808301919091526001600160601b0319606089811b8216602285015288901b166036830152604a80830187905283518084039091018152606a9092018352815191810191909120600081815260049092529190205460ff1615156001146129f8576040805162461bcd60e51b815260206004820152601060248201526f029ba30ba3ab9902330b4b632b21717160851b604482015290519081900360640190fd5b612a00614360565b6000612a1b6064670de0b6b3a764000063ffffffff61405716565b9050612a4c81611091600254600460008881526020019081526020016000206002015461405790919063ffffffff16565b8252600254600084815260046020526040902060030154612a789183916110919163ffffffff61405716565b6020808401919091526001600160a01b03891660009081526003909152604090206004015460ff16151560011415612caa5760008381526004602090815260408083206002908101546001600160a01b03808e1686526006855283862060038652848720909301541685529252909120541015612b265760405162461bcd60e51b815260040180806020018281038252602c8152602001806144f3602c913960400191505060405180910390fd5b6000838152600460209081526040808320600290810154308552600584528285206001600160a01b038e8116875260038652848720909301549092168552925290912054612b799163ffffffff61412116565b3060009081526005602090815260408083206001600160a01b038d811685526003845282852060020154168452909152812091909155612bba908390611642565b6001600160a01b03808a16600090815260036020908152604080832060018101548516845260068352818420600290910154909416835292905290812091909155612c069083906116dc565b3060009081526005602090815260408083206001600160a01b038d8116808652600385528386206002908101805484168852938652848720979097558986526004855283862090960154958552600684528285209154168452909152902054612c749163ffffffff613ff516565b6001600160a01b03808a166000908152600660209081526040808320600383528184206002015490941683529290522055612e5d565b60008083528381526004602090815260408083206002908101546001600160a01b038d811686526006855283862060038652848720909301541685529252909120541015612d295760405162461bcd60e51b815260040180806020018281038252602c8152602001806144f3602c913960400191505060405180910390fd5b6000838152600460209081526040808320600290810154308552600584528285206001600160a01b038e8116875260038652848720909301549092168552925290912054612d7c9163ffffffff61412116565b3060009081526005602090815260408083206001600160a01b038d811685526003845282852060020154168452909152812091909155612dbd9083906116dc565b3060009081526005602090815260408083206001600160a01b038d8116808652600385528386206002908101805484168852938652848720979097558986526004855283862090960154958552600684528285209154168452909152902054612e2b9163ffffffff613ff516565b6001600160a01b03808a1660009081526006602090815260408083206003835281842060020154909416835292905220555b6001600160a01b03871660009081526003602052604090206004015460ff161515600114156130e95760008381526004602090815260408083206003908101546001600160a01b03808d16865260068552838620928552838620600201541685529252909120541015612f015760405162461bcd60e51b815260040180806020018281038252602b8152602001806143d6602b913960400191505060405180910390fd5b6000838152600460209081526040808320600390810154308552600584528285206001600160a01b038d81168752928552838620600201549092168552925290912054612f539163ffffffff61412116565b3060009081526005602090815260408083206001600160a01b038c811685526003845282852060028101805483168752928552838620969096558784015160019096015481168552600684528285209154168452909152902054612fb691614121565b6001600160a01b038089166000908152600360209081526040808320600180820154861685526006845282852060029092015490951684529091529020919091556130469083905b602090810291909101513060009081526005835260408082206001600160a01b038d81168452600386528284206002015416835290935291909120549063ffffffff613ff516565b3060009081526005602090815260408083206001600160a01b038c811680865260038086528487206002018054841688529386528487209790975589865260048552838620909601549585526006845282852091541684529091529020546130b39163ffffffff613ff516565b6001600160a01b038089166000908152600660209081526040808320600383528184206002015490941683529290522055613298565b600060208084018290528482526004815260408083206003908101546001600160a01b038c81168652600685528386209285528386206002015416855292529091205410156131695760405162461bcd60e51b815260040180806020018281038252602b8152602001806143d6602b913960400191505060405180910390fd5b6000838152600460209081526040808320600390810154308552600584528285206001600160a01b038d811687529285528386206002015490921685529252909120546131bb9163ffffffff61412116565b3060009081526005602090815260408083206001600160a01b038c8116855260038452828520600201541684529091529020556131f9826001612ffe565b3060009081526005602090815260408083206001600160a01b038c811680865260038086528487206002018054841688529386528487209790975589865260048552838620909601549585526006845282852091541684529091529020546132669163ffffffff613ff516565b6001600160a01b0380891660009081526006602090815260408083206003835281842060020154909416835292905220555b600083815260046020819052604090912001546001141561330f576000838152600460205260409020600301546001600160a01b038816906108fc906132e590899063ffffffff613ff516565b6040518115909202916000818181858888f1935050505015801561330d573d6000803e3d6000fd5b505b60008381526004602081905260409091200154600214156133b757846001600160a01b031663a9059cbb88886040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561338a57600080fd5b505af115801561339e573d6000803e3d6000fd5b505050506040513d60208110156133b457600080fd5b50505b6000838152600460208181526040808420805460ff19168155600181018590556002810185905560038101859055928301939093556005909101805461ffff19169055815185815291517f6eec2dd2382427616d4ea7ef183b16091feac4e2e63c8b55f25215f132df8d149281900390910190a150600198975050505050505050565b604080516001600160f01b031960f087901b166020808301919091526001600160601b0319606087811b8216602285015286901b166036830152604a80830185905283518084039091018152606a9092019092528051910120600154600091906001600160a01b031633146134e05760405162461bcd60e51b815260040180806020018281038252602b81526020018061446a602b913960400191505060405180910390fd5b60008181526004602052604090205460ff161515600114613544576040805162461bcd60e51b8152602060048201526019602482015278029ba30ba3ab99021b432b1b5b4b733902330b4b632b217171603d1b604482015290519081900360640190fd5b6000818152600460205260409020600190810154146135aa576040805162461bcd60e51b815260206004820152601f60248201527f53656c6c65722043616e63656c2074696d65206973204469666665722e2e2000604482015290519081900360640190fd5b6001546135c990429063ffffffff600160a01b90910481169061412116565b60008281526004602090815260409182902060010192909255805183815290517f43e76a2687c7b12792086e4c776772be26c4d6a7041115f446cbc22ccada08ab929181900390910190a150600195945050505050565b8261ffff16600114156137105733600090815260066020908152604080832083805290915290205484111561369c576040805162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e742065746865722062616c616e6365000000000000604482015290519081900360640190fd5b3360009081526006602090815260408083208380529091529020546136c7908563ffffffff613ff516565b336000818152600660209081526040808320838052909152808220939093559151909186156108fc02918791818181858888f19350505050158015610a5a573d6000803e3d6000fd5b8261ffff1660021415610bb05780613865573360009081526006602090815260408083206001600160a01b0386168452909152902054841115613797576040805162461bcd60e51b815260206004820152601a602482015279496e73756666696369656e7420746f6b656e2062616c616e636560301b604482015290519081900360640190fd5b3360009081526006602090815260408083206001600160a01b03861684529091529020546137cb908563ffffffff613ff516565b3360008181526006602090815260408083206001600160a01b03881680855290835281842095909555805163a9059cbb60e01b81526004810194909452602484018990525163a9059cbb93604480820194918390030190829087803b15801561383357600080fd5b505af1158015613847573d6000803e3d6000fd5b505050506040513d602081101561385d57600080fd5b50610bb09050565b8060011415610bb05733600090815260066020908152604080832060038352818420600201546001600160a01b031684529091529020548411156138ed576040805162461bcd60e51b815260206004820152601a602482015279496e73756666696369656e7420746f6b656e2062616c616e636560301b604482015290519081900360640190fd5b33600090815260066020908152604080832060038352818420600201546001600160a01b0316845290915290205461392b908563ffffffff613ff516565b336000818152600660209081526040808320600380845282852060020180546001600160a01b0390811687529285528386209790975585855283529454815163a9059cbb60e01b81526004810195909552602485018a9052905194169363a9059cbb93604480820194918390030190829087803b158015610b8357600080fd5b6003602081905260009182526040909120805460018201546002830154938301546004909301546001600160a01b039283169491831693919092169160ff1685565b60025481565b604080516001600160f01b031960f08f901b166020808301919091526001600160601b031960608f811b821660228501528e901b166036830152604a8083018d905283518084039091018152606a9092019092528051910120600090613ac58d8d87356001600160a01b031688600160200201356001600160a01b031688600060028110613a7d57fe5b60200201356001600160a01b031689600160028110613a9857fe5b60200201356001600160a01b031689600060028110613ab357fe5b60200201358a6001602002013561417b565b50336001600160a01b038e1614613b14576040805162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b2102ab9b2b9171760911b604482015290519081900360640190fd5b8661ffff1660011480613b2b57508661ffff166002145b613b6e576040805162461bcd60e51b815260206004820152600f60248201526e024b73b30b634b2102a3cb83297171608d1b604482015290519081900360640190fd5b60008181526004602052604090205460ff1615613bce576040805162461bcd60e51b8152602060048201526019602482015278029ba30ba3ab99021b432b1b5b4b733902330b4b632b217171603d1b604482015290519081900360640190fd5b6001600160a01b0384351615613c505760018335148015613c1557506001600160a01b038d8116600090815260066020908152604080832088359094168352929052205415155b613c505760405162461bcd60e51b815260040180806020018281038252602981526020018061437f6029913960400191505060405180910390fd5b6001600160a01b03843516158015613c6c57508661ffff166002145b15613ce9578235158015613c805750883410155b613cbb5760405162461bcd60e51b815260040180806020018281038252602e8152602001806143a8602e913960400191505060405180910390fd5b6001600160a01b038d8116600090815260066020908152604080832088359094168352929052208054340190555b6001600160a01b03843516158015613d0557508661ffff166001145b15613d91578235158015613d285750613d248b8a63ffffffff61412116565b3410155b613d635760405162461bcd60e51b815260040180806020018281038252602e8152602001806143a8602e913960400191505060405180910390fd5b6001600160a01b038d81166000908152600660209081526040808320883590941683529290522080548a0190555b6001600160a01b038d81166000908152600660209081526040808320883590941683529290522054891115613e0d576040805162461bcd60e51b815260206004820152601f60248201527f496e73756666696369656e742046656520666f72207468697320547261646500604482015290519081900360640190fd5b8661ffff1660011415613eb4576001600160a01b038a1615613e605760405162461bcd60e51b81526004018080602001828103825260238152602001806144016023913960400191505060405180910390fd5b348b11158015613e705750600034115b613eb4576040805162461bcd60e51b815260206004820152601060248201526f24b73b30b634b21020b6b7bab73a171760811b604482015290519081900360640190fd5b8661ffff1660021415613f4757604080516323b872dd60e01b81526001600160a01b038f81166004830152306024830152604482018e90529151918c16916323b872dd916064808201926020929091908290030181600087803b158015613f1a57600080fd5b505af1158015613f2e573d6000803e3d6000fd5b505050506040513d6020811015613f4457600080fd5b50505b600063ffffffff871615613f6d57613f684263ffffffff808a169061412116565b613f70565b60015b600083815260046020818152604092839020805460ff1916600190811782558101859055600281018f9055600381018e905561ffff8d16920191909155815185815291519293507f102d25c49d33fcdb8976a3f2744e0785c98d9e43b88364859e6aec4ae82eff5c92918290030190a15060019e9d5050505050505050505050505050565b60008282111561404c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b508082035b92915050565b60008261406657506000614051565b8282028284828161407357fe5b04146140b05760405162461bcd60e51b81526004018080602001828103825260218152602001806144246021913960400191505060405180910390fd5b9392505050565b600080821161410d576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b600082848161411857fe5b04949350505050565b6000828201838110156140b0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006001600160a01b038716156141cf576001600160a01b038981166000908152600360205260409020600180820180546001600160a01b031916938b1693909317909255600401805460ff191690911790555b8260011415614223576001600160a01b03898116600081815260036020819052604090912080546001600160a01b031990811690931781556002810180549093169389169390931790915501839055614267565b82614267576001600160a01b038916600081815260036020819052604090912080546001600160a01b03199081169093178155600281018054909316909255018390555b6001600160a01b038616156142b9576001600160a01b038881166000908152600360205260409020600180820180546001600160a01b031916938a1693909317909255600401805460ff191690911790555b816001141561430d576001600160a01b03888116600081815260036020819052604090912080546001600160a01b031990811690931781556002810180549093169388169390931790915501829055614351565b81614351576001600160a01b038816600081815260036020819052604090912080546001600160a01b03199081169093178155600281018054909316909255018290555b50600198975050505050505050565b6040518060400160405280600290602082028038833950919291505056fe496e73756666696369656e74204665652042616c616e6365206f722074797065206d69736d6174636854797065206d69736d61746368206f72206d73672e76616c7565206c657373207468656e2073656c6c6572666565496e73756666696369656e7420526566657272616c204665652042616c616e636520666f72206275796572496e76616c696420546f6b656e204164647265737320466f7220746869732054797065536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f772053656c6c6572206f7220427579657220446f65736e27742043616c6c2044697370757465546869732075736572206e6f7420616c6c6f77656420746f2063616c6c20746869732066756e6374696f6e546869732066756e6374696f6e20697320206f6e6c792063616c6c6564206279204f776e65722e2e496e76616c696420457363726f7720737461747573206f7220546869732075736572206e6f7420616c6c6f77656420746f2063616c6c496e73756666696369656e7420526566657272616c204665652042616c616e636520666f722073656c6c6572a265627a7a72315820785c56ea73665a828dbd4fcad31e45cae7a12683041945cffa6fffb132fdc48664736f6c634300050c00320000000000000000000000008b29cfb173abb7a7fe0a9dac4f5ede8da94872f3
Deployed Bytecode
0x60806040526004361061014b5760003560e01c806381bd4638116100b6578063b2e544571161006f578063b2e54457146105f9578063b507af3b1461064c578063b8e5aa6d14610699578063e1c48244146106e2578063f1e7250e1461074f578063fd63f389146107645761014b565b806381bd46381461048b5780638705fcd4146104cb5780638da5cb5b146104fe57806390729d6014610513578063a91b977a1461057b578063b1dd43b4146105b65761014b565b80634d694a34116101085780634d694a34146102c65780635093f08f14610313578063516c72071461037257806360c40fcf146103b75780637038644c1461040e5780637ce3489b146104615761014b565b8063011cced91461015057806305b649931461017e57806313af4035146101b05780631900d0f9146101e357806322643b8d1461022e5780634127535814610295575b600080fd5b34801561015c57600080fd5b506101656107de565b6040805163ffffffff9092168252519081900360200190f35b34801561018a57600080fd5b506101ae600480360360208110156101a157600080fd5b503563ffffffff166107f1565b005b3480156101bc57600080fd5b506101ae600480360360208110156101d357600080fd5b50356001600160a01b0316610860565b3480156101ef57600080fd5b506101ae6004803603608081101561020657600080fd5b506001600160a01b03813581169160208101359161ffff604083013516916060013516610918565b34801561023a57600080fd5b50610281600480360360a081101561025157600080fd5b5061ffff813516906001600160a01b03602082013581169160408101358216916060820135916080013516610bb6565b604080519115158252519081900360200190f35b3480156102a157600080fd5b506102aa610e35565b604080516001600160a01b039092168252519081900360200190f35b3480156102d257600080fd5b50610301600480360360408110156102e957600080fd5b506001600160a01b0381358116916020013516610e44565b60408051918252519081900360200190f35b34801561031f57600080fd5b50610281600480360360c081101561033657600080fd5b5061ffff81358116916001600160a01b036020820135811692604083013582169260608101359260808201359092169160a09091013516610e61565b34801561037e57600080fd5b506103016004803603606081101561039557600080fd5b506001600160a01b038135811691602081013582169160409091013516611c1b565b3480156103c357600080fd5b50610281600480360360a08110156103da57600080fd5b5061ffff81358116916001600160a01b03602082013581169260408301359091169160608101359160809091013516611ca2565b34801561041a57600080fd5b50610281600480360360a081101561043157600080fd5b5061ffff813516906001600160a01b03602082013581169160408101358216916060820135916080013516611e16565b34801561046d57600080fd5b506101ae6004803603602081101561048457600080fd5b50356120b5565b610281600480360360808110156104a157600080fd5b5061ffff813516906001600160a01b0360208201358116916040810135909116906060013561214e565b3480156104d757600080fd5b506101ae600480360360208110156104ee57600080fd5b50356001600160a01b0316612629565b34801561050a57600080fd5b506102aa6126e1565b34801561051f57600080fd5b5061053d6004803603602081101561053657600080fd5b50356126f0565b60408051971515885260208801969096528686019490945260608601929092526080850152151560a0840152151560c0830152519081900360e00190f35b34801561058757600080fd5b506103016004803603604081101561059e57600080fd5b506001600160a01b0381358116916020013516612733565b3480156105c257600080fd5b50610281600480360360608110156105d957600080fd5b506001600160a01b03813581169160208101359091169060400135612750565b34801561060557600080fd5b50610281600480360360a081101561061c57600080fd5b5061ffff813516906001600160a01b036020820135811691604081013582169160608201359160800135166128f6565b34801561065857600080fd5b506102816004803603608081101561066f57600080fd5b5061ffff813516906001600160a01b0360208201358116916040810135909116906060013561343a565b3480156106a557600080fd5b506101ae600480360360808110156106bc57600080fd5b5080359061ffff602082013516906001600160a01b036040820135169060600135613620565b3480156106ee57600080fd5b506107156004803603602081101561070557600080fd5b50356001600160a01b03166139ab565b604080516001600160a01b039687168152948616602086015292909416838301526060830152911515608082015290519081900360a00190f35b34801561075b57600080fd5b506103016139ed565b61028160048036036101e081101561077b57600080fd5b5061ffff81358116916001600160a01b03602082013581169260408301358216926060810135926080820135169160a08201359160c08101359160e0820135169063ffffffff61010082013516906101208101906101608101906101a0016139f3565b600154600160a01b900463ffffffff1681565b6000546001600160a01b0316331461083a5760405162461bcd60e51b81526004018080602001828103825260288152602001806144956028913960400191505060405180910390fd5b6001805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6000546001600160a01b031633146108a95760405162461bcd60e51b81526004018080602001828103825260288152602001806144956028913960400191505060405180910390fd5b6001600160a01b0381166108f6576040805162461bcd60e51b815260206004820152600f60248201526e496e76616c6964204164647265737360881b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146109615760405162461bcd60e51b81526004018080602001828103825260288152602001806144956028913960400191505060405180910390fd5b8161ffff1660011415610a60573060009081526005602090815260408083208380529091529020548311156109dd576040805162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e742065746865722062616c616e6365000000000000604482015290519081900360640190fd5b306000908152600560209081526040808320838052909152902054610a08908463ffffffff613ff516565b3060009081526005602090815260408083208380529091528082209290925590516001600160a01b0386169185156108fc02918691818181858888f19350505050158015610a5a573d6000803e3d6000fd5b50610bb0565b8161ffff1660021415610bb0573060009081526005602090815260408083206001600160a01b0385168452909152902054831115610ae2576040805162461bcd60e51b815260206004820152601a602482015279496e73756666696369656e7420746f6b656e2062616c616e636560301b604482015290519081900360640190fd5b3060009081526005602090815260408083206001600160a01b0385168452909152902054610b16908463ffffffff613ff516565b3060009081526005602090815260408083206001600160a01b0386811680865291845282852095909555815163a9059cbb60e01b81529489166004860152602485018890529051909363a9059cbb9360448083019493928390030190829087803b158015610b8357600080fd5b505af1158015610b97573d6000803e3d6000fd5b505050506040513d6020811015610bad57600080fd5b50505b50505050565b604080516001600160f01b031960f088901b166020808301919091526001600160601b0319606088811b8216602285015287901b166036830152604a80830186905283518084039091018152606a9092018352815191810191909120600081815260049092529181205490919060ff1615156001148015610c4157506001546001600160a01b031633145b610c7c5760405162461bcd60e51b81526004018080602001828103825260368152602001806144bd6036913960400191505060405180910390fd5b6000818152600460205260409020600190810154111580610cad575060008181526004602052604090206001015442105b15610cb757600080fd5b6000818152600460208190526040909120015460011415610d0a576040516001600160a01b0387169085156108fc029086906000818181858888f19350505050158015610d08573d6000803e3d6000fd5b505b6000818152600460208190526040909120015460021415610db257826001600160a01b031663a9059cbb87866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610d8557600080fd5b505af1158015610d99573d6000803e3d6000fd5b505050506040513d6020811015610daf57600080fd5b50505b6000818152600460208181526040808420805460ff19168155600181018590556002810185905560038101859055928301939093556005909101805461ffff19169055815183815291517f366d2b4e6cc37ecebb3d7d41df6d581634fd8137412710a1e086e4ca4656bb589281900390910190a160019150505b95945050505050565b6001546001600160a01b031681565b600560209081526000928352604080842090915290825290205481565b6001546000906001600160a01b03163314610ead5760405162461bcd60e51b815260040180806020018281038252602b81526020018061446a602b913960400191505060405180910390fd5b604080516001600160f01b031960f08a901b166020808301919091526001600160601b031960608a811b8216602285015289901b166036830152604a80830188905283518084039091018152606a9092018352815191810191909120600081815260049092529190206005015460ff16151560011480610f49575060008181526004602052604090206005015460ff6101009091041615156001145b610f845760405162461bcd60e51b81526004018080602001828103825260258152602001806144456025913960400191505060405180910390fd5b60008181526004602052604090205460ff161515600114610fdf576040805162461bcd60e51b815260206004820152601060248201526f1029ba30ba3ab9902330b4b632b2171760811b604482015290519081900360640190fd5b8361ffff1660011480610ff657508361ffff166002145b61103d576040805162461bcd60e51b8152602060048201526013602482015272496e76616c6964204661766f7572205479706560681b604482015290519081900360640190fd5b611045614360565b60006110606064670de0b6b3a764000063ffffffff61405716565b905061109d81611091600254600460008881526020019081526020016000206002015461405790919063ffffffff16565b9063ffffffff6140b716565b82526002546000848152600460205260409020600301546110c99183916110919163ffffffff61405716565b6020808401919091526001600160a01b038a1660009081526003909152604090206004015460ff1615156001141561135f5760008381526004602090815260408083206002908101546001600160a01b03808f16865260068552838620600386528487209093015416855292529091205410156111775760405162461bcd60e51b815260040180806020018281038252602c8152602001806144f3602c913960400191505060405180910390fd5b6000838152600460209081526040808320600290810154308552600584528285206001600160a01b038f81168752600386528487209093015490921685529252909120546111ca9163ffffffff61412116565b3060009081526005602090815260408083206001600160a01b038e8116855260038452828520600281018054831687529285528386209690965587516001909601548116855260068452828520915416845290915290205461122b91614121565b6001600160a01b03808b166000908152600360209081526040808320600181015485168452600683528184206002909101549094168352929052908120919091556112bb9083905b602090810291909101513060009081526005835260408082206001600160a01b038f81168452600386528284206002015416835290935291909120549063ffffffff613ff516565b3060009081526005602090815260408083206001600160a01b038e81168086526003855283862060029081018054841688529386528487209790975589865260048552838620909601549585526006845282852091541684529091529020546113299163ffffffff613ff516565b6001600160a01b03808b166000908152600660209081526040808320600383528184206002015490941683529290522055611512565b60008083528381526004602090815260408083206002908101546001600160a01b038e8116865260068552838620600386528487209093015416855292529091205410156113de5760405162461bcd60e51b815260040180806020018281038252602c8152602001806144f3602c913960400191505060405180910390fd5b6000838152600460209081526040808320600290810154308552600584528285206001600160a01b038f81168752600386528487209093015490921685529252909120546114319163ffffffff61412116565b3060009081526005602090815260408083206001600160a01b038e811685526003845282852060020154168452909152812091909155611472908390611273565b3060009081526005602090815260408083206001600160a01b038e81168086526003855283862060029081018054841688529386528487209790975589865260048552838620909601549585526006845282852091541684529091529020546114e09163ffffffff613ff516565b6001600160a01b03808b1660009081526006602090815260408083206003835281842060020154909416835292905220555b6001600160a01b03881660009081526003602052604090206004015460ff161515600114156117c75760008381526004602090815260408083206003908101546001600160a01b03808e168652600685528386209285528386206002015416855292529091205410156115b65760405162461bcd60e51b815260040180806020018281038252602b8152602001806143d6602b913960400191505060405180910390fd5b6000838152600460209081526040808320600390810154308552600584528285206001600160a01b038e811687529285528386206002015490921685529252909120546116089163ffffffff61412116565b3060009081526005602090815260408083206001600160a01b038d8116855260038452828520600201541684529091529020556116948260015b602090810291909101516001600160a01b03808c16600090815260038452604080822060018101548416835260068652818320600290910154909316825291909352909120549063ffffffff61412116565b6001600160a01b03808a166000908152600360209081526040808320600180820154861685526006845282852060029092015490951684529091529020919091556117249083905b602090810291909101513060009081526005835260408082206001600160a01b038e81168452600386528284206002015416835290935291909120549063ffffffff613ff516565b3060009081526005602090815260408083206001600160a01b038d811680865260038086528487206002018054841688529386528487209790975589865260048552838620909601549585526006845282852091541684529091529020546117919163ffffffff613ff516565b6001600160a01b03808a166000908152600660209081526040808320600383528184206002015490941683529290522055611976565b600060208084018290528482526004815260408083206003908101546001600160a01b038d81168652600685528386209285528386206002015416855292529091205410156118475760405162461bcd60e51b815260040180806020018281038252602b8152602001806143d6602b913960400191505060405180910390fd5b6000838152600460209081526040808320600390810154308552600584528285206001600160a01b038e811687529285528386206002015490921685529252909120546118999163ffffffff61412116565b3060009081526005602090815260408083206001600160a01b038d8116855260038452828520600201541684529091529020556118d78260016116dc565b3060009081526005602090815260408083206001600160a01b038d811680865260038086528487206002018054841688529386528487209790975589865260048552838620909601549585526006845282852091541684529091529020546119449163ffffffff613ff516565b6001600160a01b03808a1660009081526006602090815260408083206003835281842060020154909416835292905220555b6000838152600460208190526040909120015460011415611a43578561ffff16600114156119da576040516001600160a01b038a169088156108fc029089906000818181858888f193505050501580156119d4573d6000803e3d6000fd5b50611a43565b8561ffff1660021415611a43576000838152600460205260409020600301546001600160a01b038916906108fc90611a19908a9063ffffffff613ff516565b6040518115909202916000818181858888f19350505050158015611a41573d6000803e3d6000fd5b505b6000838152600460208190526040909120015460021415611b97578561ffff1660011415611afd57846001600160a01b031663a9059cbb8a896040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611acb57600080fd5b505af1158015611adf573d6000803e3d6000fd5b505050506040513d6020811015611af557600080fd5b50611b979050565b8561ffff1660021415611b9757846001600160a01b031663a9059cbb89896040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611b6a57600080fd5b505af1158015611b7e573d6000803e3d6000fd5b505050506040513d6020811015611b9457600080fd5b50505b6000838152600460208181526040808420805460ff19168155600181018590556002810185905560038101859055928301939093556005909101805461ffff19169055815185815291517f65e0c7182ce84cd9087c1b07dc4b65875578877b885848e4be19ee312f2c3d319281900390910190a15060019998505050505050505050565b60408051636eb1769f60e11b81526001600160a01b0384811660048301528381166024830152915160009286169163dd62ed3e916044808301926020929190829003018186803b158015611c6e57600080fd5b505afa158015611c82573d6000803e3d6000fd5b505050506040513d6020811015611c9857600080fd5b5051949350505050565b6040805160f087901b6001600160f01b031916602080830191909152606087811b6001600160601b031990811660228501529087901b166036830152604a80830186905283518084039091018152606a9092019092528051910120600154600091906001600160a01b03163314611d4a5760405162461bcd60e51b815260040180806020018281038252602b81526020018061446a602b913960400191505060405180910390fd5b60008181526004602052604090205460ff161515600114611da6576040805162461bcd60e51b815260206004820152601160248201527001029ba30ba3ab9902330b4b632b217171607d1b604482015290519081900360640190fd5b8261ffff1660011415611dd9576000908152600460205260409020600501805460ff191660019081179091559050610e2c565b8261ffff1660021415611e0c576000908152600460205260409020600501805461ff001916610100179055506001610e2c565b5095945050505050565b604080516001600160f01b031960f088901b166020808301919091526001600160601b0319606088811b8216602285015287901b166036830152604a80830186905283518084039091018152606a9092018352815191810191909120600081815260049092529181205490919060ff1615156001148015611ea157506001546001600160a01b031633145b611edc5760405162461bcd60e51b81526004018080602001828103825260368152602001806144bd6036913960400191505060405180910390fd5b6000818152600460205260409020600101544210611f39576040805162461bcd60e51b81526020600482015260156024820152742a34b6b2901022bc3834b932b21024b9b9bab2971760591b604482015290519081900360640190fd5b6000818152600460208190526040909120015460011415611f8c576040516001600160a01b0387169085156108fc029086906000818181858888f19350505050158015611f8a573d6000803e3d6000fd5b505b600081815260046020819052604090912001546002141561203457826001600160a01b031663a9059cbb87866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561200757600080fd5b505af115801561201b573d6000803e3d6000fd5b505050506040513d602081101561203157600080fd5b50505b6000818152600460208181526040808420805460ff19168155600181018590556002810185905560038101859055928301939093556005909101805461ffff19169055815183815291517fd9b627ddaa414e8e6c82366cc9c179f6281d73968827cc17038a56852e28ac8b9281900390910190a15060019695505050505050565b6000546001600160a01b031633146120fe5760405162461bcd60e51b81526004018080602001828103825260288152602001806144956028913960400191505060405180910390fd5b60008111612149576040805162461bcd60e51b8152602060048201526013602482015272125b9d985b1a59081199594814195c98d95b9d606a1b604482015290519081900360640190fd5b600255565b604080516001600160f01b031960f087901b166020808301919091526001600160601b0319606087811b8216602285015286901b166036830152604a80830185905283518084039091018152606a9092018352815191810191909120600081815260049092529181205490919060ff161515600114612210576040805162461bcd60e51b8152602060048201526019602482015278029ba30ba3ab99021b432b1b5b4b733902330b4b632b217171603d1b604482015290519081900360640190fd5b600081815260046020526040902060010154612273576040805162461bcd60e51b815260206004820152601f60248201527f53656c6c65722043616e63656c2074696d65206973204469666665722e2e2000604482015290519081900360640190fd5b336001600160a01b038516146122c2576040805162461bcd60e51b815260206004820152600f60248201526e024b73b30b634b2102ab9b2b917171608d1b604482015290519081900360640190fd5b6001600160a01b038481166000908152600360205260409020600201541615612367576001600160a01b038085166000908152600660209081526040808320600383528184206002015490941683529290522054612367576040805162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e74204665652042616c616e63652e2e000000000000604482015290519081900360640190fd5b6001600160a01b03848116600090815260036020526040902060020154161580156123a45750600081815260046020819052604090912001546002145b156124825760008181526004602052604090206003015434101561240f576040805162461bcd60e51b815260206004820181905260248201527f4e656564206d6f7265206465706f73697420616d6f756e7420666f7220666565604482015290519081900360640190fd5b6001600160a01b038085166000908152600660209081526040808320600383528184206002015490941683529290522054612450903463ffffffff61412116565b6001600160a01b0380861660009081526006602090815260408083206003835281842060020154909416835292905220555b6001600160a01b03848116600090815260036020526040902060020154161580156124bf5750600081815260046020819052604090912001546001145b156125435760008181526004602090815260408083206003908101546001600160a01b03808a16865260068552838620928552838620600201541685529252909120546125119163ffffffff61412116565b6001600160a01b0380861660009081526006602090815260408083206003835281842060020154909416835292905220555b60008181526004602090815260408083206003908101546001600160a01b03808a168652600685528386209285528386206002015416855292529091205410156125d4576040805162461bcd60e51b815260206004820152601f60248201527f496e73756666696369656e742046656520666f72207468697320547261646500604482015290519081900360640190fd5b600081815260046020908152604080832060010192909255815183815291517fe95fa7985c7585e90dab2dc46470726468662be06f67d79a31a5012e4bc0edeb9281900390910190a150600195945050505050565b6000546001600160a01b031633146126725760405162461bcd60e51b81526004018080602001828103825260288152602001806144956028913960400191505060405180910390fd5b6001600160a01b0381166126bf576040805162461bcd60e51b815260206004820152600f60248201526e496e76616c6964204164647265737360881b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031681565b600460208190526000918252604090912080546001820154600283015460038401549484015460059094015460ff93841695929491938181169161010090041687565b600660209081526000928352604080842090915290825290205481565b60006001600160a01b0384161580159061277257506001600160a01b03831615155b6127b3576040805162461bcd60e51b815260206004820152600d60248201526c456d707479204164647265737360981b604482015290519081900360640190fd5b816127bf848630611c1b565b101561280b576040805162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b604482015290519081900360640190fd5b604080516323b872dd60e01b81526001600160a01b038681166004830152306024830152604482018590529151918516916323b872dd916064808201926020929091908290030181600087803b15801561286457600080fd5b505af1158015612878573d6000803e3d6000fd5b505050506040513d602081101561288e57600080fd5b50506001600160a01b038085166000908152600660209081526040808320938716835292905220546128c6908363ffffffff61412116565b6001600160a01b038086166000908152600660209081526040808320938816835292905220555060019392505050565b6001546000906001600160a01b031633146129425760405162461bcd60e51b815260040180806020018281038252602b81526020018061446a602b913960400191505060405180910390fd5b604080516001600160f01b031960f089901b166020808301919091526001600160601b0319606089811b8216602285015288901b166036830152604a80830187905283518084039091018152606a9092018352815191810191909120600081815260049092529190205460ff1615156001146129f8576040805162461bcd60e51b815260206004820152601060248201526f029ba30ba3ab9902330b4b632b21717160851b604482015290519081900360640190fd5b612a00614360565b6000612a1b6064670de0b6b3a764000063ffffffff61405716565b9050612a4c81611091600254600460008881526020019081526020016000206002015461405790919063ffffffff16565b8252600254600084815260046020526040902060030154612a789183916110919163ffffffff61405716565b6020808401919091526001600160a01b03891660009081526003909152604090206004015460ff16151560011415612caa5760008381526004602090815260408083206002908101546001600160a01b03808e1686526006855283862060038652848720909301541685529252909120541015612b265760405162461bcd60e51b815260040180806020018281038252602c8152602001806144f3602c913960400191505060405180910390fd5b6000838152600460209081526040808320600290810154308552600584528285206001600160a01b038e8116875260038652848720909301549092168552925290912054612b799163ffffffff61412116565b3060009081526005602090815260408083206001600160a01b038d811685526003845282852060020154168452909152812091909155612bba908390611642565b6001600160a01b03808a16600090815260036020908152604080832060018101548516845260068352818420600290910154909416835292905290812091909155612c069083906116dc565b3060009081526005602090815260408083206001600160a01b038d8116808652600385528386206002908101805484168852938652848720979097558986526004855283862090960154958552600684528285209154168452909152902054612c749163ffffffff613ff516565b6001600160a01b03808a166000908152600660209081526040808320600383528184206002015490941683529290522055612e5d565b60008083528381526004602090815260408083206002908101546001600160a01b038d811686526006855283862060038652848720909301541685529252909120541015612d295760405162461bcd60e51b815260040180806020018281038252602c8152602001806144f3602c913960400191505060405180910390fd5b6000838152600460209081526040808320600290810154308552600584528285206001600160a01b038e8116875260038652848720909301549092168552925290912054612d7c9163ffffffff61412116565b3060009081526005602090815260408083206001600160a01b038d811685526003845282852060020154168452909152812091909155612dbd9083906116dc565b3060009081526005602090815260408083206001600160a01b038d8116808652600385528386206002908101805484168852938652848720979097558986526004855283862090960154958552600684528285209154168452909152902054612e2b9163ffffffff613ff516565b6001600160a01b03808a1660009081526006602090815260408083206003835281842060020154909416835292905220555b6001600160a01b03871660009081526003602052604090206004015460ff161515600114156130e95760008381526004602090815260408083206003908101546001600160a01b03808d16865260068552838620928552838620600201541685529252909120541015612f015760405162461bcd60e51b815260040180806020018281038252602b8152602001806143d6602b913960400191505060405180910390fd5b6000838152600460209081526040808320600390810154308552600584528285206001600160a01b038d81168752928552838620600201549092168552925290912054612f539163ffffffff61412116565b3060009081526005602090815260408083206001600160a01b038c811685526003845282852060028101805483168752928552838620969096558784015160019096015481168552600684528285209154168452909152902054612fb691614121565b6001600160a01b038089166000908152600360209081526040808320600180820154861685526006845282852060029092015490951684529091529020919091556130469083905b602090810291909101513060009081526005835260408082206001600160a01b038d81168452600386528284206002015416835290935291909120549063ffffffff613ff516565b3060009081526005602090815260408083206001600160a01b038c811680865260038086528487206002018054841688529386528487209790975589865260048552838620909601549585526006845282852091541684529091529020546130b39163ffffffff613ff516565b6001600160a01b038089166000908152600660209081526040808320600383528184206002015490941683529290522055613298565b600060208084018290528482526004815260408083206003908101546001600160a01b038c81168652600685528386209285528386206002015416855292529091205410156131695760405162461bcd60e51b815260040180806020018281038252602b8152602001806143d6602b913960400191505060405180910390fd5b6000838152600460209081526040808320600390810154308552600584528285206001600160a01b038d811687529285528386206002015490921685529252909120546131bb9163ffffffff61412116565b3060009081526005602090815260408083206001600160a01b038c8116855260038452828520600201541684529091529020556131f9826001612ffe565b3060009081526005602090815260408083206001600160a01b038c811680865260038086528487206002018054841688529386528487209790975589865260048552838620909601549585526006845282852091541684529091529020546132669163ffffffff613ff516565b6001600160a01b0380891660009081526006602090815260408083206003835281842060020154909416835292905220555b600083815260046020819052604090912001546001141561330f576000838152600460205260409020600301546001600160a01b038816906108fc906132e590899063ffffffff613ff516565b6040518115909202916000818181858888f1935050505015801561330d573d6000803e3d6000fd5b505b60008381526004602081905260409091200154600214156133b757846001600160a01b031663a9059cbb88886040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561338a57600080fd5b505af115801561339e573d6000803e3d6000fd5b505050506040513d60208110156133b457600080fd5b50505b6000838152600460208181526040808420805460ff19168155600181018590556002810185905560038101859055928301939093556005909101805461ffff19169055815185815291517f6eec2dd2382427616d4ea7ef183b16091feac4e2e63c8b55f25215f132df8d149281900390910190a150600198975050505050505050565b604080516001600160f01b031960f087901b166020808301919091526001600160601b0319606087811b8216602285015286901b166036830152604a80830185905283518084039091018152606a9092019092528051910120600154600091906001600160a01b031633146134e05760405162461bcd60e51b815260040180806020018281038252602b81526020018061446a602b913960400191505060405180910390fd5b60008181526004602052604090205460ff161515600114613544576040805162461bcd60e51b8152602060048201526019602482015278029ba30ba3ab99021b432b1b5b4b733902330b4b632b217171603d1b604482015290519081900360640190fd5b6000818152600460205260409020600190810154146135aa576040805162461bcd60e51b815260206004820152601f60248201527f53656c6c65722043616e63656c2074696d65206973204469666665722e2e2000604482015290519081900360640190fd5b6001546135c990429063ffffffff600160a01b90910481169061412116565b60008281526004602090815260409182902060010192909255805183815290517f43e76a2687c7b12792086e4c776772be26c4d6a7041115f446cbc22ccada08ab929181900390910190a150600195945050505050565b8261ffff16600114156137105733600090815260066020908152604080832083805290915290205484111561369c576040805162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e742065746865722062616c616e6365000000000000604482015290519081900360640190fd5b3360009081526006602090815260408083208380529091529020546136c7908563ffffffff613ff516565b336000818152600660209081526040808320838052909152808220939093559151909186156108fc02918791818181858888f19350505050158015610a5a573d6000803e3d6000fd5b8261ffff1660021415610bb05780613865573360009081526006602090815260408083206001600160a01b0386168452909152902054841115613797576040805162461bcd60e51b815260206004820152601a602482015279496e73756666696369656e7420746f6b656e2062616c616e636560301b604482015290519081900360640190fd5b3360009081526006602090815260408083206001600160a01b03861684529091529020546137cb908563ffffffff613ff516565b3360008181526006602090815260408083206001600160a01b03881680855290835281842095909555805163a9059cbb60e01b81526004810194909452602484018990525163a9059cbb93604480820194918390030190829087803b15801561383357600080fd5b505af1158015613847573d6000803e3d6000fd5b505050506040513d602081101561385d57600080fd5b50610bb09050565b8060011415610bb05733600090815260066020908152604080832060038352818420600201546001600160a01b031684529091529020548411156138ed576040805162461bcd60e51b815260206004820152601a602482015279496e73756666696369656e7420746f6b656e2062616c616e636560301b604482015290519081900360640190fd5b33600090815260066020908152604080832060038352818420600201546001600160a01b0316845290915290205461392b908563ffffffff613ff516565b336000818152600660209081526040808320600380845282852060020180546001600160a01b0390811687529285528386209790975585855283529454815163a9059cbb60e01b81526004810195909552602485018a9052905194169363a9059cbb93604480820194918390030190829087803b158015610b8357600080fd5b6003602081905260009182526040909120805460018201546002830154938301546004909301546001600160a01b039283169491831693919092169160ff1685565b60025481565b604080516001600160f01b031960f08f901b166020808301919091526001600160601b031960608f811b821660228501528e901b166036830152604a8083018d905283518084039091018152606a9092019092528051910120600090613ac58d8d87356001600160a01b031688600160200201356001600160a01b031688600060028110613a7d57fe5b60200201356001600160a01b031689600160028110613a9857fe5b60200201356001600160a01b031689600060028110613ab357fe5b60200201358a6001602002013561417b565b50336001600160a01b038e1614613b14576040805162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b2102ab9b2b9171760911b604482015290519081900360640190fd5b8661ffff1660011480613b2b57508661ffff166002145b613b6e576040805162461bcd60e51b815260206004820152600f60248201526e024b73b30b634b2102a3cb83297171608d1b604482015290519081900360640190fd5b60008181526004602052604090205460ff1615613bce576040805162461bcd60e51b8152602060048201526019602482015278029ba30ba3ab99021b432b1b5b4b733902330b4b632b217171603d1b604482015290519081900360640190fd5b6001600160a01b0384351615613c505760018335148015613c1557506001600160a01b038d8116600090815260066020908152604080832088359094168352929052205415155b613c505760405162461bcd60e51b815260040180806020018281038252602981526020018061437f6029913960400191505060405180910390fd5b6001600160a01b03843516158015613c6c57508661ffff166002145b15613ce9578235158015613c805750883410155b613cbb5760405162461bcd60e51b815260040180806020018281038252602e8152602001806143a8602e913960400191505060405180910390fd5b6001600160a01b038d8116600090815260066020908152604080832088359094168352929052208054340190555b6001600160a01b03843516158015613d0557508661ffff166001145b15613d91578235158015613d285750613d248b8a63ffffffff61412116565b3410155b613d635760405162461bcd60e51b815260040180806020018281038252602e8152602001806143a8602e913960400191505060405180910390fd5b6001600160a01b038d81166000908152600660209081526040808320883590941683529290522080548a0190555b6001600160a01b038d81166000908152600660209081526040808320883590941683529290522054891115613e0d576040805162461bcd60e51b815260206004820152601f60248201527f496e73756666696369656e742046656520666f72207468697320547261646500604482015290519081900360640190fd5b8661ffff1660011415613eb4576001600160a01b038a1615613e605760405162461bcd60e51b81526004018080602001828103825260238152602001806144016023913960400191505060405180910390fd5b348b11158015613e705750600034115b613eb4576040805162461bcd60e51b815260206004820152601060248201526f24b73b30b634b21020b6b7bab73a171760811b604482015290519081900360640190fd5b8661ffff1660021415613f4757604080516323b872dd60e01b81526001600160a01b038f81166004830152306024830152604482018e90529151918c16916323b872dd916064808201926020929091908290030181600087803b158015613f1a57600080fd5b505af1158015613f2e573d6000803e3d6000fd5b505050506040513d6020811015613f4457600080fd5b50505b600063ffffffff871615613f6d57613f684263ffffffff808a169061412116565b613f70565b60015b600083815260046020818152604092839020805460ff1916600190811782558101859055600281018f9055600381018e905561ffff8d16920191909155815185815291519293507f102d25c49d33fcdb8976a3f2744e0785c98d9e43b88364859e6aec4ae82eff5c92918290030190a15060019e9d5050505050505050505050505050565b60008282111561404c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b508082035b92915050565b60008261406657506000614051565b8282028284828161407357fe5b04146140b05760405162461bcd60e51b81526004018080602001828103825260218152602001806144246021913960400191505060405180910390fd5b9392505050565b600080821161410d576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b600082848161411857fe5b04949350505050565b6000828201838110156140b0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006001600160a01b038716156141cf576001600160a01b038981166000908152600360205260409020600180820180546001600160a01b031916938b1693909317909255600401805460ff191690911790555b8260011415614223576001600160a01b03898116600081815260036020819052604090912080546001600160a01b031990811690931781556002810180549093169389169390931790915501839055614267565b82614267576001600160a01b038916600081815260036020819052604090912080546001600160a01b03199081169093178155600281018054909316909255018390555b6001600160a01b038616156142b9576001600160a01b038881166000908152600360205260409020600180820180546001600160a01b031916938a1693909317909255600401805460ff191690911790555b816001141561430d576001600160a01b03888116600081815260036020819052604090912080546001600160a01b031990811690931781556002810180549093169388169390931790915501829055614351565b81614351576001600160a01b038816600081815260036020819052604090912080546001600160a01b03199081169093178155600281018054909316909255018290555b50600198975050505050505050565b6040518060400160405280600290602082028038833950919291505056fe496e73756666696369656e74204665652042616c616e6365206f722074797065206d69736d6174636854797065206d69736d61746368206f72206d73672e76616c7565206c657373207468656e2073656c6c6572666565496e73756666696369656e7420526566657272616c204665652042616c616e636520666f72206275796572496e76616c696420546f6b656e204164647265737320466f7220746869732054797065536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f772053656c6c6572206f7220427579657220446f65736e27742043616c6c2044697370757465546869732075736572206e6f7420616c6c6f77656420746f2063616c6c20746869732066756e6374696f6e546869732066756e6374696f6e20697320206f6e6c792063616c6c6564206279204f776e65722e2e496e76616c696420457363726f7720737461747573206f7220546869732075736572206e6f7420616c6c6f77656420746f2063616c6c496e73756666696369656e7420526566657272616c204665652042616c616e636520666f722073656c6c6572a265627a7a72315820785c56ea73665a828dbd4fcad31e45cae7a12683041945cffa6fffb132fdc48664736f6c634300050c0032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000008b29cfb173abb7a7fe0a9dac4f5ede8da94872f3
-----Decoded View---------------
Arg [0] : feeadd (address): 0x8B29cFb173ABb7a7Fe0A9DAC4F5eDe8Da94872f3
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000008b29cfb173abb7a7fe0a9dac4f5ede8da94872f3
Deployed Bytecode Sourcemap
1574:32249:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1710:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1710:38:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3918:173;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3918:173:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3918:173:0;;;;:::i;:::-;;3264:154;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3264:154:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3264:154:0;-1:-1:-1;;;;;3264:154:0;;:::i;11818:708::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11818:708:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;11818:708:0;;;;;;;;;;;;;;;;;;;;;;:::i;18370:892::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18370:892:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;18370:892:0;;;;;-1:-1:-1;;;;;18370:892:0;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1678:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1678:25:0;;;:::i;:::-;;;;-1:-1:-1;;;;;1678:25:0;;;;;;;;;;;;;;2832:62;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2832:62:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2832:62:0;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;27927:5658;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27927:5658:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;27927:5658:0;;;;;;-1:-1:-1;;;;;27927:5658:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;33597:212::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33597:212:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;33597:212:0;;;;;;;;;;;;;;;;;;;:::i;21001:735::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21001:735:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;21001:735:0;;;;;;-1:-1:-1;;;;;21001:735:0;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17002:821::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17002:821:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;17002:821:0;;;;;-1:-1:-1;;;;;17002:821:0;;;;;;;;;;;;;;;;;;;;;;;;:::i;4237:166::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4237:166:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4237:166:0;;:::i;14763:1746::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;14763:1746:0;;;;;-1:-1:-1;;;;;14763:1746:0;;;;;;;;;;;;;;;;;;;:::i;3565:179::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3565:179:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3565:179:0;-1:-1:-1;;;;;3565:179:0;;:::i;1651:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1651:20:0;;;:::i;2781:44::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2781:44:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2781:44:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2901:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2901:67:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2901:67:0;;;;;;;;;;:::i;4738:494::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4738:494:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4738:494:0;;;;;;;;;;;;;;;;;:::i;22212:5013::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22212:5013:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;22212:5013:0;;;;;-1:-1:-1;;;;;22212:5013:0;;;;;;;;;;;;;;;;;;;;;;;;:::i;19751:750::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19751:750:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;19751:750:0;;;;;-1:-1:-1;;;;;19751:750:0;;;;;;;;;;;;;;;;;;;:::i;12921:1407::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12921:1407:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;12921:1407:0;;;;;;;;;;-1:-1:-1;;;;;12921:1407:0;;;;;;;;;;:::i;2730:44::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2730:44:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2730:44:0;-1:-1:-1;;;;;2730:44:0;;:::i;:::-;;;;-1:-1:-1;;;;;2730:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1755:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1755:27:0;;;:::i;6360:2579::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;6360:2579:0;;;;;;-1:-1:-1;;;;;6360:2579:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1710:38::-;;;-1:-1:-1;;;1710:38:0;;;;;:::o;3918:173::-;3041:5;;-1:-1:-1;;;;;3041:5:0;3027:10;:19;3019:72;;;;-1:-1:-1;;;3019:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4028:24;:55;;;;;;-1:-1:-1;;;4028:55:0;-1:-1:-1;;;;4028:55:0;;;;;;;;;3918:173::o;3264:154::-;3041:5;;-1:-1:-1;;;;;3041:5:0;3027:10;:19;3019:72;;;;-1:-1:-1;;;3019:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3339:23:0;;3331:51;;;;;-1:-1:-1;;;3331:51:0;;;;;;;;;;;;-1:-1:-1;;;3331:51:0;;;;;;;;;;;;;;;3393:5;:17;;-1:-1:-1;;;;;;3393:17:0;-1:-1:-1;;;;;3393:17:0;;;;;;;;;;3264:154::o;11818:708::-;3041:5;;-1:-1:-1;;;;;3041:5:0;3027:10;:19;3019:72;;;;-1:-1:-1;;;3019:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11948:5;:10;;11957:1;11948:10;11945:574;;;12009:4;11994:21;;;;:6;:21;;;;;;;;:33;;;;;;;;;11983:44;;;11975:82;;;;;-1:-1:-1;;;11975:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12124:4;12109:21;;;;:6;:21;;;;;;;;:33;;;;;;;;;:46;;12147:7;12109:46;:37;:46;:::i;:::-;12088:4;12073:21;;;;:6;:21;;;;;;;;:33;;;;;;;;;:82;;;;12170:21;;-1:-1:-1;;;;;12170:12:0;;;:21;;;;;12183:7;;12170:21;12073;12170;12183:7;12170:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12170:21:0;11945:574;;;12231:5;:10;;12240:1;12231:10;12228:291;;;12292:4;12277:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;12277:37:0;;;;;;;;;;12266:48;;;12258:86;;;;;-1:-1:-1;;;12258:86:0;;;;;;;;;;;;-1:-1:-1;;;12258:86:0;;;;;;;;;;;;;;;12414:4;12399:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;12399:37:0;;;;;;;;;;:50;;12441:7;12399:50;:41;:50;:::i;:::-;12374:4;12359:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;12359:37:0;;;;;;;;;;;;:90;;;;12464:43;;-1:-1:-1;;;12464:43:0;;;;;;;;;;;;;;;;;12359:37;;12464:30;;:43;;;;;12359:21;12464:43;;;;;;;;12359:37;12464:43;;;5:2:-1;;;;30:1;27;20:12;5:2;12464:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12464:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;12228:291:0;11818:708;;;;:::o;18370:892::-;18557:49;;;-1:-1:-1;;;;;;18557:49:0;;;;;;;;;;;;;-1:-1:-1;;;;;;18557:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;18557::0;;;;;;18547:60;;;;;;;;;18510:4;18635:22;;;:10;:22;;;;;;:35;18510:4;;18547:60;18635:35;;:43;;:35;:43;:69;;;;-1:-1:-1;18694:10:0;;-1:-1:-1;;;;;18694:10:0;18682;:22;18635:69;18627:136;;;;-1:-1:-1;;;18627:136:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18785:22;;;;:10;:22;;;;;18831:1;18785:42;;;;:47;;;:99;;-1:-1:-1;18836:22:0;;;;:10;:22;;;;;:42;;;18881:3;-1:-1:-1;18785:99:0;18782:112;;;18886:8;;;18782:112;18916:22;;;;:10;:22;;;;;;;;:28;;18948:1;18916:33;18913:91;;;18967:25;;-1:-1:-1;;;;;18967:16:0;;;:25;;;;;18984:7;;18967:25;;;;18984:7;18967:16;:25;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18967:25:0;18913:91;19028:22;;;;:10;:22;;;;;;;;:28;;19060:1;19028:33;19024:107;;;19084:8;-1:-1:-1;;;;;19078:24:0;;19103:7;19111;19078:41;;;;;;;;;;;;;-1:-1:-1;;;;;19078:41:0;-1:-1:-1;;;;;19078:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19078:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19078:41:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;19024:107:0;19157:22;;;;:10;:22;;;;;;;;19150:29;;-1:-1:-1;;19150:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19150:29:0;;;19194;;;;;;;;;;;;;;;;;19250:4;19243:11;;;18370:892;;;;;;;;:::o;1678:25::-;;;-1:-1:-1;;;;;1678:25:0;;:::o;2832:62::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;27927:5658::-;28134:10;;28095:4;;-1:-1:-1;;;;;28134:10:0;28120;:24;28112:79;;;;-1:-1:-1;;;28112:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28243:49;;;-1:-1:-1;;;;;;28243:49:0;;;;;;;;;;;;;-1:-1:-1;;;;;;28243:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;28243::0;;;;;;28233:60;;;;;;;;;28212:18;28323:22;;;:10;:22;;;;;;:36;;;;;:44;;:36;:44;;:91;;-1:-1:-1;28371:22:0;;;;:10;:22;;;;;:35;;;;;;;;;:43;;:35;:43;28323:91;28315:141;;;;-1:-1:-1;;;28315:141:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28486:22;;;;:10;:22;;;;;:35;;;:43;;:35;:43;28478:72;;;;;-1:-1:-1;;;28478:72:0;;;;;;;;;;;;-1:-1:-1;;;28478:72:0;;;;;;;;;;;;;;;28580:7;:12;;28591:1;28580:12;:28;;;;28596:7;:12;;28607:1;28596:12;28580:28;28572:61;;;;;-1:-1:-1;;;28572:61:0;;;;;;;;;;;;-1:-1:-1;;;28572:61:0;;;;;;;;;;;;;;;28655:25;;:::i;:::-;28691:15;28708:26;28717:3;28727:6;28708:26;:18;:26;:::i;:::-;28691:43;;28758:65;28815:7;28759:50;28796:12;;28759:10;:22;28770:10;28759:22;;;;;;;;;;;:32;;;:36;;:50;;;;:::i;:::-;28758:56;:65;:56;:65;:::i;:::-;28745:78;;28909:12;;28753:1;28873:22;;;:10;28745;28873:22;;;;:31;;;28872:64;;28928:7;;28873:49;;;:35;:49;:::i;28872:64::-;28859:10;;;;:77;;;;-1:-1:-1;;;;;29023:21:0;;;;;;:12;:21;;;;;;:37;;;;;:45;;28867:1;29023:45;29020:1878;;;29163:22;;;;:10;:22;;;;;;;;:32;;;;;-1:-1:-1;;;;;29097:21:0;;;;;:12;:21;;;;;29119:12;:21;;;;;:39;;;;;29097:62;;;;;;;;:98;;29089:155;;;;-1:-1:-1;;;29089:155:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29395:22;;;;:10;:22;;;;;;;;:32;;;;;29343:4;29328:21;;:6;:21;;;;;-1:-1:-1;;;;;29350:21:0;;;;;:12;:21;;;;;:39;;;;;;;29328:62;;;;;;;;:100;;;:66;:100;:::i;:::-;29278:4;29263:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;29285:21:0;;;;;:12;:21;;;;;:39;;;;;;;29263:62;;;;;;;;:165;;;;29633:10;;29552:34;;;;;;;29539:48;;:12;:48;;;;;29588:39;;;29539:89;;;;;;;;:105;;:93;:105::i;:::-;-1:-1:-1;;;;;29460:21:0;;;29447:48;29460:21;;;:12;:21;;;;;;;;:34;;;;;;29447:48;;:12;:48;;;;;29496:39;;;;;;;;29447:89;;;;;;;;:197;;;;29748:78;;29815:7;;:10;;;;;;;;;;29763:4;29748:21;;;;:6;:21;;;;;;-1:-1:-1;;;;;29770:21:0;;;;;:12;:21;;;;;:39;;;;29748:62;;;;;;;;;;;:78;:66;:78;:::i;:::-;29698:4;29683:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;29705:21:0;;;;;;:12;:21;;;;;:39;;;;;;;;29683:62;;;;;;;;:143;;;;29977:22;;;:10;:22;;;;;:32;;;;29910:21;;;:12;:21;;;;;29932:39;;;29910:62;;;;;;;;:100;;;:66;:100;:::i;:::-;-1:-1:-1;;;;;29845:21:0;;;;;;;:12;:21;;;;;;;;29867:12;:21;;;;;:39;;;;;;29845:62;;;;;;:165;29020:1878;;;30174:1;30161:14;;;30268:22;;;:10;30161;30268:22;;;;;;;:32;;;;;-1:-1:-1;;;;;30202:21:0;;;;;:12;:21;;;;;30224:12;:21;;;;;:39;;;;;30202:62;;;;;;;;:98;;30194:155;;;;-1:-1:-1;;;30194:155:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30501:22;;;;:10;:22;;;;;;;;:32;;;;;30449:4;30434:21;;:6;:21;;;;;-1:-1:-1;;;;;30456:21:0;;;;;:12;:21;;;;;:39;;;;;;;30434:62;;;;;;;;:100;;;:66;:100;:::i;:::-;30383:4;30368:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;30390:21:0;;;;;:12;:21;;;;;:39;;;;30368:62;;;;;;;:166;;;;30619:78;;30686:7;;:10;;30619:78;30568:4;30553:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;30575:21:0;;;;;;:12;:21;;;;;:39;;;;;;;;30553:62;;;;;;;;:144;;;;30849:22;;;:10;:22;;;;;:32;;;;30782:21;;;:12;:21;;;;;30804:39;;;30782:62;;;;;;;;:100;;;:66;:100;:::i;:::-;-1:-1:-1;;;;;30716:21:0;;;;;;;:12;:21;;;;;;;;30738:12;:21;;;;;:39;;;;;;30716:62;;;;;;:166;29020:1878;-1:-1:-1;;;;;30959:20:0;;;;;;:12;:20;;;;;:36;;;;;:44;;:36;:44;30956:1839;;;31097:22;;;;:10;:22;;;;;;;;:31;;;;;-1:-1:-1;;;;;31033:20:0;;;;;:12;:20;;;;;31054;;;;;;:38;;;;31033:60;;;;;;;;:95;;31025:152;;;;-1:-1:-1;;;31025:152:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31326:22;;;;:10;:22;;;;;;;;:31;;;;;31275:4;31260:21;;:6;:21;;;;;-1:-1:-1;;;;;31282:20:0;;;;;;;;;;;:38;;;;;;31260:61;;;;;;;;:98;;;:65;:98;:::i;:::-;31211:4;31196:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;31218:20:0;;;;;:12;:20;;;;;:38;;;;31196:61;;;;;;;:162;31467:103;31559:7;31218:38;31559:10;;;;;;;;;;-1:-1:-1;;;;;31480:20:0;;;31467:47;31480:20;;;:12;:20;;;;;;:33;;;;;;31467:47;;:12;:47;;;;;31515:38;;;;;;;;31467:87;;;;;;;;;;;:103;:91;:103;:::i;:::-;-1:-1:-1;;;;;31390:20:0;;;31377:47;31390:20;;;:12;:20;;;;;;;;:33;;;;;;;31377:47;;:12;:47;;;;;31425:38;;;;;;;;31377:87;;;;;;;:193;;;;31672:77;;31738:7;;:10;;;;;;;;;;31687:4;31672:21;;;;:6;:21;;;;;;-1:-1:-1;;;;;31694:20:0;;;;;:12;:20;;;;;:38;;;;31672:61;;;;;;;;;;;:77;:65;:77;:::i;:::-;31623:4;31608:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;31630:20:0;;;;;;:12;:20;;;;;;:38;;;;;;31608:61;;;;;;;;:141;;;;31897:22;;;:10;:22;;;;;:31;;;;31832:20;;;:12;:20;;;;;31853:38;;;31832:60;;;;;;;;:97;;;:64;:97;:::i;:::-;-1:-1:-1;;;;;31768:20:0;;;;;;;:12;:20;;;;;;;;31789:12;:20;;;;;:38;;;;;;31768:60;;;;;;:161;30956:1839;;;32086:1;32074:10;;;;:13;;;32178:22;;;:10;:22;;;;;;:31;;;;;-1:-1:-1;;;;;32114:20:0;;;;;:12;:20;;;;;32135;;;;;;:38;;;;32114:60;;;;;;;;:95;;32106:152;;;;-1:-1:-1;;;32106:152:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32408:22;;;;:10;:22;;;;;;;;:31;;;;;32357:4;32342:21;;:6;:21;;;;;-1:-1:-1;;;;;32364:20:0;;;;;;;;;;;:38;;;;;;32342:61;;;;;;;;:98;;;:65;:98;:::i;:::-;32292:4;32277:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;32299:20:0;;;;;:12;:20;;;;;:38;;;;32277:61;;;;;;;:163;32524:77;32590:7;32299:38;32590:10;;32524:77;32474:4;32459:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;32481:20:0;;;;;;:12;:20;;;;;;:38;;;;;;32459:61;;;;;;;;:142;;;;32748:22;;;:10;:22;;;;;:31;;;;32683:20;;;:12;:20;;;;;32704:38;;;32683:60;;;;;;;;:97;;;:64;:97;:::i;:::-;-1:-1:-1;;;;;32620:20:0;;;;;;;:12;:20;;;;;;;;32641:12;:20;;;;;:38;;;;;;32620:60;;;;;;:160;30956:1839;32824:22;;;;:10;:22;;;;;;;;:28;;32856:1;32824:33;32821:303;;;32885:7;:12;;32896:1;32885:12;32882:230;;;32928:25;;-1:-1:-1;;;;;32928:16:0;;;:25;;;;;32945:7;;32928:25;;;;32945:7;32928:16;:25;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32928:25:0;32882:230;;;32994:7;:12;;33005:1;32994:12;32990:122;;;33062:22;;;;:10;:22;;;;;:31;;;-1:-1:-1;;;;;33034:15:0;;;:61;;33050:44;;:7;;:44;:11;:44;:::i;:::-;33034:61;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33034:61:0;32990:122;33138:22;;;;:10;:22;;;;;;;;:28;;33170:1;33138:33;33135:314;;;33200:7;:12;;33211:1;33200:12;33197:240;;;33250:14;-1:-1:-1;;;;;33244:30:0;;33275:7;33283;33244:47;;;;;;;;;;;;;-1:-1:-1;;;;;33244:47:0;-1:-1:-1;;;;;33244:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33244:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33244:47:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33197:240:0;;-1:-1:-1;33197:240:0;;33332:7;:12;;33343:1;33332:12;33328:109;;;33379:14;-1:-1:-1;;;;;33373:30:0;;33404:6;33412:7;33373:48;;;;;;;;;;;;;-1:-1:-1;;;;;33373:48:0;-1:-1:-1;;;;;33373:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33373:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33373:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;33328:109:0;33469:22;;;;:10;:22;;;;;;;;33462:29;;-1:-1:-1;;33462:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;33462:29:0;;;33508:27;;;;;;;;;;;;;;;;;-1:-1:-1;33563:4:0;;27927:5658;-1:-1:-1;;;;;;;;;27927:5658:0:o;33597:212::-;33758:43;;;-1:-1:-1;;;33758:43:0;;-1:-1:-1;;;;;33758:43:0;;;;;;;;;;;;;;;;33692:7;;33758:26;;;;;:43;;;;;;;;;;;;;;:26;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;33758:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33758:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33758:43:0;;33597:212;-1:-1:-1;;;;33597:212:0:o;21001:735::-;21194:49;;;;;;;-1:-1:-1;;;;;;21194:49:0;;;;;;;;;;;;;-1:-1:-1;;;;;;21194:49:0;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;21194::0;;;;;;;21184:60;;;;;21288:10;;-1:-1:-1;;21184:60:0;-1:-1:-1;;;;;21288:10:0;21274;:24;21266:80;;;;-1:-1:-1;;;21266:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21376:22;;;;:10;:22;;;;;:35;;;:43;;:35;:43;21368:73;;;;;-1:-1:-1;;;21368:73:0;;;;;;;;;;;;-1:-1:-1;;;21368:73:0;;;;;;;;;;;;;;;21466:11;:16;;21481:1;21466:16;21463:266;;;21508:22;;;;:10;:22;;;;;:36;;:43;;-1:-1:-1;;21508:43:0;21547:4;21508:43;;;;;;21547:4;-1:-1:-1;21566:11:0;;21463:266;21607:11;:16;;21622:1;21607:16;21604:125;;;21648:22;;;;:10;:22;;;;;:35;;:42;;-1:-1:-1;;21648:42:0;;;;;-1:-1:-1;21686:4:0;21706:11;;21604:125;21001:735;;;;;;;;:::o;17002:821::-;17187:49;;;-1:-1:-1;;;;;;17187:49:0;;;;;;;;;;;;;-1:-1:-1;;;;;;17187:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;17187::0;;;;;;17177:60;;;;;;;;;17140:4;17255:22;;;:10;:22;;;;;;:35;17140:4;;17177:60;17255:35;;:43;;:35;:43;:69;;;;-1:-1:-1;17314:10:0;;-1:-1:-1;;;;;17314:10:0;17302;:22;17255:69;17247:136;;;;-1:-1:-1;;;17247:136:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17401:22;;;;:10;:22;;;;;:42;;;17446:3;-1:-1:-1;17393:82:0;;;;;-1:-1:-1;;;17393:82:0;;;;;;;;;;;;-1:-1:-1;;;17393:82:0;;;;;;;;;;;;;;;17491:22;;;;:10;:22;;;;;;;;:28;;17523:1;17491:33;17488:91;;;17542:25;;-1:-1:-1;;;;;17542:16:0;;;:25;;;;;17559:7;;17542:25;;;;17559:7;17542:16;:25;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17542:25:0;17488:91;17593:22;;;;:10;:22;;;;;;;;:28;;17624:1;17593:32;17589:106;;;17648:8;-1:-1:-1;;;;;17642:24:0;;17667:7;17675;17642:41;;;;;;;;;;;;;-1:-1:-1;;;;;17642:41:0;-1:-1:-1;;;;;17642:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17642:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17642:41:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;17589:106:0;17721:22;;;;:10;:22;;;;;;;;17714:29;;-1:-1:-1;;17714:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17714:29:0;;;17758:28;;;;;;;;;;;;;;;;;-1:-1:-1;17811:4:0;;17002:821;-1:-1:-1;;;;;;17002:821:0:o;4237:166::-;3041:5;;-1:-1:-1;;;;;3041:5:0;3027:10;:19;3019:72;;;;-1:-1:-1;;;3019:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4333:1;4319:11;:15;4311:47;;;;;-1:-1:-1;;;4311:47:0;;;;;;;;;;;;-1:-1:-1;;;4311:47:0;;;;;;;;;;;;;;;4369:12;:26;4237:166::o;14763:1746::-;14946:49;;;-1:-1:-1;;;;;;14946:49:0;;;;;;;;;;;;;-1:-1:-1;;;;;;14946:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;14946::0;;;;;;14936:60;;;;;;;;;14898:4;15015:22;;;:10;:22;;;;;;:35;14898:4;;14936:60;15015:35;;:43;;:35;:43;15007:81;;;;;-1:-1:-1;;;15007:81:0;;;;;;;;;;;;-1:-1:-1;;;15007:81:0;;;;;;;;;;;;;;;15107:22;;;;:10;:22;;;;;:42;;;15099:91;;;;;-1:-1:-1;;;15099:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15209:10;-1:-1:-1;;;;;15209:20:0;;;15201:48;;;;;-1:-1:-1;;;15201:48:0;;;;;;;;;;;;-1:-1:-1;;;15201:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;15273:20:0;;;15324:1;15273:20;;;:12;:20;;;;;:38;;;;:53;15270:220;;-1:-1:-1;;;;;15385:20:0;;;15446:1;15385:20;;;:12;:20;;;;;;;;15406:12;:20;;;;;:38;;;;;;15385:60;;;;;;;15377:101;;;;;-1:-1:-1;;;15377:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15513:20:0;;;15564:1;15513:20;;;:12;:20;;;;;:38;;;;:53;:92;;;;-1:-1:-1;15571:22:0;;;;:10;:22;;;;;;;;:28;;15603:1;15571:33;15513:92;15510:366;;;15643:22;;;;:10;:22;;;;;:31;;;15630:9;:44;;15622:89;;;;;-1:-1:-1;;;15622:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15789:20:0;;;;;;;:12;:20;;;;;;;;15810:12;:20;;;;;:38;;;;;;15789:60;;;;;;;:75;;15854:9;15789:75;:64;:75;:::i;:::-;-1:-1:-1;;;;;15726:20:0;;;;;;;:12;:20;;;;;;;;15747:12;:20;;;;;:38;;;;;;15726:60;;;;;;:138;15510:366;-1:-1:-1;;;;;15899:20:0;;;15950:1;15899:20;;;:12;:20;;;;;:38;;;;:53;:92;;;;-1:-1:-1;15957:22:0;;;;:10;:22;;;;;;;;:28;;15989:1;15957:33;15899:92;15896:284;;;16136:22;;;;:10;:22;;;;;;;;:31;;;;;-1:-1:-1;;;;;16071:20:0;;;;;:12;:20;;;;;16092;;;;;;:38;;;;16071:60;;;;;;;;:97;;;:64;:97;:::i;:::-;-1:-1:-1;;;;;16008:20:0;;;;;;;:12;:20;;;;;;;;16029:12;:20;;;;;:38;;;;;;16008:60;;;;;;:160;15896:284;16282:22;;;;:10;:22;;;;;;;;:31;;;;;-1:-1:-1;;;;;16218:20:0;;;;;:12;:20;;;;;16239;;;;;;:38;;;;16218:60;;;;;;;;:95;;16210:139;;;;;-1:-1:-1;;;16210:139:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;16414:1;16369:22;;;:10;:22;;;;;;;;:42;;:46;;;;16439:32;;;;;;;;;;;;;;;;;-1:-1:-1;16497:4:0;;14763:1746;-1:-1:-1;;;;;14763:1746:0:o;3565:179::-;3041:5;;-1:-1:-1;;;;;3041:5:0;3027:10;:19;3019:72;;;;-1:-1:-1;;;3019:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3650:28:0;;3642:56;;;;;-1:-1:-1;;;3642:56:0;;;;;;;;;;;;-1:-1:-1;;;3642:56:0;;;;;;;;;;;;;;;3709:10;:27;;-1:-1:-1;;;;;;3709:27:0;-1:-1:-1;;;;;3709:27:0;;;;;;;;;;3565:179::o;1651:20::-;;;-1:-1:-1;;;;;1651:20:0;;:::o;2781:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2901:67::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;4738:494::-;4830:4;-1:-1:-1;;;;;4855:19:0;;;;;;:51;;-1:-1:-1;;;;;;4878:28:0;;;;4855:51;4847:77;;;;;-1:-1:-1;;;4847:77:0;;;;;;;;;;;;-1:-1:-1;;;4847:77:0;;;;;;;;;;;;;;;4997:7;4943:50;4958:14;4973:5;4987:4;4943:14;:50::i;:::-;:61;;4935:96;;;;;-1:-1:-1;;;4935:96:0;;;;;;;;;;;;-1:-1:-1;;;4935:96:0;;;;;;;;;;;;;;;5042:63;;;-1:-1:-1;;;5042:63:0;;-1:-1:-1;;;;;5042:63:0;;;;;;;5091:4;5042:63;;;;;;;;;;;;:34;;;;;;:63;;;;;;;;;;;;;;;-1:-1:-1;5042:34:0;:63;;;5:2:-1;;;;30:1;27;20:12;5:2;5042:63:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5042:63:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;;5154:19:0;;;;;;;:12;5042:63;5154:19;;;;;;;:35;;;;;;;;;;:48;;5194:7;5154:48;:39;:48;:::i;:::-;-1:-1:-1;;;;;5116:19:0;;;;;;;:12;:19;;;;;;;;:35;;;;;;;;;:86;-1:-1:-1;5220:4:0;4738:494;;;;;:::o;22212:5013::-;22401:10;;22357:4;;-1:-1:-1;;;;;22401:10:0;22387;:24;22379:80;;;;-1:-1:-1;;;22379:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22501:49;;;-1:-1:-1;;;;;;22501:49:0;;;;;;;;;;;;;-1:-1:-1;;;;;;22501:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;22501::0;;;;;;22491:60;;;;;;;;;22470:18;22570:22;;;:10;:22;;;;;;:35;;;:43;;:35;:43;22562:72;;;;;-1:-1:-1;;;22562:72:0;;;;;;;;;;;;-1:-1:-1;;;22562:72:0;;;;;;;;;;;;;;;22645:25;;:::i;:::-;22682:15;22699:26;22708:3;22718:6;22699:26;:18;:26;:::i;:::-;22682:43;;22749:65;22806:7;22750:50;22787:12;;22750:10;:22;22761:10;22750:22;;;;;;;;;;;:32;;;:36;;:50;;;;:::i;22749:65::-;22736:78;;22900:12;;22744:1;22864:22;;;:10;22736;22864:22;;;;:31;;;22863:64;;22919:7;;22864:49;;;:35;:49;:::i;22863:64::-;22850:10;;;;:77;;;;-1:-1:-1;;;;;23023:21:0;;;;;;:12;:21;;;;;;:37;;;;;:45;;22858:1;23023:45;23020:1878;;;23163:22;;;;:10;:22;;;;;;;;:32;;;;;-1:-1:-1;;;;;23097:21:0;;;;;:12;:21;;;;;23119:12;:21;;;;;:39;;;;;23097:62;;;;;;;;:98;;23089:155;;;;-1:-1:-1;;;23089:155:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23395:22;;;;:10;:22;;;;;;;;:32;;;;;23343:4;23328:21;;:6;:21;;;;;-1:-1:-1;;;;;23350:21:0;;;;;:12;:21;;;;;:39;;;;;;;23328:62;;;;;;;;:100;;;:66;:100;:::i;:::-;23278:4;23263:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;23285:21:0;;;;;:12;:21;;;;;:39;;;;23263:62;;;;;;;:165;;;;23539:105;;23633:7;;:10;;23539:105;-1:-1:-1;;;;;23460:21:0;;;23447:48;23460:21;;;:12;:21;;;;;;;;:34;;;;;;23447:48;;:12;:48;;;;;23496:39;;;;;;;;23447:89;;;;;;;;:197;;;;23748:78;;23815:7;;:10;;23748:78;23698:4;23683:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;23705:21:0;;;;;;:12;:21;;;;;:39;;;;;;;;23683:62;;;;;;;;:143;;;;23977:22;;;:10;:22;;;;;:32;;;;23910:21;;;:12;:21;;;;;23932:39;;;23910:62;;;;;;;;:100;;;:66;:100;:::i;:::-;-1:-1:-1;;;;;23845:21:0;;;;;;;:12;:21;;;;;;;;23867:12;:21;;;;;:39;;;;;;23845:62;;;;;;:165;23020:1878;;;24174:1;24161:14;;;24268:22;;;:10;24161;24268:22;;;;;;;:32;;;;;-1:-1:-1;;;;;24202:21:0;;;;;:12;:21;;;;;24224:12;:21;;;;;:39;;;;;24202:62;;;;;;;;:98;;24194:155;;;;-1:-1:-1;;;24194:155:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24501:22;;;;:10;:22;;;;;;;;:32;;;;;24449:4;24434:21;;:6;:21;;;;;-1:-1:-1;;;;;24456:21:0;;;;;:12;:21;;;;;:39;;;;;;;24434:62;;;;;;;;:100;;;:66;:100;:::i;:::-;24383:4;24368:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;24390:21:0;;;;;:12;:21;;;;;:39;;;;24368:62;;;;;;;:166;;;;24619:78;;24686:7;;:10;;24619:78;24568:4;24553:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;24575:21:0;;;;;;:12;:21;;;;;:39;;;;;;;;24553:62;;;;;;;;:144;;;;24849:22;;;:10;:22;;;;;:32;;;;24782:21;;;:12;:21;;;;;24804:39;;;24782:62;;;;;;;;:100;;;:66;:100;:::i;:::-;-1:-1:-1;;;;;24716:21:0;;;;;;;:12;:21;;;;;;;;24738:12;:21;;;;;:39;;;;;;24716:62;;;;;;:166;23020:1878;-1:-1:-1;;;;;24959:20:0;;;;;;:12;:20;;;;;:36;;;;;:44;;:36;:44;24956:1839;;;25097:22;;;;:10;:22;;;;;;;;:31;;;;;-1:-1:-1;;;;;25033:20:0;;;;;:12;:20;;;;;25054;;;;;;:38;;;;25033:60;;;;;;;;:95;;25025:152;;;;-1:-1:-1;;;25025:152:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25326:22;;;;:10;:22;;;;;;;;:31;;;;;25275:4;25260:21;;:6;:21;;;;;-1:-1:-1;;;;;25282:20:0;;;;;;;;;;;:38;;;;;;25260:61;;;;;;;;:98;;;:65;:98;:::i;:::-;25211:4;25196:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;25218:20:0;;;;;:12;:20;;;;;:38;;;;;;;25196:61;;;;;;;;:162;;;;25559:10;;;;25218:38;25480:33;;;;;;25467:47;;:12;:47;;;;;25515:38;;;25467:87;;;;;;;;:103;;:91;:103::i;:::-;-1:-1:-1;;;;;25390:20:0;;;25377:47;25390:20;;;:12;:20;;;;;;;;:33;;;;;;;25377:47;;:12;:47;;;;;25425:38;;;;;;;;25377:87;;;;;;;:193;;;;25672:77;;25738:7;;:10;;;;;;;;;;25687:4;25672:21;;;;:6;:21;;;;;;-1:-1:-1;;;;;25694:20:0;;;;;:12;:20;;;;;:38;;;;25672:61;;;;;;;;;;;:77;:65;:77;:::i;:::-;25623:4;25608:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;25630:20:0;;;;;;:12;:20;;;;;;:38;;;;;;25608:61;;;;;;;;:141;;;;25897:22;;;:10;:22;;;;;:31;;;;25832:20;;;:12;:20;;;;;25853:38;;;25832:60;;;;;;;;:97;;;:64;:97;:::i;:::-;-1:-1:-1;;;;;25768:20:0;;;;;;;:12;:20;;;;;;;;25789:12;:20;;;;;:38;;;;;;25768:60;;;;;;:161;24956:1839;;;26086:1;26074:10;;;;:13;;;26178:22;;;:10;:22;;;;;;:31;;;;;-1:-1:-1;;;;;26114:20:0;;;;;:12;:20;;;;;26135;;;;;;:38;;;;26114:60;;;;;;;;:95;;26106:152;;;;-1:-1:-1;;;26106:152:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26408:22;;;;:10;:22;;;;;;;;:31;;;;;26357:4;26342:21;;:6;:21;;;;;-1:-1:-1;;;;;26364:20:0;;;;;;;;;;;:38;;;;;;26342:61;;;;;;;;:98;;;:65;:98;:::i;:::-;26292:4;26277:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;26299:20:0;;;;;:12;:20;;;;;:38;;;;26277:61;;;;;;;:163;26524:77;26590:7;26299:38;26590:10;;26524:77;26474:4;26459:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;26481:20:0;;;;;;:12;:20;;;;;;:38;;;;;;26459:61;;;;;;;;:142;;;;26748:22;;;:10;:22;;;;;:31;;;;26683:20;;;:12;:20;;;;;26704:38;;;26683:60;;;;;;;;:97;;;:64;:97;:::i;:::-;-1:-1:-1;;;;;26620:20:0;;;;;;;:12;:20;;;;;;;;26641:12;:20;;;;;:38;;;;;;26620:60;;;;;;:160;24956:1839;26814:22;;;;:10;:22;;;;;;;;:28;;26846:1;26814:33;26811:144;;;26906:22;;;;:10;:22;;;;;:31;;;-1:-1:-1;;;;;26878:15:0;;;:61;;26894:44;;:7;;:44;:11;:44;:::i;:::-;26878:61;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26878:61:0;26811:144;26983:22;;;;:10;:22;;;;;;;;:28;;27015:1;26983:33;26979:131;;;27052:14;-1:-1:-1;;;;;27046:30:0;;27077:6;27085:7;27046:48;;;;;;;;;;;;;-1:-1:-1;;;;;27046:48:0;-1:-1:-1;;;;;27046:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27046:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27046:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;26979:131:0;27137:22;;;;:10;:22;;;;;;;;27130:29;;-1:-1:-1;;27130:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;27130:29:0;;;27175:20;;;;;;;;;;;;;;;;;-1:-1:-1;27213:4:0;;22212:5013;-1:-1:-1;;;;;;;;22212:5013:0:o;19751:750::-;19927:49;;;-1:-1:-1;;;;;;19927:49:0;;;;;;;;;;;;;-1:-1:-1;;;;;;19927:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;19927::0;;;;;;;19917:60;;;;;20004:10;;19880:4;;19917:60;-1:-1:-1;;;;;20004:10:0;20016;20004:22;19996:78;;;;-1:-1:-1;;;19996:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20103:22;;;;:10;:22;;;;;:35;;;:43;;:35;:43;20095:81;;;;;-1:-1:-1;;;20095:81:0;;;;;;;;;;;;-1:-1:-1;;;20095:81:0;;;;;;;;;;;;;;;20204:22;;;;:10;:22;;;;;:42;;;;;:47;20195:93;;;;;-1:-1:-1;;;20195:93:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20362:24;;20352:35;;20353:3;;20362:24;-1:-1:-1;;;20362:24:0;;;;;;20352:9;:35;:::i;:::-;20307:22;;;;:10;:22;;;;;;;;;:42;;:80;;;;20411:33;;;;;;;;;;;;;;;;;;-1:-1:-1;20479:4:0;;19751:750;-1:-1:-1;;;;;19751:750:0:o;12921:1407::-;13042:5;:10;;13051:1;13042:10;13039:1282;;;13110:10;13097:24;;;;:12;:24;;;;;;;;:36;;;;;;;;;13086:47;;;13078:86;;;;;-1:-1:-1;;;13078:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13233:10;13220:24;;;;:12;:24;;;;;;;;:36;;;;;;;;;:49;;13261:7;13220:49;:40;:49;:::i;:::-;13193:10;13180:24;;;;:12;:24;;;;;;;;:36;;;;;;;;;:89;;;;13284:28;;13193:10;;13284:28;;;;;13304:7;;13284:28;13180:24;13284:28;13304:7;13193:10;13284:28;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;13039:1282:0;13342:5;:10;;13351:1;13342:10;13339:982;;;13381:13;13378:932;;13504:10;13491:24;;;;:12;:24;;;;;;;;-1:-1:-1;;;;;13491:40:0;;;;;;;;;;13479:52;;;13471:91;;;;;-1:-1:-1;;;13471:91:0;;;;;;;;;;;;-1:-1:-1;;;13471:91:0;;;;;;;;;;;;;;;13639:10;13625:25;;;;:12;:25;;;;;;;;-1:-1:-1;;;;;13625:41:0;;;;;;;;;;:54;;13671:7;13625:54;:45;:54;:::i;:::-;13595:10;13581:25;;;;:12;:25;;;;;;;;-1:-1:-1;;;;;13581:41:0;;;;;;;;;;;:98;;;;13698:51;;-1:-1:-1;;;13698:51:0;;;;;;;;;;;;;;;;:30;;:51;;;;;;;;;;;;;13581:41;13698:51;;;5:2:-1;;;;30:1;27;20:12;5:2;13698:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13698:51:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13378:932:0;;-1:-1:-1;13378:932:0;;13805:8;13817:1;13805:13;13802:508;;;13938:10;13925:24;;;;:12;:24;;;;;;;;13950:12;:24;;;;;:42;;;-1:-1:-1;;;;;13950:42:0;13925:68;;;;;;;;13913:80;;;13905:119;;;;;-1:-1:-1;;;13905:119:0;;;;;;;;;;;;-1:-1:-1;;;13905:119:0;;;;;;;;;;;;;;;14129:10;14115:25;;;;:12;:25;;;;;;;;14141:12;:24;;;;;:42;;;-1:-1:-1;;;;;14141:42:0;14115:69;;;;;;;;:82;;14189:7;14115:82;:73;:82;:::i;:::-;14057:10;14043:25;;;;:12;:25;;;;;;;;14069:12;:24;;;;;;:42;;;;-1:-1:-1;;;;;14069:42:0;;;14043:69;;;;;;;;:154;;;;14222:24;;;;;:42;;14216:78;;-1:-1:-1;;;14216:78:0;;;;;;;;;;;;;;;;;14222:42;;;14216:58;;:78;;;;;;;;;;;;;14222:42;14216:78;;;5:2:-1;;;;30:1;27;20:12;2730:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2730:44:0;;;;;;;;;;;;;;;;:::o;1755:27::-;;;;:::o;6360:2579::-;6711:49;;;-1:-1:-1;;;;;;6711:49:0;;;;;;;;;;;;;-1:-1:-1;;;;;;6711:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;6711::0;;;;;;;6701:60;;;;;-1:-1:-1;;6782:84:0;6711:49;;6810:7;;-1:-1:-1;;;;;6810:7:0;;6823:1;6818:7;;;;-1:-1:-1;;;;;6818:7:0;6826;6834:1;6826:10;;;;;;;;;;;-1:-1:-1;;;;;6826:10:0;6837:7;6845:1;6837:10;;;;;;;;;;;-1:-1:-1;;;;;6837:10:0;6848:5;6854:1;6848:8;;;;;;;;;;;6857:5;6863:1;6857:8;;;;6782:12;:84::i;:::-;-1:-1:-1;6907:10:0;-1:-1:-1;;;;;6907:21:0;;;6898:48;;;;;-1:-1:-1;;;6898:48:0;;;;;;;;;;;;-1:-1:-1;;;6898:48:0;;;;;;;;;;;;;;;6966:5;:8;;6973:1;6966:8;:22;;;;6978:5;:10;;6987:1;6978:10;6966:22;6957:51;;;;;-1:-1:-1;;;6957:51:0;;;;;;;;;;;;-1:-1:-1;;;6957:51:0;;;;;;;;;;;;;;;7027:22;;;;:10;:22;;;;;:35;;;:42;7019:80;;;;;-1:-1:-1;;;7019:80:0;;;;;;;;;;;;-1:-1:-1;;;7019:80:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;7133:10:0;;;:25;7130:209;;7227:1;7217:8;;:11;:50;;;;-1:-1:-1;;;;;;7232:21:0;;;7266:1;7232:21;;;:12;:21;;;;;;;;7254:10;;;;;7232:33;;;;;;;:35;;7217:50;7209:104;;;;-1:-1:-1;;;7209:104:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7352:10:0;;;:25;:39;;;;;7381:5;:10;;7390:1;7381:10;7352:39;7349:282;;;7416:8;;:11;:38;;;;;7444:10;7431:9;:23;;7416:38;7407:98;;;;-1:-1:-1;;;7407:98:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7521:21:0;;;;;;;:12;:21;;;;;;;;7543:10;;;;;7521:33;;;;;;:46;;7558:9;7521:46;;;7349:282;-1:-1:-1;;;;;7655:10:0;;;:25;:39;;;;;7684:5;:10;;7693:1;7684:10;7655:39;7652:296;;;7719:8;;:11;:51;;;;-1:-1:-1;7747:23:0;:7;7759:10;7747:23;:11;:23;:::i;:::-;7734:9;:36;;7719:51;7710:111;;;;-1:-1:-1;;;7710:111:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7837:21:0;;;;;;;:12;:21;;;;;;;;7859:10;;;;;7837:33;;;;;;:47;;;;;;7652:296;-1:-1:-1;;;;;7972:21:0;;;;;;;:12;:21;;;;;;;;7994:10;;;;;7972:33;;;;;;;:47;-1:-1:-1;7972:47:0;7964:91;;;;;-1:-1:-1;;;7964:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8079:5;:10;;8088:1;8079:10;8076:213;;;-1:-1:-1;;;;;8113:28:0;;;8105:76;;;;-1:-1:-1;;;8105:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8213:9;8204:7;:18;;:34;;;;;8237:1;8226:9;:12;8204:34;8196:63;;;;;-1:-1:-1;;;8196:63:0;;;;;;;;;;;;-1:-1:-1;;;8196:63:0;;;;;;;;;;;;;;;8312:5;:10;;8321:1;8312:10;8309:135;;;8338:66;;;-1:-1:-1;;;8338:66:0;;-1:-1:-1;;;;;8338:66:0;;;;;;;8389:4;8338:66;;;;;;;;;;;;:34;;;;;;:66;;;;;;;;;;;;;;;-1:-1:-1;8338:34:0;:66;;;5:2:-1;;;;30:1;27;20:12;5:2;8338:66:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8338:66:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;8309:135:0;8464:26;8493:27;;;;:69;;8528:33;8529:3;8528:33;;;;;:9;:33;:::i;:::-;8493:69;;;8523:1;8493:69;8583:22;;;;:10;:22;;;;;;;;;:42;;-1:-1:-1;;8583:42:0;8621:4;8583:42;;;;;8636;;:63;;;8710:32;;;:45;;;8766:31;;;:43;;;8820:36;;;:28;;:36;;;;8882:19;;;;;;;8464:98;;-1:-1:-1;8882:19:0;;;;;;;;;-1:-1:-1;8927:4:0;;6360:2579;-1:-1:-1;;;;;;;;;;;;;;6360:2579:0:o;618:184::-;676:7;709:1;704;:6;;696:49;;;;;-1:-1:-1;;;696:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;768:5:0;;;618:184;;;;;:::o;810:250::-;868:7;892:6;888:47;;-1:-1:-1;922:1:0;915:8;;888:47;959:5;;;963:1;959;:5;:1;983:5;;;;;:10;975:56;;;;-1:-1:-1;;;975:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1051:1;810:250;-1:-1:-1;;;810:250:0:o;1068:333::-;1126:7;1225:1;1221;:5;1213:44;;;;;-1:-1:-1;;;1213:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;1268:9;1284:1;1280;:5;;;;;;;1068:333;-1:-1:-1;;;;1068:333:0:o;429:181::-;487:7;519:5;;;543:6;;;;535:46;;;;;-1:-1:-1;;;535:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;9609:1863;9808:4;-1:-1:-1;;;;;9856:23:0;;;9853:201;;-1:-1:-1;;;;;9939:21:0;;;;;;;:12;:21;;;;;:34;;;;:46;;-1:-1:-1;;;;;;9939:46:0;;;;;;;;;;;10000:36;;:42;;-1:-1:-1;;10000:42:0;;;;;;9853:201;10076:14;10094:1;10076:19;10073:563;;;-1:-1:-1;;;;;10156:21:0;;;;;;;:12;:21;;;;;;;;:40;;-1:-1:-1;;;;;;10156:40:0;;;;;;;;10211:39;;;:54;;;;;;;;;;;;;;;10280:34;:51;;;10073:563;;;10371:19;10368:268;;-1:-1:-1;;;;;10451:21:0;;;;;;:12;:21;;;;;;;;:40;;-1:-1:-1;;;;;;10451:40:0;;;;;;;;10506:39;;;:52;;;;;;;;10573:34;:51;;;10368:268;-1:-1:-1;;;;;10668:23:0;;;10665:198;;-1:-1:-1;;;;;10750:20:0;;;;;;;:12;:20;;;;;:33;;;;:45;;-1:-1:-1;;;;;;10750:45:0;;;;;;;;;;;10810:35;;:41;;-1:-1:-1;;10810:41:0;;;;;;10665:198;10886:13;10902:1;10886:17;10883:550;;;-1:-1:-1;;;;;10964:20:0;;;;;;;:12;:20;;;;;;;;:38;;-1:-1:-1;;;;;;10964:38:0;;;;;;;;11017;;;:52;;;;;;;;;;;;;;;11084:33;:49;;;10883:550;;;11173:18;11170:263;;-1:-1:-1;;;;;11253:20:0;;;;;;:12;:20;;;;;;;;:38;;-1:-1:-1;;;;;;11253:38:0;;;;;;;;11306;;;:51;;;;;;;;11372:33;:49;;;11170:263;-1:-1:-1;11460:4:0;9609:1863;;;;;;;;;;:::o;1574:32249::-;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;-1:-1;1574:32249:0;;;-1:-1:-1;;1574:32249:0:o
Swarm Source
bzzr://785c56ea73665a828dbd4fcad31e45cae7a12683041945cffa6fffb132fdc486
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.