Overview
S Balance
S Value
$0.00More Info
Private Name Tags
ContractCreator
Loading...
Loading
Contract Name:
eliteRingsManager
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at SonicScan.org on 2025-04-19 */ /** *Submitted for verification at BscScan.com on 2024-12-15 */ /** *Submitted for verification at BscScan.com on 2024-05-31 */ /* FFFFF TTTTTTT M M GGGGG U U RRRRR U U FF TTT M M M M G U U RR R U U FFFFF TTT M M M G GGG U U RRRRR U U FF TTT M M M O G G U U RR R U U FF TTT M M GGGGG UUUU RR RRR UUUU Contact us at: https://discord.com/invite/QpyfMarNrV https://t.me/FTM1337 Community Mediums: https://medium.com/@ftm1337 https://twitter.com/ftm1337 SPDX-License-Identifier: UNLICENSED eliteRingsScUSD is based on eTHENA.sol eTHENA is a Liquid Staking Derivate for veTHE (Vote-Escrowed Thena NFT). It can be minted by burning (veTHE) veNFTs. eTHENA is an ERC20 based token. It can be staked with Guru Network to earn pure BNB instead of multiple small tokens. eTHENA can be further deposited into Kompound Protocol to mint iTHENA. iTHENA is a doubly-compounding interest-bearing veTHE at its core. iTHENA is an ERC4626 based token, which also adheres to the EIP20 Standard. iTHENA uses eTHENA's BNB yield to buyback more eTHENA from the open-market via JIT Aggregation. The price (in THE) to mint eTHENA goes up every epoch due to positive rebasing. This property gives iTHENA a "hyper-compounding" double-exponential trajectory against raw THE tokens. */ pragma solidity 0.8.9; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address) external view returns (uint); function allowance(address, address) external view returns (uint); function transfer(address recipient, uint amount) external returns (bool); function transferFrom(address sender, address recipient, uint amount) external returns (bool); function burn(uint amount) external; function mint(address w, uint a) external returns (bool); // ETHENA ///function mint(uint amount, address to) external returns (bool); // ELRETRO } interface IERC165 { function supportsInterface(bytes4 interfaceId) external view returns (bool); } interface IVotingEscrow { struct LockedBalance { int128 amount; uint end; } function balanceOf(address) external view returns (uint); function locked(uint id) external view returns(LockedBalance memory); function token() external view returns (address); function tokenOfOwnerByIndex(address _owner, uint _tokenIndex) external view returns (uint); // function getVotes(address) external view returns (uint); function totalSupply() external view returns (uint256); function isApprovedOrOwner(address, uint) external view returns (bool); function create_lock_for(uint _value, uint _lock_duration, address _to) external returns (uint); function safeTransferFrom(address from, address to, uint256 tokenId) external; function merge(uint _from, uint _to) external; function setApprovalForAll(address _who, bool _give) external; function split(uint[] memory amounts, uint _tokenId) external; } interface IVoter { struct CastedVote { address gauge; uint256 weight; uint256 votes; } function ve() external view returns (address); //function poolVoteLength(uint256) external view returns (uint256); function getNftCurrentVotes(uint) external view returns(CastedVote[] memory); function poolVote(uint256, uint256) external view returns (address); function votes(uint256, address) external view returns (uint256); function lastVoted(uint256) external view returns (uint256); function reset(uint256) external; function vote(uint256, address[] memory, uint256[] memory) external; //function claimBribes(address[] memory _bribes, address[][] memory _tokens, uint _tokenId) external; } interface IGuruFarmland { function totalSupply() external view returns (uint256); function balanceOf(address) external view returns (uint); function tvl() external view returns (uint256); function tvlDeposits() external view returns (uint256); function apr() external view returns (uint256); function getAssetPrice(address) external view returns (uint256); function stake() external view returns (address); function stakingToken() external view returns (address); function want() external view returns (address); function asset() external view returns (address); } interface IQuests { //Basic Claim /** * @notice Claims the reward for a user for a given period of a Quest * @dev Claims the reward for a user for a given period of a Quest if the correct proof was given * @param questID ID of the Quest * @param period Timestamp of the period * @param index Index in the Merkle Tree * @param account Address of the user claiming the rewards * @param amount Amount of rewards to claim * @param merkleProof Proof to claim the rewards */ function claim(uint256 questID, uint256 period, uint256 index, address account, uint256 amount, bytes32[] calldata merkleProof) external; //Struct ClaimParams struct ClaimParams { uint256 questID; uint256 period; uint256 index; uint256 amount; bytes32[] merkleProof; } //Multi Claim /** * @notice Claims multiple rewards for a given list * @dev Calls the claim() method for each entry in the claims array * @param account Address of the user claiming the rewards * @param claims List of ClaimParams struct data to claim */ function multiClaim(address account, ClaimParams[] calldata claims) external; function questRewardToken(uint256 qid) external view returns(address); } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// contract eliteRingsManager { ///////////// DONT EDIT ///////////// struct LockedBalance { int128 amount; uint end; } ///////////// DONT EDIT ///////////// bool internal _locked; /// @notice ftm.guru simple re-entrancy check bool public paused; ///////////// DONT EDIT ///////////// uint public ID; address public dao; ///////////// DONT EDIT ///////////// IERC20 public ELTOKEN; IVotingEscrow public VENFT; IVoter public VOTER; mapping(address => bool) public voteManager; ///////////// DONT EDIT ///////////// uint public mintingFeesToDao; uint public mintingFeesToBurn; uint public redemptionFeesToDao; uint public redemptionFeesToBurn; uint public floor; ///////////// DONT EDIT ///////////// IQuests public QUESTS; ///////////// DONT EDIT ///////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// modifier lock() { require(!_locked, "Re-entry!"); _locked = true; _; _locked = false; } modifier DAO() { require(msg.sender==dao, "Unauthorized!"); _; } modifier OnlyVoteManagers() { require(voteManager[msg.sender], "Unauthorized Voter!"); _; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// event Deposit(address indexed user, uint nft, uint veAmount, uint shares, uint md, uint mb, uint wen); event Withdraw(address indexed user, uint nft, uint veAmount, uint shares, uint rd, uint rb, uint wen); event QuestClaimed( // @notice Event emitted when Quest rewards are Claimed uint256 questID, uint256 indexed period, uint256 index, uint256 amount, address indexed rewardToken, address indexed account ); ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function onERC721Received(address, address, uint256, bytes calldata) external view returns (bytes4) { require(msg.sender == address(VENFT), "!veToken"); require(_locked, "unwanted"); return bytes4(keccak256("onERC721Received(address,address,uint256,bytes)")); } function initialize(address _vo, address _el, uint _id) external lock { require(dao == address(0)); dao = msg.sender; voteManager[msg.sender] = true; VOTER = IVoter(_vo); VENFT = IVotingEscrow(VOTER.ve()); // Rings has .ve() not ._ve() ELTOKEN = IERC20(_el); ID = _id; if(ELTOKEN.totalSupply() == 0) { IVotingEscrow.LockedBalance memory _main = VENFT.locked(_id); require(_main.amount > 0, "Dirty veNFT!"); int _iamt = _main.amount; uint _amt = uint(_iamt); floor = _amt; ELTOKEN.mint(msg.sender, _amt); // ETHENA ///ELTOKEN.mint(_amt, msg.sender); // ELRETRO emit Deposit(msg.sender, _id, _amt, _amt, 0, 0, block.timestamp); } } function deposit(uint _id) external lock returns (uint) { require(!paused,"paused"); //{ // no rebase in rings // claimRebase(); // self // REBASE.claim(_id); // user //} uint _ts = ELTOKEN.totalSupply(); IVotingEscrow.LockedBalance memory _main = VENFT.locked(ID); require(_main.amount > 0, "Dirty veNFT!"); int _ibase = _main.amount; //pre-cast to int uint256 _base = uint256(_ibase); VENFT.safeTransferFrom(msg.sender, address(this), _id); //VENFT.safeTransferFrom(dao, address(this), ID); // not needed in clean equalizer/thena forks VENFT.merge(_id,ID); //VENFT.safeTransferFrom(address(this), dao, ID); IVotingEscrow.LockedBalance memory _merged = VENFT.locked(ID); int _in = _merged.amount - _main.amount; require(_in > 0, "Dirty Deposit!"); uint256 _inc = uint256(_in);//cast to uint // Calculate and mint the amount of eTHENA the veNFT is worth. The ratio will change overtime, // as eTHENA is minted when veTHE are deposited + gained from rebases uint256 _amt = (_inc * _ts) / _base; ELTOKEN.mint(address(this), _amt); uint _md = _amt * mintingFeesToDao / 1e18; if(_md>0) { require( ELTOKEN.transfer(dao, _md) , "mdf"); } uint _mb = _amt * mintingFeesToBurn / 1e18; if(_mb > 0) { ELTOKEN.burn( _mb ); } //ELTOKEN.mint(msg.sender, _amt); // ETHENA to Depositor ///ELTOKEN.mint(_amt, msg.sender); // ELRETRO _amt = _amt - _md - _mb; require( ELTOKEN.transfer( msg.sender, _amt) , "muf"); emit Deposit(msg.sender, _id, _inc, _amt, _md, _mb, block.timestamp); return _amt; } function withdraw(uint _tamt) external lock returns(uint) { require(!paused,"paused"); require(ELTOKEN.transferFrom(msg.sender, address(this), _tamt), "infail"); // first stamp tokens per share uint _ts = ELTOKEN.totalSupply(); require(_ts-_tamt > floor, "Too much drawn!"); require(block.timestamp % 7 days <= 6 days, "No Split on Wednesdays!"); uint _utamt; // take fees uint _rd = _tamt * redemptionFeesToDao / 1e18; // _tamt = 1.00 if(_rd>0) { require( ELTOKEN.transfer(dao, _rd) , "rdf"); } uint _rb = _tamt * redemptionFeesToBurn / 1e18; // _burn = 0.05 // user's effective redeem amount _utamt = _tamt - _rd - _rb; // _uta = 1.00 - 0.10 - 0.05 = 0.85 // burn it all now that dao fee has been taken already //if(_rb > 0) { // ELTOKEN.burn( _rb ); //} ELTOKEN.burn( _tamt - _rd ); // split into two : [_ts-_utamt , _utamt] { VOTER.reset(ID); //VENFT.safeTransferFrom(dao, address(this), ID); // Not required if veNFT is in contract require(VENFT.balanceOf(address(this)) == 1, "unexpected balance!"); uint[] memory _splitRatios = new uint[](2); // fees accrued into first, user gets second _splitRatios[0] = _ts-_utamt; _splitRatios[1] = _utamt; VENFT.split( _splitRatios, ID); } { uint _newID = VENFT.tokenOfOwnerByIndex(address(this), 0); ID = _newID; int _uvi = VENFT.locked(_newID + 1).amount; // cache before transfer since safeTransferFrom could trigger hooks if msg.sender is a contract uint _uv = uint256(_uvi); //VENFT.safeTransferFrom(address(this), dao, _newID); // Not required if veNFT stays in. VENFT.safeTransferFrom(address(this), msg.sender, _newID + 1); emit Withdraw(msg.sender, _newID + 1, _uv, _tamt, _rd, _rb, block.timestamp); return _uv; } } function voteReset() OnlyVoteManagers external lock { VOTER.reset(ID); } function vote(address[] memory _p, uint[] memory _w) OnlyVoteManagers external lock { require(_p.length==_w.length,"len mismatch"); VOTER.vote(ID, _p, _w); } function copyVotesFrom(uint _mi) OnlyVoteManagers external lock { //uint _len = VOTER.poolVoteLength(_mi); IVoter.CastedVote[] memory _vc = VOTER.getNftCurrentVotes(_mi); uint _len = _vc.length; require( _len > 0, "Target hasnt voted!"); address[] memory _miPools = new address[](_len); uint[] memory _miWeights = new uint[](_len); for(uint i; i<_len; i++){ _miPools[i] = _vc[i].gauge; _miWeights[i] = _vc[i].weight; } VOTER.vote(ID, _miPools, _miWeights); } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function rescue(address _t, uint _a) external DAO lock { IERC20 _tk = IERC20(_t); _tk.transfer(dao, _a); } function setDAO(address d) external DAO lock { require(d!=address(0), "d==0!"); dao = d; VENFT.setApprovalForAll(dao, true); } function setVoteManager(address _m, bool _b) external DAO lock { voteManager[_m] = _b; } function setID(uint _id) external DAO lock { ID = _id; } function setFees(uint _md, uint _mb, uint _rd, uint _rb) external DAO lock { require(_md +_mb <= 0.5e18, "mint fee too high"); require(_rb + _rb <= 0.5e18, "redeem fee too high"); mintingFeesToDao = _md; mintingFeesToBurn = _mb; redemptionFeesToDao = _rd; redemptionFeesToBurn = _rb; } function setFloor(uint _f) external DAO lock { floor = _f; } function setPaused(bool _p) external DAO lock { paused = _p; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function setQuests(IQuests _q) external { require(address(QUESTS) == address(0), "qs"); QUESTS = _q; } // 1:1 same sig, forwarded to QUESTS.claim, but in wrapped context. is also locked. reentered by this.multiClaim function claim(uint256 questID, uint256 period, uint256 index, address account, uint256 amount, bytes32[] calldata merkleProof) OnlyVoteManagers public lock { IERC20 _rt = IERC20(QUESTS.questRewardToken(questID)); uint _rtbb = _rt.balanceOf(address(this)); QUESTS.claim(questID, period, index, account, amount, merkleProof); uint _rtba = _rt.balanceOf(address(this)) - _rtbb; if( _rtba > 0 ) { require( _rt.transfer(msg.sender, _rtba) , "c1"); emit QuestClaimed(questID, period, index, _rtba, address(_rt), account); } } // 1:1 same sig but doesnt call QUESTS.multiClaim instead its a conduit to an internal this.claim multicall function multiClaim(address account, IQuests.ClaimParams[] calldata claims) OnlyVoteManagers external { uint256 length = claims.length; for(uint i; i<length; i++) { claim(claims[i].questID, claims[i].period, claims[i].index, account, claims[i].amount, claims[i].merkleProof); } } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function getCurrentEpoch() public view returns(uint) { return block.timestamp - (block.timestamp % 7 days); } function quote(uint _id) public view returns (uint) { uint _ts = ELTOKEN.totalSupply(); IVotingEscrow.LockedBalance memory _main = VENFT.locked(ID); IVotingEscrow.LockedBalance memory _user = VENFT.locked(_id); if( ! (_main.amount > 0) ) {return 0;} int _ibase = _main.amount; //pre-cast to int uint256 _base = uint256(_ibase); int _in = _user.amount; if( ! (_in > 0) ) {return 0;} uint256 _inc = uint256(_in);//cast to uint uint256 _amt = (_inc * _ts) / _base; { uint _md = _amt * mintingFeesToDao / 1e18; uint _mb = _amt * mintingFeesToBurn / 1e18; _amt = _amt - _md - _mb; } return _amt; } function rawQuote(uint _inc) public view returns (uint) { uint _ts = ELTOKEN.totalSupply(); IVotingEscrow.LockedBalance memory _main = VENFT.locked(ID); if( ! (_main.amount > 0) ) {return 0;} int _ibase = _main.amount; //pre-cast to int uint256 _base = uint256(_ibase); // Calculate and mint the amount of eTHENA the veNFT is worth. The ratio will change overtime, // as eTHENA is minted when veTHE are deposited + gained from rebases uint256 _amt = (_inc * _ts) / _base; { uint _md = _amt * mintingFeesToDao / 1e18; uint _mb = _amt * mintingFeesToBurn / 1e18; _amt = _amt - _md - _mb; } return _amt; } function price() public view returns (uint) { return 1e36 / rawQuote(1e18); } function getApr(address _contract) public view returns(uint) { try IGuruFarmland(_contract).apr() returns(uint _apr) { return _apr; } catch { return 404; } } function getTvl(address _contract) public view returns(uint) { try IGuruFarmland(_contract).tvlDeposits() returns(uint _tvl) { return _tvl; } catch { try IGuruFarmland(_contract).tvl() returns(uint _tvl) { return _tvl; } catch { return 404; } } } function getAllowance(address _user, address _farm) public view returns(uint) { try IGuruFarmland(_farm).stakingToken() returns(address _st) { // GuruMultiRewardFarmlands return IERC20(_st).allowance(_user, _farm); } catch { try IGuruFarmland(_farm).stake() returns(address _st) { // GuruFarmland return IERC20(_st).allowance(_user, _farm); } catch { try IGuruFarmland(_farm).want() returns(address _st) { // Kompound Protocol return IERC20(_st).allowance(_user, _farm); } catch { try IGuruFarmland(_farm).asset() returns(address _st) { // EIP-4626 return IERC20(_st).allowance(_user, _farm); } catch { return 404; // idkbro } } } } } function info( address _user, address[] memory _farms, address[] memory _pricing ) public view returns( uint[] memory, //uint[10] memory, address[] memory, uint[] memory, uint[] memory, uint[] memory ) { uint[] memory _basics = new uint[]( 13 + (_pricing.length/2) ); //+ pendingRedemptions[_user].length); _basics[0] = ELTOKEN.balanceOf(_user); _basics[1] = ELTOKEN.totalSupply(); _basics[2] = price(); _basics[3] = block.timestamp % 7 days > 6 days ? ELTOKEN.totalSupply() : floor; _basics[4] = redemptionFeesToDao; _basics[5] = redemptionFeesToBurn; _basics[6] = ID; _basics[7] = uint(int256(VENFT.locked(ID).amount)); _basics[8] = VENFT.totalSupply(); _basics[9] = VENFT.locked(ID).end; _basics[10] = mintingFeesToDao + mintingFeesToBurn; _basics[11] = ELTOKEN.allowance(_user, address(this)); _basics[12] = VENFT.balanceOf(_user); for(uint i; i < _pricing.length; i += 2) { _basics[13 + i/2] = IGuruFarmland(_pricing[i]).getAssetPrice(_pricing[i+1]); } ////for(uint i; i < pendingRedemptions[_user].length; i++) { //// _basics[13 + (_pricing.length/2) + i] = pendingRedemptions[_user][i]; ////} uint[] memory _farm_info = new uint[](_farms.length * 5); for(uint i; i < _farms.length * 5; i += 5) { IGuruFarmland _farm = IGuruFarmland(_farms[i/5]); _farm_info[i ] = _farm.balanceOf(_user); _farm_info[i+1] = _farm.totalSupply(); _farm_info[i+2] = getTvl(_farms[i/5]);//_farm.tvlDeposits(); _farm_info[i+3] = getApr(_farms[i/5]);//_farm.apr(); _farm_info[i+4] = getAllowance(_user, _farms[i/5]); } uint _venfts = VENFT.balanceOf(_user); uint[] memory _venftUserData = new uint[](_venfts * 4); for(uint i; i < _venfts * 4; i += 4) { _venftUserData[i ] = VENFT.tokenOfOwnerByIndex(_user,i/4); IVotingEscrow.LockedBalance memory _lb = VENFT.locked(_venftUserData[i]); _venftUserData[i+1] = uint(int256(_lb.amount)); _venftUserData[i+2] = _lb.end; _venftUserData[i+3] = VENFT.isApprovedOrOwner(address(this), _venftUserData[i]) == true ? 1 : 0; } IVoter.CastedVote[] memory _vc = VOTER.getNftCurrentVotes(ID); uint _len = _vc.length; address[] memory _miPools = new address[](_len); uint[] memory _miWeights = new uint[](_len); for(uint i; i<_len; i++){ _miPools[i] = _vc[i].gauge; _miWeights[i] = _vc[i].weight; } return ( _basics, _miPools, _miWeights, _farm_info, _venftUserData ); /* return ( ELTOKEN.balanceOf(_user), ELTOKEN.totalSupply(), price(), floor, redemptionFeesToDao, redemptionFeesToBurn, ID, uint(int256(VENFT.locked(ID).amount)), VENFT.totalSupply(), votedTime, votedPools[getCurrentEpoch()], votedWeights[getCurrentEpoch()], _farm_bals, _farm_tots, _farm_tvls, _farm_aprs, _venft_nft_ids, _venft_amounts, _venft_unlocks ); */ } } /* Community, Services & Enquiries: https://discord.gg/QpyfMarNrV Powered by Guru Network DAO ( 🦾 , 🚀 ) Simplicity is the ultimate sophistication. */
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"nft","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"veAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"md","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mb","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"wen","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"questID","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"period","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"address","name":"rewardToken","type":"address"},{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"QuestClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"nft","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"veAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rd","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rb","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"wen","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"ELTOKEN","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"QUESTS","outputs":[{"internalType":"contract IQuests","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VENFT","outputs":[{"internalType":"contract IVotingEscrow","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VOTER","outputs":[{"internalType":"contract IVoter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"questID","type":"uint256"},{"internalType":"uint256","name":"period","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32[]","name":"merkleProof","type":"bytes32[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mi","type":"uint256"}],"name":"copyVotesFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dao","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"floor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_farm","type":"address"}],"name":"getAllowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"}],"name":"getApr","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"}],"name":"getTvl","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address[]","name":"_farms","type":"address[]"},{"internalType":"address[]","name":"_pricing","type":"address[]"}],"name":"info","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_vo","type":"address"},{"internalType":"address","name":"_el","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintingFeesToBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintingFeesToDao","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"components":[{"internalType":"uint256","name":"questID","type":"uint256"},{"internalType":"uint256","name":"period","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32[]","name":"merkleProof","type":"bytes32[]"}],"internalType":"struct IQuests.ClaimParams[]","name":"claims","type":"tuple[]"}],"name":"multiClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"quote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_inc","type":"uint256"}],"name":"rawQuote","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redemptionFeesToBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redemptionFeesToDao","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_t","type":"address"},{"internalType":"uint256","name":"_a","type":"uint256"}],"name":"rescue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"d","type":"address"}],"name":"setDAO","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_md","type":"uint256"},{"internalType":"uint256","name":"_mb","type":"uint256"},{"internalType":"uint256","name":"_rd","type":"uint256"},{"internalType":"uint256","name":"_rb","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_f","type":"uint256"}],"name":"setFloor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"setID","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_p","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IQuests","name":"_q","type":"address"}],"name":"setQuests","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_m","type":"address"},{"internalType":"bool","name":"_b","type":"bool"}],"name":"setVoteManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_p","type":"address[]"},{"internalType":"uint256[]","name":"_w","type":"uint256[]"}],"name":"vote","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"voteManager","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"voteReset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tamt","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5061488c806100206000396000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c80635c975abb116101305780638efbc0d8116100b8578063b97dd9e21161007c578063b97dd9e2146104be578063cfd88c45146104c6578063dc5d184f146104e9578063e73a914c146104fc578063ed1bd76c1461050f57600080fd5b80638efbc0d814610474578063a035b1fe14610487578063b3cea2171461048f578063b6b55f2514610498578063b8d2b9ea146104ab57600080fd5b80636fcba377116100ff5780636fcba377146104295780637a4e4ecf1461043c5780637b43f6d41461044f5780638de0067d146104585780638ebf2fd61461046157600080fd5b80635c975abb146103ce57806361fd7abd146103f05780636a9b8ce5146104035780636f816a201461041657600080fd5b806329811ee5116101be5780634162169f116101825780634162169f1461036857806349ea88671461037b5780634c536aba1461038e578063547b13e21461039757806356549303146103bb57600080fd5b806329811ee51461031d5780632dc918c2146103305780632e1a7d4d146103435780633af4bca614610356578063406953631461035f57600080fd5b80631794bb3c116102055780631794bb3c146102b15780631bfc2065146102c457806321750369146102cc578063233ae6ed146102df578063252a7c471461030a57600080fd5b80630af4187d146102375780630c3a0fff1461025d578063150b7a021461027257806316c38b3c1461029e575b600080fd5b61024a610245366004613dc4565b610522565b6040519081526020015b60405180910390f35b61027061026b366004613e48565b61076c565b005b610285610280366004613ec4565b610ae5565b6040516001600160e01b03199091168152602001610254565b6102706102ac366004613f70565b610b95565b6102706102bf366004613f94565b610c03565b610270610f5a565b6102706102da366004613fd5565b61102e565b600c546102f2906001600160a01b031681565b6040516001600160a01b039091168152602001610254565b610270610318366004614003565b6110b8565b61024a61032b36600461401c565b61138c565b61027061033e36600461401c565b611404565b61024a610351366004614003565b611464565b61024a60075481565b61024a600b5481565b6002546102f2906001600160a01b031681565b61024a61038936600461401c565b611c67565b61024a60095481565b6103aa6103a536600461413e565b611d0f565b604051610254959493929190614227565b61024a6103c9366004614003565b612c8e565b6000546103e090610100900460ff1681565b6040519015158152602001610254565b6004546102f2906001600160a01b031681565b610270610411366004614294565b612e3d565b6102706104243660046142e8565b612f64565b6102706104373660046143a2565b613078565b61027061044a3660046143d4565b61319c565b61024a600a5481565b61024a60085481565b6005546102f2906001600160a01b031681565b610270610482366004614003565b61327c565b61024a6132dd565b61024a60015481565b61024a6104a6366004614003565b61330e565b6003546102f2906001600160a01b031681565b61024a6139c0565b6103e06104d436600461401c565b60066020526000908152604090205460ff1681565b6102706104f7366004614003565b6139d9565b61027061050a36600461401c565b613a3a565b61024a61051d366004614003565b613b5b565b6000816001600160a01b03166372f702f36040518163ffffffff1660e01b815260040160206040518083038186803b15801561055d57600080fd5b505afa92505050801561058d575060408051601f3d908101601f1916820190925261058a91810190614400565b60015b6106e157816001600160a01b0316633a4b66f16040518163ffffffff1660e01b815260040160206040518083038186803b1580156105ca57600080fd5b505afa9250505080156105fa575060408051601f3d908101601f191682019092526105f791810190614400565b60015b6106e157816001600160a01b0316631f1fcd516040518163ffffffff1660e01b815260040160206040518083038186803b15801561063757600080fd5b505afa925050508015610667575060408051601f3d908101601f1916820190925261066491810190614400565b60015b6106e157816001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106a457600080fd5b505afa9250505080156106d4575060408051601f3d908101601f191682019092526106d191810190614400565b60015b6106e15750610194610766565b604051636eb1769f60e11b81526001600160a01b038581166004830152848116602483015282169063dd62ed3e9060440160206040518083038186803b15801561072a57600080fd5b505afa15801561073e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610762919061441d565b9150505b92915050565b3360009081526006602052604090205460ff166107a45760405162461bcd60e51b815260040161079b90614436565b60405180910390fd5b60005460ff16156107c75760405162461bcd60e51b815260040161079b90614463565b6000805460ff19166001178155600c54604051632561875760e21b8152600481018a90526001600160a01b03909116906395861d5c9060240160206040518083038186803b15801561081857600080fd5b505afa15801561082c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108509190614400565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038316906370a082319060240160206040518083038186803b15801561089557600080fd5b505afa1580156108a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108cd919061441d565b600c54604051630c3a0fff60e01b81529192506001600160a01b031690630c3a0fff9061090a908c908c908c908c908c908c908c90600401614486565b600060405180830381600087803b15801561092457600080fd5b505af1158015610938573d6000803e3d6000fd5b50506040516370a0823160e01b8152306004820152600092508391506001600160a01b038516906370a082319060240160206040518083038186803b15801561098057600080fd5b505afa158015610994573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b8919061441d565b6109c29190614508565b90508015610acf5760405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906109f8903390859060040161451f565b602060405180830381600087803b158015610a1257600080fd5b505af1158015610a26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4a9190614538565b610a7b5760405162461bcd60e51b8152602060048201526002602482015261633160f01b604482015260640161079b565b604080518b8152602081018a90529081018290526001600160a01b0380891691908516908b907f864408ebaec0c7c775c03ebf6d13730f1281d9ebb47bcdf05692de9bcb0283829060600160405180910390a45b50506000805460ff191690555050505050505050565b6004546000906001600160a01b03163314610b2d5760405162461bcd60e51b815260206004820152600860248201526710bb32aa37b5b2b760c11b604482015260640161079b565b60005460ff16610b6a5760405162461bcd60e51b81526020600482015260086024820152671d5b9dd85b9d195960c21b604482015260640161079b565b507f150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f95945050505050565b6002546001600160a01b03163314610bbf5760405162461bcd60e51b815260040161079b90614555565b60005460ff1615610be25760405162461bcd60e51b815260040161079b90614463565b600080549115156101000261ffff199092169190911760011760ff19169055565b60005460ff1615610c265760405162461bcd60e51b815260040161079b90614463565b6000805460ff191660011790556002546001600160a01b031615610c4957600080fd5b600280546001600160a01b031990811633908117909255600091825260066020908152604092839020805460ff19166001179055600580546001600160a01b0388169316831790558251630fc2838b60e11b815292519192631f8507169260048083019392829003018186803b158015610cc257600080fd5b505afa158015610cd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfa9190614400565b600480546001600160a01b039283166001600160a01b03199182161782556003805493861693909116831790556001839055604080516318160ddd60e01b815290516318160ddd92828101926020929190829003018186803b158015610d5f57600080fd5b505afa158015610d73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d97919061441d565b610f4b5760048054604051635a2d1e0760e11b81529182018390526000916001600160a01b039091169063b45a3c0e90602401604080518083038186803b158015610de157600080fd5b505afa158015610df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e19919061457c565b905060008160000151600f0b13610e615760405162461bcd60e51b815260206004820152600c60248201526b44697274792076654e46542160a01b604482015260640161079b565b8051600f0b600b8190556003546040516340c10f1960e01b815282916001600160a01b0316906340c10f1990610e9d903390859060040161451f565b602060405180830381600087803b158015610eb757600080fd5b505af1158015610ecb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eef9190614538565b50604080518581526020810183905290810182905260006060820181905260808201524260a082015233907f55e1b84deec6eefe49c2c96afe1d5b43ca37768907f7388696c6009e7bbe3b549060c00160405180910390a25050505b50506000805460ff1916905550565b3360009081526006602052604090205460ff16610f895760405162461bcd60e51b815260040161079b90614436565b60005460ff1615610fac5760405162461bcd60e51b815260040161079b90614463565b6000805460ff19166001908117909155600554905460405163310bd74b60e01b81526001600160a01b039092169163310bd74b91610ff09160040190815260200190565b600060405180830381600087803b15801561100a57600080fd5b505af115801561101e573d6000803e3d6000fd5b50506000805460ff191690555050565b6002546001600160a01b031633146110585760405162461bcd60e51b815260040161079b90614555565b60005460ff161561107b5760405162461bcd60e51b815260040161079b90614463565b6000805460ff1990811660011782556001600160a01b03909316815260066020526040812080549215159284169290921790915580549091169055565b3360009081526006602052604090205460ff166110e75760405162461bcd60e51b815260040161079b90614436565b60005460ff161561110a5760405162461bcd60e51b815260040161079b90614463565b6000805460ff19166001178155600554604051631ac218b360e01b8152600481018490526001600160a01b0390911690631ac218b39060240160006040518083038186803b15801561115b57600080fd5b505afa15801561116f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261119791908101906145da565b8051909150806111df5760405162461bcd60e51b8152602060048201526013602482015272546172676574206861736e7420766f7465642160681b604482015260640161079b565b6000816001600160401b038111156111f9576111f9614039565b604051908082528060200260200182016040528015611222578160200160208202803683370190505b5090506000826001600160401b0381111561123f5761123f614039565b604051908082528060200260200182016040528015611268578160200160208202803683370190505b50905060005b8381101561131357848181518110611288576112886146a0565b6020026020010151600001518382815181106112a6576112a66146a0565b60200260200101906001600160a01b031690816001600160a01b0316815250508481815181106112d8576112d86146a0565b6020026020010151602001518282815181106112f6576112f66146a0565b60209081029190910101528061130b816146b6565b91505061126e565b50600554600154604051637ac09bf760e01b81526001600160a01b0390921691637ac09bf79161134991869086906004016146d1565b600060405180830381600087803b15801561136357600080fd5b505af1158015611377573d6000803e3d6000fd5b50506000805460ff1916905550505050505050565b6000816001600160a01b03166357ded9c96040518163ffffffff1660e01b815260040160206040518083038186803b1580156113c757600080fd5b505afa9250505080156113f7575060408051601f3d908101601f191682019092526113f49181019061441d565b60015b6107665750610194919050565b600c546001600160a01b0316156114425760405162461bcd60e51b8152602060048201526002602482015261717360f01b604482015260640161079b565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000805460ff16156114885760405162461bcd60e51b815260040161079b90614463565b6000805460ff191660011790819055610100900460ff16156114d55760405162461bcd60e51b81526020600482015260066024820152651c185d5cd95960d21b604482015260640161079b565b6003546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd90606401602060405180830381600087803b15801561152757600080fd5b505af115801561153b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155f9190614538565b6115945760405162461bcd60e51b81526020600482015260066024820152651a5b99985a5b60d21b604482015260640161079b565b600354604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b1580156115d957600080fd5b505afa1580156115ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611611919061441d565b600b549091506116218483614508565b116116605760405162461bcd60e51b815260206004820152600f60248201526e546f6f206d75636820647261776e2160881b604482015260640161079b565b6207e90061167162093a804261471c565b11156116bf5760405162461bcd60e51b815260206004820152601760248201527f4e6f2053706c6974206f6e205765646e65736461797321000000000000000000604482015260640161079b565b600080670de0b6b3a7640000600954866116d99190614730565b6116e3919061474f565b905080156117a55760035460025460405163a9059cbb60e01b81526001600160a01b039283169263a9059cbb9261172192911690859060040161451f565b602060405180830381600087803b15801561173b57600080fd5b505af115801561174f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117739190614538565b6117a55760405162461bcd60e51b815260206004820152600360248201526239323360e91b604482015260640161079b565b6000670de0b6b3a7640000600a54876117be9190614730565b6117c8919061474f565b9050806117d58388614508565b6117df9190614508565b6003549093506001600160a01b03166342966c686117fd8489614508565b6040518263ffffffff1660e01b815260040161181b91815260200190565b600060405180830381600087803b15801561183557600080fd5b505af1158015611849573d6000803e3d6000fd5b505060055460015460405163310bd74b60e01b81526001600160a01b03909216935063310bd74b92506118829160040190815260200190565b600060405180830381600087803b15801561189c57600080fd5b505af11580156118b0573d6000803e3d6000fd5b5050600480546040516370a0823160e01b815230928101929092526001600160a01b031692506370a08231915060240160206040518083038186803b1580156118f857600080fd5b505afa15801561190c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611930919061441d565b6001146119755760405162461bcd60e51b8152602060048201526013602482015272756e65787065637465642062616c616e63652160681b604482015260640161079b565b6040805160028082526060820183526000926020830190803683370190505090506119a08486614508565b816000815181106119b3576119b36146a0565b60200260200101818152505083816001815181106119d3576119d36146a0565b6020908102919091010152600480546001546040516315abf9d160e21b81526001600160a01b03909216926356afe74492611a12928692909101614763565b600060405180830381600087803b158015611a2c57600080fd5b505af1158015611a40573d6000803e3d6000fd5b505060048054604051632f745c5960e01b8152600095506001600160a01b039091169350632f745c599250611a7991309186910161451f565b60206040518083038186803b158015611a9157600080fd5b505afa158015611aa5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac9919061441d565b60018181556004549192506000916001600160a01b03169063b45a3c0e90611af2908590614785565b6040518263ffffffff1660e01b8152600401611b1091815260200190565b604080518083038186803b158015611b2757600080fd5b505afa158015611b3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5f919061457c565b51600454600f9190910b915081906001600160a01b03166342842e0e3033611b88876001614785565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b158015611bd757600080fd5b505af1158015611beb573d6000803e3d6000fd5b503392507f194c8d0132d20112211dfa71bb87a92766fde4f4318e08efd2cc4a6e188e509d9150611c1f9050856001614785565b604080519182526020820185905281018c905260608101889052608081018790524260a082015260c00160405180910390a26000805460ff1916905598975050505050505050565b6000816001600160a01b031663c0e19e376040518163ffffffff1660e01b815260040160206040518083038186803b158015611ca257600080fd5b505afa925050508015611cd2575060408051601f3d908101601f19168201909252611ccf9181019061441d565b60015b61076657816001600160a01b031663e5328e066040518163ffffffff1660e01b815260040160206040518083038186803b1580156113c757600080fd5b6060806060806060600060028751611d27919061474f565b611d3290600d614785565b6001600160401b03811115611d4957611d49614039565b604051908082528060200260200182016040528015611d72578160200160208202803683370190505b506003546040516370a0823160e01b81526001600160a01b038c811660048301529293509116906370a082319060240160206040518083038186803b158015611dba57600080fd5b505afa158015611dce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df2919061441d565b81600081518110611e0557611e056146a0565b602090810291909101810191909152600354604080516318160ddd60e01b815290516001600160a01b03909216926318160ddd92600480840193829003018186803b158015611e5357600080fd5b505afa158015611e67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8b919061441d565b81600181518110611e9e57611e9e6146a0565b602002602001018181525050611eb26132dd565b81600281518110611ec557611ec56146a0565b60209081029190910101526207e900611ee162093a804261471c565b11611eee57600b54611f74565b600360009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015611f3c57600080fd5b505afa158015611f50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f74919061441d565b81600381518110611f8757611f876146a0565b60200260200101818152505060095481600481518110611fa957611fa96146a0565b602002602001018181525050600a5481600581518110611fcb57611fcb6146a0565b60200260200101818152505060015481600681518110611fed57611fed6146a0565b602090810291909101015260048054600154604051635a2d1e0760e11b8152928301526001600160a01b03169063b45a3c0e90602401604080518083038186803b15801561203a57600080fd5b505afa15801561204e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612072919061457c565b60000151600f0b8160078151811061208c5761208c6146a0565b602002602001018181525050600460009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156120e657600080fd5b505afa1580156120fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211e919061441d565b81600881518110612131576121316146a0565b602090810291909101015260048054600154604051635a2d1e0760e11b8152928301526001600160a01b03169063b45a3c0e90602401604080518083038186803b15801561217e57600080fd5b505afa158015612192573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b6919061457c565b60200151816009815181106121cd576121cd6146a0565b6020026020010181815250506008546007546121e99190614785565b81600a815181106121fc576121fc6146a0565b6020908102919091010152600354604051636eb1769f60e11b81526001600160a01b038b811660048301523060248301529091169063dd62ed3e9060440160206040518083038186803b15801561225257600080fd5b505afa158015612266573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061228a919061441d565b81600b8151811061229d5761229d6146a0565b6020908102919091010152600480546040516370a0823160e01b81526001600160a01b038c8116938201939093529116906370a082319060240160206040518083038186803b1580156122ef57600080fd5b505afa158015612303573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612327919061441d565b81600c8151811061233a5761233a6146a0565b60200260200101818152505060005b875181101561245f57878181518110612364576123646146a0565b60200260200101516001600160a01b031663b3596f07898360016123889190614785565b81518110612398576123986146a0565b60200260200101516040518263ffffffff1660e01b81526004016123cb91906001600160a01b0391909116815260200190565b60206040518083038186803b1580156123e357600080fd5b505afa1580156123f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241b919061441d565b8261242760028461474f565b61243290600d614785565b81518110612442576124426146a0565b6020908102919091010152612458600282614785565b9050612349565b506000885160056124709190614730565b6001600160401b0381111561248757612487614039565b6040519080825280602002602001820160405280156124b0578160200160208202803683370190505b50905060005b89516124c3906005614730565b8110156127335760008a6124d860058461474f565b815181106124e8576124e86146a0565b60209081029190910101516040516370a0823160e01b81526001600160a01b038e81166004830152919250908216906370a082319060240160206040518083038186803b15801561253857600080fd5b505afa15801561254c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612570919061441d565b838381518110612582576125826146a0565b602002602001018181525050806001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156125c757600080fd5b505afa1580156125db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ff919061441d565b8361260b846001614785565b8151811061261b5761261b6146a0565b60209081029190910101526126528b61263560058561474f565b81518110612645576126456146a0565b6020026020010151611c67565b8361265e846002614785565b8151811061266e5761266e6146a0565b60209081029190910101526126a58b61268860058561474f565b81518110612698576126986146a0565b602002602001015161138c565b836126b1846003614785565b815181106126c1576126c16146a0565b60209081029190910101526126f98c8c6126dc60058661474f565b815181106126ec576126ec6146a0565b6020026020010151610522565b83612705846004614785565b81518110612715576127156146a0565b60209081029190910101525061272c600582614785565b90506124b6565b50600480546040516370a0823160e01b81526001600160a01b038d811693820193909352600092909116906370a082319060240160206040518083038186803b15801561277f57600080fd5b505afa158015612793573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127b7919061441d565b905060006127c6826004614730565b6001600160401b038111156127dd576127dd614039565b604051908082528060200260200182016040528015612806578160200160208202803683370190505b50905060005b612817836004614730565b811015612ab557600480546001600160a01b031690632f745c59908f9061283e908561474f565b6040518363ffffffff1660e01b815260040161285b92919061451f565b60206040518083038186803b15801561287357600080fd5b505afa158015612887573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128ab919061441d565b8282815181106128bd576128bd6146a0565b602090810291909101015260045482516000916001600160a01b03169063b45a3c0e908590859081106128f2576128f26146a0565b60200260200101516040518263ffffffff1660e01b815260040161291891815260200190565b604080518083038186803b15801561292f57600080fd5b505afa158015612943573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612967919061457c565b8051909150600f0b8361297b846001614785565b8151811061298b5761298b6146a0565b6020026020010181815250508060200151838360026129aa9190614785565b815181106129ba576129ba6146a0565b602090810291909101015260045483516001600160a01b039091169063430c20819030908690869081106129f0576129f06146a0565b60200260200101516040518363ffffffff1660e01b8152600401612a1592919061451f565b60206040518083038186803b158015612a2d57600080fd5b505afa158015612a41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a659190614538565b1515600114612a75576000612a78565b60015b60ff1683612a87846003614785565b81518110612a9757612a976146a0565b602090810291909101015250612aae600482614785565b905061280c565b50600554600154604051631ac218b360e01b815260048101919091526000916001600160a01b031690631ac218b39060240160006040518083038186803b158015612aff57600080fd5b505afa158015612b13573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612b3b91908101906145da565b80519091506000816001600160401b03811115612b5a57612b5a614039565b604051908082528060200260200182016040528015612b83578160200160208202803683370190505b5090506000826001600160401b03811115612ba057612ba0614039565b604051908082528060200260200182016040528015612bc9578160200160208202803683370190505b50905060005b83811015612c7457848181518110612be957612be96146a0565b602002602001015160000151838281518110612c0757612c076146a0565b60200260200101906001600160a01b031690816001600160a01b031681525050848181518110612c3957612c396146a0565b602002602001015160200151828281518110612c5757612c576146a0565b602090810291909101015280612c6c816146b6565b915050612bcf565b50969f909e50959c50939a50909850929650505050505050565b600080600360009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015612cdf57600080fd5b505afa158015612cf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d17919061441d565b60048054600154604051635a2d1e0760e11b8152928301529192506000916001600160a01b03169063b45a3c0e90602401604080518083038186803b158015612d5f57600080fd5b505afa158015612d73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d97919061457c565b905060008160000151600f0b13612db2575060009392505050565b8051600f0b80600081612dc58689614730565b612dcf919061474f565b90506000670de0b6b3a764000060075483612dea9190614730565b612df4919061474f565b90506000670de0b6b3a764000060085484612e0f9190614730565b612e19919061474f565b905080612e268385614508565b612e309190614508565b9998505050505050505050565b3360009081526006602052604090205460ff16612e6c5760405162461bcd60e51b815260040161079b90614436565b8060005b81811015612f5d57612f4b848483818110612e8d57612e8d6146a0565b9050602002810190612e9f919061479d565b35858584818110612eb257612eb26146a0565b9050602002810190612ec4919061479d565b60200135868685818110612eda57612eda6146a0565b9050602002810190612eec919061479d565b6040013588888887818110612f0357612f036146a0565b9050602002810190612f15919061479d565b60600135898988818110612f2b57612f2b6146a0565b9050602002810190612f3d919061479d565b61026b9060808101906147bd565b80612f55816146b6565b915050612e70565b5050505050565b3360009081526006602052604090205460ff16612f935760405162461bcd60e51b815260040161079b90614436565b60005460ff1615612fb65760405162461bcd60e51b815260040161079b90614463565b6000805460ff1916600117905580518251146130035760405162461bcd60e51b815260206004820152600c60248201526b0d8cadc40dad2e6dac2e8c6d60a31b604482015260640161079b565b600554600154604051637ac09bf760e01b81526001600160a01b0390921691637ac09bf79161303891869086906004016146d1565b600060405180830381600087803b15801561305257600080fd5b505af1158015613066573d6000803e3d6000fd5b50506000805460ff1916905550505050565b6002546001600160a01b031633146130a25760405162461bcd60e51b815260040161079b90614555565b60005460ff16156130c55760405162461bcd60e51b815260040161079b90614463565b6000805460ff191660011790556706f05b59d3b200006130e58486614785565b11156131275760405162461bcd60e51b81526020600482015260116024820152700dad2dce840cccaca40e8dede40d0d2ced607b1b604482015260640161079b565b6706f05b59d3b2000061313a8280614785565b111561317e5760405162461bcd60e51b81526020600482015260136024820152720e4cac8cacada40cccaca40e8dede40d0d2ced606b1b604482015260640161079b565b600793909355600891909155600955600a556000805460ff19169055565b6002546001600160a01b031633146131c65760405162461bcd60e51b815260040161079b90614555565b60005460ff16156131e95760405162461bcd60e51b815260040161079b90614463565b6000805460ff1916600117905560025460405163a9059cbb60e01b815283916001600160a01b038084169263a9059cbb9261322a921690869060040161451f565b602060405180830381600087803b15801561324457600080fd5b505af1158015613258573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101e9190614538565b6002546001600160a01b031633146132a65760405162461bcd60e51b815260040161079b90614555565b60005460ff16156132c95760405162461bcd60e51b815260040161079b90614463565b60008054600b9290925560ff199091169055565b60006132f0670de0b6b3a7640000612c8e565b613309906ec097ce7bc90715b34b9f100000000061474f565b905090565b6000805460ff16156133325760405162461bcd60e51b815260040161079b90614463565b6000805460ff191660011790819055610100900460ff161561337f5760405162461bcd60e51b81526020600482015260066024820152651c185d5cd95960d21b604482015260640161079b565b600354604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b1580156133c457600080fd5b505afa1580156133d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133fc919061441d565b60048054600154604051635a2d1e0760e11b8152928301529192506000916001600160a01b03169063b45a3c0e90602401604080518083038186803b15801561344457600080fd5b505afa158015613458573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061347c919061457c565b905060008160000151600f0b136134c45760405162461bcd60e51b815260206004820152600c60248201526b44697274792076654e46542160a01b604482015260640161079b565b805160048054604051632142170760e11b8152339281019290925230602483015260448201879052600f9290920b9182916001600160a01b03909116906342842e0e90606401600060405180830381600087803b15801561352457600080fd5b505af1158015613538573d6000803e3d6000fd5b50506004805460015460405163d1c2babb60e01b81529283018b905260248301526001600160a01b0316925063d1c2babb9150604401600060405180830381600087803b15801561358857600080fd5b505af115801561359c573d6000803e3d6000fd5b505060048054600154604051635a2d1e0760e11b815292830152600093506001600160a01b0316915063b45a3c0e90602401604080518083038186803b1580156135e557600080fd5b505afa1580156135f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061361d919061457c565b845181519192506000916136319190614806565b600f0b9050600081136136775760405162461bcd60e51b815260206004820152600e60248201526d4469727479204465706f7369742160901b604482015260640161079b565b806000846136858984614730565b61368f919061474f565b6003546040516340c10f1960e01b81529192506001600160a01b0316906340c10f19906136c2903090859060040161451f565b602060405180830381600087803b1580156136dc57600080fd5b505af11580156136f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137149190614538565b506000670de0b6b3a76400006007548361372e9190614730565b613738919061474f565b905080156137fa5760035460025460405163a9059cbb60e01b81526001600160a01b039283169263a9059cbb9261377692911690859060040161451f565b602060405180830381600087803b15801561379057600080fd5b505af11580156137a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137c89190614538565b6137fa5760405162461bcd60e51b815260206004820152600360248201526236b23360e91b604482015260640161079b565b6000670de0b6b3a7640000600854846138139190614730565b61381d919061474f565b9050801561388457600354604051630852cd8d60e31b8152600481018390526001600160a01b03909116906342966c6890602401600060405180830381600087803b15801561386b57600080fd5b505af115801561387f573d6000803e3d6000fd5b505050505b8061388f8385614508565b6138999190614508565b60035460405163a9059cbb60e01b81529194506001600160a01b03169063a9059cbb906138cc903390879060040161451f565b602060405180830381600087803b1580156138e657600080fd5b505af11580156138fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061391e9190614538565b6139505760405162461bcd60e51b815260206004820152600360248201526236bab360e91b604482015260640161079b565b604080518d81526020810186905290810184905260608101839052608081018290524260a082015233907f55e1b84deec6eefe49c2c96afe1d5b43ca37768907f7388696c6009e7bbe3b549060c00160405180910390a250506000805460ff191690559998505050505050505050565b60006139cf62093a804261471c565b6133099042614508565b6002546001600160a01b03163314613a035760405162461bcd60e51b815260040161079b90614555565b60005460ff1615613a265760405162461bcd60e51b815260040161079b90614463565b6000805460019290925560ff199091169055565b6002546001600160a01b03163314613a645760405162461bcd60e51b815260040161079b90614555565b60005460ff1615613a875760405162461bcd60e51b815260040161079b90614463565b6000805460ff191660011790556001600160a01b038116613ad25760405162461bcd60e51b8152602060048201526005602482015264643d3d302160d81b604482015260640161079b565b600280546001600160a01b0319166001600160a01b038381169182179092556004805460405163a22cb46560e01b8152918201929092526001602482015291169063a22cb46590604401600060405180830381600087803b158015613b3657600080fd5b505af1158015613b4a573d6000803e3d6000fd5b50506000805460ff19169055505050565b600080600360009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015613bac57600080fd5b505afa158015613bc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613be4919061441d565b60048054600154604051635a2d1e0760e11b8152928301529192506000916001600160a01b03169063b45a3c0e90602401604080518083038186803b158015613c2c57600080fd5b505afa158015613c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c64919061457c565b60048054604051635a2d1e0760e11b81529182018790529192506000916001600160a01b03169063b45a3c0e90602401604080518083038186803b158015613cab57600080fd5b505afa158015613cbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ce3919061457c565b905060008260000151600f0b13613cff57506000949350505050565b81518151600f91820b918291900b60008113613d2357506000979650505050505050565b80600083613d318984614730565b613d3b919061474f565b90506000670de0b6b3a764000060075483613d569190614730565b613d60919061474f565b90506000670de0b6b3a764000060085484613d7b9190614730565b613d85919061474f565b905080613d928385614508565b613d9c9190614508565b9c9b505050505050505050505050565b6001600160a01b0381168114613dc157600080fd5b50565b60008060408385031215613dd757600080fd5b8235613de281613dac565b91506020830135613df281613dac565b809150509250929050565b60008083601f840112613e0f57600080fd5b5081356001600160401b03811115613e2657600080fd5b6020830191508360208260051b8501011115613e4157600080fd5b9250929050565b600080600080600080600060c0888a031215613e6357600080fd5b8735965060208801359550604088013594506060880135613e8381613dac565b93506080880135925060a08801356001600160401b03811115613ea557600080fd5b613eb18a828b01613dfd565b989b979a50959850939692959293505050565b600080600080600060808688031215613edc57600080fd5b8535613ee781613dac565b94506020860135613ef781613dac565b93506040860135925060608601356001600160401b0380821115613f1a57600080fd5b818801915088601f830112613f2e57600080fd5b813581811115613f3d57600080fd5b896020828501011115613f4f57600080fd5b9699959850939650602001949392505050565b8015158114613dc157600080fd5b600060208284031215613f8257600080fd5b8135613f8d81613f62565b9392505050565b600080600060608486031215613fa957600080fd5b8335613fb481613dac565b92506020840135613fc481613dac565b929592945050506040919091013590565b60008060408385031215613fe857600080fd5b8235613ff381613dac565b91506020830135613df281613f62565b60006020828403121561401557600080fd5b5035919050565b60006020828403121561402e57600080fd5b8135613f8d81613dac565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561407157614071614039565b60405290565b604051601f8201601f191681016001600160401b038111828210171561409f5761409f614039565b604052919050565b60006001600160401b038211156140c0576140c0614039565b5060051b60200190565b600082601f8301126140db57600080fd5b813560206140f06140eb836140a7565b614077565b82815260059290921b8401810191818101908684111561410f57600080fd5b8286015b8481101561413357803561412681613dac565b8352918301918301614113565b509695505050505050565b60008060006060848603121561415357600080fd5b833561415e81613dac565b925060208401356001600160401b038082111561417a57600080fd5b614186878388016140ca565b9350604086013591508082111561419c57600080fd5b506141a9868287016140ca565b9150509250925092565b600081518084526020808501945080840160005b838110156141e3578151875295820195908201906001016141c7565b509495945050505050565b600081518084526020808501945080840160005b838110156141e35781516001600160a01b031687529582019590820190600101614202565b60a08152600061423a60a08301886141b3565b828103602084015261424c81886141ee565b9050828103604084015261426081876141b3565b9050828103606084015261427481866141b3565b9050828103608084015261428881856141b3565b98975050505050505050565b6000806000604084860312156142a957600080fd5b83356142b481613dac565b925060208401356001600160401b038111156142cf57600080fd5b6142db86828701613dfd565b9497909650939450505050565b600080604083850312156142fb57600080fd5b82356001600160401b038082111561431257600080fd5b61431e868387016140ca565b935060209150818501358181111561433557600080fd5b85019050601f8101861361434857600080fd5b80356143566140eb826140a7565b81815260059190911b8201830190838101908883111561437557600080fd5b928401925b828410156143935783358252928401929084019061437a565b80955050505050509250929050565b600080600080608085870312156143b857600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156143e757600080fd5b82356143f281613dac565b946020939093013593505050565b60006020828403121561441257600080fd5b8151613f8d81613dac565b60006020828403121561442f57600080fd5b5051919050565b602080825260139082015272556e617574686f72697a656420566f7465722160681b604082015260600190565b60208082526009908201526852652d656e7472792160b81b604082015260600190565b87815260208101879052604081018690526001600160a01b03851660608201526080810184905260c060a08201819052810182905260006001600160fb1b038311156144d157600080fd5b8260051b808560e08501376000920160e00191825250979650505050505050565b634e487b7160e01b600052601160045260246000fd5b60008282101561451a5761451a6144f2565b500390565b6001600160a01b03929092168252602082015260400190565b60006020828403121561454a57600080fd5b8151613f8d81613f62565b6020808252600d908201526c556e617574686f72697a65642160981b604082015260600190565b60006040828403121561458e57600080fd5b604051604081018181106001600160401b03821117156145b0576145b0614039565b6040528251600f81900b81146145c557600080fd5b81526020928301519281019290925250919050565b600060208083850312156145ed57600080fd5b82516001600160401b0381111561460357600080fd5b8301601f8101851361461457600080fd5b80516146226140eb826140a7565b8181526060918202830184019184820191908884111561464157600080fd5b938501935b838510156146945780858a03121561465e5760008081fd5b61466661404f565b855161467181613dac565b815285870151878201526040808701519082015283529384019391850191614646565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b60006000198214156146ca576146ca6144f2565b5060010190565b8381526060602082015260006146ea60608301856141ee565b82810360408401526146fc81856141b3565b9695505050505050565b634e487b7160e01b600052601260045260246000fd5b60008261472b5761472b614706565b500690565b600081600019048311821515161561474a5761474a6144f2565b500290565b60008261475e5761475e614706565b500490565b60408152600061477660408301856141b3565b90508260208301529392505050565b60008219821115614798576147986144f2565b500190565b60008235609e198336030181126147b357600080fd5b9190910192915050565b6000808335601e198436030181126147d457600080fd5b8301803591506001600160401b038211156147ee57600080fd5b6020019150600581901b3603821315613e4157600080fd5b600081600f0b83600f0b600081128160016001607f1b031901831281151615614831576148316144f2565b8160016001607f1b0301831381161561484c5761484c6144f2565b509003939250505056fea26469706673582212208ab653d7e265bc0e1d0427a7e8e5b6a331e6f24a4c6361a961fb391d110182a964736f6c63430008090033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102325760003560e01c80635c975abb116101305780638efbc0d8116100b8578063b97dd9e21161007c578063b97dd9e2146104be578063cfd88c45146104c6578063dc5d184f146104e9578063e73a914c146104fc578063ed1bd76c1461050f57600080fd5b80638efbc0d814610474578063a035b1fe14610487578063b3cea2171461048f578063b6b55f2514610498578063b8d2b9ea146104ab57600080fd5b80636fcba377116100ff5780636fcba377146104295780637a4e4ecf1461043c5780637b43f6d41461044f5780638de0067d146104585780638ebf2fd61461046157600080fd5b80635c975abb146103ce57806361fd7abd146103f05780636a9b8ce5146104035780636f816a201461041657600080fd5b806329811ee5116101be5780634162169f116101825780634162169f1461036857806349ea88671461037b5780634c536aba1461038e578063547b13e21461039757806356549303146103bb57600080fd5b806329811ee51461031d5780632dc918c2146103305780632e1a7d4d146103435780633af4bca614610356578063406953631461035f57600080fd5b80631794bb3c116102055780631794bb3c146102b15780631bfc2065146102c457806321750369146102cc578063233ae6ed146102df578063252a7c471461030a57600080fd5b80630af4187d146102375780630c3a0fff1461025d578063150b7a021461027257806316c38b3c1461029e575b600080fd5b61024a610245366004613dc4565b610522565b6040519081526020015b60405180910390f35b61027061026b366004613e48565b61076c565b005b610285610280366004613ec4565b610ae5565b6040516001600160e01b03199091168152602001610254565b6102706102ac366004613f70565b610b95565b6102706102bf366004613f94565b610c03565b610270610f5a565b6102706102da366004613fd5565b61102e565b600c546102f2906001600160a01b031681565b6040516001600160a01b039091168152602001610254565b610270610318366004614003565b6110b8565b61024a61032b36600461401c565b61138c565b61027061033e36600461401c565b611404565b61024a610351366004614003565b611464565b61024a60075481565b61024a600b5481565b6002546102f2906001600160a01b031681565b61024a61038936600461401c565b611c67565b61024a60095481565b6103aa6103a536600461413e565b611d0f565b604051610254959493929190614227565b61024a6103c9366004614003565b612c8e565b6000546103e090610100900460ff1681565b6040519015158152602001610254565b6004546102f2906001600160a01b031681565b610270610411366004614294565b612e3d565b6102706104243660046142e8565b612f64565b6102706104373660046143a2565b613078565b61027061044a3660046143d4565b61319c565b61024a600a5481565b61024a60085481565b6005546102f2906001600160a01b031681565b610270610482366004614003565b61327c565b61024a6132dd565b61024a60015481565b61024a6104a6366004614003565b61330e565b6003546102f2906001600160a01b031681565b61024a6139c0565b6103e06104d436600461401c565b60066020526000908152604090205460ff1681565b6102706104f7366004614003565b6139d9565b61027061050a36600461401c565b613a3a565b61024a61051d366004614003565b613b5b565b6000816001600160a01b03166372f702f36040518163ffffffff1660e01b815260040160206040518083038186803b15801561055d57600080fd5b505afa92505050801561058d575060408051601f3d908101601f1916820190925261058a91810190614400565b60015b6106e157816001600160a01b0316633a4b66f16040518163ffffffff1660e01b815260040160206040518083038186803b1580156105ca57600080fd5b505afa9250505080156105fa575060408051601f3d908101601f191682019092526105f791810190614400565b60015b6106e157816001600160a01b0316631f1fcd516040518163ffffffff1660e01b815260040160206040518083038186803b15801561063757600080fd5b505afa925050508015610667575060408051601f3d908101601f1916820190925261066491810190614400565b60015b6106e157816001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106a457600080fd5b505afa9250505080156106d4575060408051601f3d908101601f191682019092526106d191810190614400565b60015b6106e15750610194610766565b604051636eb1769f60e11b81526001600160a01b038581166004830152848116602483015282169063dd62ed3e9060440160206040518083038186803b15801561072a57600080fd5b505afa15801561073e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610762919061441d565b9150505b92915050565b3360009081526006602052604090205460ff166107a45760405162461bcd60e51b815260040161079b90614436565b60405180910390fd5b60005460ff16156107c75760405162461bcd60e51b815260040161079b90614463565b6000805460ff19166001178155600c54604051632561875760e21b8152600481018a90526001600160a01b03909116906395861d5c9060240160206040518083038186803b15801561081857600080fd5b505afa15801561082c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108509190614400565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038316906370a082319060240160206040518083038186803b15801561089557600080fd5b505afa1580156108a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108cd919061441d565b600c54604051630c3a0fff60e01b81529192506001600160a01b031690630c3a0fff9061090a908c908c908c908c908c908c908c90600401614486565b600060405180830381600087803b15801561092457600080fd5b505af1158015610938573d6000803e3d6000fd5b50506040516370a0823160e01b8152306004820152600092508391506001600160a01b038516906370a082319060240160206040518083038186803b15801561098057600080fd5b505afa158015610994573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b8919061441d565b6109c29190614508565b90508015610acf5760405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906109f8903390859060040161451f565b602060405180830381600087803b158015610a1257600080fd5b505af1158015610a26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4a9190614538565b610a7b5760405162461bcd60e51b8152602060048201526002602482015261633160f01b604482015260640161079b565b604080518b8152602081018a90529081018290526001600160a01b0380891691908516908b907f864408ebaec0c7c775c03ebf6d13730f1281d9ebb47bcdf05692de9bcb0283829060600160405180910390a45b50506000805460ff191690555050505050505050565b6004546000906001600160a01b03163314610b2d5760405162461bcd60e51b815260206004820152600860248201526710bb32aa37b5b2b760c11b604482015260640161079b565b60005460ff16610b6a5760405162461bcd60e51b81526020600482015260086024820152671d5b9dd85b9d195960c21b604482015260640161079b565b507f150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f95945050505050565b6002546001600160a01b03163314610bbf5760405162461bcd60e51b815260040161079b90614555565b60005460ff1615610be25760405162461bcd60e51b815260040161079b90614463565b600080549115156101000261ffff199092169190911760011760ff19169055565b60005460ff1615610c265760405162461bcd60e51b815260040161079b90614463565b6000805460ff191660011790556002546001600160a01b031615610c4957600080fd5b600280546001600160a01b031990811633908117909255600091825260066020908152604092839020805460ff19166001179055600580546001600160a01b0388169316831790558251630fc2838b60e11b815292519192631f8507169260048083019392829003018186803b158015610cc257600080fd5b505afa158015610cd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfa9190614400565b600480546001600160a01b039283166001600160a01b03199182161782556003805493861693909116831790556001839055604080516318160ddd60e01b815290516318160ddd92828101926020929190829003018186803b158015610d5f57600080fd5b505afa158015610d73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d97919061441d565b610f4b5760048054604051635a2d1e0760e11b81529182018390526000916001600160a01b039091169063b45a3c0e90602401604080518083038186803b158015610de157600080fd5b505afa158015610df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e19919061457c565b905060008160000151600f0b13610e615760405162461bcd60e51b815260206004820152600c60248201526b44697274792076654e46542160a01b604482015260640161079b565b8051600f0b600b8190556003546040516340c10f1960e01b815282916001600160a01b0316906340c10f1990610e9d903390859060040161451f565b602060405180830381600087803b158015610eb757600080fd5b505af1158015610ecb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eef9190614538565b50604080518581526020810183905290810182905260006060820181905260808201524260a082015233907f55e1b84deec6eefe49c2c96afe1d5b43ca37768907f7388696c6009e7bbe3b549060c00160405180910390a25050505b50506000805460ff1916905550565b3360009081526006602052604090205460ff16610f895760405162461bcd60e51b815260040161079b90614436565b60005460ff1615610fac5760405162461bcd60e51b815260040161079b90614463565b6000805460ff19166001908117909155600554905460405163310bd74b60e01b81526001600160a01b039092169163310bd74b91610ff09160040190815260200190565b600060405180830381600087803b15801561100a57600080fd5b505af115801561101e573d6000803e3d6000fd5b50506000805460ff191690555050565b6002546001600160a01b031633146110585760405162461bcd60e51b815260040161079b90614555565b60005460ff161561107b5760405162461bcd60e51b815260040161079b90614463565b6000805460ff1990811660011782556001600160a01b03909316815260066020526040812080549215159284169290921790915580549091169055565b3360009081526006602052604090205460ff166110e75760405162461bcd60e51b815260040161079b90614436565b60005460ff161561110a5760405162461bcd60e51b815260040161079b90614463565b6000805460ff19166001178155600554604051631ac218b360e01b8152600481018490526001600160a01b0390911690631ac218b39060240160006040518083038186803b15801561115b57600080fd5b505afa15801561116f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261119791908101906145da565b8051909150806111df5760405162461bcd60e51b8152602060048201526013602482015272546172676574206861736e7420766f7465642160681b604482015260640161079b565b6000816001600160401b038111156111f9576111f9614039565b604051908082528060200260200182016040528015611222578160200160208202803683370190505b5090506000826001600160401b0381111561123f5761123f614039565b604051908082528060200260200182016040528015611268578160200160208202803683370190505b50905060005b8381101561131357848181518110611288576112886146a0565b6020026020010151600001518382815181106112a6576112a66146a0565b60200260200101906001600160a01b031690816001600160a01b0316815250508481815181106112d8576112d86146a0565b6020026020010151602001518282815181106112f6576112f66146a0565b60209081029190910101528061130b816146b6565b91505061126e565b50600554600154604051637ac09bf760e01b81526001600160a01b0390921691637ac09bf79161134991869086906004016146d1565b600060405180830381600087803b15801561136357600080fd5b505af1158015611377573d6000803e3d6000fd5b50506000805460ff1916905550505050505050565b6000816001600160a01b03166357ded9c96040518163ffffffff1660e01b815260040160206040518083038186803b1580156113c757600080fd5b505afa9250505080156113f7575060408051601f3d908101601f191682019092526113f49181019061441d565b60015b6107665750610194919050565b600c546001600160a01b0316156114425760405162461bcd60e51b8152602060048201526002602482015261717360f01b604482015260640161079b565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000805460ff16156114885760405162461bcd60e51b815260040161079b90614463565b6000805460ff191660011790819055610100900460ff16156114d55760405162461bcd60e51b81526020600482015260066024820152651c185d5cd95960d21b604482015260640161079b565b6003546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd90606401602060405180830381600087803b15801561152757600080fd5b505af115801561153b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155f9190614538565b6115945760405162461bcd60e51b81526020600482015260066024820152651a5b99985a5b60d21b604482015260640161079b565b600354604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b1580156115d957600080fd5b505afa1580156115ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611611919061441d565b600b549091506116218483614508565b116116605760405162461bcd60e51b815260206004820152600f60248201526e546f6f206d75636820647261776e2160881b604482015260640161079b565b6207e90061167162093a804261471c565b11156116bf5760405162461bcd60e51b815260206004820152601760248201527f4e6f2053706c6974206f6e205765646e65736461797321000000000000000000604482015260640161079b565b600080670de0b6b3a7640000600954866116d99190614730565b6116e3919061474f565b905080156117a55760035460025460405163a9059cbb60e01b81526001600160a01b039283169263a9059cbb9261172192911690859060040161451f565b602060405180830381600087803b15801561173b57600080fd5b505af115801561174f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117739190614538565b6117a55760405162461bcd60e51b815260206004820152600360248201526239323360e91b604482015260640161079b565b6000670de0b6b3a7640000600a54876117be9190614730565b6117c8919061474f565b9050806117d58388614508565b6117df9190614508565b6003549093506001600160a01b03166342966c686117fd8489614508565b6040518263ffffffff1660e01b815260040161181b91815260200190565b600060405180830381600087803b15801561183557600080fd5b505af1158015611849573d6000803e3d6000fd5b505060055460015460405163310bd74b60e01b81526001600160a01b03909216935063310bd74b92506118829160040190815260200190565b600060405180830381600087803b15801561189c57600080fd5b505af11580156118b0573d6000803e3d6000fd5b5050600480546040516370a0823160e01b815230928101929092526001600160a01b031692506370a08231915060240160206040518083038186803b1580156118f857600080fd5b505afa15801561190c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611930919061441d565b6001146119755760405162461bcd60e51b8152602060048201526013602482015272756e65787065637465642062616c616e63652160681b604482015260640161079b565b6040805160028082526060820183526000926020830190803683370190505090506119a08486614508565b816000815181106119b3576119b36146a0565b60200260200101818152505083816001815181106119d3576119d36146a0565b6020908102919091010152600480546001546040516315abf9d160e21b81526001600160a01b03909216926356afe74492611a12928692909101614763565b600060405180830381600087803b158015611a2c57600080fd5b505af1158015611a40573d6000803e3d6000fd5b505060048054604051632f745c5960e01b8152600095506001600160a01b039091169350632f745c599250611a7991309186910161451f565b60206040518083038186803b158015611a9157600080fd5b505afa158015611aa5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac9919061441d565b60018181556004549192506000916001600160a01b03169063b45a3c0e90611af2908590614785565b6040518263ffffffff1660e01b8152600401611b1091815260200190565b604080518083038186803b158015611b2757600080fd5b505afa158015611b3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5f919061457c565b51600454600f9190910b915081906001600160a01b03166342842e0e3033611b88876001614785565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b158015611bd757600080fd5b505af1158015611beb573d6000803e3d6000fd5b503392507f194c8d0132d20112211dfa71bb87a92766fde4f4318e08efd2cc4a6e188e509d9150611c1f9050856001614785565b604080519182526020820185905281018c905260608101889052608081018790524260a082015260c00160405180910390a26000805460ff1916905598975050505050505050565b6000816001600160a01b031663c0e19e376040518163ffffffff1660e01b815260040160206040518083038186803b158015611ca257600080fd5b505afa925050508015611cd2575060408051601f3d908101601f19168201909252611ccf9181019061441d565b60015b61076657816001600160a01b031663e5328e066040518163ffffffff1660e01b815260040160206040518083038186803b1580156113c757600080fd5b6060806060806060600060028751611d27919061474f565b611d3290600d614785565b6001600160401b03811115611d4957611d49614039565b604051908082528060200260200182016040528015611d72578160200160208202803683370190505b506003546040516370a0823160e01b81526001600160a01b038c811660048301529293509116906370a082319060240160206040518083038186803b158015611dba57600080fd5b505afa158015611dce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df2919061441d565b81600081518110611e0557611e056146a0565b602090810291909101810191909152600354604080516318160ddd60e01b815290516001600160a01b03909216926318160ddd92600480840193829003018186803b158015611e5357600080fd5b505afa158015611e67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8b919061441d565b81600181518110611e9e57611e9e6146a0565b602002602001018181525050611eb26132dd565b81600281518110611ec557611ec56146a0565b60209081029190910101526207e900611ee162093a804261471c565b11611eee57600b54611f74565b600360009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015611f3c57600080fd5b505afa158015611f50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f74919061441d565b81600381518110611f8757611f876146a0565b60200260200101818152505060095481600481518110611fa957611fa96146a0565b602002602001018181525050600a5481600581518110611fcb57611fcb6146a0565b60200260200101818152505060015481600681518110611fed57611fed6146a0565b602090810291909101015260048054600154604051635a2d1e0760e11b8152928301526001600160a01b03169063b45a3c0e90602401604080518083038186803b15801561203a57600080fd5b505afa15801561204e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612072919061457c565b60000151600f0b8160078151811061208c5761208c6146a0565b602002602001018181525050600460009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156120e657600080fd5b505afa1580156120fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211e919061441d565b81600881518110612131576121316146a0565b602090810291909101015260048054600154604051635a2d1e0760e11b8152928301526001600160a01b03169063b45a3c0e90602401604080518083038186803b15801561217e57600080fd5b505afa158015612192573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b6919061457c565b60200151816009815181106121cd576121cd6146a0565b6020026020010181815250506008546007546121e99190614785565b81600a815181106121fc576121fc6146a0565b6020908102919091010152600354604051636eb1769f60e11b81526001600160a01b038b811660048301523060248301529091169063dd62ed3e9060440160206040518083038186803b15801561225257600080fd5b505afa158015612266573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061228a919061441d565b81600b8151811061229d5761229d6146a0565b6020908102919091010152600480546040516370a0823160e01b81526001600160a01b038c8116938201939093529116906370a082319060240160206040518083038186803b1580156122ef57600080fd5b505afa158015612303573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612327919061441d565b81600c8151811061233a5761233a6146a0565b60200260200101818152505060005b875181101561245f57878181518110612364576123646146a0565b60200260200101516001600160a01b031663b3596f07898360016123889190614785565b81518110612398576123986146a0565b60200260200101516040518263ffffffff1660e01b81526004016123cb91906001600160a01b0391909116815260200190565b60206040518083038186803b1580156123e357600080fd5b505afa1580156123f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241b919061441d565b8261242760028461474f565b61243290600d614785565b81518110612442576124426146a0565b6020908102919091010152612458600282614785565b9050612349565b506000885160056124709190614730565b6001600160401b0381111561248757612487614039565b6040519080825280602002602001820160405280156124b0578160200160208202803683370190505b50905060005b89516124c3906005614730565b8110156127335760008a6124d860058461474f565b815181106124e8576124e86146a0565b60209081029190910101516040516370a0823160e01b81526001600160a01b038e81166004830152919250908216906370a082319060240160206040518083038186803b15801561253857600080fd5b505afa15801561254c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612570919061441d565b838381518110612582576125826146a0565b602002602001018181525050806001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156125c757600080fd5b505afa1580156125db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ff919061441d565b8361260b846001614785565b8151811061261b5761261b6146a0565b60209081029190910101526126528b61263560058561474f565b81518110612645576126456146a0565b6020026020010151611c67565b8361265e846002614785565b8151811061266e5761266e6146a0565b60209081029190910101526126a58b61268860058561474f565b81518110612698576126986146a0565b602002602001015161138c565b836126b1846003614785565b815181106126c1576126c16146a0565b60209081029190910101526126f98c8c6126dc60058661474f565b815181106126ec576126ec6146a0565b6020026020010151610522565b83612705846004614785565b81518110612715576127156146a0565b60209081029190910101525061272c600582614785565b90506124b6565b50600480546040516370a0823160e01b81526001600160a01b038d811693820193909352600092909116906370a082319060240160206040518083038186803b15801561277f57600080fd5b505afa158015612793573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127b7919061441d565b905060006127c6826004614730565b6001600160401b038111156127dd576127dd614039565b604051908082528060200260200182016040528015612806578160200160208202803683370190505b50905060005b612817836004614730565b811015612ab557600480546001600160a01b031690632f745c59908f9061283e908561474f565b6040518363ffffffff1660e01b815260040161285b92919061451f565b60206040518083038186803b15801561287357600080fd5b505afa158015612887573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128ab919061441d565b8282815181106128bd576128bd6146a0565b602090810291909101015260045482516000916001600160a01b03169063b45a3c0e908590859081106128f2576128f26146a0565b60200260200101516040518263ffffffff1660e01b815260040161291891815260200190565b604080518083038186803b15801561292f57600080fd5b505afa158015612943573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612967919061457c565b8051909150600f0b8361297b846001614785565b8151811061298b5761298b6146a0565b6020026020010181815250508060200151838360026129aa9190614785565b815181106129ba576129ba6146a0565b602090810291909101015260045483516001600160a01b039091169063430c20819030908690869081106129f0576129f06146a0565b60200260200101516040518363ffffffff1660e01b8152600401612a1592919061451f565b60206040518083038186803b158015612a2d57600080fd5b505afa158015612a41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a659190614538565b1515600114612a75576000612a78565b60015b60ff1683612a87846003614785565b81518110612a9757612a976146a0565b602090810291909101015250612aae600482614785565b905061280c565b50600554600154604051631ac218b360e01b815260048101919091526000916001600160a01b031690631ac218b39060240160006040518083038186803b158015612aff57600080fd5b505afa158015612b13573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612b3b91908101906145da565b80519091506000816001600160401b03811115612b5a57612b5a614039565b604051908082528060200260200182016040528015612b83578160200160208202803683370190505b5090506000826001600160401b03811115612ba057612ba0614039565b604051908082528060200260200182016040528015612bc9578160200160208202803683370190505b50905060005b83811015612c7457848181518110612be957612be96146a0565b602002602001015160000151838281518110612c0757612c076146a0565b60200260200101906001600160a01b031690816001600160a01b031681525050848181518110612c3957612c396146a0565b602002602001015160200151828281518110612c5757612c576146a0565b602090810291909101015280612c6c816146b6565b915050612bcf565b50969f909e50959c50939a50909850929650505050505050565b600080600360009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015612cdf57600080fd5b505afa158015612cf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d17919061441d565b60048054600154604051635a2d1e0760e11b8152928301529192506000916001600160a01b03169063b45a3c0e90602401604080518083038186803b158015612d5f57600080fd5b505afa158015612d73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d97919061457c565b905060008160000151600f0b13612db2575060009392505050565b8051600f0b80600081612dc58689614730565b612dcf919061474f565b90506000670de0b6b3a764000060075483612dea9190614730565b612df4919061474f565b90506000670de0b6b3a764000060085484612e0f9190614730565b612e19919061474f565b905080612e268385614508565b612e309190614508565b9998505050505050505050565b3360009081526006602052604090205460ff16612e6c5760405162461bcd60e51b815260040161079b90614436565b8060005b81811015612f5d57612f4b848483818110612e8d57612e8d6146a0565b9050602002810190612e9f919061479d565b35858584818110612eb257612eb26146a0565b9050602002810190612ec4919061479d565b60200135868685818110612eda57612eda6146a0565b9050602002810190612eec919061479d565b6040013588888887818110612f0357612f036146a0565b9050602002810190612f15919061479d565b60600135898988818110612f2b57612f2b6146a0565b9050602002810190612f3d919061479d565b61026b9060808101906147bd565b80612f55816146b6565b915050612e70565b5050505050565b3360009081526006602052604090205460ff16612f935760405162461bcd60e51b815260040161079b90614436565b60005460ff1615612fb65760405162461bcd60e51b815260040161079b90614463565b6000805460ff1916600117905580518251146130035760405162461bcd60e51b815260206004820152600c60248201526b0d8cadc40dad2e6dac2e8c6d60a31b604482015260640161079b565b600554600154604051637ac09bf760e01b81526001600160a01b0390921691637ac09bf79161303891869086906004016146d1565b600060405180830381600087803b15801561305257600080fd5b505af1158015613066573d6000803e3d6000fd5b50506000805460ff1916905550505050565b6002546001600160a01b031633146130a25760405162461bcd60e51b815260040161079b90614555565b60005460ff16156130c55760405162461bcd60e51b815260040161079b90614463565b6000805460ff191660011790556706f05b59d3b200006130e58486614785565b11156131275760405162461bcd60e51b81526020600482015260116024820152700dad2dce840cccaca40e8dede40d0d2ced607b1b604482015260640161079b565b6706f05b59d3b2000061313a8280614785565b111561317e5760405162461bcd60e51b81526020600482015260136024820152720e4cac8cacada40cccaca40e8dede40d0d2ced606b1b604482015260640161079b565b600793909355600891909155600955600a556000805460ff19169055565b6002546001600160a01b031633146131c65760405162461bcd60e51b815260040161079b90614555565b60005460ff16156131e95760405162461bcd60e51b815260040161079b90614463565b6000805460ff1916600117905560025460405163a9059cbb60e01b815283916001600160a01b038084169263a9059cbb9261322a921690869060040161451f565b602060405180830381600087803b15801561324457600080fd5b505af1158015613258573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101e9190614538565b6002546001600160a01b031633146132a65760405162461bcd60e51b815260040161079b90614555565b60005460ff16156132c95760405162461bcd60e51b815260040161079b90614463565b60008054600b9290925560ff199091169055565b60006132f0670de0b6b3a7640000612c8e565b613309906ec097ce7bc90715b34b9f100000000061474f565b905090565b6000805460ff16156133325760405162461bcd60e51b815260040161079b90614463565b6000805460ff191660011790819055610100900460ff161561337f5760405162461bcd60e51b81526020600482015260066024820152651c185d5cd95960d21b604482015260640161079b565b600354604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b1580156133c457600080fd5b505afa1580156133d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133fc919061441d565b60048054600154604051635a2d1e0760e11b8152928301529192506000916001600160a01b03169063b45a3c0e90602401604080518083038186803b15801561344457600080fd5b505afa158015613458573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061347c919061457c565b905060008160000151600f0b136134c45760405162461bcd60e51b815260206004820152600c60248201526b44697274792076654e46542160a01b604482015260640161079b565b805160048054604051632142170760e11b8152339281019290925230602483015260448201879052600f9290920b9182916001600160a01b03909116906342842e0e90606401600060405180830381600087803b15801561352457600080fd5b505af1158015613538573d6000803e3d6000fd5b50506004805460015460405163d1c2babb60e01b81529283018b905260248301526001600160a01b0316925063d1c2babb9150604401600060405180830381600087803b15801561358857600080fd5b505af115801561359c573d6000803e3d6000fd5b505060048054600154604051635a2d1e0760e11b815292830152600093506001600160a01b0316915063b45a3c0e90602401604080518083038186803b1580156135e557600080fd5b505afa1580156135f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061361d919061457c565b845181519192506000916136319190614806565b600f0b9050600081136136775760405162461bcd60e51b815260206004820152600e60248201526d4469727479204465706f7369742160901b604482015260640161079b565b806000846136858984614730565b61368f919061474f565b6003546040516340c10f1960e01b81529192506001600160a01b0316906340c10f19906136c2903090859060040161451f565b602060405180830381600087803b1580156136dc57600080fd5b505af11580156136f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137149190614538565b506000670de0b6b3a76400006007548361372e9190614730565b613738919061474f565b905080156137fa5760035460025460405163a9059cbb60e01b81526001600160a01b039283169263a9059cbb9261377692911690859060040161451f565b602060405180830381600087803b15801561379057600080fd5b505af11580156137a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137c89190614538565b6137fa5760405162461bcd60e51b815260206004820152600360248201526236b23360e91b604482015260640161079b565b6000670de0b6b3a7640000600854846138139190614730565b61381d919061474f565b9050801561388457600354604051630852cd8d60e31b8152600481018390526001600160a01b03909116906342966c6890602401600060405180830381600087803b15801561386b57600080fd5b505af115801561387f573d6000803e3d6000fd5b505050505b8061388f8385614508565b6138999190614508565b60035460405163a9059cbb60e01b81529194506001600160a01b03169063a9059cbb906138cc903390879060040161451f565b602060405180830381600087803b1580156138e657600080fd5b505af11580156138fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061391e9190614538565b6139505760405162461bcd60e51b815260206004820152600360248201526236bab360e91b604482015260640161079b565b604080518d81526020810186905290810184905260608101839052608081018290524260a082015233907f55e1b84deec6eefe49c2c96afe1d5b43ca37768907f7388696c6009e7bbe3b549060c00160405180910390a250506000805460ff191690559998505050505050505050565b60006139cf62093a804261471c565b6133099042614508565b6002546001600160a01b03163314613a035760405162461bcd60e51b815260040161079b90614555565b60005460ff1615613a265760405162461bcd60e51b815260040161079b90614463565b6000805460019290925560ff199091169055565b6002546001600160a01b03163314613a645760405162461bcd60e51b815260040161079b90614555565b60005460ff1615613a875760405162461bcd60e51b815260040161079b90614463565b6000805460ff191660011790556001600160a01b038116613ad25760405162461bcd60e51b8152602060048201526005602482015264643d3d302160d81b604482015260640161079b565b600280546001600160a01b0319166001600160a01b038381169182179092556004805460405163a22cb46560e01b8152918201929092526001602482015291169063a22cb46590604401600060405180830381600087803b158015613b3657600080fd5b505af1158015613b4a573d6000803e3d6000fd5b50506000805460ff19169055505050565b600080600360009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015613bac57600080fd5b505afa158015613bc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613be4919061441d565b60048054600154604051635a2d1e0760e11b8152928301529192506000916001600160a01b03169063b45a3c0e90602401604080518083038186803b158015613c2c57600080fd5b505afa158015613c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c64919061457c565b60048054604051635a2d1e0760e11b81529182018790529192506000916001600160a01b03169063b45a3c0e90602401604080518083038186803b158015613cab57600080fd5b505afa158015613cbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ce3919061457c565b905060008260000151600f0b13613cff57506000949350505050565b81518151600f91820b918291900b60008113613d2357506000979650505050505050565b80600083613d318984614730565b613d3b919061474f565b90506000670de0b6b3a764000060075483613d569190614730565b613d60919061474f565b90506000670de0b6b3a764000060085484613d7b9190614730565b613d85919061474f565b905080613d928385614508565b613d9c9190614508565b9c9b505050505050505050505050565b6001600160a01b0381168114613dc157600080fd5b50565b60008060408385031215613dd757600080fd5b8235613de281613dac565b91506020830135613df281613dac565b809150509250929050565b60008083601f840112613e0f57600080fd5b5081356001600160401b03811115613e2657600080fd5b6020830191508360208260051b8501011115613e4157600080fd5b9250929050565b600080600080600080600060c0888a031215613e6357600080fd5b8735965060208801359550604088013594506060880135613e8381613dac565b93506080880135925060a08801356001600160401b03811115613ea557600080fd5b613eb18a828b01613dfd565b989b979a50959850939692959293505050565b600080600080600060808688031215613edc57600080fd5b8535613ee781613dac565b94506020860135613ef781613dac565b93506040860135925060608601356001600160401b0380821115613f1a57600080fd5b818801915088601f830112613f2e57600080fd5b813581811115613f3d57600080fd5b896020828501011115613f4f57600080fd5b9699959850939650602001949392505050565b8015158114613dc157600080fd5b600060208284031215613f8257600080fd5b8135613f8d81613f62565b9392505050565b600080600060608486031215613fa957600080fd5b8335613fb481613dac565b92506020840135613fc481613dac565b929592945050506040919091013590565b60008060408385031215613fe857600080fd5b8235613ff381613dac565b91506020830135613df281613f62565b60006020828403121561401557600080fd5b5035919050565b60006020828403121561402e57600080fd5b8135613f8d81613dac565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561407157614071614039565b60405290565b604051601f8201601f191681016001600160401b038111828210171561409f5761409f614039565b604052919050565b60006001600160401b038211156140c0576140c0614039565b5060051b60200190565b600082601f8301126140db57600080fd5b813560206140f06140eb836140a7565b614077565b82815260059290921b8401810191818101908684111561410f57600080fd5b8286015b8481101561413357803561412681613dac565b8352918301918301614113565b509695505050505050565b60008060006060848603121561415357600080fd5b833561415e81613dac565b925060208401356001600160401b038082111561417a57600080fd5b614186878388016140ca565b9350604086013591508082111561419c57600080fd5b506141a9868287016140ca565b9150509250925092565b600081518084526020808501945080840160005b838110156141e3578151875295820195908201906001016141c7565b509495945050505050565b600081518084526020808501945080840160005b838110156141e35781516001600160a01b031687529582019590820190600101614202565b60a08152600061423a60a08301886141b3565b828103602084015261424c81886141ee565b9050828103604084015261426081876141b3565b9050828103606084015261427481866141b3565b9050828103608084015261428881856141b3565b98975050505050505050565b6000806000604084860312156142a957600080fd5b83356142b481613dac565b925060208401356001600160401b038111156142cf57600080fd5b6142db86828701613dfd565b9497909650939450505050565b600080604083850312156142fb57600080fd5b82356001600160401b038082111561431257600080fd5b61431e868387016140ca565b935060209150818501358181111561433557600080fd5b85019050601f8101861361434857600080fd5b80356143566140eb826140a7565b81815260059190911b8201830190838101908883111561437557600080fd5b928401925b828410156143935783358252928401929084019061437a565b80955050505050509250929050565b600080600080608085870312156143b857600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156143e757600080fd5b82356143f281613dac565b946020939093013593505050565b60006020828403121561441257600080fd5b8151613f8d81613dac565b60006020828403121561442f57600080fd5b5051919050565b602080825260139082015272556e617574686f72697a656420566f7465722160681b604082015260600190565b60208082526009908201526852652d656e7472792160b81b604082015260600190565b87815260208101879052604081018690526001600160a01b03851660608201526080810184905260c060a08201819052810182905260006001600160fb1b038311156144d157600080fd5b8260051b808560e08501376000920160e00191825250979650505050505050565b634e487b7160e01b600052601160045260246000fd5b60008282101561451a5761451a6144f2565b500390565b6001600160a01b03929092168252602082015260400190565b60006020828403121561454a57600080fd5b8151613f8d81613f62565b6020808252600d908201526c556e617574686f72697a65642160981b604082015260600190565b60006040828403121561458e57600080fd5b604051604081018181106001600160401b03821117156145b0576145b0614039565b6040528251600f81900b81146145c557600080fd5b81526020928301519281019290925250919050565b600060208083850312156145ed57600080fd5b82516001600160401b0381111561460357600080fd5b8301601f8101851361461457600080fd5b80516146226140eb826140a7565b8181526060918202830184019184820191908884111561464157600080fd5b938501935b838510156146945780858a03121561465e5760008081fd5b61466661404f565b855161467181613dac565b815285870151878201526040808701519082015283529384019391850191614646565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b60006000198214156146ca576146ca6144f2565b5060010190565b8381526060602082015260006146ea60608301856141ee565b82810360408401526146fc81856141b3565b9695505050505050565b634e487b7160e01b600052601260045260246000fd5b60008261472b5761472b614706565b500690565b600081600019048311821515161561474a5761474a6144f2565b500290565b60008261475e5761475e614706565b500490565b60408152600061477660408301856141b3565b90508260208301529392505050565b60008219821115614798576147986144f2565b500190565b60008235609e198336030181126147b357600080fd5b9190910192915050565b6000808335601e198436030181126147d457600080fd5b8301803591506001600160401b038211156147ee57600080fd5b6020019150600581901b3603821315613e4157600080fd5b600081600f0b83600f0b600081128160016001607f1b031901831281151615614831576148316144f2565b8160016001607f1b0301831381161561484c5761484c6144f2565b509003939250505056fea26469706673582212208ab653d7e265bc0e1d0427a7e8e5b6a331e6f24a4c6361a961fb391d110182a964736f6c63430008090033
Deployed Bytecode Sourcemap
6016:16017:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18311:737;;;;;;:::i;:::-;;:::i;:::-;;;689:25:1;;;677:2;662:18;18311:737:0;;;;;;;;15114:548;;;;;;:::i;:::-;;:::i;:::-;;8319:294;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;3052:33:1;;;3034:52;;3022:2;3007:18;8319:294:0;2890:202:1;14574:67:0;;;;;;:::i;:::-;;:::i;8618:690::-;;;;;;:::i;:::-;;:::i;12785:77::-;;;:::i;14038:93::-;;;;;;:::i;:::-;;:::i;6762:21::-;;;;;-1:-1:-1;;;;;6762:21:0;;;;;;-1:-1:-1;;;;;4493:32:1;;;4475:51;;4463:2;4448:18;6762:21:0;4314:218:1;13037:495:0;;;;;;:::i;:::-;;:::i;17832:179::-;;;;;;:::i;:::-;;:::i;14886:110::-;;;;;;:::i;:::-;;:::i;10933:1847::-;;;;;;:::i;:::-;;:::i;6565:28::-;;;;;;6701:17;;;;;;6338:18;;;;;-1:-1:-1;;;;;6338:18:0;;;18016:290;;;;;;:::i;:::-;;:::i;6630:31::-;;;;;;19055:2975;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;17089:651::-;;;;;;:::i;:::-;;:::i;6258:18::-;;;;;;;;;;;;;;;9940:14:1;;9933:22;9915:41;;9903:2;9888:18;6258::0;9775:187:1;6425:26:0;;;;;-1:-1:-1;;;;;6425:26:0;;;15775:300;;;;;;:::i;:::-;;:::i;12867:165::-;;;;;;:::i;:::-;;:::i;14198:305::-;;;;;;:::i;:::-;;:::i;13781:114::-;;;;;;:::i;:::-;;:::i;6665:32::-;;;;;;6597:29;;;;;;6455:19;;;;;-1:-1:-1;;;;;6455:19:0;;;14506:65;;;;;;:::i;:::-;;:::i;17745:82::-;;;:::i;6320:14::-;;;;;;9313:1611;;;;;;:::i;:::-;;:::i;6400:21::-;;;;;-1:-1:-1;;;;;6400:21:0;;;16320:114;;;:::i;6478:43::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;14134:61;;;;;;:::i;:::-;;:::i;13898:137::-;;;;;;:::i;:::-;;:::i;16439:647::-;;;;;;:::i;:::-;;:::i;18311:737::-;18383:4;18412:5;-1:-1:-1;;;;;18398:33:0;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18398:35:0;;;;;;;;-1:-1:-1;;18398:35:0;;;;;;;;;;;;:::i;:::-;;;18394:650;;18571:5;-1:-1:-1;;;;;18557:26:0;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18557:28:0;;;;;;;;-1:-1:-1;;18557:28:0;;;;;;;;;;;;:::i;:::-;;;18553:486;;18715:5;-1:-1:-1;;;;;18701:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18701:27:0;;;;;;;;-1:-1:-1;;18701:27:0;;;;;;;;;;;;:::i;:::-;;;18697:336;;18867:5;-1:-1:-1;;;;;18853:26:0;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18853:28:0;;;;;;;;-1:-1:-1;;18853:28:0;;;;;;;;;;;;:::i;:::-;;;18849:177;;-1:-1:-1;19004:3:0;18997:10;;18849:177;18931:35;;-1:-1:-1;;;18931:35:0;;-1:-1:-1;;;;;13585:15:1;;;18931:35:0;;;13567:34:1;13637:15;;;13617:18;;;13610:43;18931:21:0;;;;;13502:18:1;;18931:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18924:42;;;18553:486;18311:737;;;;:::o;15114:548::-;7306:10;7294:23;;;;:11;:23;;;;;;;;7286:55;;;;-1:-1:-1;;;7286:55:0;;;;;;;:::i;:::-;;;;;;;;;7103:7:::1;::::0;::::1;;7102:8;7094:31;;;;-1:-1:-1::0;;;7094:31:0::1;;;;;;;:::i;:::-;7130:7;:14:::0;;-1:-1:-1;;7130:14:0::1;7140:4;7130:14;::::0;;15296:6:::2;::::0;:32:::2;::::0;-1:-1:-1;;;15296:32:0;;::::2;::::0;::::2;689:25:1::0;;;-1:-1:-1;;;;;15296:6:0;;::::2;::::0;:23:::2;::::0;662:18:1;;15296:32:0::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15347:28;::::0;-1:-1:-1;;;15347:28:0;;15369:4:::2;15347:28;::::0;::::2;4475:51:1::0;15276:53:0;;-1:-1:-1;15334:10:0::2;::::0;-1:-1:-1;;;;;15347:13:0;::::2;::::0;::::2;::::0;4448:18:1;;15347:28:0::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15380:6;::::0;:66:::2;::::0;-1:-1:-1;;;15380:66:0;;15334:41;;-1:-1:-1;;;;;;15380:6:0::2;::::0;:12:::2;::::0;:66:::2;::::0;15393:7;;15402:6;;15410:5;;15417:7;;15426:6;;15434:11;;;;15380:66:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;15464:28:0::2;::::0;-1:-1:-1;;;15464:28:0;;15486:4:::2;15464:28;::::0;::::2;4475:51:1::0;15451:10:0::2;::::0;-1:-1:-1;15495:5:0;;-1:-1:-1;;;;;;15464:13:0;::::2;::::0;::::2;::::0;4448:18:1;;15464:28:0::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:36;;;;:::i;:::-;15451:49:::0;-1:-1:-1;15509:9:0;;15505:153:::2;;15536:31;::::0;-1:-1:-1;;;15536:31:0;;-1:-1:-1;;;;;15536:12:0;::::2;::::0;::::2;::::0;:31:::2;::::0;15549:10:::2;::::0;15561:5;;15536:31:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15527:48;;;::::0;-1:-1:-1;;;15527:48:0;;16409:2:1;15527:48:0::2;::::0;::::2;16391:21:1::0;16448:1;16428:18;;;16421:29;-1:-1:-1;;;16466:18:1;;;16459:32;16508:18;;15527:48:0::2;16207:325:1::0;15527:48:0::2;15586:66;::::0;;16739:25:1;;;16795:2;16780:18;;16773:34;;;16823:18;;;16816:34;;;-1:-1:-1;;;;;15586:66:0;;::::2;::::0;;;::::2;::::0;15608:6;;15586:66:::2;::::0;16727:2:1;16712:18;15586:66:0::2;;;;;;;15505:153;-1:-1:-1::0;;7165:5:0::1;7155:15:::0;;-1:-1:-1;;7155:15:0::1;::::0;;-1:-1:-1;;;;;;;;15114:548:0:o;8319:294::-;8461:5;;8412:6;;-1:-1:-1;;;;;8461:5:0;8439:10;:28;8431:49;;;;-1:-1:-1;;;8431:49:0;;17063:2:1;8431:49:0;;;17045:21:1;17102:1;17082:18;;;17075:29;-1:-1:-1;;;17120:18:1;;;17113:38;17168:18;;8431:49:0;16861:331:1;8431:49:0;8499:7;;;;8491:28;;;;-1:-1:-1;;;8491:28:0;;17399:2:1;8491:28:0;;;17381:21:1;17438:1;17418:18;;;17411:29;-1:-1:-1;;;17456:18:1;;;17449:38;17504:18;;8491:28:0;17197:331:1;8491:28:0;-1:-1:-1;8544:60:0;8319:294;;;;;;;:::o;14574:67::-;7218:3;;-1:-1:-1;;;;;7218:3:0;7206:10;:15;7198:41;;;;-1:-1:-1;;;7198:41:0;;;;;;;:::i;:::-;7103:7:::1;::::0;::::1;;7102:8;7094:31;;;;-1:-1:-1::0;;;7094:31:0::1;;;;;;;:::i;:::-;7130:7;:14:::0;;14625:11;::::2;;7130:14:::1;14625:11:::2;-1:-1:-1::0;;14625:11:0;;;;;;;7140:4:::1;14625:11:::0;-1:-1:-1;;7155:15:0::1;::::0;;14574:67::o;8618:690::-;7103:7;;;;7102:8;7094:31;;;;-1:-1:-1;;;7094:31:0;;;;;;;:::i;:::-;7130:7;:14;;-1:-1:-1;;7130:14:0;7140:4;7130:14;;;8701:3:::1;::::0;-1:-1:-1;;;;;8701:3:0::1;:17:::0;8693:26:::1;;;::::0;::::1;;8724:3;:16:::0;;-1:-1:-1;;;;;;8724:16:0;;::::1;8730:10;8724:16:::0;;::::1;::::0;;;:3:::1;8745:23:::0;;;:11:::1;:23;::::0;;;;;;;;:30;;-1:-1:-1;;8745:30:0::1;8724:16:::0;8745:30:::1;::::0;;8780:5:::1;:19:::0;;-1:-1:-1;;;;;8780:19:0;::::1;::::0;::::1;::::0;::::1;::::0;;8826:10;;-1:-1:-1;;;8826:10:0;;;;8780:19;;8826:8:::1;::::0;:10:::1;::::0;;::::1;::::0;8745:23;8826:10;;;;;8780:19;8826:10;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8804:5;:33:::0;;-1:-1:-1;;;;;8804:33:0;;::::1;-1:-1:-1::0;;;;;;8804:33:0;;::::1;;::::0;;8872:7:::1;:21:::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;8804:33;8898:8;;;8914:21:::1;::::0;;-1:-1:-1;;;8914:21:0;;;;:19:::1;::::0;:21;;::::1;::::0;::::1;::::0;;;;;;;;8872;8914;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8911:393;;8991:5;::::0;;:17:::1;::::0;-1:-1:-1;;;8991:17:0;;;;::::1;689:25:1::0;;;8948:40:0::1;::::0;-1:-1:-1;;;;;8991:5:0;;::::1;::::0;:12:::1;::::0;662:18:1;;8991:17:0::1;::::0;::::1;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8948:60;;9037:1;9022:5;:12;;;:16;;;9014:41;;;::::0;-1:-1:-1;;;9014:41:0;;18683:2:1;9014:41:0::1;::::0;::::1;18665:21:1::0;18722:2;18702:18;;;18695:30;-1:-1:-1;;;18741:18:1;;;18734:42;18793:18;;9014:41:0::1;18481:336:1::0;9014:41:0::1;9073:12:::0;;9061:24:::1;;9120:5;:12:::0;;;9138:7:::1;::::0;:30:::1;::::0;-1:-1:-1;;;9138:30:0;;9061:24;;-1:-1:-1;;;;;9138:7:0::1;::::0;:12:::1;::::0;:30:::1;::::0;9151:10:::1;::::0;9061:24;;9138:30:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;9239:59:0::1;::::0;;19125:25:1;;;19181:2;19166:18;;19159:34;;;19209:18;;;19202:34;;;9276:1:0::1;19267:2:1::0;19252:18;;19245:34;;;19310:3;19295:19;;19288:35;9282:15:0::1;19354:3:1::0;19339:19;;19332:35;9247:10:0::1;::::0;9239:59:::1;::::0;19112:3:1;19097:19;9239:59:0::1;;;;;;;8942:362;;;8911:393;-1:-1:-1::0;;7165:5:0;7155:15;;-1:-1:-1;;7155:15:0;;;-1:-1:-1;8618:690:0:o;12785:77::-;7306:10;7294:23;;;;:11;:23;;;;;;;;7286:55;;;;-1:-1:-1;;;7286:55:0;;;;;;;:::i;:::-;7103:7:::1;::::0;::::1;;7102:8;7094:31;;;;-1:-1:-1::0;;;7094:31:0::1;;;;;;;:::i;:::-;7130:7;:14:::0;;-1:-1:-1;;7130:14:0::1;7140:4;7130:14:::0;;::::1;::::0;;;12842:5:::2;::::0;12854:2;;12842:15:::2;::::0;-1:-1:-1;;;12842:15:0;;-1:-1:-1;;;;;12842:5:0;;::::2;::::0;:11:::2;::::0;:15:::2;::::0;::::2;;689:25:1::0;;;677:2;662:18;;543:177;12842:15:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;7165:5:0::1;7155:15:::0;;-1:-1:-1;;7155:15:0::1;::::0;;-1:-1:-1;;12785:77:0:o;14038:93::-;7218:3;;-1:-1:-1;;;;;7218:3:0;7206:10;:15;7198:41;;;;-1:-1:-1;;;7198:41:0;;;;;;;:::i;:::-;7103:7:::1;::::0;::::1;;7102:8;7094:31;;;;-1:-1:-1::0;;;7094:31:0::1;;;;;;;:::i;:::-;7130:7;:14:::0;;-1:-1:-1;;7130:14:0;;::::1;7140:4;7130:14;::::0;;-1:-1:-1;;;;;14106:15:0;;::::2;::::0;;:11:::2;:15;::::0;;;;:20;;;::::2;;::::0;;::::2;::::0;;;::::2;::::0;;;7155:15;;;;::::1;::::0;;14038:93::o;13037:495::-;7306:10;7294:23;;;;:11;:23;;;;;;;;7286:55;;;;-1:-1:-1;;;7286:55:0;;;;;;;:::i;:::-;7103:7:::1;::::0;::::1;;7102:8;7094:31;;;;-1:-1:-1::0;;;7094:31:0::1;;;;;;;:::i;:::-;7130:7;:14:::0;;-1:-1:-1;;7130:14:0::1;7140:4;7130:14;::::0;;13183:5:::2;::::0;:29:::2;::::0;-1:-1:-1;;;13183:29:0;;::::2;::::0;::::2;689:25:1::0;;;-1:-1:-1;;;;;13183:5:0;;::::2;::::0;:24:::2;::::0;662:18:1;;13183:29:0::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;::::0;;::::2;-1:-1:-1::0;;13183:29:0::2;::::0;::::2;;::::0;::::2;::::0;;;::::2;::::0;::::2;:::i;:::-;13229:10:::0;;13150:62;;-1:-1:-1;13253:8:0;13244:41:::2;;;::::0;-1:-1:-1;;;13244:41:0;;20945:2:1;13244:41:0::2;::::0;::::2;20927:21:1::0;20984:2;20964:18;;;20957:30;-1:-1:-1;;;21003:18:1;;;20996:49;21062:18;;13244:41:0::2;20743:343:1::0;13244:41:0::2;13290:25;13332:4;-1:-1:-1::0;;;;;13318:19:0::2;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;13318:19:0::2;;13290:47;;13342:24;13380:4;-1:-1:-1::0;;;;;13369:16:0::2;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;13369:16:0::2;;13342:43;;13394:6;13390:97;13404:4;13402:1;:6;13390:97;;;13434:3;13438:1;13434:6;;;;;;;;:::i;:::-;;;;;;;:12;;;13420:8;13429:1;13420:11;;;;;;;;:::i;:::-;;;;;;:26;-1:-1:-1::0;;;;;13420:26:0::2;;;-1:-1:-1::0;;;;;13420:26:0::2;;;::::0;::::2;13468:3;13472:1;13468:6;;;;;;;;:::i;:::-;;;;;;;:13;;;13452:10;13463:1;13452:13;;;;;;;;:::i;:::-;;::::0;;::::2;::::0;;;;;:29;13410:3;::::2;::::0;::::2;:::i;:::-;;;;13390:97;;;-1:-1:-1::0;13491:5:0::2;::::0;;13502:2;13491:36:::2;::::0;-1:-1:-1;;;13491:36:0;;-1:-1:-1;;;;;13491:5:0;;::::2;::::0;:10:::2;::::0;:36:::2;::::0;13506:8;;13516:10;;13491:36:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;7165:5:0::1;7155:15:::0;;-1:-1:-1;;7155:15:0::1;::::0;;-1:-1:-1;;;;;;;13037:495:0:o;17832:179::-;17887:4;17916:9;-1:-1:-1;;;;;17902:28:0;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17902:30:0;;;;;;;;-1:-1:-1;;17902:30:0;;;;;;;;;;;;:::i;:::-;;;17898:109;;-1:-1:-1;17998:3:0;;17832:179;-1:-1:-1;17832:179:0:o;14886:110::-;14947:6;;-1:-1:-1;;;;;14947:6:0;14939:29;14931:44;;;;-1:-1:-1;;;14931:44:0;;22106:2:1;14931:44:0;;;22088:21:1;22145:1;22125:18;;;22118:29;-1:-1:-1;;;22163:18:1;;;22156:32;22205:18;;14931:44:0;21904:325:1;14931:44:0;14980:6;:11;;-1:-1:-1;;;;;;14980:11:0;-1:-1:-1;;;;;14980:11:0;;;;;;;;;;14886:110::o;10933:1847::-;10985:4;7103:7;;;;7102:8;7094:31;;;;-1:-1:-1;;;7094:31:0;;;;;;;:::i;:::-;7130:7;:14;;-1:-1:-1;;7130:14:0;7140:4;7130:14;;;;;;11005:6;::::1;7130:14:::0;11005:6:::1;11004:7;10996:25;;;::::0;-1:-1:-1;;;10996:25:0;;22436:2:1;10996:25:0::1;::::0;::::1;22418:21:1::0;22475:1;22455:18;;;22448:29;-1:-1:-1;;;22493:18:1;;;22486:36;22539:18;;10996:25:0::1;22234:329:1::0;10996:25:0::1;11036:7;::::0;:54:::1;::::0;-1:-1:-1;;;11036:54:0;;11057:10:::1;11036:54;::::0;::::1;22808:34:1::0;11077:4:0::1;22858:18:1::0;;;22851:43;22910:18;;;22903:34;;;-1:-1:-1;;;;;11036:7:0;;::::1;::::0;:20:::1;::::0;22743:18:1;;11036:54:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11028:73;;;::::0;-1:-1:-1;;;11028:73:0;;23150:2:1;11028:73:0::1;::::0;::::1;23132:21:1::0;23189:1;23169:18;;;23162:29;-1:-1:-1;;;23207:18:1;;;23200:36;23253:18;;11028:73:0::1;22948:329:1::0;11028:73:0::1;11152:7;::::0;:21:::1;::::0;;-1:-1:-1;;;11152:21:0;;;;11141:8:::1;::::0;-1:-1:-1;;;;;11152:7:0::1;::::0;:19:::1;::::0;:21:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:7;:21;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11200:5;::::0;11141:32;;-1:-1:-1;11188:9:0::1;11192:5:::0;11141:32;11188:9:::1;:::i;:::-;:17;11180:45;;;::::0;-1:-1:-1;;;11180:45:0;;23484:2:1;11180:45:0::1;::::0;::::1;23466:21:1::0;23523:2;23503:18;;;23496:30;-1:-1:-1;;;23542:18:1;;;23535:45;23597:18;;11180:45:0::1;23282:339:1::0;11180:45:0::1;11272:6;11238:24;11256:6;11238:15;:24;:::i;:::-;:40;;11230:76;;;::::0;-1:-1:-1;;;11230:76:0;;24077:2:1;11230:76:0::1;::::0;::::1;24059:21:1::0;24116:2;24096:18;;;24089:30;24155:25;24135:18;;;24128:53;24198:18;;11230:76:0::1;23875:347:1::0;11230:76:0::1;11311:11;11345:8:::0;11386:4:::1;11364:19;;11356:5;:27;;;;:::i;:::-;:34;;;;:::i;:::-;11345:45:::0;-1:-1:-1;11415:5:0;;11412:66:::1;;11437:7;::::0;11454:3:::1;::::0;11437:26:::1;::::0;-1:-1:-1;;;11437:26:0;;-1:-1:-1;;;;;11437:7:0;;::::1;::::0;:16:::1;::::0;:26:::1;::::0;11454:3;::::1;::::0;11459;;11437:26:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11428:44;;;::::0;-1:-1:-1;;;11428:44:0;;24727:2:1;11428:44:0::1;::::0;::::1;24709:21:1::0;24766:1;24746:18;;;24739:29;-1:-1:-1;;;24784:18:1;;;24777:33;24827:18;;11428:44:0::1;24525:326:1::0;11428:44:0::1;11484:8;11526:4;11503:20;;11495:5;:28;;;;:::i;:::-;:35;;;;:::i;:::-;11484:46:::0;-1:-1:-1;11484:46:0;11600:11:::1;11608:3:::0;11600:5;:11:::1;:::i;:::-;:17;;;;:::i;:::-;11776:7;::::0;11591:26;;-1:-1:-1;;;;;;11776:7:0::1;:12;11790:11;11798:3:::0;11790:5;:11:::1;:::i;:::-;11776:27;;;;;;;;;;;;;689:25:1::0;;677:2;662:18;;543:177;11776:27:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;11863:5:0::1;::::0;;11875:2;11863:15:::1;::::0;-1:-1:-1;;;11863:15:0;;-1:-1:-1;;;;;11863:5:0;;::::1;::::0;-1:-1:-1;11863:11:0::1;::::0;-1:-1:-1;11863:15:0::1;::::0;::::1;;689:25:1::0;;;677:2;662:18;;543:177;11863:15:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;11986:5:0::1;::::0;;:30:::1;::::0;-1:-1:-1;;;11986:30:0;;12010:4:::1;11986:30:::0;;::::1;4475:51:1::0;;;;-1:-1:-1;;;;;11986:5:0::1;::::0;-1:-1:-1;11986:15:0::1;::::0;-1:-1:-1;4448:18:1;;11986:30:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12020:1;11986:35;11978:67;;;::::0;-1:-1:-1;;;11978:67:0;;25058:2:1;11978:67:0::1;::::0;::::1;25040:21:1::0;25097:2;25077:18;;;25070:30;-1:-1:-1;;;25116:18:1;;;25109:49;25175:18;;11978:67:0::1;24856:343:1::0;11978:67:0::1;12080:13;::::0;;12091:1:::1;12080:13:::0;;;;;::::1;::::0;;12051:26:::1;::::0;12080:13:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;;12051:42:0;-1:-1:-1;12166:10:0::1;12170:6:::0;12166:3;:10:::1;:::i;:::-;12148:12;12161:1;12148:15;;;;;;;;:::i;:::-;;;;;;:28;;;::::0;::::1;12200:6;12182:12;12195:1;12182:15;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:24;12212:5:::1;::::0;;;12239:2;12212:30:::1;::::0;-1:-1:-1;;;12212:30:0;;-1:-1:-1;;;;;12212:5:0;;::::1;::::0;:11:::1;::::0;:30:::1;::::0;12225:12;;12239:2;;12212:30:::1;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;12272:5:0::1;::::0;;:43:::1;::::0;-1:-1:-1;;;12272:43:0;;12258:11:::1;::::0;-1:-1:-1;;;;;;12272:5:0;;::::1;::::0;-1:-1:-1;12272:25:0::1;::::0;-1:-1:-1;12272:43:0::1;::::0;12306:4:::1;::::0;12258:11;;12272:43:::1;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12321:2;:11:::0;;;12351:5:::1;::::0;12258:57;;-1:-1:-1;12340:8:0::1;::::0;-1:-1:-1;;;;;12351:5:0::1;::::0;:12:::1;::::0;12364:10:::1;::::0;12258:57;;12364:10:::1;:::i;:::-;12351:24;;;;;;;;;;;;;689:25:1::0;;677:2;662:18;;543:177;12351:24:0::1;;::::0;::::1;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:31:::0;12609:5:::1;::::0;12340:42:::1;::::0;;;::::1;::::0;-1:-1:-1;12340:42:0;;-1:-1:-1;;;;;12609:5:0::1;:22;12640:4;12647:10;12659;:6:::0;12609:5;12659:10:::1;:::i;:::-;12609:61;::::0;-1:-1:-1;;;;;;12609:61:0::1;::::0;;;;;;-1:-1:-1;;;;;22826:15:1;;;12609:61:0::1;::::0;::::1;22808:34:1::0;22878:15;;;;22858:18;;;22851:43;22910:18;;;22903:34;22743:18;;12609:61:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;12692:10:0::1;::::0;-1:-1:-1;12683:71:0::1;::::0;-1:-1:-1;12704:10:0::1;::::0;-1:-1:-1;12704:6:0;12713:1:::1;12704:10;:::i;:::-;12683:71;::::0;;19125:25:1;;;19181:2;19166:18;;19159:34;;;19209:18;;19202:34;;;19267:2;19252:18;;19245:34;;;19310:3;19295:19;;19288:35;;;12738:15:0::1;19354:3:1::0;19339:19;;19332:35;19112:3;19097:19;12683:71:0::1;;;;;;;7165:5:::0;7155:15;;-1:-1:-1;;7155:15:0;;;12767:3;10933:1847;-1:-1:-1;;;;;;;;10933:1847:0:o;18016:290::-;18071:4;18100:9;-1:-1:-1;;;;;18086:36:0;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18086:38:0;;;;;;;;-1:-1:-1;;18086:38:0;;;;;;;;;;;;:::i;:::-;;;18082:220;;18201:9;-1:-1:-1;;;;;18187:28:0;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19055:2975;19179:13;19216:16;19237:13;19255;19273;19298:21;19356:1;19340:8;:15;:17;;;;:::i;:::-;19334:24;;:2;:24;:::i;:::-;-1:-1:-1;;;;;19322:38:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19322:38:0;-1:-1:-1;19419:7:0;;:24;;-1:-1:-1;;;19419:24:0;;-1:-1:-1;;;;;4493:32:1;;;19419:24:0;;;4475:51:1;19298:62:0;;-1:-1:-1;19419:7:0;;;:17;;4448:18:1;;19419:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19406:7;19414:1;19406:10;;;;;;;;:::i;:::-;;;;;;;;;;;:37;;;;19461:7;;:21;;;-1:-1:-1;;;19461:21:0;;;;-1:-1:-1;;;;;19461:7:0;;;;:19;;:21;;;;;;;;;;:7;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19448:7;19456:1;19448:10;;;;;;;;:::i;:::-;;;;;;:34;;;;;19500:7;:5;:7::i;:::-;19487;19495:1;19487:10;;;;;;;;:::i;:::-;;;;;;;;;;:20;19552:6;19525:24;19543:6;19525:15;:24;:::i;:::-;:33;:65;;19585:5;;19525:65;;;19561:7;;;;;;;;;-1:-1:-1;;;;;19561:7:0;-1:-1:-1;;;;;19561:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19512:7;19520:1;19512:10;;;;;;;;:::i;:::-;;;;;;:78;;;;;19608:19;;19595:7;19603:1;19595:10;;;;;;;;:::i;:::-;;;;;;:32;;;;;19645:20;;19632:7;19640:1;19632:10;;;;;;;;:::i;:::-;;;;;;:33;;;;;19683:2;;19670:7;19678:1;19670:10;;;;;;;;:::i;:::-;;;;;;;;;;:15;19715:5;;;;19728:2;19715:16;;-1:-1:-1;;;19715:16:0;;;;;689:25:1;-1:-1:-1;;;;;19715:5:0;;:12;;662:18:1;;19715:16:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:23;;;19708:31;;19690:7;19698:1;19690:10;;;;;;;;:::i;:::-;;;;;;:50;;;;;19758:5;;;;;;;;;-1:-1:-1;;;;;19758:5:0;-1:-1:-1;;;;;19758:17:0;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19745:7;19753:1;19745:10;;;;;;;;:::i;:::-;;;;;;;;;;:32;19795:5;;;;19808:2;19795:16;;-1:-1:-1;;;19795:16:0;;;;;689:25:1;-1:-1:-1;;;;;19795:5:0;;:12;;662:18:1;;19795:16:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:20;;;19782:7;19790:1;19782:10;;;;;;;;:::i;:::-;;;;;;:33;;;;;19853:17;;19834:16;;:36;;;;:::i;:::-;19820:7;19828:2;19820:11;;;;;;;;:::i;:::-;;;;;;;;;;:50;19889:7;;:39;;-1:-1:-1;;;19889:39:0;;-1:-1:-1;;;;;13585:15:1;;;19889:39:0;;;13567:34:1;19922:4:0;13617:18:1;;;13610:43;19889:7:0;;;;:17;;13502:18:1;;19889:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19875:7;19883:2;19875:11;;;;;;;;:::i;:::-;;;;;;;;;;:53;19947:5;;;:22;;-1:-1:-1;;;19947:22:0;;-1:-1:-1;;;;;4493:32:1;;;19947:22:0;;;4475:51:1;;;;19947:5:0;;;:15;;4448:18:1;;19947:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19933:7;19941:2;19933:11;;;;;;;;:::i;:::-;;;;;;:36;;;;;19980:6;19976:128;19992:8;:15;19988:1;:19;19976:128;;;20057:8;20066:1;20057:11;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;20043:40:0;;20084:8;20093:1;20095;20093:3;;;;:::i;:::-;20084:13;;;;;;;;:::i;:::-;;;;;;;20043:55;;;;;;;;;;;;;;-1:-1:-1;;;;;4493:32:1;;;;4475:51;;4463:2;4448:18;;4314:218;20043:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20023:7;20036:3;20038:1;20036;:3;:::i;:::-;20031:8;;:2;:8;:::i;:::-;20023:17;;;;;;;;:::i;:::-;;;;;;;;;;:75;20009:6;20014:1;20009:6;;:::i;:::-;;;19976:128;;;;20265:24;20303:6;:13;20319:1;20303:17;;;;:::i;:::-;-1:-1:-1;;;;;20292:29:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20292:29:0;;20265:56;;20332:6;20328:370;20344:13;;:17;;20360:1;20344:17;:::i;:::-;20340:1;:21;20328:370;;;20377:19;20413:6;20420:3;20422:1;20420;:3;:::i;:::-;20413:11;;;;;;;;:::i;:::-;;;;;;;;;;;20449:22;;-1:-1:-1;;;20449:22:0;;-1:-1:-1;;;;;4493:32:1;;;20449:22:0;;;4475:51:1;20413:11:0;;-1:-1:-1;20449:15:0;;;;;;4448:18:1;;20449:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20431:10;20442:1;20431:15;;;;;;;;:::i;:::-;;;;;;:40;;;;;20495:5;-1:-1:-1;;;;;20495:17:0;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20477:10;20488:3;:1;20490;20488:3;:::i;:::-;20477:15;;;;;;;;:::i;:::-;;;;;;;;;;:37;20538:19;20545:6;20552:3;20554:1;20552;:3;:::i;:::-;20545:11;;;;;;;;:::i;:::-;;;;;;;20538:6;:19::i;:::-;20520:10;20531:3;:1;20533;20531:3;:::i;:::-;20520:15;;;;;;;;:::i;:::-;;;;;;;;;;:37;20603:19;20610:6;20617:3;20619:1;20617;:3;:::i;:::-;20610:11;;;;;;;;:::i;:::-;;;;;;;20603:6;:19::i;:::-;20585:10;20596:3;:1;20598;20596:3;:::i;:::-;20585:15;;;;;;;;:::i;:::-;;;;;;;;;;:37;20660:32;20673:5;20680:6;20687:3;20689:1;20687;:3;:::i;:::-;20680:11;;;;;;;;:::i;:::-;;;;;;;20660:12;:32::i;:::-;20642:10;20653:3;:1;20655;20653:3;:::i;:::-;20642:15;;;;;;;;:::i;:::-;;;;;;;;;;:50;-1:-1:-1;20363:6:0;20368:1;20363:6;;:::i;:::-;;;20328:370;;;-1:-1:-1;20721:5:0;;;:22;;-1:-1:-1;;;20721:22:0;;-1:-1:-1;;;;;4493:32:1;;;20721:22:0;;;4475:51:1;;;;20706:12:0;;20721:5;;;;:15;;4448:18:1;;20721:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20706:37;-1:-1:-1;20748:28:0;20790:11;20706:37;20800:1;20790:11;:::i;:::-;-1:-1:-1;;;;;20779:23:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20779:23:0;;20748:54;;20813:6;20809:373;20825:11;:7;20835:1;20825:11;:::i;:::-;20821:1;:15;20809:373;;;20874:5;;;-1:-1:-1;;;;;20874:5:0;;:25;;20900:5;;20906:3;;:1;:3;:::i;:::-;20874:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20852:14;20867:1;20852:19;;;;;;;;:::i;:::-;;;;;;;;;;:58;20957:5;;20970:17;;20916:38;;-1:-1:-1;;;;;20957:5:0;;:12;;20970:14;;20985:1;;20970:17;;;;;;:::i;:::-;;;;;;;20957:31;;;;;;;;;;;;;689:25:1;;677:2;662:18;;543:177;20957:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21028:10;;20916:72;;-1:-1:-1;21021:18:0;;20994:14;21009:3;:1;21011;21009:3;:::i;:::-;20994:19;;;;;;;;:::i;:::-;;;;;;:46;;;;;21068:3;:7;;;21046:14;21061:1;21063;21061:3;;;;:::i;:::-;21046:19;;;;;;;;:::i;:::-;;;;;;;;;;:29;21103:5;;21142:17;;-1:-1:-1;;;;;21103:5:0;;;;:23;;21135:4;;21142:14;;21157:1;;21142:17;;;;;;:::i;:::-;;;;;;;21103:57;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:65;;21164:4;21103:65;:73;;21175:1;21103:73;;;21171:1;21103:73;21081:95;;:14;21096:3;:1;21098;21096:3;:::i;:::-;21081:19;;;;;;;;:::i;:::-;;;;;;;;;;:95;-1:-1:-1;20838:6:0;20843:1;20838:6;;:::i;:::-;;;20809:373;;;-1:-1:-1;21221:5:0;;;21246:2;21221:28;;-1:-1:-1;;;21221:28:0;;;;;689:25:1;;;;21188:30:0;;-1:-1:-1;;;;;21221:5:0;;:24;;662:18:1;;21221:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21221:28:0;;;;;;;;;;;;:::i;:::-;21266:10;;21188:61;;-1:-1:-1;21254:9:0;21266:10;-1:-1:-1;;;;;21309:19:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21309:19:0;;21281:47;;21333:24;21371:4;-1:-1:-1;;;;;21360:16:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21360:16:0;;21333:43;;21385:6;21381:97;21395:4;21393:1;:6;21381:97;;;21425:3;21429:1;21425:6;;;;;;;;:::i;:::-;;;;;;;:12;;;21411:8;21420:1;21411:11;;;;;;;;:::i;:::-;;;;;;:26;-1:-1:-1;;;;;21411:26:0;;;-1:-1:-1;;;;;21411:26:0;;;;;21459:3;21463:1;21459:6;;;;;;;;:::i;:::-;;;;;;;:13;;;21443:10;21454:1;21443:13;;;;;;;;:::i;:::-;;;;;;;;;;:29;21401:3;;;;:::i;:::-;;;;21381:97;;;-1:-1:-1;21497:7:0;;21510:8;;-1:-1:-1;21497:7:0;;-1:-1:-1;21540:10:0;;-1:-1:-1;21556:14:0;;-1:-1:-1;19055:2975:0;;-1:-1:-1;;;;;;;19055:2975:0:o;17089:651::-;17139:4;17150:8;17161:7;;;;;;;;;-1:-1:-1;;;;;17161:7:0;-1:-1:-1;;;;;17161:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17230:5;;;;17243:2;17230:16;;-1:-1:-1;;;17230:16:0;;;;;689:25:1;17150:32:0;;-1:-1:-1;17187:40:0;;-1:-1:-1;;;;;17230:5:0;;:12;;662:18:1;;17230:16:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17187:59;;17273:1;17258:5;:12;;;:16;;;17251:38;;-1:-1:-1;17286:1:0;;17089:651;-1:-1:-1;;;17089:651:0:o;17251:38::-;17306:12;;17293:25;;;:10;:25;17566:10;17573:3;17566:4;:10;:::i;:::-;17565:20;;;;:::i;:::-;17550:35;;17596:8;17633:4;17614:16;;17607:4;:23;;;;:::i;:::-;:30;;;;:::i;:::-;17596:41;;17643:8;17681:4;17661:17;;17654:4;:24;;;;:::i;:::-;:31;;;;:::i;:::-;17643:42;-1:-1:-1;17643:42:0;17698:10;17705:3;17698:4;:10;:::i;:::-;:16;;;;:::i;:::-;17691:23;17089:651;-1:-1:-1;;;;;;;;;17089:651:0:o;15775:300::-;7306:10;7294:23;;;;:11;:23;;;;;;;;7286:55;;;;-1:-1:-1;;;7286:55:0;;;;;;;:::i;:::-;15905:6;15888:14:::1;15923:148;15937:6;15935:1;:8;15923:148;;;15956:109;15962:6;;15969:1;15962:9;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:17;15981:6:::0;;15988:1;15981:9;;::::1;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:16;;;15999:6;;16006:1;15999:9;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:15;;;16016:7;16025:6;;16032:1;16025:9;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:16;;;16043:6;;16050:1;16043:9;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:21;::::0;::::1;::::0;::::1;::::0;::::1;:::i;15956:109::-;15945:3:::0;::::1;::::0;::::1;:::i;:::-;;;;15923:148;;;;15877:198;15775:300:::0;;;:::o;12867:165::-;7306:10;7294:23;;;;:11;:23;;;;;;;;7286:55;;;;-1:-1:-1;;;7286:55:0;;;;;;;:::i;:::-;7103:7:::1;::::0;::::1;;7102:8;7094:31;;;;-1:-1:-1::0;;;7094:31:0::1;;;;;;;:::i;:::-;7130:7;:14:::0;;-1:-1:-1;;7130:14:0::1;7140:4;7130:14;::::0;;12975:9;;12964;;:20:::2;12956:44;;;::::0;-1:-1:-1;;;12956:44:0;;27586:2:1;12956:44:0::2;::::0;::::2;27568:21:1::0;27625:2;27605:18;;;27598:30;-1:-1:-1;;;27644:18:1;;;27637:42;27696:18;;12956:44:0::2;27384:336:1::0;12956:44:0::2;13005:5;::::0;;13016:2;13005:22:::2;::::0;-1:-1:-1;;;13005:22:0;;-1:-1:-1;;;;;13005:5:0;;::::2;::::0;:10:::2;::::0;:22:::2;::::0;13020:2;;13024;;13005:22:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;7165:5:0::1;7155:15:::0;;-1:-1:-1;;7155:15:0::1;::::0;;-1:-1:-1;;;;12867:165:0:o;14198:305::-;7218:3;;-1:-1:-1;;;;;7218:3:0;7206:10;:15;7198:41;;;;-1:-1:-1;;;7198:41:0;;;;;;;:::i;:::-;7103:7:::1;::::0;::::1;;7102:8;7094:31;;;;-1:-1:-1::0;;;7094:31:0::1;;;;;;;:::i;:::-;7130:7;:14:::0;;-1:-1:-1;;7130:14:0::1;7140:4;7130:14;::::0;;14298:6:::2;14286:8;14291:3:::0;14286;:8:::2;:::i;:::-;:18;;14278:48;;;::::0;-1:-1:-1;;;14278:48:0;;27927:2:1;14278:48:0::2;::::0;::::2;27909:21:1::0;27966:2;27946:18;;;27939:30;-1:-1:-1;;;27985:18:1;;;27978:47;28042:18;;14278:48:0::2;27725:341:1::0;14278:48:0::2;14352:6;14339:9;14345:3:::0;;14339:9:::2;:::i;:::-;:19;;14331:51;;;::::0;-1:-1:-1;;;14331:51:0;;28273:2:1;14331:51:0::2;::::0;::::2;28255:21:1::0;28312:2;28292:18;;;28285:30;-1:-1:-1;;;28331:18:1;;;28324:49;28390:18;;14331:51:0::2;28071:343:1::0;14331:51:0::2;14387:16;:22:::0;;;;14414:17:::2;:23:::0;;;;14442:19:::2;:25:::0;14472:20:::2;:26:::0;-1:-1:-1;7155:15:0;;-1:-1:-1;;7155:15:0::1;::::0;;14198:305::o;13781:114::-;7218:3;;-1:-1:-1;;;;;7218:3:0;7206:10;:15;7198:41;;;;-1:-1:-1;;;7198:41:0;;;;;;;:::i;:::-;7103:7:::1;::::0;::::1;;7102:8;7094:31;;;;-1:-1:-1::0;;;7094:31:0::1;;;;;;;:::i;:::-;7130:7;:14:::0;;-1:-1:-1;;7130:14:0::1;7140:4;7130:14;::::0;;13882:3:::2;::::0;13869:21:::2;::::0;-1:-1:-1;;;13869:21:0;;13861:2;;-1:-1:-1;;;;;13869:12:0;;::::2;::::0;::::2;::::0;:21:::2;::::0;13882:3:::2;::::0;13887:2;;13869:21:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14506:65::-:0;7218:3;;-1:-1:-1;;;;;7218:3:0;7206:10;:15;7198:41;;;;-1:-1:-1;;;7198:41:0;;;;;;;:::i;:::-;7103:7:::1;::::0;::::1;;7102:8;7094:31;;;;-1:-1:-1::0;;;7094:31:0::1;;;;;;;:::i;:::-;7130:7;:14:::0;;14556:5:::2;:10:::0;;;;-1:-1:-1;;7130:14:0;;::::1;7155:15:::0;;14506:65::o;17745:82::-;17783:4;17808:14;17817:4;17808:8;:14::i;:::-;17801:21;;:4;:21;:::i;:::-;17794:28;;17745:82;:::o;9313:1611::-;9363:4;7103:7;;;;7102:8;7094:31;;;;-1:-1:-1;;;7094:31:0;;;;;;;:::i;:::-;7130:7;:14;;-1:-1:-1;;7130:14:0;7140:4;7130:14;;;;;;9383:6;::::1;7130:14:::0;9383:6:::1;9382:7;9374:25;;;::::0;-1:-1:-1;;;9374:25:0;;22436:2:1;9374:25:0::1;::::0;::::1;22418:21:1::0;22475:1;22455:18;;;22448:29;-1:-1:-1;;;22493:18:1;;;22486:36;22539:18;;9374:25:0::1;22234:329:1::0;9374:25:0::1;9522:7;::::0;:21:::1;::::0;;-1:-1:-1;;;9522:21:0;;;;9511:8:::1;::::0;-1:-1:-1;;;;;9522:7:0::1;::::0;:19:::1;::::0;:21:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:7;:21;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9591:5;::::0;;;9604:2;9591:16:::1;::::0;-1:-1:-1;;;9591:16:0;;;;::::1;689:25:1::0;9511:32:0;;-1:-1:-1;9548:40:0::1;::::0;-1:-1:-1;;;;;9591:5:0::1;::::0;:12:::1;::::0;662:18:1;;9591:16:0::1;::::0;::::1;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9548:59;;9635:1;9620:5;:12;;;:16;;;9612:41;;;::::0;-1:-1:-1;;;9612:41:0;;18683:2:1;9612:41:0::1;::::0;::::1;18665:21:1::0;18722:2;18702:18;;;18695:30;-1:-1:-1;;;18741:18:1;;;18734:42;18793:18;;9612:41:0::1;18481:336:1::0;9612:41:0::1;9671:12:::0;;9742:5:::1;::::0;;:54:::1;::::0;-1:-1:-1;;;9742:54:0;;9765:10:::1;9742:54:::0;;::::1;22808:34:1::0;;;;9785:4:0::1;22858:18:1::0;;;22851:43;22910:18;;;22903:34;;;9658:25:0::1;::::0;;;::::1;::::0;;;-1:-1:-1;;;;;9742:5:0;;::::1;::::0;:22:::1;::::0;22743:18:1;;9742:54:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;9899:5:0::1;::::0;;;9915:2;9899:19:::1;::::0;-1:-1:-1;;;9899:19:0;;;;::::1;28593:25:1::0;;;28634:18;;;28627:34;-1:-1:-1;;;;;9899:5:0::1;::::0;-1:-1:-1;9899:11:0::1;::::0;-1:-1:-1;28566:18:1;;9899:19:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;10021:5:0::1;::::0;;;10034:2;10021:16:::1;::::0;-1:-1:-1;;;10021:16:0;;;;::::1;689:25:1::0;9976:42:0::1;::::0;-1:-1:-1;;;;;;10021:5:0::1;::::0;-1:-1:-1;10021:12:0::1;::::0;662:18:1;;10021:16:0::1;::::0;::::1;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10069:12:::0;;10052:14;;9976:61;;-1:-1:-1;10042:7:0::1;::::0;10052:29:::1;::::0;10069:12;10052:29:::1;:::i;:::-;10042:39;;;;10100:1;10094:3;:7;10086:34;;;::::0;-1:-1:-1;;;10086:34:0;;29277:2:1;10086:34:0::1;::::0;::::1;29259:21:1::0;29316:2;29296:18;;;29289:30;-1:-1:-1;;;29335:18:1;;;29328:44;29389:18;;10086:34:0::1;29075:338:1::0;10086:34:0::1;10148:3:::0;10125:12:::1;10374:5:::0;10360:10:::1;10367:3:::0;10148;10360:10:::1;:::i;:::-;10359:20;;;;:::i;:::-;10384:7;::::0;:33:::1;::::0;-1:-1:-1;;;10384:33:0;;10344:35;;-1:-1:-1;;;;;;10384:7:0::1;::::0;:12:::1;::::0;:33:::1;::::0;10405:4:::1;::::0;10344:35;;10384:33:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10424:8;10461:4;10442:16;;10435:4;:23;;;;:::i;:::-;:30;;;;:::i;:::-;10424:41:::0;-1:-1:-1;10473:5:0;;10470:66:::1;;10495:7;::::0;10512:3:::1;::::0;10495:26:::1;::::0;-1:-1:-1;;;10495:26:0;;-1:-1:-1;;;;;10495:7:0;;::::1;::::0;:16:::1;::::0;:26:::1;::::0;10512:3;::::1;::::0;10517;;10495:26:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10486:44;;;::::0;-1:-1:-1;;;10486:44:0;;29620:2:1;10486:44:0::1;::::0;::::1;29602:21:1::0;29659:1;29639:18;;;29632:29;-1:-1:-1;;;29677:18:1;;;29670:33;29720:18;;10486:44:0::1;29418:326:1::0;10486:44:0::1;10542:8;10580:4;10560:17;;10553:4;:24;;;;:::i;:::-;:31;;;;:::i;:::-;10542:42:::0;-1:-1:-1;10592:7:0;;10589:43:::1;;10607:7;::::0;:19:::1;::::0;-1:-1:-1;;;10607:19:0;;::::1;::::0;::::1;689:25:1::0;;;-1:-1:-1;;;;;10607:7:0;;::::1;::::0;:12:::1;::::0;662:18:1;;10607:19:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10589:43;10767:3:::0;10754:10:::1;10761:3:::0;10754:4;:10:::1;:::i;:::-;:16;;;;:::i;:::-;10784:7;::::0;:35:::1;::::0;-1:-1:-1;;;10784:35:0;;10747:23;;-1:-1:-1;;;;;;10784:7:0::1;::::0;:16:::1;::::0;:35:::1;::::0;10802:10:::1;::::0;10747:23;;10784:35:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10775:53;;;::::0;-1:-1:-1;;;10775:53:0;;29951:2:1;10775:53:0::1;::::0;::::1;29933:21:1::0;29990:1;29970:18;;;29963:29;-1:-1:-1;;;30008:18:1;;;30001:33;30051:18;;10775:53:0::1;29749:326:1::0;10775:53:0::1;10838:63;::::0;;19125:25:1;;;19181:2;19166:18;;19159:34;;;19209:18;;;19202:34;;;19267:2;19252:18;;19245:34;;;19310:3;19295:19;;19288:35;;;10885:15:0::1;19354:3:1::0;19339:19;;19332:35;10846:10:0::1;::::0;10838:63:::1;::::0;19112:3:1;19097:19;10838:63:0::1;;;;;;;-1:-1:-1::0;;7165:5:0;7155:15;;-1:-1:-1;;7155:15:0;;;10915:4;9313:1611;-1:-1:-1;;;;;;;;;9313:1611:0:o;16320:114::-;16367:4;16404:24;16422:6;16404:15;:24;:::i;:::-;16385:44;;:15;:44;:::i;14134:61::-;7218:3;;-1:-1:-1;;;;;7218:3:0;7206:10;:15;7198:41;;;;-1:-1:-1;;;7198:41:0;;;;;;;:::i;:::-;7103:7:::1;::::0;::::1;;7102:8;7094:31;;;;-1:-1:-1::0;;;7094:31:0::1;;;;;;;:::i;:::-;7130:7;:14:::0;;7140:4:::1;14182:8:::0;;;;-1:-1:-1;;7130:14:0;;::::1;7155:15:::0;;14134:61::o;13898:137::-;7218:3;;-1:-1:-1;;;;;7218:3:0;7206:10;:15;7198:41;;;;-1:-1:-1;;;7198:41:0;;;;;;;:::i;:::-;7103:7:::1;::::0;::::1;;7102:8;7094:31;;;;-1:-1:-1::0;;;7094:31:0::1;;;;;;;:::i;:::-;7130:7;:14:::0;;-1:-1:-1;;7130:14:0::1;7140:4;7130:14;::::0;;-1:-1:-1;;;;;13956:13:0;::::2;13948:31;;;::::0;-1:-1:-1;;;13948:31:0;;30282:2:1;13948:31:0::2;::::0;::::2;30264:21:1::0;30321:1;30301:18;;;30294:29;-1:-1:-1;;;30339:18:1;;;30332:35;30384:18;;13948:31:0::2;30080:328:1::0;13948:31:0::2;13984:3;:7:::0;;-1:-1:-1;;;;;;13984:7:0::2;-1:-1:-1::0;;;;;13984:7:0;;::::2;::::0;;::::2;::::0;;;13996:5:::2;::::0;;:34:::2;::::0;-1:-1:-1;;;13996:34:0;;;;::::2;30581:51:1::0;;;;-1:-1:-1;30648:18:1;;;30641:50;13996:5:0;::::2;::::0;:23:::2;::::0;30554:18:1;;13996:34:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;7165:5:0::1;7155:15:::0;;-1:-1:-1;;7155:15:0::1;::::0;;-1:-1:-1;;;13898:137:0:o;16439:647::-;16485:4;16496:8;16507:7;;;;;;;;;-1:-1:-1;;;;;16507:7:0;-1:-1:-1;;;;;16507:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16576:5;;;;16589:2;16576:16;;-1:-1:-1;;;16576:16:0;;;;;689:25:1;16496:32:0;;-1:-1:-1;16533:40:0;;-1:-1:-1;;;;;16576:5:0;;:12;;662:18:1;;16576:16:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16640:5;;;:17;;-1:-1:-1;;;16640:17:0;;;;;689:25:1;;;16533:59:0;;-1:-1:-1;16597:40:0;;-1:-1:-1;;;;;16640:5:0;;:12;;662:18:1;;16640:17:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16597:60;;16684:1;16669:5;:12;;;:16;;;16662:38;;-1:-1:-1;16697:1:0;;16439:647;-1:-1:-1;;;;16439:647:0:o;16662:38::-;16717:12;;16798;;16704:25;;;;;;;16788:22;;16704:10;16822:7;;16815:29;;-1:-1:-1;16841:1:0;;16439:647;-1:-1:-1;;;;;;;16439:647:0:o;16815:29::-;16871:3;16848:12;16926:5;16912:10;16919:3;16871;16912:10;:::i;:::-;16911:20;;;;:::i;:::-;16896:35;;16942:8;16979:4;16960:16;;16953:4;:23;;;;:::i;:::-;:30;;;;:::i;:::-;16942:41;;16989:8;17027:4;17007:17;;17000:4;:24;;;;:::i;:::-;:31;;;;:::i;:::-;16989:42;-1:-1:-1;16989:42:0;17044:10;17051:3;17044:4;:10;:::i;:::-;:16;;;;:::i;:::-;17037:23;16439:647;-1:-1:-1;;;;;;;;;;;;16439:647:0:o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:388::-;218:6;226;279:2;267:9;258:7;254:23;250:32;247:52;;;295:1;292;285:12;247:52;334:9;321:23;353:31;378:5;353:31;:::i;:::-;403:5;-1:-1:-1;460:2:1;445:18;;432:32;473:33;432:32;473:33;:::i;:::-;525:7;515:17;;;150:388;;;;;:::o;725:367::-;788:8;798:6;852:3;845:4;837:6;833:17;829:27;819:55;;870:1;867;860:12;819:55;-1:-1:-1;893:20:1;;-1:-1:-1;;;;;925:30:1;;922:50;;;968:1;965;958:12;922:50;1005:4;997:6;993:17;981:29;;1065:3;1058:4;1048:6;1045:1;1041:14;1033:6;1029:27;1025:38;1022:47;1019:67;;;1082:1;1079;1072:12;1019:67;725:367;;;;;:::o;1097:847::-;1228:6;1236;1244;1252;1260;1268;1276;1329:3;1317:9;1308:7;1304:23;1300:33;1297:53;;;1346:1;1343;1336:12;1297:53;1382:9;1369:23;1359:33;;1439:2;1428:9;1424:18;1411:32;1401:42;;1490:2;1479:9;1475:18;1462:32;1452:42;;1544:2;1533:9;1529:18;1516:32;1557:31;1582:5;1557:31;:::i;:::-;1607:5;-1:-1:-1;1659:3:1;1644:19;;1631:33;;-1:-1:-1;1715:3:1;1700:19;;1687:33;-1:-1:-1;;;;;1732:30:1;;1729:50;;;1775:1;1772;1765:12;1729:50;1814:70;1876:7;1867:6;1856:9;1852:22;1814:70;:::i;:::-;1097:847;;;;-1:-1:-1;1097:847:1;;-1:-1:-1;1097:847:1;;;;1788:96;;-1:-1:-1;;;1097:847:1:o;1949:936::-;2046:6;2054;2062;2070;2078;2131:3;2119:9;2110:7;2106:23;2102:33;2099:53;;;2148:1;2145;2138:12;2099:53;2187:9;2174:23;2206:31;2231:5;2206:31;:::i;:::-;2256:5;-1:-1:-1;2313:2:1;2298:18;;2285:32;2326:33;2285:32;2326:33;:::i;:::-;2378:7;-1:-1:-1;2432:2:1;2417:18;;2404:32;;-1:-1:-1;2487:2:1;2472:18;;2459:32;-1:-1:-1;;;;;2540:14:1;;;2537:34;;;2567:1;2564;2557:12;2537:34;2605:6;2594:9;2590:22;2580:32;;2650:7;2643:4;2639:2;2635:13;2631:27;2621:55;;2672:1;2669;2662:12;2621:55;2712:2;2699:16;2738:2;2730:6;2727:14;2724:34;;;2754:1;2751;2744:12;2724:34;2799:7;2794:2;2785:6;2781:2;2777:15;2773:24;2770:37;2767:57;;;2820:1;2817;2810:12;2767:57;1949:936;;;;-1:-1:-1;1949:936:1;;-1:-1:-1;2851:2:1;2843:11;;2873:6;1949:936;-1:-1:-1;;;1949:936:1:o;3097:118::-;3183:5;3176:13;3169:21;3162:5;3159:32;3149:60;;3205:1;3202;3195:12;3220:241;3276:6;3329:2;3317:9;3308:7;3304:23;3300:32;3297:52;;;3345:1;3342;3335:12;3297:52;3384:9;3371:23;3403:28;3425:5;3403:28;:::i;:::-;3450:5;3220:241;-1:-1:-1;;;3220:241:1:o;3466:456::-;3543:6;3551;3559;3612:2;3600:9;3591:7;3587:23;3583:32;3580:52;;;3628:1;3625;3618:12;3580:52;3667:9;3654:23;3686:31;3711:5;3686:31;:::i;:::-;3736:5;-1:-1:-1;3793:2:1;3778:18;;3765:32;3806:33;3765:32;3806:33;:::i;:::-;3466:456;;3858:7;;-1:-1:-1;;;3912:2:1;3897:18;;;;3884:32;;3466:456::o;3927:382::-;3992:6;4000;4053:2;4041:9;4032:7;4028:23;4024:32;4021:52;;;4069:1;4066;4059:12;4021:52;4108:9;4095:23;4127:31;4152:5;4127:31;:::i;:::-;4177:5;-1:-1:-1;4234:2:1;4219:18;;4206:32;4247:30;4206:32;4247:30;:::i;4537:180::-;4596:6;4649:2;4637:9;4628:7;4624:23;4620:32;4617:52;;;4665:1;4662;4655:12;4617:52;-1:-1:-1;4688:23:1;;4537:180;-1:-1:-1;4537:180:1:o;4722:247::-;4781:6;4834:2;4822:9;4813:7;4809:23;4805:32;4802:52;;;4850:1;4847;4840:12;4802:52;4889:9;4876:23;4908:31;4933:5;4908:31;:::i;5449:127::-;5510:10;5505:3;5501:20;5498:1;5491:31;5541:4;5538:1;5531:15;5565:4;5562:1;5555:15;5581:253;5653:2;5647:9;5695:4;5683:17;;-1:-1:-1;;;;;5715:34:1;;5751:22;;;5712:62;5709:88;;;5777:18;;:::i;:::-;5813:2;5806:22;5581:253;:::o;5839:275::-;5910:2;5904:9;5975:2;5956:13;;-1:-1:-1;;5952:27:1;5940:40;;-1:-1:-1;;;;;5995:34:1;;6031:22;;;5992:62;5989:88;;;6057:18;;:::i;:::-;6093:2;6086:22;5839:275;;-1:-1:-1;5839:275:1:o;6119:183::-;6179:4;-1:-1:-1;;;;;6204:6:1;6201:30;6198:56;;;6234:18;;:::i;:::-;-1:-1:-1;6279:1:1;6275:14;6291:4;6271:25;;6119:183::o;6307:737::-;6361:5;6414:3;6407:4;6399:6;6395:17;6391:27;6381:55;;6432:1;6429;6422:12;6381:55;6468:6;6455:20;6494:4;6518:60;6534:43;6574:2;6534:43;:::i;:::-;6518:60;:::i;:::-;6612:15;;;6698:1;6694:10;;;;6682:23;;6678:32;;;6643:12;;;;6722:15;;;6719:35;;;6750:1;6747;6740:12;6719:35;6786:2;6778:6;6774:15;6798:217;6814:6;6809:3;6806:15;6798:217;;;6894:3;6881:17;6911:31;6936:5;6911:31;:::i;:::-;6955:18;;6993:12;;;;6831;;6798:217;;;-1:-1:-1;7033:5:1;6307:737;-1:-1:-1;;;;;;6307:737:1:o;7049:730::-;7176:6;7184;7192;7245:2;7233:9;7224:7;7220:23;7216:32;7213:52;;;7261:1;7258;7251:12;7213:52;7300:9;7287:23;7319:31;7344:5;7319:31;:::i;:::-;7369:5;-1:-1:-1;7425:2:1;7410:18;;7397:32;-1:-1:-1;;;;;7478:14:1;;;7475:34;;;7505:1;7502;7495:12;7475:34;7528:61;7581:7;7572:6;7561:9;7557:22;7528:61;:::i;:::-;7518:71;;7642:2;7631:9;7627:18;7614:32;7598:48;;7671:2;7661:8;7658:16;7655:36;;;7687:1;7684;7677:12;7655:36;;7710:63;7765:7;7754:8;7743:9;7739:24;7710:63;:::i;:::-;7700:73;;;7049:730;;;;;:::o;7784:435::-;7837:3;7875:5;7869:12;7902:6;7897:3;7890:19;7928:4;7957:2;7952:3;7948:12;7941:19;;7994:2;7987:5;7983:14;8015:1;8025:169;8039:6;8036:1;8033:13;8025:169;;;8100:13;;8088:26;;8134:12;;;;8169:15;;;;8061:1;8054:9;8025:169;;;-1:-1:-1;8210:3:1;;7784:435;-1:-1:-1;;;;;7784:435:1:o;8224:461::-;8277:3;8315:5;8309:12;8342:6;8337:3;8330:19;8368:4;8397:2;8392:3;8388:12;8381:19;;8434:2;8427:5;8423:14;8455:1;8465:195;8479:6;8476:1;8473:13;8465:195;;;8544:13;;-1:-1:-1;;;;;8540:39:1;8528:52;;8600:12;;;;8635:15;;;;8576:1;8494:9;8465:195;;8690:1080;9181:3;9170:9;9163:22;9144:4;9208:57;9260:3;9249:9;9245:19;9237:6;9208:57;:::i;:::-;9313:9;9305:6;9301:22;9296:2;9285:9;9281:18;9274:50;9347:44;9384:6;9376;9347:44;:::i;:::-;9333:58;;9439:9;9431:6;9427:22;9422:2;9411:9;9407:18;9400:50;9473:44;9510:6;9502;9473:44;:::i;:::-;9459:58;;9565:9;9557:6;9553:22;9548:2;9537:9;9533:18;9526:50;9599:44;9636:6;9628;9599:44;:::i;:::-;9585:58;;9692:9;9684:6;9680:22;9674:3;9663:9;9659:19;9652:51;9720:44;9757:6;9749;9720:44;:::i;:::-;9712:52;8690:1080;-1:-1:-1;;;;;;;;8690:1080:1:o;10196:602::-;10321:6;10329;10337;10390:2;10378:9;10369:7;10365:23;10361:32;10358:52;;;10406:1;10403;10396:12;10358:52;10445:9;10432:23;10464:31;10489:5;10464:31;:::i;:::-;10514:5;-1:-1:-1;10570:2:1;10555:18;;10542:32;-1:-1:-1;;;;;10586:30:1;;10583:50;;;10629:1;10626;10619:12;10583:50;10668:70;10730:7;10721:6;10710:9;10706:22;10668:70;:::i;:::-;10196:602;;10757:8;;-1:-1:-1;10642:96:1;;-1:-1:-1;;;;10196:602:1:o;10803:1138::-;10921:6;10929;10982:2;10970:9;10961:7;10957:23;10953:32;10950:52;;;10998:1;10995;10988:12;10950:52;11038:9;11025:23;-1:-1:-1;;;;;11108:2:1;11100:6;11097:14;11094:34;;;11124:1;11121;11114:12;11094:34;11147:61;11200:7;11191:6;11180:9;11176:22;11147:61;:::i;:::-;11137:71;;11227:2;11217:12;;11282:2;11271:9;11267:18;11254:32;11311:2;11301:8;11298:16;11295:36;;;11327:1;11324;11317:12;11295:36;11350:24;;;-1:-1:-1;11405:4:1;11397:13;;11393:27;-1:-1:-1;11383:55:1;;11434:1;11431;11424:12;11383:55;11470:2;11457:16;11493:60;11509:43;11549:2;11509:43;:::i;11493:60::-;11587:15;;;11669:1;11665:10;;;;11657:19;;11653:28;;;11618:12;;;;11693:19;;;11690:39;;;11725:1;11722;11715:12;11690:39;11749:11;;;;11769:142;11785:6;11780:3;11777:15;11769:142;;;11851:17;;11839:30;;11802:12;;;;11889;;;;11769:142;;;11930:5;11920:15;;;;;;;10803:1138;;;;;:::o;11946:385::-;12032:6;12040;12048;12056;12109:3;12097:9;12088:7;12084:23;12080:33;12077:53;;;12126:1;12123;12116:12;12077:53;-1:-1:-1;;12149:23:1;;;12219:2;12204:18;;12191:32;;-1:-1:-1;12270:2:1;12255:18;;12242:32;;12321:2;12306:18;12293:32;;-1:-1:-1;11946:385:1;-1:-1:-1;11946:385:1:o;12336:315::-;12404:6;12412;12465:2;12453:9;12444:7;12440:23;12436:32;12433:52;;;12481:1;12478;12471:12;12433:52;12520:9;12507:23;12539:31;12564:5;12539:31;:::i;:::-;12589:5;12641:2;12626:18;;;;12613:32;;-1:-1:-1;;;12336:315:1:o;13099:251::-;13169:6;13222:2;13210:9;13201:7;13197:23;13193:32;13190:52;;;13238:1;13235;13228:12;13190:52;13270:9;13264:16;13289:31;13314:5;13289:31;:::i;13664:184::-;13734:6;13787:2;13775:9;13766:7;13762:23;13758:32;13755:52;;;13803:1;13800;13793:12;13755:52;-1:-1:-1;13826:16:1;;13664:184;-1:-1:-1;13664:184:1:o;13853:343::-;14055:2;14037:21;;;14094:2;14074:18;;;14067:30;-1:-1:-1;;;14128:2:1;14113:18;;14106:49;14187:2;14172:18;;13853:343::o;14201:332::-;14403:2;14385:21;;;14442:1;14422:18;;;14415:29;-1:-1:-1;;;14475:2:1;14460:18;;14453:39;14524:2;14509:18;;14201:332::o;14538:873::-;14849:25;;;14905:2;14890:18;;14883:34;;;14948:2;14933:18;;14926:34;;;-1:-1:-1;;;;;14996:32:1;;14991:2;14976:18;;14969:60;15060:3;15045:19;;15038:35;;;15110:3;15016;15089:19;;15082:32;;;15130:19;;15123:35;;;-1:-1:-1;;;;;;15170:31:1;;15167:51;;;15214:1;15211;15204:12;15167:51;15248:6;15245:1;15241:14;15306:6;15298;15292:3;15281:9;15277:19;15264:49;15384:1;15336:22;;15360:3;15332:32;15373:13;;;-1:-1:-1;15332:32:1;14538:873;-1:-1:-1;;;;;;;14538:873:1:o;15416:127::-;15477:10;15472:3;15468:20;15465:1;15458:31;15508:4;15505:1;15498:15;15532:4;15529:1;15522:15;15548:125;15588:4;15616:1;15613;15610:8;15607:34;;;15621:18;;:::i;:::-;-1:-1:-1;15658:9:1;;15548:125::o;15678:274::-;-1:-1:-1;;;;;15870:32:1;;;;15852:51;;15934:2;15919:18;;15912:34;15840:2;15825:18;;15678:274::o;15957:245::-;16024:6;16077:2;16065:9;16056:7;16052:23;16048:32;16045:52;;;16093:1;16090;16083:12;16045:52;16125:9;16119:16;16144:28;16166:5;16144:28;:::i;17533:337::-;17735:2;17717:21;;;17774:2;17754:18;;;17747:30;-1:-1:-1;;;17808:2:1;17793:18;;17786:43;17861:2;17846:18;;17533:337::o;17875:601::-;17974:6;18027:2;18015:9;18006:7;18002:23;17998:32;17995:52;;;18043:1;18040;18033:12;17995:52;18076:2;18070:9;18118:2;18110:6;18106:15;18187:6;18175:10;18172:22;-1:-1:-1;;;;;18139:10:1;18136:34;18133:62;18130:88;;;18198:18;;:::i;:::-;18234:2;18227:22;18271:16;;18327:2;18316:21;;;18306:32;;18296:60;;18352:1;18349;18342:12;18296:60;18365:21;;18440:2;18425:18;;;18419:25;18402:15;;;18395:50;;;;-1:-1:-1;18372:6:1;17875:601;-1:-1:-1;17875:601:1:o;19378:1360::-;19500:6;19531:2;19574;19562:9;19553:7;19549:23;19545:32;19542:52;;;19590:1;19587;19580:12;19542:52;19623:9;19617:16;-1:-1:-1;;;;;19648:6:1;19645:30;19642:50;;;19688:1;19685;19678:12;19642:50;19711:22;;19764:4;19756:13;;19752:27;-1:-1:-1;19742:55:1;;19793:1;19790;19783:12;19742:55;19822:2;19816:9;19845:60;19861:43;19901:2;19861:43;:::i;19845:60::-;19939:15;;;20001:4;20040:11;;;20032:20;;20028:29;;;19970:12;;;;19927:3;20069:19;;;20066:39;;;20101:1;20098;20091:12;20066:39;20125:11;;;;20145:563;20161:6;20156:3;20153:15;20145:563;;;20241:2;20235:3;20226:7;20222:17;20218:26;20215:116;;;20285:1;20314:2;20310;20303:14;20215:116;20357:22;;:::i;:::-;20413:3;20407:10;20430:33;20455:7;20430:33;:::i;:::-;20476:22;;20540:12;;;20534:19;20518:14;;;20511:43;20577:2;20621:12;;;20615:19;20599:14;;;20592:43;20648:18;;20178:12;;;;20686;;;;20145:563;;;-1:-1:-1;20727:5:1;19378:1360;-1:-1:-1;;;;;;;19378:1360:1:o;21091:127::-;21152:10;21147:3;21143:20;21140:1;21133:31;21183:4;21180:1;21173:15;21207:4;21204:1;21197:15;21223:135;21262:3;-1:-1:-1;;21283:17:1;;21280:43;;;21303:18;;:::i;:::-;-1:-1:-1;21350:1:1;21339:13;;21223:135::o;21363:536::-;21648:6;21637:9;21630:25;21691:2;21686;21675:9;21671:18;21664:30;21611:4;21717:56;21769:2;21758:9;21754:18;21746:6;21717:56;:::i;:::-;21821:9;21813:6;21809:22;21804:2;21793:9;21789:18;21782:50;21849:44;21886:6;21878;21849:44;:::i;:::-;21841:52;21363:536;-1:-1:-1;;;;;;21363:536:1:o;23626:127::-;23687:10;23682:3;23678:20;23675:1;23668:31;23718:4;23715:1;23708:15;23742:4;23739:1;23732:15;23758:112;23790:1;23816;23806:35;;23821:18;;:::i;:::-;-1:-1:-1;23855:9:1;;23758:112::o;24227:168::-;24267:7;24333:1;24329;24325:6;24321:14;24318:1;24315:21;24310:1;24303:9;24296:17;24292:45;24289:71;;;24340:18;;:::i;:::-;-1:-1:-1;24380:9:1;;24227:168::o;24400:120::-;24440:1;24466;24456:35;;24471:18;;:::i;:::-;-1:-1:-1;24505:9:1;;24400:120::o;25204:332::-;25411:2;25400:9;25393:21;25374:4;25431:56;25483:2;25472:9;25468:18;25460:6;25431:56;:::i;:::-;25423:64;;25523:6;25518:2;25507:9;25503:18;25496:34;25204:332;;;;;:::o;25828:128::-;25868:3;25899:1;25895:6;25892:1;25889:13;25886:39;;;25905:18;;:::i;:::-;-1:-1:-1;25941:9:1;;25828:128::o;26501:328::-;26597:4;26655:11;26642:25;26749:3;26745:8;26734;26718:14;26714:29;26710:44;26690:18;26686:69;26676:97;;26769:1;26766;26759:12;26676:97;26790:33;;;;;26501:328;-1:-1:-1;;26501:328:1:o;26834:545::-;26927:4;26933:6;26993:11;26980:25;27087:2;27083:7;27072:8;27056:14;27052:29;27048:43;27028:18;27024:68;27014:96;;27106:1;27103;27096:12;27014:96;27133:33;;27185:20;;;-1:-1:-1;;;;;;27217:30:1;;27214:50;;;27260:1;27257;27250:12;27214:50;27293:4;27281:17;;-1:-1:-1;27344:1:1;27340:14;;;27324;27320:35;27310:46;;27307:66;;;27369:1;27366;27359:12;28672:398;28711:4;28756:1;28752:2;28741:17;28793:1;28789:2;28778:17;28823:1;28818:3;28814:11;28907:3;-1:-1:-1;;;;;28866:39:1;28862:49;28857:3;28853:59;28848:2;28841:10;28837:76;28834:102;;;28916:18;;:::i;:::-;29005:3;-1:-1:-1;;;;;28965:44:1;28960:3;28956:54;28952:2;28948:63;28945:89;;;29014:18;;:::i;:::-;-1:-1:-1;29051:13:1;;;28672:398;-1:-1:-1;;;28672:398:1:o
Swarm Source
ipfs://8ab653d7e265bc0e1d0427a7e8e5b6a331e6f24a4c6361a961fb391d110182a9
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.