Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 12 from a total of 12 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Ceva Update Prop... | 11405513 | 1493 days ago | IN | 0 ETH | 0.00618706 | ||||
Ceva Whitelist M... | 11405477 | 1493 days ago | IN | 0 ETH | 0.00099162 | ||||
Ceva Whitelist P... | 11405473 | 1493 days ago | IN | 0 ETH | 0.00148904 | ||||
Founder Develope... | 11405471 | 1493 days ago | IN | 0 ETH | 0.00100392 | ||||
Ceva Whitelist F... | 11405471 | 1493 days ago | IN | 0 ETH | 0.00105795 | ||||
Property Id | 11405471 | 1493 days ago | IN | 0 ETH | 0.00094848 | ||||
Founder Develope... | 11405460 | 1493 days ago | IN | 0 ETH | 0.00100392 | ||||
Ceva Whitelist F... | 11405458 | 1493 days ago | IN | 0 ETH | 0.00105795 | ||||
Ceva Whitelist F... | 11405458 | 1493 days ago | IN | 0 ETH | 0.00105795 | ||||
Admin Whitelist ... | 11405450 | 1493 days ago | IN | 0 ETH | 0.00106064 | ||||
Admin Whitelist ... | 11405450 | 1493 days ago | IN | 0 ETH | 0.00106064 | ||||
Admin Initial Se... | 11405437 | 1493 days ago | IN | 0 ETH | 0.00690252 |
Loading...
Loading
Contract Name:
AVEC
Compiler Version
v0.6.6+commit.6c089d02
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-12-07 */ pragma solidity^0.6.0; /* * Equitable Builds Inc presents.. * ====================================* * _____ ___ _______ ______ * * | _ | || | __| __| * * | | | | __| |__ * * |__|__|_____|____|_____| * * * * _____ __________ ______ * * | | | | | || __| * * | | | | | ||__ | * * |_____|_|___|___||_____| * * * * _____ ____________ ___ * * | | | | | || | * * | | | | | || | * * |_____|_|_|_|_|___||__| * * * * ====================================* */ contract AVEC{ /*================================= = MODIFIERS = =================================*/ //verify caller address members_ = true modifier onlyMembers(address _customerAddress) { require( // is the customer in the member whitelist? members_[_customerAddress] == true ); // execute _; } //verify caller address founderdevelopers_ = true modifier onlyFounderDevelopers(address _customerAddress) { require( // is the customer in the Founder Developer whitelist? founderdevelopers_[_customerAddress] == true ); // execute _; } //verify caller address ceva_ = true modifier onlyCEVA(address _customerAddress) { require( // is the customer in the ceva whitelist? ceva_[_customerAddress] == true ); // execute _; } //verify caller address ceva_ = true modifier onlyAdministrator(address _customerAddress){ require( administrators[_customerAddress] == true ); _; } /*============================== = EVENTS = ==============================*/ //Emit and Event to the blockcahin for AVECtoONUS event AVECtoONUS( address indexed MemberAddress, uint256 tokensConverted ); //Emit and Event to the blockcahin for ONUStoAVEC event ONUStoAVEC( address indexed MemberAddress, uint256 tokensConverted ); //Emit and Event to the blockcahin for OnWithdraw event OnWithdraw( address indexed MemberAddress, uint256 tokensWithdrawn, uint8 envelopeNumber ); //Emit and Event to the blockcahin for Transfer // ERC20 event Transfer( address indexed from, address indexed to, uint256 value ); //Emit and Event to the blockcahin for PropertyTransfer event PropertyTransfer( address indexed from, address indexed to, uint256 value, bytes32 property ); //Emit and Event to the blockcahin for Burn event Burn( address indexed from, uint256 tokens, uint256 propertyValue ); // ERC20 //Emit and Event to the blockcahin for Approval event Approval( address indexed _owner, address indexed _spender, uint256 _value ); //Emit and Event to the blockcahin for PropertyValuation event PropertyValuation( address indexed from, bytes32 _propertyUniqueID, uint256 propertyValue ); //Emit and Event to the blockcahin for PropertyWhitelisted event PropertyWhitelisted( address indexed from, bytes32 _propertyUniqueID, bool _trueFalse ); //Emit and Event to the blockcahin for MemberWhitelisted event MemberWhitelisted( address indexed from, address indexed to, bool _trueFalse ); //Emit and Event to the blockcahin for FounderDeveloperWhitelisted event FounderDeveloperWhitelisted( address indexed from, address indexed to, bool _trueFalse ); //Emit and Event to the blockcahin for CEVAWhitelisted event CEVAWhitelisted( address indexed from, address indexed to, bool _trueFalse ); //Emit and Event to the blockcahin for AdminWhitelisted event AdminWhitelisted( address indexed from, address indexed to, bool _trueFalse ); /*===================================== = CONFIGURABLES = =====================================*/ string public name = "AlternateVirtualEquityCredits"; string public symbol = "AVEC"; uint8 public decimals = 18; //Setting to change for whoaaddress_ address internal whoaaddress_ = 0x314d0ED76d866826C809fb6a51d63642b2E9eC3e; //Global porfolio owner address address internal whoaaddressValue_ = 0x314d0ED76d866826C809fb6a51d63642b2E9eC3e; //Setting to change for whoamaintenanceaddress_ address internal whoamaintenanceaddress_ = 0x2722B426B11978c29660e8395a423Ccb93AE0403; //Setting to change for whoarewardsaddress_ address internal whoarewardsaddress_ = 0xA9d241b568DF9E8A7Ec9e44737f29a8Ee00bfF53; //Setting to change for cevaaddress_ address internal cevaaddress_ = 0xdE281c22976dE2E9b3f4F87bEB60aE9E67DFf5C4; //Setting to change for credibleyouaddress_ address internal credibleyouaddress_ = 0xc9c1Ffd6B4014232Ef474Daa4CA1506A6E39Be89; //Setting to change for techaddress_ address internal techaddress_ = 0xB6148C62e6A6d48f41241D01e3C4841139144ABa; //Setting to change for existcryptoaddress_ address internal existholdingsaddress_ = 0xac1B6580a175C1f2a4e3220A24e6f65fF3AB8A03; //Setting to change for existcryptoaddress_ address internal existcryptoaddress_ = 0xb8C098eE976f1162aD277936a5D1BCA7a8Fe61f5; // members address whitelist archive mapping(address => bool) internal members_; // founder developers whitelist address archive mapping(address => bool) internal founderdevelopers_; // ceva whitelist address archive mapping(address => bool) internal ceva_; // administrator list (see above on what they can do) mapping(address => bool) internal administrators; // setting for allowance function determines amount of tokens address can spend from mapped address mapping (address => mapping (address => uint256)) private _allowed; // array mapping the mint request whitelist to keep track of all mint requests approved or disapproved by ceva mapping (address => mapping(bytes32 => bool)) internal mintrequestwhitelist_; // array mapping the burn request whitelist to keep track of all the token burnings made by ceva mapping (address => mapping(bytes32 => bool)) internal burnrequestwhitelist_; // array mapping the property whitelist to keep track of all properties on the platform mapping (address => mapping(bytes32 => bool)) internal propertywhitelist_; // array mapping the property Balance Ledger of a members current properties mapping (bytes32 => mapping(address => uint256)) internal propertyBalanceLedger_; // array mapping the property Last Known Value for members current properties mapping (bytes32 => mapping(address => uint256)) internal propertyLastKnownValue_; // array mapping the property value to keep track current property value mapping (address => mapping(bytes32 => uint256)) internal propertyvalue_; // array mapping the old property value to keep track of the value previous to the current ceva value adjustment mapping (address => mapping(bytes32 => uint256)) internal propertyvalueOld_; // array mapping the property Price Update Count for a Members current properties mapping (address => mapping(bytes32 => uint256)) internal propertyPriceUpdateCountMember_; // array mapping the property Price Updates of the Asset to keep track of the number of times its been update mapping(bytes32 => uint256) internal propertyPriceUpdateCountAsset_; // array mapping the property Global Balance to keep track of all AVEC that is available for conversion into ONUS on a specific property mapping(bytes32 => uint256) internal propertyGlobalBalance_; // array mapping the property Owner to keep track of all related properties mapping(bytes32 => address) internal propertyOwner_; // array mapping the last Minting Price of any given minted property mapping(bytes32 => uint256) internal lastMintingPrice_; // array mapping the transfering Property id of members intended as a setting to move the different kinds of token value mapping(address => bytes32) internal transferingPropertyid_; // array mapping the working Property id's of founder developers and ceva to keep track of currently related working Property id's mapping(address => bytes32) internal workingPropertyid_; // array mapping the working Mint Request id's to keep track of all related working Mint Request id's mapping(address => bytes32) internal workingMintRequestid_; // array mapping the working Burn Request id's to keep track of all related working Burn Request id's mapping(address => bytes32) internal workingBurnRequestid_; /*================================ = DATASETS = ================================*/ //mapping the value of a wallets token balance ledger mapping(address => uint256) internal tokenBalanceLedger_ ; //mapping the amount of deposits a wallet has received for the purpose of //valuating the amount of dividends they are entitled to for their respective envelope hold shareholds mapping(address => uint256) internal mintingDepositsOf_; //mapping to compare against the minting deposits of an address in order to determine amount of //dividends they are enitled to mapping(address => uint256) internal amountCirculated_; mapping(address => uint256) internal taxesFeeTotalWithdrawn_; mapping(address => uint256) internal taxesPreviousWithdrawn_; mapping(address => uint256) internal taxesFeeSharehold_; mapping(address => uint256) internal insuranceFeeTotalWithdrawn_; mapping(address => uint256) internal insurancePreviousWithdrawn_; mapping(address => uint256) internal insuranceFeeSharehold_; mapping(address => uint256) internal maintenanceFeeTotalWithdrawn_; mapping(address => uint256) internal maintenancePreviousWithdrawn_; mapping(address => uint256) internal maintenanceFeeSharehold_; mapping(address => uint256) internal waECOFeeTotalWithdrawn_; mapping(address => uint256) internal waECOPreviousWithdrawn_; mapping(address => uint256) internal waECOFeeSharehold_; mapping(address => uint256) internal holdoneTotalWithdrawn_; mapping(address => uint256) internal holdonePreviousWithdrawn_; mapping(address => uint256) internal holdoneSharehold_; mapping(address => uint256) internal holdtwoTotalWithdrawn_; mapping(address => uint256) internal holdtwoPreviousWithdrawn_; mapping(address => uint256) internal holdtwoSharehold_; mapping(address => uint256) internal holdthreeTotalWithdrawn_; mapping(address => uint256) internal holdthreePreviousWithdrawn_; mapping(address => uint256) internal holdthreeSharehold_; mapping(address => uint256) internal rewardsTotalWithdrawn_; mapping(address => uint256) internal rewardsPreviousWithdrawn_; mapping(address => uint256) internal rewardsSharehold_; mapping(address => uint256) internal techTotalWithdrawn_; mapping(address => uint256) internal techPreviousWithdrawn_; mapping(address => uint256) internal techSharehold_; mapping(address => uint256) internal existholdingsTotalWithdrawn_; mapping(address => uint256) internal existholdingsPreviousWithdrawn_; mapping(address => uint256) internal existholdingsSharehold_; mapping(address => uint256) internal existcryptoTotalWithdrawn_; mapping(address => uint256) internal existcryptoPreviousWithdrawn_; mapping(address => uint256) internal existcryptoSharehold_; mapping(address => uint256) internal whoaTotalWithdrawn_; mapping(address => uint256) internal whoaPreviousWithdrawn_; mapping(address => uint256) internal whoaSharehold_; mapping(address => uint256) internal credibleyouTotalWithdrawn_; mapping(address => uint256) internal credibleyouPreviousWithdrawn_; mapping(address => uint256) internal credibleyouSharehold_; //mapping to keep track of number of whitelisted proofs on different events mapping(address => uint256) internal numberofmintingrequestswhitelisted_; mapping(address => uint256) internal numberofpropertieswhitelisted_; mapping(address => uint256) internal numberofburnrequestswhitelisted_; //mapping to keep track of transfering from wallet to ensure values arent changed during crucial processes mapping(address => uint256) internal transferingFromWallet_; //mapping to keeep track of the transfer type IE AVEC/ONUS/OMNI = 1/2/3 mapping(address => uint8) internal transferType_; //property id that represents ONUS tokens property balance ledgers bytes32 internal onusCode_ = 0x676c6f62616c0000000000000000000000000000000000000000000000000000; //property id that represents OMNI tokens property balance ledgers bytes32 internal omniCode_ = 0x4f4d4e4900000000000000000000000000000000000000000000000000000000; //Total supply variable to keep track of all token minting uint256 public totalSupply; //Total Amount of Holds in existence uint256 internal feeTotalHolds_; //The total deposited over time into the global fee ledger uint256 internal globalFeeLedger_; //The total number of holds in each envelope uint256 internal taxesfeeTotalHolds_; uint256 internal insurancefeeTotalHolds_; uint256 internal maintencancefeeTotalHolds_; uint256 internal waECOfeeTotalHolds_; uint256 internal holdonefeeTotalHolds_; uint256 internal holdtwofeeTotalHolds_; uint256 internal holdthreefeeTotalHolds_; uint256 internal rewardsfeeTotalHolds_; uint256 internal techfeeTotalHolds_; uint256 internal existholdingsfeeTotalHolds_; uint256 internal existcryptofeeTotalHolds_; uint256 internal whoafeeTotalHolds_; uint256 internal credibleyoufeeTotalHolds_; /*======================================= = MEMBER FUNCTIONS = =======================================*/ /* * -- APPLICATION ENTRY POINTS -- */ constructor() public { } /* * -- APPLICATION ENTRY POINTS -- */ function adminInitialSet() public { // add the first users propertyOwner_[0x676c6f62616c0000000000000000000000000000000000000000000000000000] = whoaaddress_; //James Admin administrators[0xA9873d93db3BCA9F68aDfEAb226Fa9189641069A] = true; //Brenden Admin administrators[0x27851761A8fBC03f57965b42528B39af07cdC42b] = true; members_[0x314d0ED76d866826C809fb6a51d63642b2E9eC3e] = true; members_[0x2722B426B11978c29660e8395a423Ccb93AE0403] = true; members_[0x27851761A8fBC03f57965b42528B39af07cdC42b] = true; members_[0xA9873d93db3BCA9F68aDfEAb226Fa9189641069A] = true; members_[0xdE281c22976dE2E9b3f4F87bEB60aE9E67DFf5C4] = true; members_[0xc9c1Ffd6B4014232Ef474Daa4CA1506A6E39Be89] = true; members_[0xac1B6580a175C1f2a4e3220A24e6f65fF3AB8A03] = true; members_[0xB6148C62e6A6d48f41241D01e3C4841139144ABa] = true; members_[0xb8C098eE976f1162aD277936a5D1BCA7a8Fe61f5] = true; members_[0xA9d241b568DF9E8A7Ec9e44737f29a8Ee00bfF53] = true; members_[0x27851761A8fBC03f57965b42528B39af07cdC42b] = true; members_[0xa1Ff1474e0a5db4801E426289DB485b456de7882] = true; } /* * -- APPLICATION ENTRY POINTS -- */ //Function to adjust corporate wallet address only usable by admin function adminGenesis(address _existcryptoaddress, address _existhooldingsaddress, address _techaddress, address _credibleyouaddress, address _cevaaddress, address _whoaddress, address _whoarewardsaddress, address _whoamaintenanceaddress) public onlyAdministrator(msg.sender) { require(administrators[msg.sender], "AdminFalse"); // adds the _whoaddress input as the current whoa address whoaaddress_ = _whoaddress; // adds the _whoamaintenanceaddress input as the current whoa maintenence address whoamaintenanceaddress_ = _whoamaintenanceaddress; // adds the _whoarewardsaddress input as the current whoa rewards address whoarewardsaddress_ = _whoarewardsaddress; // adds the )cevaaddress_ input as the current ceva address cevaaddress_ = _cevaaddress; // adds the _credibleyouaddress input as the current credible you address credibleyouaddress_ = _credibleyouaddress; // adds the _techaddress input as the current tech address techaddress_ = _techaddress; // adds the __existhooldingsaddress input as the current exist holdings address existholdingsaddress_ = _existhooldingsaddress; // adds the _existcryptoaddress input as the current exist crypto address existcryptoaddress_ = _existcryptoaddress; numberofburnrequestswhitelisted_[msg.sender] = 0; numberofpropertieswhitelisted_[msg.sender] = 0; numberofmintingrequestswhitelisted_[msg.sender] = 0; } /** * Function for member to purchase a founder developer license. * the fucntion checks if the member has have the required amount of tokens * as well as checking if both founder developers are in fact founder developers * along with ceva as an additional measure of verification. */ function memberBuyFounderDeveloperLicense(address _founderDeveloperOne, address _founderDeveloperTwo, address _ceva) public onlyMembers(msg.sender) returns(bool _success) { require(founderdevelopers_[_founderDeveloperOne] == true && ceva_[_ceva] == true && founderdevelopers_[_founderDeveloperTwo] == true); // setup data address _customerAddress = msg.sender; uint256 _licenseprice = 1000 * 1e18; if(tokenBalanceLedger_[_customerAddress] > _licenseprice){ propertyBalanceLedger_[0x676c6f62616c0000000000000000000000000000000000000000000000000000][_ceva] = (_licenseprice / 5) + propertyBalanceLedger_[0x676c6f62616c0000000000000000000000000000000000000000000000000000][_ceva]; tokenBalanceLedger_[_ceva] = tokenBalanceLedger_[_ceva] + (_licenseprice / 5); propertyBalanceLedger_[0x676c6f62616c0000000000000000000000000000000000000000000000000000][_founderDeveloperOne] = (_licenseprice / 5) + propertyBalanceLedger_[0x676c6f62616c0000000000000000000000000000000000000000000000000000][_founderDeveloperOne]; tokenBalanceLedger_[_founderDeveloperOne] = tokenBalanceLedger_[_founderDeveloperOne] + (_licenseprice / 5); propertyBalanceLedger_[0x676c6f62616c0000000000000000000000000000000000000000000000000000][_founderDeveloperTwo] = (_licenseprice / 10) + propertyBalanceLedger_[0x676c6f62616c0000000000000000000000000000000000000000000000000000][_founderDeveloperTwo]; tokenBalanceLedger_[_founderDeveloperTwo] = tokenBalanceLedger_[_founderDeveloperTwo] + (_licenseprice / 10); propertyBalanceLedger_[transferingPropertyid_[_customerAddress]][_customerAddress] = propertyBalanceLedger_[transferingPropertyid_[_customerAddress]][_customerAddress] - _licenseprice; tokenBalanceLedger_[_customerAddress] = tokenBalanceLedger_[_customerAddress] - _licenseprice; founderdevelopers_[_customerAddress] = true; return true; } else { return false; } } /** * withdraw an envelope hold shareholders specific envelope dividends based on the chosen number * 1 = Taxes Envelope * 2 = Insurance Envelope * 3 = Maintenance Envelope * 4 = Wealth Architect Equity Coin Operator Envelope * 5 = Hold One Envelope * 6 = Hold Two Envelope * 7 = Hold Three Envelope * 8 = Rewards Envelope(OMNI) * 9 = Tech Envelope * 10 = Exist Holdings Envelope * 11 = Exist Crypto Envelope * 12 = WHOA Envelope * 13 = Credible You Envelope */ function memberWithdrawDividends(uint8 _envelopeNumber) public onlyMembers(msg.sender) { // setup data address _customerAddress = msg.sender; uint256 _dividends; if(_envelopeNumber == 1){ _dividends = checkDividendsOf(msg.sender, _envelopeNumber); taxesFeeTotalWithdrawn_[_customerAddress] += _dividends; } else if(_envelopeNumber == 2){ _dividends = checkDividendsOf(msg.sender, _envelopeNumber); insuranceFeeTotalWithdrawn_[_customerAddress] += _dividends; } else if(_envelopeNumber == 3){ _dividends = checkDividendsOf(msg.sender, _envelopeNumber); maintenanceFeeTotalWithdrawn_[_customerAddress] += _dividends; } else if(_envelopeNumber == 4){ _dividends = checkDividendsOf(msg.sender, _envelopeNumber); waECOFeeTotalWithdrawn_[_customerAddress] += _dividends; } else if(_envelopeNumber == 5){ _dividends = checkDividendsOf(msg.sender, _envelopeNumber); holdoneTotalWithdrawn_[_customerAddress] += _dividends; } else if(_envelopeNumber == 6){ _dividends = checkDividendsOf(msg.sender, _envelopeNumber); holdtwoTotalWithdrawn_[_customerAddress] += _dividends; } else if(_envelopeNumber == 7){ _dividends = checkDividendsOf(msg.sender, _envelopeNumber); holdthreeTotalWithdrawn_[_customerAddress] += _dividends; } else if(_envelopeNumber == 8){ _dividends = checkDividendsOf(msg.sender, _envelopeNumber); rewardsTotalWithdrawn_[_customerAddress] += _dividends; propertyBalanceLedger_[0x4f4d4e4900000000000000000000000000000000000000000000000000000000][_customerAddress] += _dividends; tokenBalanceLedger_[_customerAddress] = tokenBalanceLedger_[_customerAddress] +_dividends; } else if(_envelopeNumber == 9){ _dividends = checkDividendsOf(msg.sender, _envelopeNumber); techTotalWithdrawn_[_customerAddress] += _dividends; } else if(_envelopeNumber == 10){ _dividends = checkDividendsOf(msg.sender, _envelopeNumber); existholdingsTotalWithdrawn_[_customerAddress] += _dividends; } else if(_envelopeNumber == 11){ _dividends = checkDividendsOf(msg.sender, _envelopeNumber); existcryptoTotalWithdrawn_[_customerAddress] += _dividends; } else if(_envelopeNumber == 12){ _dividends = checkDividendsOf(msg.sender, _envelopeNumber); whoaTotalWithdrawn_[_customerAddress] += _dividends; } else if(_envelopeNumber == 13){ _dividends = checkDividendsOf(msg.sender, _envelopeNumber); credibleyouTotalWithdrawn_[_customerAddress] += _dividends; } // update dividend tracker if(_envelopeNumber != 8){ propertyBalanceLedger_[0x676c6f62616c0000000000000000000000000000000000000000000000000000][_customerAddress] += _dividends; } tokenBalanceLedger_[_customerAddress] = tokenBalanceLedger_[_customerAddress] +_dividends; // fire event emit OnWithdraw(_customerAddress, _dividends, _envelopeNumber); } /** * Transfer tokens from the caller to a new holder. * Remember, there's a 2% fee here as well. members only */ function transfer(address _toAddress, uint256 _amountOfTokens) public returns(bool) { transferingFromWallet_[msg.sender] = 1; uint256 _fee = _amountOfTokens / 50; _amountOfTokens += _fee; require(_amountOfTokens <= propertyBalanceLedger_[transferingPropertyid_[msg.sender]][msg.sender], "Not Enough Token"); _amountOfTokens -= _fee; if(transferType_[msg.sender] == 1){ require(members_[_toAddress] == true && members_[msg.sender], "Not a member"); } updateRollingPropertyValueMember(_toAddress, transferingPropertyid_[msg.sender]); uint256 _value = _amountOfTokens + _fee; address _ownerAddress = propertyOwner_[transferingPropertyid_[msg.sender]]; uint256 _divideby = ((((propertyLastKnownValue_[transferingPropertyid_[msg.sender]][msg.sender] * 1e18) / 100) * 1000000) / propertyBalanceLedger_[transferingPropertyid_[msg.sender]][msg.sender]); uint256 _propertyValue = ((propertyvalue_[_ownerAddress][transferingPropertyid_[msg.sender]] * 1e18) / 100) * 1000000; uint256 _pCalculate = _propertyValue / _divideby; propertyBalanceLedger_[transferingPropertyid_[msg.sender]][msg.sender] = _pCalculate - _value; propertyPriceUpdateCountMember_[msg.sender][transferingPropertyid_[msg.sender]] = propertyPriceUpdateCountAsset_[transferingPropertyid_[msg.sender]]; propertyLastKnownValue_[transferingPropertyid_[msg.sender]][msg.sender] = propertyvalue_[_ownerAddress][transferingPropertyid_[msg.sender]]; tokenBalanceLedger_[_toAddress] = tokenBalanceLedger_[_toAddress] + _amountOfTokens; tokenBalanceLedger_[msg.sender] -= _value ; propertyBalanceLedger_[transferingPropertyid_[msg.sender]][_toAddress] = propertyBalanceLedger_[transferingPropertyid_[msg.sender]][_toAddress] + _amountOfTokens; updateEquityRents(_amountOfTokens); transferingFromWallet_[msg.sender] = 0; emit Transfer(msg.sender, _toAddress, _value); return true; } /** * Convert AVEC into ONUS */ function memberConvertAVECtoONUS(uint256 tokens) public { bytes32 _propertyUniqueID = transferingPropertyid_[msg.sender]; uint256 _propertyBalanceLedger = propertyBalanceLedger_[_propertyUniqueID][msg.sender]; uint256 _value = tokens; updateRollingPropertyValueMember(msg.sender, _propertyUniqueID); if(_propertyBalanceLedger >= _value && transferingFromWallet_[msg.sender] == 0){ // make sure we have the requested tokens // setup uint256 cValue; cValue = (propertyvalue_[propertyOwner_[_propertyUniqueID]][_propertyUniqueID] * 1e18) / 100; require(members_[msg.sender] == true && tokens > 0, "Member or GlobalBalance"); transferingFromWallet_[msg.sender] = 1; //Exchange tokens propertyBalanceLedger_[0x676c6f62616c0000000000000000000000000000000000000000000000000000][msg.sender] += tokens; propertyBalanceLedger_[_propertyUniqueID][msg.sender] -= tokens; propertyGlobalBalance_[_propertyUniqueID] += tokens; propertyLastKnownValue_[0x676c6f62616c0000000000000000000000000000000000000000000000000000][msg.sender] = propertyvalue_[propertyOwner_[0x676c6f62616c0000000000000000000000000000000000000000000000000000]][_propertyUniqueID]; transferingFromWallet_[msg.sender] = 0; emit AVECtoONUS(msg.sender, _value); } else { _value = 0; emit AVECtoONUS(msg.sender, _value); } } /** * Convert ONUS into AVEC */ function memberConvertONUSintoAVEC(uint256 tokens) public onlyMembers(msg.sender) { bytes32 _propertyUniqueID = transferingPropertyid_[msg.sender]; uint256 _propertyBalanceLedger = ((propertyvalue_[propertyOwner_[_propertyUniqueID]][_propertyUniqueID] * 1e18) / 100) - propertyGlobalBalance_[_propertyUniqueID]; uint256 _value = tokens; updateRollingPropertyValueMember(msg.sender, _propertyUniqueID); if(_propertyBalanceLedger >= _value && transferingFromWallet_[msg.sender] == 0){ // make sure we have the requested tokens // setup require(members_[msg.sender] == true && tokens > 0); transferingFromWallet_[msg.sender] = 1; //Exchange tokens propertyBalanceLedger_[0x676c6f62616c0000000000000000000000000000000000000000000000000000][msg.sender] -= tokens; propertyBalanceLedger_[_propertyUniqueID][msg.sender] += tokens; propertyGlobalBalance_[_propertyUniqueID] -= tokens; propertyLastKnownValue_[0x676c6f62616c0000000000000000000000000000000000000000000000000000][msg.sender] = propertyvalue_[whoaaddressValue_][0x676c6f62616c0000000000000000000000000000000000000000000000000000]; transferingFromWallet_[msg.sender] = 0; emit ONUStoAVEC(msg.sender, _value); } else { _value = 0; emit ONUStoAVEC(msg.sender, _value); } } //make an approved transfer from another wallet the transfer will verify //based on the transfering ID of the from address input by the user function transferFrom(address from, address to, uint256 tokens) public onlyMembers(msg.sender) returns(bool) { bytes32 _propertyUniqueID = transferingPropertyid_[from]; uint256 _propertyBalanceLedger = propertyBalanceLedger_[_propertyUniqueID][from]; uint256 _value = tokens + (tokens / 50); updateRollingPropertyValueMember(from, _propertyUniqueID); if(_propertyBalanceLedger >= _value){ // setup address _customerAddress = msg.sender; // make sure we have the requested tokens require(members_[to] == true && tokens > 0 &&from != to && _value <= _allowed[from][msg.sender] && msg.sender != from && transferingFromWallet_[msg.sender] == 0); transferingFromWallet_[msg.sender] = 1; updateEquityRents(tokens); //Exchange tokens tokenBalanceLedger_[to] = tokenBalanceLedger_[to] + tokens; tokenBalanceLedger_[from] -= tokens + (tokens / 50); propertyLastKnownValue_[_propertyUniqueID][msg.sender] = propertyvalue_[propertyOwner_[_propertyUniqueID]][_propertyUniqueID]; //Reduce Approval Amount _allowed[from][msg.sender] -= tokens; amountCirculated_[from] += _value; transferingFromWallet_[msg.sender] = 0; address _ownerAddress = propertyOwner_[_propertyUniqueID]; address _holderAddress = to; uint256 _divideby = ((((propertyLastKnownValue_[_propertyUniqueID][_holderAddress] * 1e18) / 100) * 1000000) / _propertyBalanceLedger); uint256 _propertyValue = ((propertyvalue_[_ownerAddress][_propertyUniqueID] * 1e18) / 100) * 1000000; uint256 _pCalculate = _propertyValue / _divideby; propertyBalanceLedger_[_propertyUniqueID][_holderAddress] = _pCalculate + tokens; propertyPriceUpdateCountMember_[_holderAddress][_propertyUniqueID] = propertyPriceUpdateCountAsset_[_propertyUniqueID]; propertyLastKnownValue_[_propertyUniqueID][_holderAddress] = lastMintingPrice_[_propertyUniqueID]; propertyBalanceLedger_[_propertyUniqueID][to] = propertyBalanceLedger_[_propertyUniqueID][to] + tokens; transferingFromWallet_[msg.sender] = 0; emit Transfer(_customerAddress, to, _value); return true; } else { return false; } } //approve another wallet to spend an amount of funds distributed based on //the transfering ID you have set at the time they call the transfeFrom //function that will check if you have the available funds in your //currently selected property function approve(address spender, uint256 value) public onlyMembers(msg.sender) returns (bool) { require(spender != address(0)); _allowed[msg.sender][spender] = value; emit Approval(msg.sender, spender, value); return true; } // ------------------------------------------------------------------------ // Returns the amount of tokens approved by the owner that can be // transferred to the spender's account // ------------------------------------------------------------------------ function allowance(address tokenOwner, address spender) public onlyMembers(msg.sender) view returns (uint remaining) { return _allowed[tokenOwner][spender]; } /** * fucntion to clear the value of a title using a ceva whitelisted account when redemption clause is called. */ function cevaClearTitle(uint256 _propertyValue, address _clearFrom) public onlyCEVA(msg.sender) returns(bool) { uint256 _amountOfTokens = ((_propertyValue * 1e18) / 100); uint256 _difference = _amountOfTokens - propertyBalanceLedger_[workingPropertyid_[msg.sender]][propertyOwner_[workingPropertyid_[msg.sender]]]; if(workingPropertyid_[msg.sender] != 0x676c6f62616c0000000000000000000000000000000000000000000000000000){ require(burnrequestwhitelist_[_clearFrom][transferingPropertyid_[msg.sender]] == true && propertywhitelist_[propertyOwner_[workingPropertyid_[msg.sender]]][workingPropertyid_[msg.sender]] == true && _difference <= propertyBalanceLedger_[0x676c6f62616c0000000000000000000000000000000000000000000000000000][whoaaddress_] && _amountOfTokens >= 0); //Burn Tokens totalSupply -= _amountOfTokens; // take tokens out of stockpile //Exchange tokens propertyvalue_[whoaaddressValue_][0x676c6f62616c0000000000000000000000000000000000000000000000000000] -= (propertyGlobalBalance_[workingPropertyid_[msg.sender]] * 100) / 1e18; tokenBalanceLedger_[propertyOwner_[workingPropertyid_[msg.sender]]] -= propertyBalanceLedger_[workingPropertyid_[msg.sender]][propertyOwner_[workingPropertyid_[msg.sender]]]; propertyBalanceLedger_[workingPropertyid_[msg.sender]][propertyOwner_[workingPropertyid_[msg.sender]]] = 0; propertyBalanceLedger_[0x676c6f62616c0000000000000000000000000000000000000000000000000000][whoaaddress_] -= _amountOfTokens - propertyBalanceLedger_[workingPropertyid_[msg.sender]][propertyOwner_[workingPropertyid_[msg.sender]]]; // returns bool true emit Burn(msg.sender, _amountOfTokens, _propertyValue); return true; } else { return false; } } /** * Transfer fee sharehold from the caller to a new holder based on envelope number see memberWithdrawDividends() 1-13 envelope names. */ function memberSellFeeSharehold(address _toAddress, uint256 _amount, uint8 _envelopeNumber) public onlyMembers(msg.sender) returns(bool) { if(_amount > 0 && _envelopeNumber == 1){ require(members_[_toAddress] == true); // setup address _customerAddress = msg.sender; // make sure we have the requested sharehold require(_amount <= taxesFeeSharehold_[_customerAddress] && _amount >= 0 && _toAddress != _customerAddress); //Update fee sharehold previous withdrawals taxesPreviousWithdrawn_[_toAddress] += (taxesFeeTotalWithdrawn_[_customerAddress] / taxesFeeSharehold_[_customerAddress]) * _amount; //Exchange sharehold taxesFeeSharehold_[_toAddress] += _amount; taxesFeeSharehold_[_customerAddress] -= _amount; return true; } else if(_amount > 0 && _envelopeNumber == 2){ require(members_[_toAddress] == true); // setup address _customerAddress = msg.sender; // make sure we have the requested sharehold require(_amount <= insuranceFeeSharehold_[_customerAddress] && _amount >= 0 && _toAddress != _customerAddress); //Update fee sharehold previous withdrawals insurancePreviousWithdrawn_[_toAddress] += (insuranceFeeTotalWithdrawn_[_customerAddress] / insuranceFeeSharehold_[_customerAddress]) * _amount; //Exchange sharehold insuranceFeeSharehold_[_toAddress] += _amount; insuranceFeeSharehold_[_customerAddress] -= _amount; return true; } else if(_amount > 0 && _envelopeNumber == 3){ require(members_[_toAddress] == true); // setup address _customerAddress = msg.sender; // make sure we have the requested sharehold require(_amount <= maintenanceFeeSharehold_[_customerAddress] && _amount >= 0 && _toAddress != _customerAddress); //Update fee sharehold previous withdrawals maintenancePreviousWithdrawn_[_toAddress] += (maintenanceFeeTotalWithdrawn_[_customerAddress] / maintenanceFeeSharehold_[_customerAddress]) * _amount; //Exchange sharehold maintenanceFeeSharehold_[_toAddress] += _amount; maintenanceFeeSharehold_[_customerAddress] -= _amount; return true; } else if(_amount > 0 && _envelopeNumber == 4){ require(members_[_toAddress] == true); // setup address _customerAddress = msg.sender; // make sure we have the requested sharehold require(_amount <= waECOFeeSharehold_[_customerAddress] && _amount >= 0 && _toAddress != _customerAddress); //Update fee sharehold previous withdrawals waECOPreviousWithdrawn_[_toAddress] += (waECOFeeTotalWithdrawn_[_customerAddress] / waECOFeeSharehold_[_customerAddress]) * _amount; //Exchange sharehold waECOFeeSharehold_[_toAddress] += _amount; waECOFeeSharehold_[_customerAddress] -= _amount; return true; } else if(_amount > 0 && _envelopeNumber == 5){ require(members_[_toAddress] == true); // setup address _customerAddress = msg.sender; // make sure we have the requested sharehold require(_amount <= holdoneSharehold_[_customerAddress] && _amount >= 0 && _toAddress != _customerAddress); //Update fee sharehold previous withdrawals holdonePreviousWithdrawn_[_toAddress] += (holdoneTotalWithdrawn_[_customerAddress] / holdoneSharehold_[_customerAddress]) * _amount; //Exchange sharehold holdoneSharehold_[_toAddress] += _amount; holdoneSharehold_[_customerAddress] -= _amount; return true; } else if(_amount > 0 && _envelopeNumber == 6){ require(members_[_toAddress] == true); // setup address _customerAddress = msg.sender; // make sure we have the requested sharehold require(_amount <= holdtwoSharehold_[_customerAddress] && _amount >= 0 && _toAddress != _customerAddress); //Update fee sharehold previous withdrawals holdtwoPreviousWithdrawn_[_toAddress] += (holdtwoTotalWithdrawn_[_customerAddress] / holdtwoSharehold_[_customerAddress]) * _amount; //Exchange sharehold holdtwoSharehold_[_toAddress] += _amount; holdtwoSharehold_[_customerAddress] -= _amount; return true; } else if(_amount > 0 && _envelopeNumber == 7){ require(members_[_toAddress] == true); // setup address _customerAddress = msg.sender; // make sure we have the requested sharehold require(_amount <= holdthreeSharehold_[_customerAddress] && _amount >= 0 && _toAddress != _customerAddress); //Update fee sharehold previous withdrawals holdthreePreviousWithdrawn_[_toAddress] += (holdthreeTotalWithdrawn_[_customerAddress] / holdthreeSharehold_[_customerAddress]) * _amount; //Exchange sharehold holdthreeSharehold_[_toAddress] += _amount; holdthreeSharehold_[_customerAddress] -= _amount; return true; } else if(_amount > 0 && _envelopeNumber == 8){ require(members_[_toAddress] == true); // setup address _customerAddress = msg.sender; // make sure we have the requested sharehold require(_amount <= rewardsSharehold_[_customerAddress] && _amount >= 0 && _toAddress != _customerAddress); //Update fee sharehold previous withdrawals rewardsPreviousWithdrawn_[_toAddress] += (rewardsTotalWithdrawn_[_customerAddress] / rewardsSharehold_[_customerAddress]) * _amount; //Exchange sharehold rewardsSharehold_[_toAddress] += _amount; rewardsSharehold_[_customerAddress] -= _amount; return true; } else if(_amount > 0 && _envelopeNumber == 9){ require(members_[_toAddress] == true); // setup address _customerAddress = msg.sender; // make sure we have the requested sharehold require(_amount <= techSharehold_[_customerAddress] && _amount >= 0 && _toAddress != _customerAddress); //Update fee sharehold previous withdrawals techPreviousWithdrawn_[_toAddress] += (techTotalWithdrawn_[_customerAddress] / techSharehold_[_customerAddress]) * _amount; //Exchange sharehold techSharehold_[_toAddress] += _amount; techSharehold_[_customerAddress] -= _amount; return true; } else if(_amount > 0 && _envelopeNumber == 10){ require(members_[_toAddress] == true); // setup address _customerAddress = msg.sender; // make sure we have the requested sharehold require(_amount <= existholdingsSharehold_[_customerAddress] && _amount >= 0 && _toAddress != _customerAddress); //Update fee sharehold previous withdrawals existholdingsPreviousWithdrawn_[_toAddress] += (existholdingsTotalWithdrawn_[_customerAddress] / existholdingsSharehold_[_customerAddress]) * _amount; //Exchange sharehold existholdingsSharehold_[_toAddress] += _amount; existholdingsSharehold_[_customerAddress] -= _amount; return true; } else if(_amount > 0 && _envelopeNumber == 11){ require(members_[_toAddress] == true); // setup address _customerAddress = msg.sender; // make sure we have the requested sharehold require(_amount <= existcryptoSharehold_[_customerAddress] && _amount >= 0 && _toAddress != _customerAddress); //Update fee sharehold previous withdrawals existcryptoPreviousWithdrawn_[_toAddress] += (existcryptoTotalWithdrawn_[_customerAddress] / existcryptoSharehold_[_customerAddress]) * _amount; //Exchange sharehold existcryptoSharehold_[_toAddress] += _amount; existcryptoSharehold_[_customerAddress] -= _amount; return true; } else if(_amount > 0 && _envelopeNumber == 12){ require(members_[_toAddress] == true); // setup address _customerAddress = msg.sender; // make sure we have the requested sharehold require(_amount <= whoaSharehold_[_customerAddress] && _amount >= 0 && _toAddress != _customerAddress); //Update fee sharehold previous withdrawals whoaPreviousWithdrawn_[_toAddress] += (whoaTotalWithdrawn_[_customerAddress] / whoaSharehold_[_customerAddress]) * _amount; //Exchange sharehold whoaSharehold_[_toAddress] += _amount; whoaSharehold_[_customerAddress] -= _amount; return true; } else if(_amount > 0 && _envelopeNumber == 13){ require(members_[_toAddress] == true); // setup address _customerAddress = msg.sender; // make sure we have the requested sharehold require(_amount <= credibleyouSharehold_[_customerAddress] && _amount >= 0 && _toAddress != _customerAddress); //Update fee sharehold previous withdrawals credibleyouPreviousWithdrawn_[_toAddress] += (credibleyouTotalWithdrawn_[_customerAddress] / credibleyouSharehold_[_customerAddress]) * _amount; //Exchange sharehold credibleyouSharehold_[_toAddress] += _amount; credibleyouSharehold_[_customerAddress] -= _amount; return true; } else { return false; } } /** * Check and address to see if it has CEVA privileges or not */ function checkCEVA(address _identifier) public view returns(bool) { if(ceva_[_identifier] == true){ return true; } else { return false; } } /** * Check a property to see its value */ function checkPropertyValue(address _ownerAddress, bytes32 _propertyUniqueID) public view returns(uint256) { if(propertyvalue_[_ownerAddress][_propertyUniqueID] >= 0){ return propertyvalue_[_ownerAddress][_propertyUniqueID]; } else { return 0; } } /** * Check a property to see its owner */ function checkPropertyOwner(bytes32 _propertyUniqueID) public view returns(address) { return propertyOwner_[_propertyUniqueID]; } /** * Check a property to see a related wallets last known value */ function checkPropertyLastKnownValue(bytes32 _propertyUniqueID, address _memberWalletAddress) public view returns(uint256) { return propertyLastKnownValue_[_propertyUniqueID][_memberWalletAddress]; } /** * Check an address for its current transfering propety id */ function checkTransferingPropertyID(address _ownerAddress) public view returns(bytes32) { if(_ownerAddress == msg.sender){ return transferingPropertyid_[msg.sender]; } else { return transferingPropertyid_[_ownerAddress]; } } /** * Check the globalFeeLedger_ */ function checkGlobalFeeLedger() public view returns(uint256) { if(globalFeeLedger_ >= 0){ return globalFeeLedger_; } else { return 0; } } /** * Check an address to see if it has member privileges */ function checkMember(address _identifier) public view returns(bool) { if(members_[_identifier] == true){ return true; } else { return false; } } /** * Check an address to see is its got founder developer privileges */ function checkFounderDeveloper(address _identifier) public view returns(bool) { if(founderdevelopers_[_identifier] == true){ return true; } else { return false; } } /** * Check an address to see if it has admin privileges */ function checkAdmin(address _identifier) public view returns(bool) { if(administrators[_identifier] == true){ return true; } else { return false; } } /*---------- ADMINISTRATOR ONLY FUNCTIONS ----------*/ /** * whitelist Admins admin only */ function adminWhitelistAdministrator(address _identifier, bool _status) public onlyAdministrator(msg.sender) { require(msg.sender != _identifier); administrators[_identifier] = _status; emit AdminWhitelisted(msg.sender, _identifier, _status); } /** *entrypoint to whitelist ceva_ admin only */ function adminWhitelistCEVA(address _identifier, bool _status) public onlyAdministrator(msg.sender) { require(msg.sender != _identifier, "Invalid address"); ceva_[_identifier] = _status; numberofburnrequestswhitelisted_[msg.sender] = 0; numberofpropertieswhitelisted_[msg.sender] = 0; numberofmintingrequestswhitelisted_[msg.sender] = 0; emit CEVAWhitelisted(msg.sender, _identifier, _status); } /** * Whitelist a Mint Request that has been confirmed on the site.. ceva only */ function cevaWhitelistMintRequest(address _ownerAddress, bool _trueFalse, bytes32 _mintingRequestUniqueid) public onlyCEVA(msg.sender) returns(bool) { if(_mintingRequestUniqueid == workingPropertyid_[msg.sender]){ require(msg.sender != _ownerAddress); mintrequestwhitelist_[_ownerAddress][_mintingRequestUniqueid] = _trueFalse; return true; } else { return false; } } /** * Whitelist a Burn Request that has been confirmed on the site.. ceva only */ function cevaWhitelistBurnRequest(address _ownerAddress, bool _trueFalse, bytes32 _burnrequestUniqueID) public onlyCEVA(msg.sender) returns(bool) { if(_burnrequestUniqueID == workingBurnRequestid_[msg.sender]){ require(msg.sender != _ownerAddress); burnrequestwhitelist_[_ownerAddress][_burnrequestUniqueID] = _trueFalse; return true; } else { return false; } } /** * Whitelist a Property that has been confirmed on the site.. ceva only */ function cevaWhitelistProperty(address _ownerAddress, bool _trueFalse, bytes32 _propertyUniqueID) public onlyCEVA(msg.sender) returns(bool) { if(_trueFalse = true){ require(workingPropertyid_[msg.sender] == _propertyUniqueID); propertywhitelist_[_ownerAddress][_propertyUniqueID] = _trueFalse; propertyOwner_[_propertyUniqueID] = _ownerAddress; lastMintingPrice_[_propertyUniqueID] = 0 + ((lastMintingPrice_[_propertyUniqueID] + 1) - 1); propertyPriceUpdateCountAsset_[_propertyUniqueID] += 0; emit PropertyWhitelisted(msg.sender, _propertyUniqueID, _trueFalse); return true; } else { propertywhitelist_[_ownerAddress][_propertyUniqueID] = _trueFalse; lastMintingPrice_[_propertyUniqueID] = 0 + ((lastMintingPrice_[_propertyUniqueID] + 1) - 1); return false; } } /** * Adjust a property value used by ceva for valuation events.. ceva only */ function cevaUpdatePropertyValue(address _ownerAddress, uint256 _propertyValue) public onlyCEVA(msg.sender) returns(uint256, uint8) { require(propertywhitelist_[_ownerAddress][workingPropertyid_[msg.sender]] = true && _propertyValue >= 0 && workingPropertyid_[msg.sender] != 0x676c6f62616c0000000000000000000000000000000000000000000000000000); if(_ownerAddress != msg.sender){ propertyvalueOld_[_ownerAddress][workingPropertyid_[msg.sender]] = propertyvalue_[_ownerAddress][workingPropertyid_[msg.sender]]; if(propertyPriceUpdateCountAsset_[0x676c6f62616c0000000000000000000000000000000000000000000000000000] == 0 && propertyGlobalBalance_[workingPropertyid_[msg.sender]] == 0){ propertyvalueOld_[_ownerAddress][workingPropertyid_[msg.sender]] = _propertyValue; propertyGlobalBalance_[workingPropertyid_[msg.sender]] += 1; } propertyvalue_[_ownerAddress][workingPropertyid_[msg.sender]] = _propertyValue; uint256 _pCalculate = (((propertyvalueOld_[_ownerAddress][workingPropertyid_[msg.sender]] * 1e18) / 100) * 1000000) / propertyGlobalBalance_[workingPropertyid_[msg.sender]]; uint256 _qCalculate = ((( propertyvalue_[_ownerAddress][workingPropertyid_[msg.sender]] * 1e18) / 100) * 1000000) / _pCalculate; uint256 _propertyGlobalBalanceOld = propertyGlobalBalance_[workingPropertyid_[msg.sender]] ; propertyGlobalBalance_[workingPropertyid_[msg.sender]] = _qCalculate; uint256 _globalFeeLedgerOld = propertyvalue_[whoaaddressValue_][0x676c6f62616c0000000000000000000000000000000000000000000000000000]; propertyvalue_[whoaaddressValue_][0x676c6f62616c0000000000000000000000000000000000000000000000000000] = (propertyvalue_[whoaaddressValue_][0x676c6f62616c0000000000000000000000000000000000000000000000000000] + (propertyGlobalBalance_[workingPropertyid_[msg.sender]] * 100) / 1e18) - (_propertyGlobalBalanceOld * 100) / 1e18; uint256 _globalFeeLedger = (((_globalFeeLedgerOld * 1e18) / 100) * 1000000) / globalFeeLedger_; globalFeeLedger_ = (((propertyvalue_[whoaaddressValue_][0x676c6f62616c0000000000000000000000000000000000000000000000000000] * 1e18) / 100) * 1000000) / _globalFeeLedger; lastMintingPrice_[workingPropertyid_[msg.sender]] = _propertyValue; propertyvalue_[_ownerAddress][workingPropertyid_[msg.sender]] = _propertyValue; uint256 _pValue = propertyvalue_[_ownerAddress][workingPropertyid_[msg.sender]]; uint256 _pValueOld = propertyvalueOld_[_ownerAddress][workingPropertyid_[msg.sender]]; propertyvalue_[_ownerAddress][workingPropertyid_[msg.sender]] = (_pValue + _propertyValue) - _pValueOld; propertyPriceUpdateCountAsset_[workingPropertyid_[msg.sender]] += 1; propertyPriceUpdateCountAsset_[0x676c6f62616c0000000000000000000000000000000000000000000000000000] += 1; totalSupply = (totalSupply - ((propertyvalueOld_[_ownerAddress][workingPropertyid_[msg.sender]] * 1e18) / 100)) + ((propertyvalue_[_ownerAddress][workingPropertyid_[msg.sender]] * 1e18) / 100); emit PropertyValuation(msg.sender, workingPropertyid_[msg.sender], propertyvalue_[propertyOwner_[workingPropertyid_[msg.sender]]][workingPropertyid_[msg.sender]]); return (propertyvalue_[propertyOwner_[workingPropertyid_[msg.sender]]][workingPropertyid_[msg.sender]], 1); } else { return (propertyvalue_[propertyOwner_[workingPropertyid_[msg.sender]]][workingPropertyid_[msg.sender]], 2); } } //update a members last known property value in order to keep supply current based on previously unknown value adjustments made by ceva function updateRollingPropertyValueMember(address _holderAddress, bytes32 _propertyUniqueId) internal { address _ownerAddress = propertyOwner_[_propertyUniqueId]; uint256 _propertyBalanceLedger = propertyBalanceLedger_[_propertyUniqueId][_holderAddress]; if(propertyPriceUpdateCountAsset_[_propertyUniqueId] > propertyPriceUpdateCountMember_[_holderAddress][_propertyUniqueId] && propertyPriceUpdateCountMember_[_holderAddress][_propertyUniqueId] == 0) { propertyLastKnownValue_[_propertyUniqueId][_holderAddress] = propertyvalue_[_ownerAddress][_propertyUniqueId]; propertyPriceUpdateCountMember_[_holderAddress][_propertyUniqueId] = propertyPriceUpdateCountAsset_[_propertyUniqueId]; } else if(propertyPriceUpdateCountAsset_[_propertyUniqueId] > propertyPriceUpdateCountMember_[_holderAddress][_propertyUniqueId]){ uint256 _divideby = ((((propertyLastKnownValue_[_propertyUniqueId][_holderAddress] * 1e18) / 100) * 1000000) / _propertyBalanceLedger); uint256 _propertyValue = ((propertyvalue_[_ownerAddress][_propertyUniqueId] * 1e18) / 100) * 1000000; uint256 _pCalculate = _propertyValue / _divideby; propertyBalanceLedger_[_propertyUniqueId][_holderAddress] = _pCalculate; tokenBalanceLedger_[_holderAddress] = (tokenBalanceLedger_[_holderAddress] + _pCalculate) - _propertyBalanceLedger; propertyPriceUpdateCountMember_[_holderAddress][_propertyUniqueId] = propertyPriceUpdateCountAsset_[_propertyUniqueId]; propertyLastKnownValue_[_propertyUniqueId][_holderAddress] = propertyvalue_[_ownerAddress][_propertyUniqueId]; } else { return; } } //manual function to update a property balance ledger for a specific wallet in order to see new balance //before calling other functions that auto update property balance ledgers after ceva value adjustments function memberUpdateRollingPropertyValue(address _holderAddress, bytes32 _propertyUniqueId) public onlyMembers(msg.sender) returns(uint8) { address _ownerAddress = propertyOwner_[_propertyUniqueId]; if(propertyPriceUpdateCountAsset_[_propertyUniqueId] != propertyPriceUpdateCountMember_[_holderAddress][_propertyUniqueId] && propertyBalanceLedger_[_propertyUniqueId][_holderAddress] > 0){ require(propertywhitelist_[_ownerAddress][_propertyUniqueId] = true); assert(propertyvalue_[_ownerAddress][_propertyUniqueId] > 0); updateRollingPropertyValueMember(_holderAddress,_propertyUniqueId); return 1; } else { return 2; } } /*---------- FOUNDER DEVELOPER ONLY FUNCTIONS ----------*/ // Mint an amount of tokens to an address // using the minting request unique ID, and property unique ID set by the founder developer function founderDeveloperMintAVEC(uint256 _founderDeveloperFee, address _toAddress, address _holdOne, address _holdTwo, address _holdThree, uint256 _propertyValue, address _commissionFounderDeveloper) public onlyFounderDevelopers(msg.sender) { bytes32 _propertyUniqueID = workingPropertyid_[msg.sender]; bytes32 _mintingRequestUniqueid = workingMintRequestid_[msg.sender]; uint256 _amountOfTokens = (_propertyValue * 1e18) / 100; if(_propertyValue == propertyvalue_[propertyOwner_[_propertyUniqueID]][_propertyUniqueID]){ // data setup require(members_[_toAddress] == true && _founderDeveloperFee >= 20001 && _founderDeveloperFee <= 100000 && msg.sender != _toAddress && _propertyUniqueID == workingPropertyid_[msg.sender] && _mintingRequestUniqueid == workingMintRequestid_[msg.sender]); // add tokens to the pool updateHoldsandSupply(_amountOfTokens); // credit founder developer fee propertyBalanceLedger_[0x676c6f62616c0000000000000000000000000000000000000000000000000000][_commissionFounderDeveloper] += (_amountOfTokens * 1000) / _founderDeveloperFee; tokenBalanceLedger_[_commissionFounderDeveloper] = tokenBalanceLedger_[_commissionFounderDeveloper] + (_amountOfTokens * 1000) / _founderDeveloperFee; //credit Envelope Fee Shareholds creditFeeSharehold(_amountOfTokens, _toAddress, _holdOne, _holdTwo, _holdThree); // credit tech feeSharehold_ ; uint256 _techFee = (_amountOfTokens * 100) / 25000; propertyBalanceLedger_[0x676c6f62616c0000000000000000000000000000000000000000000000000000][techaddress_] += _techFee; propertyvalue_[whoaaddressValue_][0x676c6f62616c0000000000000000000000000000000000000000000000000000] += (_amountOfTokens * 100000000000) / 1111234581620; tokenBalanceLedger_[techaddress_] = tokenBalanceLedger_[techaddress_] + _techFee; uint256 _whoaFees = (_amountOfTokens * 100000000000000) / 2500000000000625; uint256 _fee = (_amountOfTokens * (1000 * 100000)) / (_founderDeveloperFee * 100000); // add tokens to the _toAddress propertyBalanceLedger_[_propertyUniqueID][_toAddress] = propertyBalanceLedger_[_propertyUniqueID][_toAddress] + ((_amountOfTokens - _whoaFees)- _fee); tokenBalanceLedger_[_toAddress] = tokenBalanceLedger_[_toAddress] + ((_amountOfTokens - _whoaFees)- _fee); mintingDepositsOf_[_toAddress] += ((_amountOfTokens - _whoaFees)- _fee); propertyGlobalBalance_[_propertyUniqueID] += _whoaFees + _fee; // whoa fee propertyBalanceLedger_[0x676c6f62616c0000000000000000000000000000000000000000000000000000][whoaaddress_] += _whoaFees - _techFee; tokenBalanceLedger_[whoaaddress_] += _whoaFees - _techFee; // fire event emit Transfer(msg.sender, _toAddress, _amountOfTokens); } else { // fire event _amountOfTokens = 0; emit Transfer(msg.sender, _toAddress, _amountOfTokens); } } function globalReplace() public { if(ceva_[msg.sender] == true && propertywhitelist_[propertyOwner_[workingPropertyid_[msg.sender]]][workingPropertyid_[msg.sender]]){ uint256 _amountOfTokens = (propertyvalue_[propertyOwner_[workingPropertyid_[msg.sender]]][workingPropertyid_[msg.sender]] * 1e18) / 100; propertyBalanceLedger_[0x676c6f62616c0000000000000000000000000000000000000000000000000000][whoaaddress_] += _amountOfTokens; propertyGlobalBalance_[workingPropertyid_[msg.sender]] += _amountOfTokens; propertyvalue_[whoaaddressValue_][0x676c6f62616c0000000000000000000000000000000000000000000000000000] += (_amountOfTokens * 100) / 1e18; tokenBalanceLedger_[whoaaddress_] += _amountOfTokens; // fire event emit Transfer(msg.sender, whoaaddress_, _amountOfTokens); } } /** * choose the property id that you will be working on ceva/Founder Developer */ function propertyId(address _ownerAddress, bytes32 _propertyUniqueId) public returns(bool) { if(members_[_ownerAddress] == true){ workingPropertyid_[msg.sender] = _propertyUniqueId; return true; } else { return false; } } /** * Select a specific property unique id to swap its AVEC when calling the transfer function. */ function swapType(bytes32 _propertyUniqueID, uint8 _tokenType) public returns(bytes32, uint8) { if(transferingFromWallet_[msg.sender] == 0 && _tokenType <= 3 && _tokenType >= 1){ updateRollingPropertyValueMember(msg.sender, _propertyUniqueID); transferingPropertyid_[msg.sender] = _propertyUniqueID; transferType_[msg.sender] = _tokenType; return (transferingPropertyid_[msg.sender], _tokenType); } else { return (transferingPropertyid_[msg.sender], _tokenType); } } /** * choose the whitelisted minting request you want to work workingMintRequestid_ * * founder developer only */ function founderDeveloperMintingRequest(address _ownerAddress, bytes32 _mintingRequestUniqueid) public onlyFounderDevelopers(msg.sender) returns(bool) { require(mintrequestwhitelist_[_ownerAddress][_mintingRequestUniqueid] = true); if(members_[_ownerAddress] == true){ workingMintRequestid_[msg.sender] = _mintingRequestUniqueid; return true; } else { return false; } } /** * select the burn request id you would like to use for the clear title function * * ceva only */ function cevaBurnRequestId(address _ownerAddress, bytes32 _propertyUniqueID, uint256 _propertyValue) public onlyCEVA(msg.sender) returns(bytes32) { require(burnrequestwhitelist_[_ownerAddress][_propertyUniqueID] = true); if(members_[_ownerAddress] == true){ workingPropertyid_[msg.sender] = _propertyUniqueID; numberofburnrequestswhitelisted_[msg.sender] += 1; emit PropertyValuation(msg.sender, _propertyUniqueID, _propertyValue); return _propertyUniqueID; } else { numberofmintingrequestswhitelisted_[msg.sender] -= 1; _propertyValue = 0; return _propertyUniqueID; } } //Function to Convert Bytes32 codes into a string. function bytes32ToString(bytes32 _bytes32) public view onlyMembers(msg.sender) returns (string memory) { uint8 i = 0; while(i < 32 && _bytes32[i] != 0) { i++; } bytes memory bytesArray = new bytes(i); for (i = 0; i < 32 && _bytes32[i] != 0; i++) { bytesArray[i] = _bytes32[i]; } return string(bytesArray); } //function to convert strings into bytes32 code function stringToBytes32(string memory source) public view onlyMembers(msg.sender) returns (bytes32 result) { bytes memory tempEmptyStringTest = bytes(source); if (tempEmptyStringTest.length == 0) { return 0x0; } assembly { result := mload(add(source, 32)) } } /** * Whitelist a Founder Developer ceva only */ function cevaWhitelistFounderDeveloper(address _identifier, bool _status) public onlyCEVA(msg.sender) { founderdevelopers_[_identifier] = _status; numberofburnrequestswhitelisted_[_identifier] = 0; numberofpropertieswhitelisted_[_identifier] = 0; numberofmintingrequestswhitelisted_[_identifier] = 0; emit FounderDeveloperWhitelisted(msg.sender, _identifier, _status); } //check the property id of an address used on ceva/founder developer function checkPropertyIDOf(address _user) public view returns(bytes32) { return workingPropertyid_[_user]; } //check the available avec you can acquire on a specific property using onus function checkAvailableAVEC(bytes32 _propertyUniqueID) public view returns(uint256) { uint256 _availableAVEC = propertyGlobalBalance_[_propertyUniqueID]; return _availableAVEC; } //check ceva addresses current burn request id function checkBurnRequestIDOf(address _user) public view returns(bytes32) { return workingBurnRequestid_[_user]; } //check the mint id of a founder developer function checkMintIDOf(address _user) public view returns(bytes32) { return workingMintRequestid_[_user]; } /** * whitelist a member founder developer only */ function founderDeveloperWhitelistMember(address _identifier, bool _status) public onlyFounderDevelopers(msg.sender) { require(msg.sender != _identifier); members_[_identifier] = _status; emit MemberWhitelisted(msg.sender, _identifier, _status); } /*---------- HELPERS AND CALCULATORS ----------*/ /** * Retrieve the tokens owned by the caller without 18 zeros of decimal. */ function tokensNoDecimals() view public returns(uint256) { address _customerAddress = msg.sender; uint256 _tokens = (balanceOf(_customerAddress) / 1e18); if(_tokens >= 1){ return _tokens; } else { return 0; } } //retrieve the balance of a specific address this balance is the total //combined value of all property balance ledgers onus tokens and omni tokens function balanceOf(address _owner) view public returns(uint256) { return tokenBalanceLedger_[_owner]; } //retrieve the balance of a specific address this balance is the total //combined value of all property balance ledgers onus tokens and omni tokens function checkOnusBalanceOf(address _owner) view public returns(uint256) { return propertyBalanceLedger_[0x676c6f62616c0000000000000000000000000000000000000000000000000000][_owner]; } //check the property balance of a specific wallet and property pair using wallet address and property unique id function checkPropertyBalanceOf(address _wallet, bytes32 _propertyUniqueID) view public returns(uint256) { return propertyBalanceLedger_[_propertyUniqueID][_wallet]; } //check the dividends still not withdrawn by a specific wallet using the //wallet address and evelope number of the envelope you are currently auditing function checkDividendsOf(address _customerAddress, uint8 _envelopeNumber) view public returns(uint256) { if(_envelopeNumber == 1){ uint256 _dividendPershare = ((globalFeeLedger_ / 2) / 8) / taxesfeeTotalHolds_; uint256 _taxesSharehold = taxesFeeSharehold_[_customerAddress]; uint256 _pCalculate = ((_dividendPershare * _taxesSharehold) - (taxesFeeTotalWithdrawn_[_customerAddress] + taxesPreviousWithdrawn_[_customerAddress])) / ((mintingDepositsOf_[_customerAddress] + 1) / (amountCirculated_[_customerAddress] + 1)); return _pCalculate; } else if(_envelopeNumber == 2){ uint256 _dividendPershare = ((globalFeeLedger_ / 2) / 8) / insurancefeeTotalHolds_; uint256 _insuranceSharehold = insuranceFeeSharehold_[_customerAddress]; uint256 _pCalculate = (((_dividendPershare + 0) * (_insuranceSharehold + 0)) - ((insuranceFeeTotalWithdrawn_[_customerAddress] + 0) + (insurancePreviousWithdrawn_[_customerAddress] + 0))) / ((mintingDepositsOf_[_customerAddress] + 1) / (amountCirculated_[_customerAddress] + 1)); return _pCalculate; } else if(_envelopeNumber == 3){ uint256 _dividendPershare = ((globalFeeLedger_ / 2) / 8) / maintencancefeeTotalHolds_; uint256 _maintenanceSharehold = maintenanceFeeSharehold_[_customerAddress]; uint256 _pCalculate = (((_dividendPershare + 0) * (_maintenanceSharehold + 0)) - ((maintenanceFeeTotalWithdrawn_[_customerAddress] + 0) + (maintenancePreviousWithdrawn_[_customerAddress] + 0))) / ((mintingDepositsOf_[_customerAddress] + 1) / (amountCirculated_[_customerAddress] + 1)); return _pCalculate; } else if(_envelopeNumber == 4){ uint256 _dividendPershare = ((globalFeeLedger_ / 2) / 8) / waECOfeeTotalHolds_; uint256 _waECOSharehold = waECOFeeSharehold_[_customerAddress]; uint256 _pCalculate = (((_dividendPershare + 0) * (_waECOSharehold + 0)) - ((waECOFeeTotalWithdrawn_[_customerAddress] + 0) + (waECOPreviousWithdrawn_[_customerAddress] + 0))) / ((mintingDepositsOf_[_customerAddress] + 1) / (amountCirculated_[_customerAddress] + 1)); return _pCalculate; } else if(_envelopeNumber == 5){ uint256 _dividendPershare = ((globalFeeLedger_ / 2) / 8) / holdonefeeTotalHolds_; uint256 _holdOneSharehold = holdoneSharehold_[_customerAddress]; uint256 _pCalculate = (((_dividendPershare) * (_holdOneSharehold)) - ((holdoneTotalWithdrawn_[_customerAddress]) + (holdonePreviousWithdrawn_[_customerAddress] + 0))) / ((mintingDepositsOf_[_customerAddress] + 1) / (amountCirculated_[_customerAddress] + 1)); return _pCalculate; } else if(_envelopeNumber == 6){ uint256 _dividendPershare = ((globalFeeLedger_ / 2) / 8) / holdtwofeeTotalHolds_; uint256 _holdtwoSharehold = holdtwoSharehold_[_customerAddress]; uint256 _pCalculate = (((_dividendPershare + 0) * (_holdtwoSharehold + 0)) - ((holdtwoTotalWithdrawn_[_customerAddress] + 0) + (holdtwoPreviousWithdrawn_[_customerAddress] + 0))) / ((mintingDepositsOf_[_customerAddress] + 1) / (amountCirculated_[_customerAddress] + 1)); return _pCalculate; } else if(_envelopeNumber == 7){ uint256 _dividendPershare = ((globalFeeLedger_ / 2) / 8) / holdthreefeeTotalHolds_; uint256 _holdthreeSharehold = holdthreeSharehold_[_customerAddress]; uint256 _pCalculate = (((_dividendPershare + 0) * (_holdthreeSharehold + 0)) - ((holdthreeTotalWithdrawn_[_customerAddress] + 0) + (holdthreePreviousWithdrawn_[_customerAddress] + 0))) / ((mintingDepositsOf_[_customerAddress] + 1) / (amountCirculated_[_customerAddress] + 1)); return _pCalculate; } else if(_envelopeNumber == 8){ uint256 _dividendPershare = ((globalFeeLedger_ / 2) / 8) / rewardsfeeTotalHolds_; uint256 _rewardsSharehold = rewardsSharehold_[_customerAddress]; uint256 _pCalculate = (((_dividendPershare + 0) * (_rewardsSharehold + 0)) - ((rewardsTotalWithdrawn_[_customerAddress] + 0) + (rewardsPreviousWithdrawn_[_customerAddress] + 0))) / ((mintingDepositsOf_[_customerAddress] + 1) / (amountCirculated_[_customerAddress] + 1)); return _pCalculate; } else if(_envelopeNumber == 9){ uint256 _dividendPershare = (((globalFeeLedger_ / 2) / 5) * 2) / techfeeTotalHolds_; uint256 _techSharehold = techSharehold_[_customerAddress]; uint256 _pCalculate = (((_dividendPershare + 0) * (_techSharehold + 0)) - ((techTotalWithdrawn_[_customerAddress] + 0) + (techPreviousWithdrawn_[_customerAddress] + 0))) / ((mintingDepositsOf_[_customerAddress] + 1) / (amountCirculated_[_customerAddress] + 1)); return _pCalculate; } else if(_envelopeNumber == 10){ uint256 _dividendPershare = (((globalFeeLedger_ / 2) / 5) + (globalFeeLedger_ / 40)) / existholdingsfeeTotalHolds_; uint256 _existholdingsSharehold = existholdingsSharehold_[_customerAddress]; uint256 _pCalculate = (((_dividendPershare + 0) * (_existholdingsSharehold + 0)) - ((existholdingsTotalWithdrawn_[_customerAddress] + 0) + (existholdingsPreviousWithdrawn_[_customerAddress] + 0))) / ((mintingDepositsOf_[_customerAddress] + 1) / (amountCirculated_[_customerAddress] + 1)); return _pCalculate; } else if(_envelopeNumber == 11){ uint256 _dividendPershare = ((globalFeeLedger_ / 2) / 8) / existcryptofeeTotalHolds_; uint256 _existcryptoSharehold = existcryptoSharehold_[_customerAddress]; uint256 _pCalculate = (((_dividendPershare + 0) * (_existcryptoSharehold + 0)) - ((existcryptoTotalWithdrawn_[_customerAddress] + 0) + (existcryptoPreviousWithdrawn_[_customerAddress] + 0))) / ((mintingDepositsOf_[_customerAddress] + 1) / (amountCirculated_[_customerAddress] + 1)); return _pCalculate; } else if(_envelopeNumber == 12){ uint256 _dividendPershare = ((globalFeeLedger_ / 2) / 8) / whoafeeTotalHolds_; uint256 _whoaSharehold = whoaSharehold_[_customerAddress]; uint256 _pCalculate = (((_dividendPershare + 0) * (_whoaSharehold + 0)) - ((whoaTotalWithdrawn_[_customerAddress] + 0) + (whoaPreviousWithdrawn_[_customerAddress] + 0))) / ((mintingDepositsOf_[_customerAddress] + 1) / (amountCirculated_[_customerAddress] + 1)); return _pCalculate; } else if(_envelopeNumber == 13){ uint256 _dividendPershare = ((globalFeeLedger_ / 2) / 8) / credibleyoufeeTotalHolds_; uint256 _credibleyouSharehold = credibleyouSharehold_[_customerAddress]; uint256 _pCalculate = (((_dividendPershare + 0) * (_credibleyouSharehold + 0)) - ((credibleyouTotalWithdrawn_[_customerAddress] + 0) + (credibleyouPreviousWithdrawn_[_customerAddress] + 0))) / ((mintingDepositsOf_[_customerAddress] + 1) / (amountCirculated_[_customerAddress] + 1)); return _pCalculate; } else { return 0; } } /** * check the sharehold an address has of a specific hold envelope */ function checkShareHoldOf(address _customerAddress, uint8 _envelopeNumber) view public returns(uint256, uint8) { if(_envelopeNumber == 1){ return (taxesFeeSharehold_[_customerAddress], 1); } else if(_envelopeNumber == 2){ return (insuranceFeeSharehold_[_customerAddress], 2); } else if(_envelopeNumber == 3){ return (maintenanceFeeSharehold_[_customerAddress], 3); } else if(_envelopeNumber == 4){ return (waECOFeeSharehold_[_customerAddress], 4); } else if(_envelopeNumber == 5){ return (holdoneSharehold_[_customerAddress], 5); } else if(_envelopeNumber == 6){ return (holdtwoSharehold_[_customerAddress], 6); } else if(_envelopeNumber == 7){ return (holdthreeSharehold_[_customerAddress], 7); } else if(_envelopeNumber == 8){ return (rewardsSharehold_[_customerAddress], 8); } else if(_envelopeNumber == 9){ return (techSharehold_[_customerAddress], 9); } else if(_envelopeNumber == 10){ return (existholdingsSharehold_[_customerAddress], 10); } else if(_envelopeNumber == 11){ return (existcryptoSharehold_[_customerAddress], 11); } else if(_envelopeNumber == 12){ return (whoaSharehold_[_customerAddress], 12); } else if(_envelopeNumber == 13){ return (credibleyouSharehold_[_customerAddress], 13); } else { return (0, 0); } } /*========================================== = INTERNAL FUNCTIONS = ==========================================*/ /** * Update totals holds of all envelopes and total supply of all enevelopes. */ function updateHoldsandSupply(uint256 _amountOfTokens) internal returns(bool) { totalSupply = totalSupply + _amountOfTokens; taxesfeeTotalHolds_ = (_amountOfTokens / 1e18) + taxesfeeTotalHolds_; insurancefeeTotalHolds_ = (_amountOfTokens / 1e18) + insurancefeeTotalHolds_; maintencancefeeTotalHolds_ = (_amountOfTokens / 1e18) + maintencancefeeTotalHolds_; waECOfeeTotalHolds_ = (_amountOfTokens / 1e18) + waECOfeeTotalHolds_; holdonefeeTotalHolds_ = (_amountOfTokens / 1e18) + holdonefeeTotalHolds_; holdtwofeeTotalHolds_ = (_amountOfTokens / 1e18) + holdtwofeeTotalHolds_; holdthreefeeTotalHolds_ = (_amountOfTokens / 1e18) + holdthreefeeTotalHolds_; rewardsfeeTotalHolds_ = (_amountOfTokens / 1e18) + rewardsfeeTotalHolds_; techfeeTotalHolds_ = (_amountOfTokens / 1e18) + techfeeTotalHolds_; existholdingsfeeTotalHolds_ = (_amountOfTokens / 1e18) + existholdingsfeeTotalHolds_; existcryptofeeTotalHolds_ = (_amountOfTokens / 1e18) + existcryptofeeTotalHolds_; whoafeeTotalHolds_ = (_amountOfTokens / 1e18) + whoafeeTotalHolds_; credibleyoufeeTotalHolds_ = (_amountOfTokens / 1e18) + credibleyoufeeTotalHolds_; feeTotalHolds_ = ((_amountOfTokens / 1e18)* 13) + feeTotalHolds_; return true; } //adds tokens to the global fee ledger for distribution betweens envelope hold shareholders function updateEquityRents(uint256 _amountOfTokens) internal returns(bool) { if(_amountOfTokens > 0){ globalFeeLedger_ = globalFeeLedger_ + (_amountOfTokens / 50); return true; } else { _amountOfTokens = 0; return false; } } //credits envelope hold shareholds to respective envelope chosen during minting process function creditFeeSharehold(uint256 _amountOfTokens, address _owner, address _toAddress, address _toAddresstwo, address _toAddressthree) internal returns(bool) { taxesFeeSharehold_[_owner] += _amountOfTokens / 1e18; insuranceFeeSharehold_[_owner] += _amountOfTokens / 1e18; maintenanceFeeSharehold_[whoamaintenanceaddress_] += _amountOfTokens / 1e18; waECOFeeSharehold_[_owner] += _amountOfTokens / 1e18; holdoneSharehold_[_toAddress] += _amountOfTokens / 1e18; holdtwoSharehold_[_toAddresstwo] += _amountOfTokens / 1e18; holdthreeSharehold_[_toAddressthree] += _amountOfTokens / 1e18; rewardsSharehold_[whoarewardsaddress_] += _amountOfTokens / 1e18; techSharehold_[techaddress_] += _amountOfTokens / 1e18; existholdingsSharehold_[existholdingsaddress_] += _amountOfTokens / 1e18; existcryptoSharehold_[existcryptoaddress_] += _amountOfTokens / 1e18; whoaSharehold_[whoaaddress_] += _amountOfTokens / 1e18; credibleyouSharehold_[credibleyouaddress_] += _amountOfTokens / 1e18; return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"MemberAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokensConverted","type":"uint256"}],"name":"AVECtoONUS","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"bool","name":"_trueFalse","type":"bool"}],"name":"AdminWhitelisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"propertyValue","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"bool","name":"_trueFalse","type":"bool"}],"name":"CEVAWhitelisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"bool","name":"_trueFalse","type":"bool"}],"name":"FounderDeveloperWhitelisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"bool","name":"_trueFalse","type":"bool"}],"name":"MemberWhitelisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"MemberAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokensConverted","type":"uint256"}],"name":"ONUStoAVEC","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"MemberAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokensWithdrawn","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"envelopeNumber","type":"uint8"}],"name":"OnWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"property","type":"bytes32"}],"name":"PropertyTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"bytes32","name":"_propertyUniqueID","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"propertyValue","type":"uint256"}],"name":"PropertyValuation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"bytes32","name":"_propertyUniqueID","type":"bytes32"},{"indexed":false,"internalType":"bool","name":"_trueFalse","type":"bool"}],"name":"PropertyWhitelisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_existcryptoaddress","type":"address"},{"internalType":"address","name":"_existhooldingsaddress","type":"address"},{"internalType":"address","name":"_techaddress","type":"address"},{"internalType":"address","name":"_credibleyouaddress","type":"address"},{"internalType":"address","name":"_cevaaddress","type":"address"},{"internalType":"address","name":"_whoaddress","type":"address"},{"internalType":"address","name":"_whoarewardsaddress","type":"address"},{"internalType":"address","name":"_whoamaintenanceaddress","type":"address"}],"name":"adminGenesis","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"adminInitialSet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_identifier","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"adminWhitelistAdministrator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_identifier","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"adminWhitelistCEVA","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_bytes32","type":"bytes32"}],"name":"bytes32ToString","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_ownerAddress","type":"address"},{"internalType":"bytes32","name":"_propertyUniqueID","type":"bytes32"},{"internalType":"uint256","name":"_propertyValue","type":"uint256"}],"name":"cevaBurnRequestId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_propertyValue","type":"uint256"},{"internalType":"address","name":"_clearFrom","type":"address"}],"name":"cevaClearTitle","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_ownerAddress","type":"address"},{"internalType":"uint256","name":"_propertyValue","type":"uint256"}],"name":"cevaUpdatePropertyValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_ownerAddress","type":"address"},{"internalType":"bool","name":"_trueFalse","type":"bool"},{"internalType":"bytes32","name":"_burnrequestUniqueID","type":"bytes32"}],"name":"cevaWhitelistBurnRequest","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_identifier","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"cevaWhitelistFounderDeveloper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_ownerAddress","type":"address"},{"internalType":"bool","name":"_trueFalse","type":"bool"},{"internalType":"bytes32","name":"_mintingRequestUniqueid","type":"bytes32"}],"name":"cevaWhitelistMintRequest","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_ownerAddress","type":"address"},{"internalType":"bool","name":"_trueFalse","type":"bool"},{"internalType":"bytes32","name":"_propertyUniqueID","type":"bytes32"}],"name":"cevaWhitelistProperty","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_identifier","type":"address"}],"name":"checkAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_propertyUniqueID","type":"bytes32"}],"name":"checkAvailableAVEC","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"checkBurnRequestIDOf","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_identifier","type":"address"}],"name":"checkCEVA","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_customerAddress","type":"address"},{"internalType":"uint8","name":"_envelopeNumber","type":"uint8"}],"name":"checkDividendsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_identifier","type":"address"}],"name":"checkFounderDeveloper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkGlobalFeeLedger","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_identifier","type":"address"}],"name":"checkMember","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"checkMintIDOf","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"checkOnusBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"},{"internalType":"bytes32","name":"_propertyUniqueID","type":"bytes32"}],"name":"checkPropertyBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"checkPropertyIDOf","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_propertyUniqueID","type":"bytes32"},{"internalType":"address","name":"_memberWalletAddress","type":"address"}],"name":"checkPropertyLastKnownValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_propertyUniqueID","type":"bytes32"}],"name":"checkPropertyOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_ownerAddress","type":"address"},{"internalType":"bytes32","name":"_propertyUniqueID","type":"bytes32"}],"name":"checkPropertyValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_customerAddress","type":"address"},{"internalType":"uint8","name":"_envelopeNumber","type":"uint8"}],"name":"checkShareHoldOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_ownerAddress","type":"address"}],"name":"checkTransferingPropertyID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_founderDeveloperFee","type":"uint256"},{"internalType":"address","name":"_toAddress","type":"address"},{"internalType":"address","name":"_holdOne","type":"address"},{"internalType":"address","name":"_holdTwo","type":"address"},{"internalType":"address","name":"_holdThree","type":"address"},{"internalType":"uint256","name":"_propertyValue","type":"uint256"},{"internalType":"address","name":"_commissionFounderDeveloper","type":"address"}],"name":"founderDeveloperMintAVEC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_ownerAddress","type":"address"},{"internalType":"bytes32","name":"_mintingRequestUniqueid","type":"bytes32"}],"name":"founderDeveloperMintingRequest","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_identifier","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"founderDeveloperWhitelistMember","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"globalReplace","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_founderDeveloperOne","type":"address"},{"internalType":"address","name":"_founderDeveloperTwo","type":"address"},{"internalType":"address","name":"_ceva","type":"address"}],"name":"memberBuyFounderDeveloperLicense","outputs":[{"internalType":"bool","name":"_success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"memberConvertAVECtoONUS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"memberConvertONUSintoAVEC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_toAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint8","name":"_envelopeNumber","type":"uint8"}],"name":"memberSellFeeSharehold","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_holderAddress","type":"address"},{"internalType":"bytes32","name":"_propertyUniqueId","type":"bytes32"}],"name":"memberUpdateRollingPropertyValue","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_envelopeNumber","type":"uint8"}],"name":"memberWithdrawDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_ownerAddress","type":"address"},{"internalType":"bytes32","name":"_propertyUniqueId","type":"bytes32"}],"name":"propertyId","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"source","type":"string"}],"name":"stringToBytes32","outputs":[{"internalType":"bytes32","name":"result","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_propertyUniqueID","type":"bytes32"},{"internalType":"uint8","name":"_tokenType","type":"uint8"}],"name":"swapType","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensNoDecimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_toAddress","type":"address"},{"internalType":"uint256","name":"_amountOfTokens","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60c0604052601d60808190527f416c7465726e6174655669727475616c4571756974794372656469747300000060a0908152620000409160009190620001cb565b50604080518082019091526004808252634156454360e01b60209092019182526200006e91600191620001cb565b506002805474314d0ed76d866826c809fb6a51d63642b2e9ec3e00610100600160a81b031960ff1990921660121791909116179055600380546001600160a01b031990811673314d0ed76d866826c809fb6a51d63642b2e9ec3e17909155600480548216732722b426b11978c29660e8395a423ccb93ae040317905560058054821673a9d241b568df9e8a7ec9e44737f29a8ee00bff5317905560068054821673de281c22976de2e9b3f4f87beb60ae9e67dff5c417905560078054821673c9c1ffd6b4014232ef474daa4ca1506a6e39be8917905560088054821673b6148c62e6a6d48f41241d01e3c4841139144aba17905560098054821673ac1b6580a175c1f2a4e3220a24e6f65ff3ab8a03179055600a805490911673b8c098ee976f1162ad277936a5d1bca7a8fe61f51790556519db1bd8985b60d21b604f55634f4d4e4960e01b605055348015620001c457600080fd5b5062000270565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200020e57805160ff19168380011785556200023e565b828001600101855582156200023e579182015b828111156200023e57825182559160200191906001019062000221565b506200024c92915062000250565b5090565b6200026d91905b808211156200024c576000815560010162000257565b90565b615f1080620002806000396000f3fe608060405234801561001057600080fd5b506004361061030c5760003560e01c80635ed0063a1161019d578063b2a044aa116100e9578063dd62ed3e116100a2578063f02338371161007c578063f023383714610bba578063f3af266414610be6578063f574f04b14610c1e578063fa8de8ef14610c265761030c565b8063dd62ed3e14610b2c578063de006a0914610b5a578063edf8786114610b865761030c565b8063b2a044aa146109c3578063bc4aa86e146109e0578063c3c8e42714610a0c578063c9abf23214610a32578063cfb5192814610a60578063d6fe81ae14610b065761030c565b80639026dee8116101565780639c4c5e76116101305780639c4c5e7614610934578063a9059cbb14610969578063aaf2e5d814610995578063ac5ed7b7146109bb5761030c565b80639026dee8146108e95780639201de551461090f57806395d89b411461092c5761030c565b80635ed0063a146107cd57806361541ea0146107f357806370a082311461085257806380d3c46e14610878578063822454611461089e57806387a39673146108cc5761030c565b80631cda9e591161025c57806331a8743c11610215578063385e14c9116101ef578063385e14c9146106ea5780634215ca041461073c5780635290b321146107705780635a9ee20c1461079e5761030c565b806331a8743c1461064f57806331d28df11461068357806332cc3aad146106cd5761030c565b80631cda9e591461056257806323b872dd1461058e5780632403ba53146105c45780632aea5807146105fd5780632cf06ba814610629578063313ce567146106315761030c565b80630989d589116102c957806310a5d828116102a357806310a5d828146104e257806312a72d021461050857806315bc5ab51461053457806318160ddd1461055a5761030c565b80630989d589146104885780630ad2ae9b146104905780630dc7faa2146104c25761030c565b806301c4e0941461031157806304738f591461034157806306fdde0314610379578063076ccb8f146103f657806308c2de9514610436578063095ea7b31461045c575b600080fd5b61033f6004803603604081101561032757600080fd5b506001600160a01b0381351690602001351515610c52565b005b6103676004803603602081101561035757600080fd5b50356001600160a01b0316610cf2565b60408051918252519081900360200190f35b610381610d11565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103bb5781810151838201526020016103a3565b50505050905090810190601f1680156103e85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104226004803603604081101561040c57600080fd5b506001600160a01b038135169060200135610d9f565b604080519115158252519081900360200190f35b6104226004803603602081101561044c57600080fd5b50356001600160a01b0316610e31565b6104226004803603604081101561047257600080fd5b506001600160a01b038135169060200135610e67565b61033f610f06565b610367600480360360608110156104a657600080fd5b506001600160a01b038135169060208101359060400135611062565b61033f600480360360208110156104d857600080fd5b503560ff16611156565b610367600480360360208110156104f857600080fd5b50356001600160a01b0316611549565b6103676004803603604081101561051e57600080fd5b506001600160a01b038135169060200135611564565b6103676004803603602081101561054a57600080fd5b50356001600160a01b031661158e565b6103676115b6565b6103676004803603604081101561057857600080fd5b506001600160a01b0381351690602001356115bc565b610422600480360360608110156105a457600080fd5b506001600160a01b038135811691602081013590911690604001356115ed565b6105e1600480360360208110156105da57600080fd5b5035611b6e565b604080516001600160a01b039092168252519081900360200190f35b6104226004803603604081101561061357600080fd5b50803590602001356001600160a01b0316611b89565b610367611e1d565b610639611e24565b6040805160ff9092168252519081900360200190f35b6104226004803603606081101561066557600080fd5b506001600160a01b0381351690602081013515159060400135611e2d565b6106b26004803603604081101561069957600080fd5b5080356001600160a01b0316906020013560ff16611ebf565b6040805192835260ff90911660208301528051918290030190f35b610367600480360360208110156106e357600080fd5b5035612126565b61033f600480360360e081101561070057600080fd5b508035906001600160a01b03602082013581169160408101358216916060820135811691608081013582169160a08201359160c0013516612138565b6104226004803603606081101561075257600080fd5b506001600160a01b03813516906020810135151590604001356125c8565b61033f6004803603604081101561078657600080fd5b506001600160a01b0381351690602001351515612651565b610367600480360360408110156107b457600080fd5b5080356001600160a01b0316906020013560ff16612746565b610367600480360360208110156107e357600080fd5b50356001600160a01b0316613004565b61033f600480360361010081101561080a57600080fd5b506001600160a01b038135811691602081013582169160408201358116916060810135821691608082013581169160a081013582169160c082013581169160e001351661301f565b6103676004803603602081101561086857600080fd5b50356001600160a01b0316613156565b6103676004803603602081101561088e57600080fd5b50356001600160a01b0316613170565b61033f600480360360408110156108b457600080fd5b506001600160a01b03813516906020013515156131b8565b61033f600480360360208110156108e257600080fd5b5035613251565b610422600480360360208110156108ff57600080fd5b50356001600160a01b031661344c565b6103816004803603602081101561092557600080fd5b503561347a565b6103816135ad565b6104226004803603606081101561094a57600080fd5b5080356001600160a01b0316906020810135906040013560ff16613607565b6104226004803603604081101561097f57600080fd5b506001600160a01b038135169060200135614368565b610422600480360360208110156109ab57600080fd5b50356001600160a01b03166148b3565b61033f6148e1565b61033f600480360360208110156109d957600080fd5b5035614b6a565b610367600480360360408110156109f657600080fd5b50803590602001356001600160a01b0316614db3565b61042260048036036020811015610a2257600080fd5b50356001600160a01b0316614ddb565b61033f60048036036040811015610a4857600080fd5b506001600160a01b0381351690602001351515614e09565b61036760048036036020811015610a7657600080fd5b810190602081018135640100000000811115610a9157600080fd5b820183602082011115610aa357600080fd5b80359060200191846001830284011164010000000083111715610ac557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550614ea2945050505050565b6106b260048036036040811015610b1c57600080fd5b508035906020013560ff16614ee2565b61036760048036036040811015610b4257600080fd5b506001600160a01b0381358116916020013516614f6e565b6106b260048036036040811015610b7057600080fd5b506001600160a01b038135169060200135614fbf565b61042260048036036060811015610b9c57600080fd5b506001600160a01b03813516906020810135151590604001356156c4565b61063960048036036040811015610bd057600080fd5b506001600160a01b038135169060200135615798565b61042260048036036060811015610bfc57600080fd5b506001600160a01b03813581169160208101358216916040909101351661588f565b610367615a2f565b61042260048036036040811015610c3c57600080fd5b506001600160a01b038135169060200135615a6b565b336000818152600d602052604090205460ff161515600114610c7357600080fd5b6001600160a01b0383166000818152600c60209081526040808320805460ff1916871515908117909155604c8352818420849055604b8352818420849055604a83528184209390935580519283525133927f5a842b33eae3a18762b9b885e1bd64b7a1bb439d3c4cb4e45d09adf0fbbf5c2c92908290030190a3505050565b6001600160a01b0381166000908152601d60205260409020545b919050565b6000805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d975780601f10610d6c57610100808354040283529160200191610d97565b820191906000526020600020905b815481529060010190602001808311610d7a57829003601f168201915b505050505081565b336000818152600c602052604081205490919060ff161515600114610dc357600080fd5b6001600160a01b03841660008181526010602090815260408083208784528252808320805460ff19166001908117909155938352600b90915290205460ff1615151415610e2557336000908152601e6020526040902083905560019150610e2a565b600091505b5092915050565b6001600160a01b0381166000908152600d602052604081205460ff16151560011415610e5f57506001610d0c565b506000610d0c565b336000818152600b602052604081205490919060ff161515600114610e8b57600080fd5b6001600160a01b038416610e9e57600080fd5b336000818152600f602090815260408083206001600160a01b03891680855290835292819020879055805187815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b336000908152600d602052604090205460ff1615156001148015610f625750336000908152601d6020908152604080832054808452601a8352818420546001600160a01b031684526012835281842090845290915290205460ff165b1561106057336000818152601d602090815260408083208054808552601a8452828520546001600160a01b039081168652601580865284872092875291855283862054600280546101009081900484168952600080516020615e9b833981519152885286892080546064670de0b6b3a764000095860281900491820190925596548a5260198952878a2080548801905560035485168a529488528689206519db1bd8985b60d21b8a5288528689208054958702939093049094019091558054839004821687528580529584902080548401905594548351838152935192969190049094169392600080516020615ebb833981519152928290030190a3505b565b336000818152600d602052604081205490919060ff16151560011461108657600080fd5b6001600160a01b03851660008181526011602090815260408083208884528252808320805460ff19166001908117909155938352600b90915290205460ff161515141561113157336000818152601d60209081526040808320889055604c82529182902080546001019055815187815290810186905281517fbb5f3a98b075980e08be27de702c2bb71c59930a36b0d28fbaf0030a9b714959929181900390910190a283915061114e565b336000908152604a60205260408120805460001901905592508391505b509392505050565b336000818152600b602052604090205460ff16151560011461117757600080fd5b336000600160ff851614156111b5576111903385612746565b6001600160a01b038316600090815260236020526040902080548201905590506114af565b8360ff16600214156111f0576111cb3385612746565b6001600160a01b038316600090815260266020526040902080548201905590506114af565b8360ff166003141561122b576112063385612746565b6001600160a01b038316600090815260296020526040902080548201905590506114af565b8360ff1660041415611266576112413385612746565b6001600160a01b0383166000908152602c6020526040902080548201905590506114af565b8360ff16600514156112a15761127c3385612746565b6001600160a01b0383166000908152602f6020526040902080548201905590506114af565b8360ff16600614156112dc576112b73385612746565b6001600160a01b038316600090815260326020526040902080548201905590506114af565b8360ff1660071415611317576112f23385612746565b6001600160a01b038316600090815260356020526040902080548201905590506114af565b8360ff166008141561138c5761132d3385612746565b6001600160a01b03831660009081526038602090815260408083208054850190557fc130dae904bad8b2e58e4eecb0fbb7871f491d9f0cb4d3e42d842886f7822c0e8252808320805485019055908052902080548201905590506114af565b8360ff16600914156113c7576113a23385612746565b6001600160a01b0383166000908152603b6020526040902080548201905590506114af565b8360ff16600a1415611402576113dd3385612746565b6001600160a01b0383166000908152603e6020526040902080548201905590506114af565b8360ff16600b141561143d576114183385612746565b6001600160a01b038316600090815260416020526040902080548201905590506114af565b8360ff16600c1415611478576114533385612746565b6001600160a01b038316600090815260446020526040902080548201905590506114af565b8360ff16600d14156114af5761148e3385612746565b6001600160a01b038316600090815260476020526040902080548201905590505b8360ff166008146114e6576001600160a01b0382166000908152600080516020615e9b833981519152602052604090208054820190555b6001600160a01b03821660008181526020808052604091829020805485019055815184815260ff88169181019190915281517f19df082c3c3f174884f7819415ba70fca9a7b1ab31aaba84818e516bf5fe6f01929181900390910190a250505050565b6001600160a01b03166000908152601f602052604090205490565b60008181526013602090815260408083206001600160a01b03861684529091529020545b92915050565b6001600160a01b03166000908152600080516020615e9b833981519152602052604090205490565b60515481565b6001600160a01b0382166000908152601560209081526040808320848452909152902054611588565b506000611588565b336000818152600b602052604081205490919060ff16151560011461161157600080fd5b6001600160a01b0385166000818152601c602090815260408083205480845260138352818420948452939091529020546032850485016116518884615aab565b808210611b62576001600160a01b0387166000908152600b6020526040902054339060ff16151560011480156116875750600087115b80156116a55750876001600160a01b0316896001600160a01b031614155b80156116d457506001600160a01b0389166000908152600f602090815260408083203384529091529020548211155b80156116e95750336001600160a01b038a1614155b80156117025750336000908152604d6020526040902054155b61170b57600080fd5b336000908152604d602052604090206001905561172787615ccc565b506001600160a01b03881660009081526020805260409020805488019055603287048701602060008b6001600160a01b03166001600160a01b031681526020019081526020016000206000828254039250508190555060156000601a600087815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020600085815260200190815260200160002054601460008681526020019081526020016000206000336001600160a01b03166001600160a01b031681526020019081526020016000208190555086600f60008b6001600160a01b03166001600160a01b031681526020019081526020016000206000336001600160a01b03166001600160a01b031681526020019081526020016000206000828254039250508190555081602260008b6001600160a01b03166001600160a01b03168152602001908152602001600020600082825401925050819055506000604d6000336001600160a01b03166001600160a01b03168152602001908152602001600020819055506000601a600086815260200190815260200160002060009054906101000a90046001600160a01b0316905060008990506000856064601460008a81526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002054670de0b6b3a7640000028161194557fe5b04620f4240028161195257fe5b6001600160a01b03851660009081526015602090815260408083208c845290915281205492909104925090606490670de0b6b3a76400000204620f4240029050600082828161199d57fe5b0490508b8101601360008b81526020019081526020016000206000866001600160a01b03166001600160a01b0316815260200190815260200160002081905550601860008a81526020019081526020016000205460176000866001600160a01b03166001600160a01b0316815260200190815260200160002060008b815260200190815260200160002081905550601b60008a815260200190815260200160002054601460008b81526020019081526020016000206000866001600160a01b03166001600160a01b03168152602001908152602001600020819055508b601360008b815260200190815260200160002060008f6001600160a01b03166001600160a01b031681526020019081526020016000205401601360008b815260200190815260200160002060008f6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000604d6000336001600160a01b03166001600160a01b03168152602001908152602001600020819055508c6001600160a01b0316866001600160a01b0316600080516020615ebb833981519152896040518082815260200191505060405180910390a360019a5050505050505050505061114e565b6000945050505061114e565b6000908152601a60205260409020546001600160a01b031690565b336000818152600d602052604081205490919060ff161515600114611bad57600080fd5b336000818152601d602081815260408084205480855260138352818520601a8452828620546001600160a01b0316865283529084205494909352526064670de0b6b3a7640000870204918203906519db1bd8985b60d21b14611e12576001600160a01b0385166000908152601160209081526040808320338452601c835281842054845290915290205460ff1615156001148015611c885750336000908152601d6020908152604080832054808452601a8352818420546001600160a01b031684526012835281842090845290915290205460ff1615156001145b8015611cc0575060025461010090046001600160a01b03166000908152600080516020615e9b83398151915260205260409020548111155b8015611cca575060015b611cd357600080fd5b605180548390039055336000818152601d602090815260408083208054845260198352818420546003546001600160a01b039081168652601585528386206519db1bd8985b60d21b875285528386208054670de0b6b3a7640000606490940293909304909203909155815485526013808552838620601a8087528588205484168852908652848720548680528588208054919091039055835487528186528487208187528588205484168852865284872087905592548652845282852091845282852054811685529083528184205460025461010090049091168452600080516020615e9b8339815191528352928190208054938703909303909255815185815290810189905281517f49995e5dd6158cf69ad3e9777c46755a1a826a446c6416992167462dad033b2a929181900390910190a2600193505050610e2a565b600093505050610e2a565b6053545b90565b60025460ff1681565b336000818152600d602052604081205490919060ff161515600114611e5157600080fd5b336000908152601f6020526040902054831415611eb657336001600160a01b0386161415611e7e57600080fd5b6001600160a01b03851660009081526011602090815260408083208684529091529020805460ff19168515151790556001915061114e565b6000915061114e565b6000808260ff1660011415611ef05750506001600160a01b038216600090815260256020526040902054600161211f565b8260ff1660021415611f1e5750506001600160a01b038216600090815260286020526040902054600261211f565b8260ff1660031415611f4c5750506001600160a01b0382166000908152602b6020526040902054600361211f565b8260ff1660041415611f7a5750506001600160a01b0382166000908152602e6020526040902054600461211f565b8260ff1660051415611fa85750506001600160a01b038216600090815260316020526040902054600561211f565b8260ff1660061415611fd65750506001600160a01b038216600090815260346020526040902054600661211f565b8260ff16600714156120045750506001600160a01b038216600090815260376020526040902054600761211f565b8260ff16600814156120325750506001600160a01b0382166000908152603a6020526040902054600861211f565b8260ff16600914156120605750506001600160a01b0382166000908152603d6020526040902054600961211f565b8260ff16600a141561208e5750506001600160a01b038216600090815260406020819052902054600a61211f565b8260ff16600b14156120bc5750506001600160a01b038216600090815260436020526040902054600b61211f565b8260ff16600c14156120ea5750506001600160a01b038216600090815260466020526040902054600c61211f565b8260ff16600d14156121185750506001600160a01b038216600090815260496020526040902054600d61211f565b5060009050805b9250929050565b60009081526019602052604090205490565b336000818152600c602052604090205460ff16151560011461215957600080fd5b336000908152601d6020908152604080832054601e835281842054818552601a8452828520546001600160a01b03168552601584528285208286529093529220546064670de0b6b3a764000087020490861415612589576001600160a01b038a166000908152600b602052604090205460ff16151560011480156121df5750614e218b10155b80156121ee5750620186a08b11155b80156122035750336001600160a01b038b1614155b801561221d5750336000908152601d602052604090205483145b80156122375750336000908152601e602052604090205482145b61224057600080fd5b61224981615cf2565b508a816103e8028161225757fe5b6001600160a01b0387166000908152600080516020615e9b8339815191526020526040902080549290910490910190558a6103e882028161229457fe5b6001600160a01b0387166000908152602080526040902080549290910490910190556122c3818b8b8b8b615d82565b50600880546001600160a01b039081166000908152600080516020615e9b8339815191526020908152604080832080546161a8606489020490810190915560035485168452601583528184206519db1bd8985b60d21b855283528184208054650102babe147464174876e8008a02040190559454909316825280529081208054830190556608e1bc9bf04271655af3107a400084020490620186a08e026305f5e10085028161236e57fe5b04905080828503036013600088815260200190815260200160002060008f6001600160a01b03166001600160a01b0316815260200190815260200160002054016013600088815260200190815260200160002060008f6001600160a01b03166001600160a01b03168152602001908152602001600020819055508082850303602060008f6001600160a01b03166001600160a01b031681526020019081526020016000205401602060008f6001600160a01b03166001600160a01b03168152602001908152602001600020819055508082850303602160008f6001600160a01b03166001600160a01b03168152602001908152602001600020600082825401925050819055508082016019600088815260200190815260200160002060008282540192505081905550828203601360006519db1bd8985b60d21b60001b81526020019081526020016000206000600260019054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000828254019250508190555082820360206000600260019054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020600082825401925050819055508c6001600160a01b0316336001600160a01b0316600080516020615ebb833981519152866040518082815260200191505060405180910390a35050506125bb565b5060408051600080825291516001600160a01b038c16913391600080516020615ebb8339815191529181900360200190a35b5050505050505050505050565b336000818152600d602052604081205490919060ff1615156001146125ec57600080fd5b336000908152601d6020526040902054831415611eb657336001600160a01b038616141561261957600080fd5b6001600160a01b03851660009081526010602090815260408083208684529091529020805460ff19168515151790556001915061114e565b336000818152600e602052604090205460ff16151560011461267257600080fd5b336001600160a01b03841614156126c2576040805162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015290519081900360640190fd5b6001600160a01b0383166000818152600d60209081526040808320805460ff191687151590811790915533808552604c8452828520859055604b8452828520859055604a845282852094909455815190815290517fd562498d05096e8752446b22351f39f5127bc5a0b49757ff3a3d5fbadc0cb42d929181900390910190a3505050565b60008160ff16600114156127fe576000605454600860026053548161276757fe5b048161276f57fe5b048161277757fe5b6001600160a01b03861660009081526025602090815260408083205460228352818420546021909352908320549490930494509192909160019081019101816127bc57fe5b6001600160a01b03881660009081526024602090815260408083205460239092529091205492909104910184840203816127f257fe5b04935061158892505050565b8160ff16600214156128a8576000605554600860026053548161281d57fe5b048161282557fe5b048161282d57fe5b6001600160a01b038616600090815260286020908152604080832054602283528184205460219093529083205494909304945091929091600190810191018161287257fe5b6001600160a01b03881660009081526027602090815260408083205460269092529091205492909104910184840203816127f257fe5b8160ff166003141561295257600060565460086002605354816128c757fe5b04816128cf57fe5b04816128d757fe5b6001600160a01b0386166000908152602b6020908152604080832054602283528184205460219093529083205494909304945091929091600190810191018161291c57fe5b6001600160a01b0388166000908152602a602090815260408083205460299092529091205492909104910184840203816127f257fe5b8160ff16600414156129fc576000605754600860026053548161297157fe5b048161297957fe5b048161298157fe5b6001600160a01b0386166000908152602e602090815260408083205460228352818420546021909352908320549490930494509192909160019081019101816129c657fe5b6001600160a01b0388166000908152602d6020908152604080832054602c9092529091205492909104910184840203816127f257fe5b8160ff1660051415612aa65760006058546008600260535481612a1b57fe5b0481612a2357fe5b0481612a2b57fe5b6001600160a01b0386166000908152603160209081526040808320546022835281842054602190935290832054949093049450919290916001908101910181612a7057fe5b6001600160a01b038816600090815260306020908152604080832054602f9092529091205492909104910184840203816127f257fe5b8160ff1660061415612b505760006059546008600260535481612ac557fe5b0481612acd57fe5b0481612ad557fe5b6001600160a01b0386166000908152603460209081526040808320546022835281842054602190935290832054949093049450919290916001908101910181612b1a57fe5b6001600160a01b03881660009081526033602090815260408083205460329092529091205492909104910184840203816127f257fe5b8160ff1660071415612bfa576000605a546008600260535481612b6f57fe5b0481612b7757fe5b0481612b7f57fe5b6001600160a01b0386166000908152603760209081526040808320546022835281842054602190935290832054949093049450919290916001908101910181612bc457fe5b6001600160a01b03881660009081526036602090815260408083205460359092529091205492909104910184840203816127f257fe5b8160ff1660081415612ca4576000605b546008600260535481612c1957fe5b0481612c2157fe5b0481612c2957fe5b6001600160a01b0386166000908152603a60209081526040808320546022835281842054602190935290832054949093049450919290916001908101910181612c6e57fe5b6001600160a01b03881660009081526039602090815260408083205460389092529091205492909104910184840203816127f257fe5b8160ff1660091415612d51576000605c546005600260535481612cc357fe5b0481612ccb57fe5b0460020281612cd657fe5b6001600160a01b0386166000908152603d60209081526040808320546022835281842054602190935290832054949093049450919290916001908101910181612d1b57fe5b6001600160a01b0388166000908152603c6020908152604080832054603b9092529091205492909104910184840203816127f257fe5b8160ff16600a1415612e06576000605d54602860535481612d6e57fe5b046005600260535481612d7d57fe5b0481612d8557fe5b040181612d8e57fe5b6001600160a01b0386166000908152604060208181528183205460228252828420546021909252918320549490930494509290916001908101910181612dd057fe5b6001600160a01b0388166000908152603f6020908152604080832054603e9092529091205492909104910184840203816127f257fe5b8160ff16600b1415612eb0576000605e546008600260535481612e2557fe5b0481612e2d57fe5b0481612e3557fe5b6001600160a01b0386166000908152604360209081526040808320546022835281842054602190935290832054949093049450919290916001908101910181612e7a57fe5b6001600160a01b03881660009081526042602090815260408083205460419092529091205492909104910184840203816127f257fe5b8160ff16600c1415612f5a576000605f546008600260535481612ecf57fe5b0481612ed757fe5b0481612edf57fe5b6001600160a01b0386166000908152604660209081526040808320546022835281842054602190935290832054949093049450919290916001908101910181612f2457fe5b6001600160a01b03881660009081526045602090815260408083205460449092529091205492909104910184840203816127f257fe5b8160ff16600d14156115e55760006060546008600260535481612f7957fe5b0481612f8157fe5b0481612f8957fe5b6001600160a01b0386166000908152604960209081526040808320546022835281842054602190935290832054949093049450919290916001908101910181612fce57fe5b6001600160a01b03881660009081526048602090815260408083205460479092529091205492909104910184840203816127f257fe5b6001600160a01b03166000908152601e602052604090205490565b336000818152600e602052604090205460ff16151560011461304057600080fd5b336000908152600e602052604090205460ff16613091576040805162461bcd60e51b815260206004820152600a60248201526941646d696e46616c736560b01b604482015290519081900360640190fd5b5060028054610100600160a81b0319166101006001600160a01b0395861602179055600480546001600160a01b03199081169285169290921790556005805482169284169290921790915560068054821693831693909317909255600780548316938216939093179092556008805482169383169390931790925560098054831693821693909317909255600a805490911692909116919091179055336000908152604c60209081526040808320839055604b8252808320839055604a909152812055565b6001600160a01b0316600090815260208052604090205490565b60006001600160a01b0382163314156131995750336000908152601c6020526040902054610d0c565b506001600160a01b0381166000908152601c6020526040902054610d0c565b336000818152600c602052604090205460ff1615156001146131d957600080fd5b336001600160a01b03841614156131ef57600080fd5b6001600160a01b0383166000818152600b6020908152604091829020805460ff19168615159081179091558251908152915133927f8cfdbf9b02b83c1504c3c6c0ebf7f515b071b2103b37b52fba37a39a23d33b0392908290030190a3505050565b336000818152600b602052604090205460ff16151560011461327257600080fd5b336000908152601c60209081526040808320548084526019835281842054601a8452828520546001600160a01b03168552601584528285208286529093529083205490929190606490670de0b6b3a76400000204039050836132d43384615aab565b8082101580156132f15750336000908152604d6020526040902054155b1561340b57336000908152600b602052604090205460ff161515600114801561331a5750600085115b61332357600080fd5b336000818152604d6020818152604080842060018155600080516020615e9b833981519152835281852080548c9003905588855260138352818520868652835281852080548c0190558885526019835281852080548c900390556003546001600160a01b03168552601583528185206519db1bd8985b60d21b86528352818520548686527f1cfd05295e1e2807b17860e3f753be2d73e143637c711d96503fa979b987fe6584528286205592825292909155815184815291517fdae8fce77474c1d5a6dabb90c77dc8185f2dfa9229889ddb3f9791d408b66d9a9281900390910190a2613445565b50604080516000808252915133917fdae8fce77474c1d5a6dabb90c77dc8185f2dfa9229889ddb3f9791d408b66d9a919081900360200190a25b5050505050565b6001600160a01b0381166000908152600e602052604081205460ff16151560011415610e5f57506001610d0c565b336000818152600b60205260409020546060919060ff16151560011461349f57600080fd5b60005b60208160ff161080156134d05750838160ff16602081106134bf57fe5b1a60f81b6001600160f81b03191615155b156134dd576001016134a2565b60608160ff1667ffffffffffffffff811180156134f957600080fd5b506040519080825280601f01601f191660200182016040528015613524576020820181803683370190505b509050600091505b60208260ff1610801561355a5750848260ff166020811061354957fe5b1a60f81b6001600160f81b03191615155b156135a357848260ff166020811061356e57fe5b1a60f81b818360ff168151811061358157fe5b60200101906001600160f81b031916908160001a90535060019091019061352c565b9250505b50919050565b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d975780601f10610d6c57610100808354040283529160200191610d97565b336000818152600b602052604081205490919060ff16151560011461362b57600080fd5b60008411801561363e57508260ff166001145b15613730576001600160a01b0385166000908152600b602052604090205460ff16151560011461366d57600080fd5b33600081815260256020526040902054851180159061368a575060015b80156136a85750806001600160a01b0316866001600160a01b031614155b6136b157600080fd5b6001600160a01b038116600090815260256020908152604080832054602390925290912054869190816136e057fe5b6001600160a01b038981166000908152602460209081526040808320805496909504969096029094019092556025909252828120805489019055921682529020805485900390556001915061114e565b60008411801561374357508260ff166002145b15613835576001600160a01b0385166000908152600b602052604090205460ff16151560011461377257600080fd5b33600081815260286020526040902054851180159061378f575060015b80156137ad5750806001600160a01b0316866001600160a01b031614155b6137b657600080fd5b6001600160a01b038116600090815260286020908152604080832054602690925290912054869190816137e557fe5b6001600160a01b038981166000908152602760209081526040808320805496909504969096029094019092556028909252828120805489019055921682529020805485900390556001915061114e565b60008411801561384857508260ff166003145b1561393a576001600160a01b0385166000908152600b602052604090205460ff16151560011461387757600080fd5b336000818152602b60205260409020548511801590613894575060015b80156138b25750806001600160a01b0316866001600160a01b031614155b6138bb57600080fd5b6001600160a01b0381166000908152602b6020908152604080832054602990925290912054869190816138ea57fe5b6001600160a01b038981166000908152602a6020908152604080832080549690950496909602909401909255602b909252828120805489019055921682529020805485900390556001915061114e565b60008411801561394d57508260ff166004145b15613a3f576001600160a01b0385166000908152600b602052604090205460ff16151560011461397c57600080fd5b336000818152602e60205260409020548511801590613999575060015b80156139b75750806001600160a01b0316866001600160a01b031614155b6139c057600080fd5b6001600160a01b0381166000908152602e6020908152604080832054602c90925290912054869190816139ef57fe5b6001600160a01b038981166000908152602d6020908152604080832080549690950496909602909401909255602e909252828120805489019055921682529020805485900390556001915061114e565b600084118015613a5257508260ff166005145b15613b44576001600160a01b0385166000908152600b602052604090205460ff161515600114613a8157600080fd5b336000818152603160205260409020548511801590613a9e575060015b8015613abc5750806001600160a01b0316866001600160a01b031614155b613ac557600080fd5b6001600160a01b038116600090815260316020908152604080832054602f9092529091205486919081613af457fe5b6001600160a01b038981166000908152603060209081526040808320805496909504969096029094019092556031909252828120805489019055921682529020805485900390556001915061114e565b600084118015613b5757508260ff166006145b15613c49576001600160a01b0385166000908152600b602052604090205460ff161515600114613b8657600080fd5b336000818152603460205260409020548511801590613ba3575060015b8015613bc15750806001600160a01b0316866001600160a01b031614155b613bca57600080fd5b6001600160a01b03811660009081526034602090815260408083205460329092529091205486919081613bf957fe5b6001600160a01b038981166000908152603360209081526040808320805496909504969096029094019092556034909252828120805489019055921682529020805485900390556001915061114e565b600084118015613c5c57508260ff166007145b15613d4e576001600160a01b0385166000908152600b602052604090205460ff161515600114613c8b57600080fd5b336000818152603760205260409020548511801590613ca8575060015b8015613cc65750806001600160a01b0316866001600160a01b031614155b613ccf57600080fd5b6001600160a01b03811660009081526037602090815260408083205460359092529091205486919081613cfe57fe5b6001600160a01b038981166000908152603660209081526040808320805496909504969096029094019092556037909252828120805489019055921682529020805485900390556001915061114e565b600084118015613d6157508260ff166008145b15613e53576001600160a01b0385166000908152600b602052604090205460ff161515600114613d9057600080fd5b336000818152603a60205260409020548511801590613dad575060015b8015613dcb5750806001600160a01b0316866001600160a01b031614155b613dd457600080fd5b6001600160a01b0381166000908152603a602090815260408083205460389092529091205486919081613e0357fe5b6001600160a01b03898116600090815260396020908152604080832080549690950496909602909401909255603a909252828120805489019055921682529020805485900390556001915061114e565b600084118015613e6657508260ff166009145b15613f58576001600160a01b0385166000908152600b602052604090205460ff161515600114613e9557600080fd5b336000818152603d60205260409020548511801590613eb2575060015b8015613ed05750806001600160a01b0316866001600160a01b031614155b613ed957600080fd5b6001600160a01b0381166000908152603d6020908152604080832054603b9092529091205486919081613f0857fe5b6001600160a01b038981166000908152603c6020908152604080832080549690950496909602909401909255603d909252828120805489019055921682529020805485900390556001915061114e565b600084118015613f6b57508260ff16600a145b15614059576001600160a01b0385166000908152600b602052604090205460ff161515600114613f9a57600080fd5b336000818152604060208190529020548511801590613fb7575060015b8015613fd55750806001600160a01b0316866001600160a01b031614155b613fde57600080fd5b6001600160a01b03811660009081526040602081815281832054603e9091529120548691908161400a57fe5b6001600160a01b038981166000908152603f602090815260408083208054969095049690960290940190925591839052828120805489019055921682529020805485900390556001915061114e565b60008411801561406c57508260ff16600b145b1561415e576001600160a01b0385166000908152600b602052604090205460ff16151560011461409b57600080fd5b3360008181526043602052604090205485118015906140b8575060015b80156140d65750806001600160a01b0316866001600160a01b031614155b6140df57600080fd5b6001600160a01b0381166000908152604360209081526040808320546041909252909120548691908161410e57fe5b6001600160a01b038981166000908152604260209081526040808320805496909504969096029094019092556043909252828120805489019055921682529020805485900390556001915061114e565b60008411801561417157508260ff16600c145b15614263576001600160a01b0385166000908152600b602052604090205460ff1615156001146141a057600080fd5b3360008181526046602052604090205485118015906141bd575060015b80156141db5750806001600160a01b0316866001600160a01b031614155b6141e457600080fd5b6001600160a01b0381166000908152604660209081526040808320546044909252909120548691908161421357fe5b6001600160a01b038981166000908152604560209081526040808320805496909504969096029094019092556046909252828120805489019055921682529020805485900390556001915061114e565b60008411801561427657508260ff16600d145b15611eb6576001600160a01b0385166000908152600b602052604090205460ff1615156001146142a557600080fd5b3360008181526049602052604090205485118015906142c2575060015b80156142e05750806001600160a01b0316866001600160a01b031614155b6142e957600080fd5b6001600160a01b0381166000908152604960209081526040808320546047909252909120548691908161431857fe5b6001600160a01b038981166000908152604860209081526040808320805496909504969096029094019092556049909252828120805489019055921682529020805485900390556001915061114e565b336000818152604d6020908152604080832060019055601c825280832054835260138252808320938352929052908120546032830492830192908311156143e9576040805162461bcd60e51b815260206004820152601060248201526f2737ba1022b737bab3b4102a37b5b2b760811b604482015290519081900360640190fd5b336000908152604e6020526040902054928190039260ff1660011415614485576001600160a01b0384166000908152600b602052604090205460ff16151560011480156144455750336000908152600b602052604090205460ff165b614485576040805162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b604482015290519081900360640190fd5b336000908152601c60205260409020546144a0908590615aab565b336000818152601c6020908152604080832054808452601a835281842054601384528285208686528452828520549185526014845282852095855294909252822054848701936001600160a01b0316929190606490670de0b6b3a76400000204620f4240028161450c57fe5b6001600160a01b0384166000908152601560209081526040808320338452601c835281842054845290915281205492909104925090606490670de0b6b3a76400000204620f4240029050600082828161456157fe5b04905084810360136000601c6000336001600160a01b03166001600160a01b031681526020019081526020016000205481526020019081526020016000206000336001600160a01b03166001600160a01b031681526020019081526020016000208190555060186000601c6000336001600160a01b03166001600160a01b031681526020019081526020016000205481526020019081526020016000205460176000336001600160a01b03166001600160a01b031681526020019081526020016000206000601c6000336001600160a01b03166001600160a01b031681526020019081526020016000205481526020019081526020016000208190555060156000856001600160a01b03166001600160a01b031681526020019081526020016000206000601c6000336001600160a01b03166001600160a01b031681526020019081526020016000205481526020019081526020016000205460146000601c6000336001600160a01b03166001600160a01b031681526020019081526020016000205481526020019081526020016000206000336001600160a01b03166001600160a01b031681526020019081526020016000208190555087602060008b6001600160a01b03166001600160a01b031681526020019081526020016000205401602060008b6001600160a01b03166001600160a01b03168152602001908152602001600020819055508460206000336001600160a01b03166001600160a01b03168152602001908152602001600020600082825403925050819055508760136000601c6000336001600160a01b03166001600160a01b0316815260200190815260200160002054815260200190815260200160002060008b6001600160a01b03166001600160a01b03168152602001908152602001600020540160136000601c6000336001600160a01b03166001600160a01b0316815260200190815260200160002054815260200190815260200160002060008b6001600160a01b03166001600160a01b031681526020019081526020016000208190555061486388615ccc565b50336000818152604d6020908152604080832092909255815188815291516001600160a01b038d169392600080516020615ebb83398151915292908290030190a350600198975050505050505050565b6001600160a01b0381166000908152600b602052604081205460ff16151560011415610e5f57506001610d0c565b6002547f8adaf30a32e175223a541ea69cb2b09c2c40a4d36e64529c0f6beadb1c53c39a80546101009092046001600160a01b03166001600160a01b03199092169190911790557f06bf4f473cd4d79aeae5cc8a0fd75c96c8059dbaf2acb4ee39656932ba19d088805460ff1990811660019081179092557fb59699a9cea9f863f36e0a923ebfd5f0847e8fb1fe47054d2d6153b45dfa8a9a8054821683179055600b6020527fc45d82828750119522c9307dff926298e79e42dc1ca6db7b577de46b8dc0eee380548216831790557fcfdfa7a74fc69c8acf707c0e03a2554a8f00d00256a00a3dea229280c13857e980548216831790557f4b267af3f0dfbd536d7896a46bb5d26bbbe9d2eb0a055c030795afbd71401cef80547fee753d54f10e412ae5c0c9c28e15517f8be876c9fc4a5258e3a1a4fe4ef494e180548416851790557f414c01b0e1c457381b945f39ecdc404df7574df9f5532096d38bcf7cc2f124a680548416851790557fa5a82e149ce51ab04b4fe1e6c1748f7b8d0abf93d935bcd091955094674f54e180548416851790557fbc69becb0584bcf7ba8ff96e8f832bcaf67a100ed011a4ccdfe7316623e6cf7480548416851790557fb80ece3fab54663a86e760d03e27704c916ecf1cf28942dbe1c0a0d7059864a280548416851790557f485614bb00bf0bcdac2415f00acee3b8efbe61d3bbec9efc7012a8047e28354380548416851790557f7ac182010849aa3a3a110ddca0183dad74dc4eea98579c3dcec398209a212f3380548416851790558216831782168317905573a1ff1474e0a5db4801e426289db485b456de78826000527f99cce137e674a1cebb7eda315c06102539f6384af5d215fda3b212ced31f629f80549091169091179055565b336000818152601c6020908152604080832054808452601383528184208585529092529091205490918390614b9f9084615aab565b808210158015614bbc5750336000908152604d6020526040902054155b15614d73576000838152601a60209081526040808320546001600160a01b0316835260158252808320868452909152812054606490670de0b6b3a764000002336000908152600b6020526040902054919004915060ff1615156001148015614c245750600085115b614c75576040805162461bcd60e51b815260206004820152601760248201527f4d656d626572206f7220476c6f62616c42616c616e6365000000000000000000604482015290519081900360640190fd5b336000818152604d6020818152604080842060018155600080516020615e9b833981519152835281852080548c01905589855260138352818520868652835281852080548c900390558985526019835281852080548c0190557f8adaf30a32e175223a541ea69cb2b09c2c40a4d36e64529c0f6beadb1c53c39a546001600160a01b03168552601583528185208a86528352818520548686527f1cfd05295e1e2807b17860e3f753be2d73e143637c711d96503fa979b987fe6584528286205592825292909155815185815291517ff7b36fc0cca27666847afc93af0117fec37ce4f9ebc576a0e44d0de76e02e4f19281900390910190a250614dad565b50604080516000808252915133917ff7b36fc0cca27666847afc93af0117fec37ce4f9ebc576a0e44d0de76e02e4f1919081900360200190a25b50505050565b60009182526014602090815260408084206001600160a01b0393909316845291905290205490565b6001600160a01b0381166000908152600c602052604081205460ff16151560011415610e5f57506001610d0c565b336000818152600e602052604090205460ff161515600114614e2a57600080fd5b336001600160a01b0384161415614e4057600080fd5b6001600160a01b0383166000818152600e6020908152604091829020805460ff19168615159081179091558251908152915133927f8a13a3fa731d6813da1e5db0e97f4533f20e170440daff4893342b5ac23dfbf092908290030190a3505050565b336000818152600b602052604081205490919060ff161515600114614ec657600080fd5b82518390614ed85750600091506135a7565b5050506020015190565b336000908152604d60205260408120548190158015614f05575060038360ff1611155b8015614f15575060018360ff1610155b15614f5657614f243385615aab565b5050336000908152601c60208181526040808420868155604e83529320805460ff191660ff861617905552548161211f565b5050336000908152601c60205260409020548161211f565b336000818152600b602052604081205490919060ff161515600114614f9257600080fd5b50506001600160a01b039182166000908152600f6020908152604080832093909416825291909152205490565b336000818152600d60205260408120549091829160ff161515600114614fe457600080fd5b336000908152601d60209081526040808320546001600160a01b038916845260128352818420818552909252909120805460ff19166519db1bd8985b60d21b90921415918217905561503557600080fd5b6001600160a01b038516331461567c576001600160a01b0385166000818152601560209081526040808320338452601d835281842054808552908352818420549484526016835281842090845282528220929092556519db1bd8985b60d21b9052601890527f5e9c3923fcbb6c6646f9350fb33018bda332eb599a8c05e055499c2065cf0cfc541580156150e35750336000908152601d602090815260408083205483526019909152902054155b1561512c576001600160a01b0385166000908152601660209081526040808320338452601d83528184208054855290835281842088905554835260199091529020805460010190555b6001600160a01b0385166000818152601560209081526040808320338452601d83528184208054855290835281842089905554808452601983528184205494845260168352818420908452909152812054909190606490670de0b6b3a76400000204620f4240028161519a57fe5b6001600160a01b0388166000908152601560209081526040808320338452601d8352818420548452909152812054929091049250908290606490670de0b6b3a76400000204620f424002816151eb57fe5b336000908152601d60209081526040808320805484526019808452828520805497909604958690556003546001600160a01b03168552601584528285206519db1bd8985b60d21b80875281865284872080549454885292865293862054938652909352670de0b6b3a764000060648088028290049381028290048301939093039093556053549496509391840204620f4240028161528557fe5b6003546001600160a01b031660009081526015602090815260408083206519db1bd8985b60d21b845290915290205491900491508190606490670de0b6b3a76400000204620f424002816152d557fe5b0460538190555088601b6000601d6000336001600160a01b03166001600160a01b031681526020019081526020016000205481526020019081526020016000208190555088601560008c6001600160a01b03166001600160a01b031681526020019081526020016000206000601d6000336001600160a01b03166001600160a01b03168152602001908152602001600020548152602001908152602001600020819055506000601560008c6001600160a01b03166001600160a01b031681526020019081526020016000206000601d6000336001600160a01b03166001600160a01b031681526020019081526020016000205481526020019081526020016000205490506000601660008d6001600160a01b03166001600160a01b031681526020019081526020016000206000601d6000336001600160a01b03166001600160a01b03168152602001908152602001600020548152602001908152602001600020549050808b830103601560008e6001600160a01b03166001600160a01b031681526020019081526020016000206000601d6000336001600160a01b03166001600160a01b0316815260200190815260200160002054815260200190815260200160002081905550600160186000601d6000336001600160a01b03166001600160a01b03168152602001908152602001600020548152602001908152602001600020600082825401925050819055506001601860006519db1bd8985b60d21b60001b8152602001908152602001600020600082825401925050819055506064601560008e6001600160a01b03166001600160a01b031681526020019081526020016000206000601d6000336001600160a01b03166001600160a01b0316815260200190815260200160002054815260200190815260200160002054670de0b6b3a7640000028161558157fe5b6001600160a01b038e8116600090815260166020908152604080832033808552601d84528285208054865291845282852054605180546064670de0b6b3a76400009093029290920490910398909704979097019095559354808352601a8252848320549093168252601581528382208383528152908390205483519283529082015281517fbb5f3a98b075980e08be27de702c2bb71c59930a36b0d28fbaf0030a9b714959929181900390910190a25050336000908152601d6020908152604080832054808452601a8352818420546001600160a01b03168452601583528184209084529091529020549750600196506156bc945050505050565b336000908152601d6020908152604080832054808452601a8352818420546001600160a01b03168452601583528184209084529091529020549250600291505b509250929050565b336000818152600d602052604081205490919060ff1615156001146156e857600080fd5b60019350336000908152601d6020526040902054831461570757600080fd5b6001600160a01b03851660008181526012602090815260408083208784528252808320805460ff1916891515908117909155601a83529281902080546001600160a01b03191690941790935560188152825186815290810191909152815133927f215e8044146f1415ce2971887d448a2a573c47c3c1179eda369be24ad7e511b6928290030190a26001915061114e565b336000818152600b602052604081205490919060ff1615156001146157bc57600080fd5b6000838152601a60209081526040808320546001600160a01b038881168552601784528285208886528452828520546018909452919093205492169114801590615827575060008481526013602090815260408083206001600160a01b038916845290915290205415155b15615885576001600160a01b03811660008181526012602090815260408083208884528252808320805460ff19166001179055928252601581528282208783529052205461587157fe5b61587b8585615aab565b6001925050610e2a565b6002925050610e2a565b336000818152600b602052604081205490919060ff1615156001146158b357600080fd5b6001600160a01b0385166000908152600c602052604090205460ff16151560011480156158fd57506001600160a01b0383166000908152600d602052604090205460ff1615156001145b801561592657506001600160a01b0384166000908152600c602052604090205460ff1615156001145b61592f57600080fd5b336000818152602080526040902054683635c9adc5dea0000090811015615a24576001600160a01b038581166000908152600080516020615e9b833981519152602081815260408084208054600588049081019091558280528185208054820190558c86168552838352818520805482019055828052818520805490910190558a851684529181528183208054600a87049081019091558180528284208054909101905594909216808252601c855282822054825260138552828220908252845281812080548490039055838052818120805493909303909255600c90925220805460ff19166001908117909155915061114e565b60009350505061114e565b60003381670de0b6b3a7640000615a4583613156565b81615a4c57fe5b04905060018110615a60579150611e219050565b600092505050611e21565b6001600160a01b0382166000908152600b602052604081205460ff161515600114156115e55750336000908152601d602052604090208190556001611588565b6000818152601a6020908152604080832054601383528184206001600160a01b0387811686529084528285205460178552838620878752855283862054601890955292909420549316929091108015615b2557506001600160a01b0384166000908152601760209081526040808320868452909152902054155b15615b86576001600160a01b0380831660009081526015602090815260408083208784528252808320546014835281842094891680855294835281842055868352601882528083205493835260178252808320878452909152902055614dad565b6001600160a01b03841660009081526017602090815260408083208684528252808320546018909252909120541115614dad5760008381526014602090815260408083206001600160a01b03881684529091528120548290606490670de0b6b3a76400000204620f42400281615bf857fe5b6001600160a01b038516600090815260156020908152604080832089845290915281205492909104925090606490670de0b6b3a76400000204620f42400290506000828281615c4357fe5b60008881526013602090815260408083206001600160a01b03808e16808652918452828520969095049586905582805281842080549096018a90039095558a83526018825280832054858452601783528184208c85528352818420559289168252601581528282208a835281528282205460148252838320948352939052205550614dad915050565b60008115615ce7575060538054603283040190556001610d0c565b506000905080610d0c565b605180548201905560548054670de0b6b3a7640000909204918201905560558054820190556056805482019055605780548201905560588054820190556059805482019055605a805482019055605b805482019055605c805482019055605d805482019055605e805482019055605f805482019055606080548201905560528054600d9092029091019055600190565b6001600160a01b0393841660008181526025602090815260408083208054670de0b6b3a7640000909a04998a0190556028825280832080548a01905560045488168352602b825280832080548a019055928252602e815282822080548901905594861681526031855281812080548801905592851683526034845280832080548701905590841682526037835280822080548601905560055484168252603a835280822080548601905560085484168252603d835280822080548601905560095484168252808352808220805486019055600a5484168252604383528082208054860190556002546101009004841682526046835280822080548601905560075490931681526049909152208054909101905560019056fe7ccbd7b43422367c669064a1bbe3e6dab76b21a28a5b8782baec8892f4516fa8ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122095dc0c7b1ff41291792765e97a9611a19f8b80125522de60a30b0e68542be87064736f6c63430006060033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061030c5760003560e01c80635ed0063a1161019d578063b2a044aa116100e9578063dd62ed3e116100a2578063f02338371161007c578063f023383714610bba578063f3af266414610be6578063f574f04b14610c1e578063fa8de8ef14610c265761030c565b8063dd62ed3e14610b2c578063de006a0914610b5a578063edf8786114610b865761030c565b8063b2a044aa146109c3578063bc4aa86e146109e0578063c3c8e42714610a0c578063c9abf23214610a32578063cfb5192814610a60578063d6fe81ae14610b065761030c565b80639026dee8116101565780639c4c5e76116101305780639c4c5e7614610934578063a9059cbb14610969578063aaf2e5d814610995578063ac5ed7b7146109bb5761030c565b80639026dee8146108e95780639201de551461090f57806395d89b411461092c5761030c565b80635ed0063a146107cd57806361541ea0146107f357806370a082311461085257806380d3c46e14610878578063822454611461089e57806387a39673146108cc5761030c565b80631cda9e591161025c57806331a8743c11610215578063385e14c9116101ef578063385e14c9146106ea5780634215ca041461073c5780635290b321146107705780635a9ee20c1461079e5761030c565b806331a8743c1461064f57806331d28df11461068357806332cc3aad146106cd5761030c565b80631cda9e591461056257806323b872dd1461058e5780632403ba53146105c45780632aea5807146105fd5780632cf06ba814610629578063313ce567146106315761030c565b80630989d589116102c957806310a5d828116102a357806310a5d828146104e257806312a72d021461050857806315bc5ab51461053457806318160ddd1461055a5761030c565b80630989d589146104885780630ad2ae9b146104905780630dc7faa2146104c25761030c565b806301c4e0941461031157806304738f591461034157806306fdde0314610379578063076ccb8f146103f657806308c2de9514610436578063095ea7b31461045c575b600080fd5b61033f6004803603604081101561032757600080fd5b506001600160a01b0381351690602001351515610c52565b005b6103676004803603602081101561035757600080fd5b50356001600160a01b0316610cf2565b60408051918252519081900360200190f35b610381610d11565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103bb5781810151838201526020016103a3565b50505050905090810190601f1680156103e85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104226004803603604081101561040c57600080fd5b506001600160a01b038135169060200135610d9f565b604080519115158252519081900360200190f35b6104226004803603602081101561044c57600080fd5b50356001600160a01b0316610e31565b6104226004803603604081101561047257600080fd5b506001600160a01b038135169060200135610e67565b61033f610f06565b610367600480360360608110156104a657600080fd5b506001600160a01b038135169060208101359060400135611062565b61033f600480360360208110156104d857600080fd5b503560ff16611156565b610367600480360360208110156104f857600080fd5b50356001600160a01b0316611549565b6103676004803603604081101561051e57600080fd5b506001600160a01b038135169060200135611564565b6103676004803603602081101561054a57600080fd5b50356001600160a01b031661158e565b6103676115b6565b6103676004803603604081101561057857600080fd5b506001600160a01b0381351690602001356115bc565b610422600480360360608110156105a457600080fd5b506001600160a01b038135811691602081013590911690604001356115ed565b6105e1600480360360208110156105da57600080fd5b5035611b6e565b604080516001600160a01b039092168252519081900360200190f35b6104226004803603604081101561061357600080fd5b50803590602001356001600160a01b0316611b89565b610367611e1d565b610639611e24565b6040805160ff9092168252519081900360200190f35b6104226004803603606081101561066557600080fd5b506001600160a01b0381351690602081013515159060400135611e2d565b6106b26004803603604081101561069957600080fd5b5080356001600160a01b0316906020013560ff16611ebf565b6040805192835260ff90911660208301528051918290030190f35b610367600480360360208110156106e357600080fd5b5035612126565b61033f600480360360e081101561070057600080fd5b508035906001600160a01b03602082013581169160408101358216916060820135811691608081013582169160a08201359160c0013516612138565b6104226004803603606081101561075257600080fd5b506001600160a01b03813516906020810135151590604001356125c8565b61033f6004803603604081101561078657600080fd5b506001600160a01b0381351690602001351515612651565b610367600480360360408110156107b457600080fd5b5080356001600160a01b0316906020013560ff16612746565b610367600480360360208110156107e357600080fd5b50356001600160a01b0316613004565b61033f600480360361010081101561080a57600080fd5b506001600160a01b038135811691602081013582169160408201358116916060810135821691608082013581169160a081013582169160c082013581169160e001351661301f565b6103676004803603602081101561086857600080fd5b50356001600160a01b0316613156565b6103676004803603602081101561088e57600080fd5b50356001600160a01b0316613170565b61033f600480360360408110156108b457600080fd5b506001600160a01b03813516906020013515156131b8565b61033f600480360360208110156108e257600080fd5b5035613251565b610422600480360360208110156108ff57600080fd5b50356001600160a01b031661344c565b6103816004803603602081101561092557600080fd5b503561347a565b6103816135ad565b6104226004803603606081101561094a57600080fd5b5080356001600160a01b0316906020810135906040013560ff16613607565b6104226004803603604081101561097f57600080fd5b506001600160a01b038135169060200135614368565b610422600480360360208110156109ab57600080fd5b50356001600160a01b03166148b3565b61033f6148e1565b61033f600480360360208110156109d957600080fd5b5035614b6a565b610367600480360360408110156109f657600080fd5b50803590602001356001600160a01b0316614db3565b61042260048036036020811015610a2257600080fd5b50356001600160a01b0316614ddb565b61033f60048036036040811015610a4857600080fd5b506001600160a01b0381351690602001351515614e09565b61036760048036036020811015610a7657600080fd5b810190602081018135640100000000811115610a9157600080fd5b820183602082011115610aa357600080fd5b80359060200191846001830284011164010000000083111715610ac557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550614ea2945050505050565b6106b260048036036040811015610b1c57600080fd5b508035906020013560ff16614ee2565b61036760048036036040811015610b4257600080fd5b506001600160a01b0381358116916020013516614f6e565b6106b260048036036040811015610b7057600080fd5b506001600160a01b038135169060200135614fbf565b61042260048036036060811015610b9c57600080fd5b506001600160a01b03813516906020810135151590604001356156c4565b61063960048036036040811015610bd057600080fd5b506001600160a01b038135169060200135615798565b61042260048036036060811015610bfc57600080fd5b506001600160a01b03813581169160208101358216916040909101351661588f565b610367615a2f565b61042260048036036040811015610c3c57600080fd5b506001600160a01b038135169060200135615a6b565b336000818152600d602052604090205460ff161515600114610c7357600080fd5b6001600160a01b0383166000818152600c60209081526040808320805460ff1916871515908117909155604c8352818420849055604b8352818420849055604a83528184209390935580519283525133927f5a842b33eae3a18762b9b885e1bd64b7a1bb439d3c4cb4e45d09adf0fbbf5c2c92908290030190a3505050565b6001600160a01b0381166000908152601d60205260409020545b919050565b6000805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d975780601f10610d6c57610100808354040283529160200191610d97565b820191906000526020600020905b815481529060010190602001808311610d7a57829003601f168201915b505050505081565b336000818152600c602052604081205490919060ff161515600114610dc357600080fd5b6001600160a01b03841660008181526010602090815260408083208784528252808320805460ff19166001908117909155938352600b90915290205460ff1615151415610e2557336000908152601e6020526040902083905560019150610e2a565b600091505b5092915050565b6001600160a01b0381166000908152600d602052604081205460ff16151560011415610e5f57506001610d0c565b506000610d0c565b336000818152600b602052604081205490919060ff161515600114610e8b57600080fd5b6001600160a01b038416610e9e57600080fd5b336000818152600f602090815260408083206001600160a01b03891680855290835292819020879055805187815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b336000908152600d602052604090205460ff1615156001148015610f625750336000908152601d6020908152604080832054808452601a8352818420546001600160a01b031684526012835281842090845290915290205460ff165b1561106057336000818152601d602090815260408083208054808552601a8452828520546001600160a01b039081168652601580865284872092875291855283862054600280546101009081900484168952600080516020615e9b833981519152885286892080546064670de0b6b3a764000095860281900491820190925596548a5260198952878a2080548801905560035485168a529488528689206519db1bd8985b60d21b8a5288528689208054958702939093049094019091558054839004821687528580529584902080548401905594548351838152935192969190049094169392600080516020615ebb833981519152928290030190a3505b565b336000818152600d602052604081205490919060ff16151560011461108657600080fd5b6001600160a01b03851660008181526011602090815260408083208884528252808320805460ff19166001908117909155938352600b90915290205460ff161515141561113157336000818152601d60209081526040808320889055604c82529182902080546001019055815187815290810186905281517fbb5f3a98b075980e08be27de702c2bb71c59930a36b0d28fbaf0030a9b714959929181900390910190a283915061114e565b336000908152604a60205260408120805460001901905592508391505b509392505050565b336000818152600b602052604090205460ff16151560011461117757600080fd5b336000600160ff851614156111b5576111903385612746565b6001600160a01b038316600090815260236020526040902080548201905590506114af565b8360ff16600214156111f0576111cb3385612746565b6001600160a01b038316600090815260266020526040902080548201905590506114af565b8360ff166003141561122b576112063385612746565b6001600160a01b038316600090815260296020526040902080548201905590506114af565b8360ff1660041415611266576112413385612746565b6001600160a01b0383166000908152602c6020526040902080548201905590506114af565b8360ff16600514156112a15761127c3385612746565b6001600160a01b0383166000908152602f6020526040902080548201905590506114af565b8360ff16600614156112dc576112b73385612746565b6001600160a01b038316600090815260326020526040902080548201905590506114af565b8360ff1660071415611317576112f23385612746565b6001600160a01b038316600090815260356020526040902080548201905590506114af565b8360ff166008141561138c5761132d3385612746565b6001600160a01b03831660009081526038602090815260408083208054850190557fc130dae904bad8b2e58e4eecb0fbb7871f491d9f0cb4d3e42d842886f7822c0e8252808320805485019055908052902080548201905590506114af565b8360ff16600914156113c7576113a23385612746565b6001600160a01b0383166000908152603b6020526040902080548201905590506114af565b8360ff16600a1415611402576113dd3385612746565b6001600160a01b0383166000908152603e6020526040902080548201905590506114af565b8360ff16600b141561143d576114183385612746565b6001600160a01b038316600090815260416020526040902080548201905590506114af565b8360ff16600c1415611478576114533385612746565b6001600160a01b038316600090815260446020526040902080548201905590506114af565b8360ff16600d14156114af5761148e3385612746565b6001600160a01b038316600090815260476020526040902080548201905590505b8360ff166008146114e6576001600160a01b0382166000908152600080516020615e9b833981519152602052604090208054820190555b6001600160a01b03821660008181526020808052604091829020805485019055815184815260ff88169181019190915281517f19df082c3c3f174884f7819415ba70fca9a7b1ab31aaba84818e516bf5fe6f01929181900390910190a250505050565b6001600160a01b03166000908152601f602052604090205490565b60008181526013602090815260408083206001600160a01b03861684529091529020545b92915050565b6001600160a01b03166000908152600080516020615e9b833981519152602052604090205490565b60515481565b6001600160a01b0382166000908152601560209081526040808320848452909152902054611588565b506000611588565b336000818152600b602052604081205490919060ff16151560011461161157600080fd5b6001600160a01b0385166000818152601c602090815260408083205480845260138352818420948452939091529020546032850485016116518884615aab565b808210611b62576001600160a01b0387166000908152600b6020526040902054339060ff16151560011480156116875750600087115b80156116a55750876001600160a01b0316896001600160a01b031614155b80156116d457506001600160a01b0389166000908152600f602090815260408083203384529091529020548211155b80156116e95750336001600160a01b038a1614155b80156117025750336000908152604d6020526040902054155b61170b57600080fd5b336000908152604d602052604090206001905561172787615ccc565b506001600160a01b03881660009081526020805260409020805488019055603287048701602060008b6001600160a01b03166001600160a01b031681526020019081526020016000206000828254039250508190555060156000601a600087815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020600085815260200190815260200160002054601460008681526020019081526020016000206000336001600160a01b03166001600160a01b031681526020019081526020016000208190555086600f60008b6001600160a01b03166001600160a01b031681526020019081526020016000206000336001600160a01b03166001600160a01b031681526020019081526020016000206000828254039250508190555081602260008b6001600160a01b03166001600160a01b03168152602001908152602001600020600082825401925050819055506000604d6000336001600160a01b03166001600160a01b03168152602001908152602001600020819055506000601a600086815260200190815260200160002060009054906101000a90046001600160a01b0316905060008990506000856064601460008a81526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002054670de0b6b3a7640000028161194557fe5b04620f4240028161195257fe5b6001600160a01b03851660009081526015602090815260408083208c845290915281205492909104925090606490670de0b6b3a76400000204620f4240029050600082828161199d57fe5b0490508b8101601360008b81526020019081526020016000206000866001600160a01b03166001600160a01b0316815260200190815260200160002081905550601860008a81526020019081526020016000205460176000866001600160a01b03166001600160a01b0316815260200190815260200160002060008b815260200190815260200160002081905550601b60008a815260200190815260200160002054601460008b81526020019081526020016000206000866001600160a01b03166001600160a01b03168152602001908152602001600020819055508b601360008b815260200190815260200160002060008f6001600160a01b03166001600160a01b031681526020019081526020016000205401601360008b815260200190815260200160002060008f6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000604d6000336001600160a01b03166001600160a01b03168152602001908152602001600020819055508c6001600160a01b0316866001600160a01b0316600080516020615ebb833981519152896040518082815260200191505060405180910390a360019a5050505050505050505061114e565b6000945050505061114e565b6000908152601a60205260409020546001600160a01b031690565b336000818152600d602052604081205490919060ff161515600114611bad57600080fd5b336000818152601d602081815260408084205480855260138352818520601a8452828620546001600160a01b0316865283529084205494909352526064670de0b6b3a7640000870204918203906519db1bd8985b60d21b14611e12576001600160a01b0385166000908152601160209081526040808320338452601c835281842054845290915290205460ff1615156001148015611c885750336000908152601d6020908152604080832054808452601a8352818420546001600160a01b031684526012835281842090845290915290205460ff1615156001145b8015611cc0575060025461010090046001600160a01b03166000908152600080516020615e9b83398151915260205260409020548111155b8015611cca575060015b611cd357600080fd5b605180548390039055336000818152601d602090815260408083208054845260198352818420546003546001600160a01b039081168652601585528386206519db1bd8985b60d21b875285528386208054670de0b6b3a7640000606490940293909304909203909155815485526013808552838620601a8087528588205484168852908652848720548680528588208054919091039055835487528186528487208187528588205484168852865284872087905592548652845282852091845282852054811685529083528184205460025461010090049091168452600080516020615e9b8339815191528352928190208054938703909303909255815185815290810189905281517f49995e5dd6158cf69ad3e9777c46755a1a826a446c6416992167462dad033b2a929181900390910190a2600193505050610e2a565b600093505050610e2a565b6053545b90565b60025460ff1681565b336000818152600d602052604081205490919060ff161515600114611e5157600080fd5b336000908152601f6020526040902054831415611eb657336001600160a01b0386161415611e7e57600080fd5b6001600160a01b03851660009081526011602090815260408083208684529091529020805460ff19168515151790556001915061114e565b6000915061114e565b6000808260ff1660011415611ef05750506001600160a01b038216600090815260256020526040902054600161211f565b8260ff1660021415611f1e5750506001600160a01b038216600090815260286020526040902054600261211f565b8260ff1660031415611f4c5750506001600160a01b0382166000908152602b6020526040902054600361211f565b8260ff1660041415611f7a5750506001600160a01b0382166000908152602e6020526040902054600461211f565b8260ff1660051415611fa85750506001600160a01b038216600090815260316020526040902054600561211f565b8260ff1660061415611fd65750506001600160a01b038216600090815260346020526040902054600661211f565b8260ff16600714156120045750506001600160a01b038216600090815260376020526040902054600761211f565b8260ff16600814156120325750506001600160a01b0382166000908152603a6020526040902054600861211f565b8260ff16600914156120605750506001600160a01b0382166000908152603d6020526040902054600961211f565b8260ff16600a141561208e5750506001600160a01b038216600090815260406020819052902054600a61211f565b8260ff16600b14156120bc5750506001600160a01b038216600090815260436020526040902054600b61211f565b8260ff16600c14156120ea5750506001600160a01b038216600090815260466020526040902054600c61211f565b8260ff16600d14156121185750506001600160a01b038216600090815260496020526040902054600d61211f565b5060009050805b9250929050565b60009081526019602052604090205490565b336000818152600c602052604090205460ff16151560011461215957600080fd5b336000908152601d6020908152604080832054601e835281842054818552601a8452828520546001600160a01b03168552601584528285208286529093529220546064670de0b6b3a764000087020490861415612589576001600160a01b038a166000908152600b602052604090205460ff16151560011480156121df5750614e218b10155b80156121ee5750620186a08b11155b80156122035750336001600160a01b038b1614155b801561221d5750336000908152601d602052604090205483145b80156122375750336000908152601e602052604090205482145b61224057600080fd5b61224981615cf2565b508a816103e8028161225757fe5b6001600160a01b0387166000908152600080516020615e9b8339815191526020526040902080549290910490910190558a6103e882028161229457fe5b6001600160a01b0387166000908152602080526040902080549290910490910190556122c3818b8b8b8b615d82565b50600880546001600160a01b039081166000908152600080516020615e9b8339815191526020908152604080832080546161a8606489020490810190915560035485168452601583528184206519db1bd8985b60d21b855283528184208054650102babe147464174876e8008a02040190559454909316825280529081208054830190556608e1bc9bf04271655af3107a400084020490620186a08e026305f5e10085028161236e57fe5b04905080828503036013600088815260200190815260200160002060008f6001600160a01b03166001600160a01b0316815260200190815260200160002054016013600088815260200190815260200160002060008f6001600160a01b03166001600160a01b03168152602001908152602001600020819055508082850303602060008f6001600160a01b03166001600160a01b031681526020019081526020016000205401602060008f6001600160a01b03166001600160a01b03168152602001908152602001600020819055508082850303602160008f6001600160a01b03166001600160a01b03168152602001908152602001600020600082825401925050819055508082016019600088815260200190815260200160002060008282540192505081905550828203601360006519db1bd8985b60d21b60001b81526020019081526020016000206000600260019054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000828254019250508190555082820360206000600260019054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020600082825401925050819055508c6001600160a01b0316336001600160a01b0316600080516020615ebb833981519152866040518082815260200191505060405180910390a35050506125bb565b5060408051600080825291516001600160a01b038c16913391600080516020615ebb8339815191529181900360200190a35b5050505050505050505050565b336000818152600d602052604081205490919060ff1615156001146125ec57600080fd5b336000908152601d6020526040902054831415611eb657336001600160a01b038616141561261957600080fd5b6001600160a01b03851660009081526010602090815260408083208684529091529020805460ff19168515151790556001915061114e565b336000818152600e602052604090205460ff16151560011461267257600080fd5b336001600160a01b03841614156126c2576040805162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b604482015290519081900360640190fd5b6001600160a01b0383166000818152600d60209081526040808320805460ff191687151590811790915533808552604c8452828520859055604b8452828520859055604a845282852094909455815190815290517fd562498d05096e8752446b22351f39f5127bc5a0b49757ff3a3d5fbadc0cb42d929181900390910190a3505050565b60008160ff16600114156127fe576000605454600860026053548161276757fe5b048161276f57fe5b048161277757fe5b6001600160a01b03861660009081526025602090815260408083205460228352818420546021909352908320549490930494509192909160019081019101816127bc57fe5b6001600160a01b03881660009081526024602090815260408083205460239092529091205492909104910184840203816127f257fe5b04935061158892505050565b8160ff16600214156128a8576000605554600860026053548161281d57fe5b048161282557fe5b048161282d57fe5b6001600160a01b038616600090815260286020908152604080832054602283528184205460219093529083205494909304945091929091600190810191018161287257fe5b6001600160a01b03881660009081526027602090815260408083205460269092529091205492909104910184840203816127f257fe5b8160ff166003141561295257600060565460086002605354816128c757fe5b04816128cf57fe5b04816128d757fe5b6001600160a01b0386166000908152602b6020908152604080832054602283528184205460219093529083205494909304945091929091600190810191018161291c57fe5b6001600160a01b0388166000908152602a602090815260408083205460299092529091205492909104910184840203816127f257fe5b8160ff16600414156129fc576000605754600860026053548161297157fe5b048161297957fe5b048161298157fe5b6001600160a01b0386166000908152602e602090815260408083205460228352818420546021909352908320549490930494509192909160019081019101816129c657fe5b6001600160a01b0388166000908152602d6020908152604080832054602c9092529091205492909104910184840203816127f257fe5b8160ff1660051415612aa65760006058546008600260535481612a1b57fe5b0481612a2357fe5b0481612a2b57fe5b6001600160a01b0386166000908152603160209081526040808320546022835281842054602190935290832054949093049450919290916001908101910181612a7057fe5b6001600160a01b038816600090815260306020908152604080832054602f9092529091205492909104910184840203816127f257fe5b8160ff1660061415612b505760006059546008600260535481612ac557fe5b0481612acd57fe5b0481612ad557fe5b6001600160a01b0386166000908152603460209081526040808320546022835281842054602190935290832054949093049450919290916001908101910181612b1a57fe5b6001600160a01b03881660009081526033602090815260408083205460329092529091205492909104910184840203816127f257fe5b8160ff1660071415612bfa576000605a546008600260535481612b6f57fe5b0481612b7757fe5b0481612b7f57fe5b6001600160a01b0386166000908152603760209081526040808320546022835281842054602190935290832054949093049450919290916001908101910181612bc457fe5b6001600160a01b03881660009081526036602090815260408083205460359092529091205492909104910184840203816127f257fe5b8160ff1660081415612ca4576000605b546008600260535481612c1957fe5b0481612c2157fe5b0481612c2957fe5b6001600160a01b0386166000908152603a60209081526040808320546022835281842054602190935290832054949093049450919290916001908101910181612c6e57fe5b6001600160a01b03881660009081526039602090815260408083205460389092529091205492909104910184840203816127f257fe5b8160ff1660091415612d51576000605c546005600260535481612cc357fe5b0481612ccb57fe5b0460020281612cd657fe5b6001600160a01b0386166000908152603d60209081526040808320546022835281842054602190935290832054949093049450919290916001908101910181612d1b57fe5b6001600160a01b0388166000908152603c6020908152604080832054603b9092529091205492909104910184840203816127f257fe5b8160ff16600a1415612e06576000605d54602860535481612d6e57fe5b046005600260535481612d7d57fe5b0481612d8557fe5b040181612d8e57fe5b6001600160a01b0386166000908152604060208181528183205460228252828420546021909252918320549490930494509290916001908101910181612dd057fe5b6001600160a01b0388166000908152603f6020908152604080832054603e9092529091205492909104910184840203816127f257fe5b8160ff16600b1415612eb0576000605e546008600260535481612e2557fe5b0481612e2d57fe5b0481612e3557fe5b6001600160a01b0386166000908152604360209081526040808320546022835281842054602190935290832054949093049450919290916001908101910181612e7a57fe5b6001600160a01b03881660009081526042602090815260408083205460419092529091205492909104910184840203816127f257fe5b8160ff16600c1415612f5a576000605f546008600260535481612ecf57fe5b0481612ed757fe5b0481612edf57fe5b6001600160a01b0386166000908152604660209081526040808320546022835281842054602190935290832054949093049450919290916001908101910181612f2457fe5b6001600160a01b03881660009081526045602090815260408083205460449092529091205492909104910184840203816127f257fe5b8160ff16600d14156115e55760006060546008600260535481612f7957fe5b0481612f8157fe5b0481612f8957fe5b6001600160a01b0386166000908152604960209081526040808320546022835281842054602190935290832054949093049450919290916001908101910181612fce57fe5b6001600160a01b03881660009081526048602090815260408083205460479092529091205492909104910184840203816127f257fe5b6001600160a01b03166000908152601e602052604090205490565b336000818152600e602052604090205460ff16151560011461304057600080fd5b336000908152600e602052604090205460ff16613091576040805162461bcd60e51b815260206004820152600a60248201526941646d696e46616c736560b01b604482015290519081900360640190fd5b5060028054610100600160a81b0319166101006001600160a01b0395861602179055600480546001600160a01b03199081169285169290921790556005805482169284169290921790915560068054821693831693909317909255600780548316938216939093179092556008805482169383169390931790925560098054831693821693909317909255600a805490911692909116919091179055336000908152604c60209081526040808320839055604b8252808320839055604a909152812055565b6001600160a01b0316600090815260208052604090205490565b60006001600160a01b0382163314156131995750336000908152601c6020526040902054610d0c565b506001600160a01b0381166000908152601c6020526040902054610d0c565b336000818152600c602052604090205460ff1615156001146131d957600080fd5b336001600160a01b03841614156131ef57600080fd5b6001600160a01b0383166000818152600b6020908152604091829020805460ff19168615159081179091558251908152915133927f8cfdbf9b02b83c1504c3c6c0ebf7f515b071b2103b37b52fba37a39a23d33b0392908290030190a3505050565b336000818152600b602052604090205460ff16151560011461327257600080fd5b336000908152601c60209081526040808320548084526019835281842054601a8452828520546001600160a01b03168552601584528285208286529093529083205490929190606490670de0b6b3a76400000204039050836132d43384615aab565b8082101580156132f15750336000908152604d6020526040902054155b1561340b57336000908152600b602052604090205460ff161515600114801561331a5750600085115b61332357600080fd5b336000818152604d6020818152604080842060018155600080516020615e9b833981519152835281852080548c9003905588855260138352818520868652835281852080548c0190558885526019835281852080548c900390556003546001600160a01b03168552601583528185206519db1bd8985b60d21b86528352818520548686527f1cfd05295e1e2807b17860e3f753be2d73e143637c711d96503fa979b987fe6584528286205592825292909155815184815291517fdae8fce77474c1d5a6dabb90c77dc8185f2dfa9229889ddb3f9791d408b66d9a9281900390910190a2613445565b50604080516000808252915133917fdae8fce77474c1d5a6dabb90c77dc8185f2dfa9229889ddb3f9791d408b66d9a919081900360200190a25b5050505050565b6001600160a01b0381166000908152600e602052604081205460ff16151560011415610e5f57506001610d0c565b336000818152600b60205260409020546060919060ff16151560011461349f57600080fd5b60005b60208160ff161080156134d05750838160ff16602081106134bf57fe5b1a60f81b6001600160f81b03191615155b156134dd576001016134a2565b60608160ff1667ffffffffffffffff811180156134f957600080fd5b506040519080825280601f01601f191660200182016040528015613524576020820181803683370190505b509050600091505b60208260ff1610801561355a5750848260ff166020811061354957fe5b1a60f81b6001600160f81b03191615155b156135a357848260ff166020811061356e57fe5b1a60f81b818360ff168151811061358157fe5b60200101906001600160f81b031916908160001a90535060019091019061352c565b9250505b50919050565b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d975780601f10610d6c57610100808354040283529160200191610d97565b336000818152600b602052604081205490919060ff16151560011461362b57600080fd5b60008411801561363e57508260ff166001145b15613730576001600160a01b0385166000908152600b602052604090205460ff16151560011461366d57600080fd5b33600081815260256020526040902054851180159061368a575060015b80156136a85750806001600160a01b0316866001600160a01b031614155b6136b157600080fd5b6001600160a01b038116600090815260256020908152604080832054602390925290912054869190816136e057fe5b6001600160a01b038981166000908152602460209081526040808320805496909504969096029094019092556025909252828120805489019055921682529020805485900390556001915061114e565b60008411801561374357508260ff166002145b15613835576001600160a01b0385166000908152600b602052604090205460ff16151560011461377257600080fd5b33600081815260286020526040902054851180159061378f575060015b80156137ad5750806001600160a01b0316866001600160a01b031614155b6137b657600080fd5b6001600160a01b038116600090815260286020908152604080832054602690925290912054869190816137e557fe5b6001600160a01b038981166000908152602760209081526040808320805496909504969096029094019092556028909252828120805489019055921682529020805485900390556001915061114e565b60008411801561384857508260ff166003145b1561393a576001600160a01b0385166000908152600b602052604090205460ff16151560011461387757600080fd5b336000818152602b60205260409020548511801590613894575060015b80156138b25750806001600160a01b0316866001600160a01b031614155b6138bb57600080fd5b6001600160a01b0381166000908152602b6020908152604080832054602990925290912054869190816138ea57fe5b6001600160a01b038981166000908152602a6020908152604080832080549690950496909602909401909255602b909252828120805489019055921682529020805485900390556001915061114e565b60008411801561394d57508260ff166004145b15613a3f576001600160a01b0385166000908152600b602052604090205460ff16151560011461397c57600080fd5b336000818152602e60205260409020548511801590613999575060015b80156139b75750806001600160a01b0316866001600160a01b031614155b6139c057600080fd5b6001600160a01b0381166000908152602e6020908152604080832054602c90925290912054869190816139ef57fe5b6001600160a01b038981166000908152602d6020908152604080832080549690950496909602909401909255602e909252828120805489019055921682529020805485900390556001915061114e565b600084118015613a5257508260ff166005145b15613b44576001600160a01b0385166000908152600b602052604090205460ff161515600114613a8157600080fd5b336000818152603160205260409020548511801590613a9e575060015b8015613abc5750806001600160a01b0316866001600160a01b031614155b613ac557600080fd5b6001600160a01b038116600090815260316020908152604080832054602f9092529091205486919081613af457fe5b6001600160a01b038981166000908152603060209081526040808320805496909504969096029094019092556031909252828120805489019055921682529020805485900390556001915061114e565b600084118015613b5757508260ff166006145b15613c49576001600160a01b0385166000908152600b602052604090205460ff161515600114613b8657600080fd5b336000818152603460205260409020548511801590613ba3575060015b8015613bc15750806001600160a01b0316866001600160a01b031614155b613bca57600080fd5b6001600160a01b03811660009081526034602090815260408083205460329092529091205486919081613bf957fe5b6001600160a01b038981166000908152603360209081526040808320805496909504969096029094019092556034909252828120805489019055921682529020805485900390556001915061114e565b600084118015613c5c57508260ff166007145b15613d4e576001600160a01b0385166000908152600b602052604090205460ff161515600114613c8b57600080fd5b336000818152603760205260409020548511801590613ca8575060015b8015613cc65750806001600160a01b0316866001600160a01b031614155b613ccf57600080fd5b6001600160a01b03811660009081526037602090815260408083205460359092529091205486919081613cfe57fe5b6001600160a01b038981166000908152603660209081526040808320805496909504969096029094019092556037909252828120805489019055921682529020805485900390556001915061114e565b600084118015613d6157508260ff166008145b15613e53576001600160a01b0385166000908152600b602052604090205460ff161515600114613d9057600080fd5b336000818152603a60205260409020548511801590613dad575060015b8015613dcb5750806001600160a01b0316866001600160a01b031614155b613dd457600080fd5b6001600160a01b0381166000908152603a602090815260408083205460389092529091205486919081613e0357fe5b6001600160a01b03898116600090815260396020908152604080832080549690950496909602909401909255603a909252828120805489019055921682529020805485900390556001915061114e565b600084118015613e6657508260ff166009145b15613f58576001600160a01b0385166000908152600b602052604090205460ff161515600114613e9557600080fd5b336000818152603d60205260409020548511801590613eb2575060015b8015613ed05750806001600160a01b0316866001600160a01b031614155b613ed957600080fd5b6001600160a01b0381166000908152603d6020908152604080832054603b9092529091205486919081613f0857fe5b6001600160a01b038981166000908152603c6020908152604080832080549690950496909602909401909255603d909252828120805489019055921682529020805485900390556001915061114e565b600084118015613f6b57508260ff16600a145b15614059576001600160a01b0385166000908152600b602052604090205460ff161515600114613f9a57600080fd5b336000818152604060208190529020548511801590613fb7575060015b8015613fd55750806001600160a01b0316866001600160a01b031614155b613fde57600080fd5b6001600160a01b03811660009081526040602081815281832054603e9091529120548691908161400a57fe5b6001600160a01b038981166000908152603f602090815260408083208054969095049690960290940190925591839052828120805489019055921682529020805485900390556001915061114e565b60008411801561406c57508260ff16600b145b1561415e576001600160a01b0385166000908152600b602052604090205460ff16151560011461409b57600080fd5b3360008181526043602052604090205485118015906140b8575060015b80156140d65750806001600160a01b0316866001600160a01b031614155b6140df57600080fd5b6001600160a01b0381166000908152604360209081526040808320546041909252909120548691908161410e57fe5b6001600160a01b038981166000908152604260209081526040808320805496909504969096029094019092556043909252828120805489019055921682529020805485900390556001915061114e565b60008411801561417157508260ff16600c145b15614263576001600160a01b0385166000908152600b602052604090205460ff1615156001146141a057600080fd5b3360008181526046602052604090205485118015906141bd575060015b80156141db5750806001600160a01b0316866001600160a01b031614155b6141e457600080fd5b6001600160a01b0381166000908152604660209081526040808320546044909252909120548691908161421357fe5b6001600160a01b038981166000908152604560209081526040808320805496909504969096029094019092556046909252828120805489019055921682529020805485900390556001915061114e565b60008411801561427657508260ff16600d145b15611eb6576001600160a01b0385166000908152600b602052604090205460ff1615156001146142a557600080fd5b3360008181526049602052604090205485118015906142c2575060015b80156142e05750806001600160a01b0316866001600160a01b031614155b6142e957600080fd5b6001600160a01b0381166000908152604960209081526040808320546047909252909120548691908161431857fe5b6001600160a01b038981166000908152604860209081526040808320805496909504969096029094019092556049909252828120805489019055921682529020805485900390556001915061114e565b336000818152604d6020908152604080832060019055601c825280832054835260138252808320938352929052908120546032830492830192908311156143e9576040805162461bcd60e51b815260206004820152601060248201526f2737ba1022b737bab3b4102a37b5b2b760811b604482015290519081900360640190fd5b336000908152604e6020526040902054928190039260ff1660011415614485576001600160a01b0384166000908152600b602052604090205460ff16151560011480156144455750336000908152600b602052604090205460ff165b614485576040805162461bcd60e51b815260206004820152600c60248201526b2737ba10309036b2b6b132b960a11b604482015290519081900360640190fd5b336000908152601c60205260409020546144a0908590615aab565b336000818152601c6020908152604080832054808452601a835281842054601384528285208686528452828520549185526014845282852095855294909252822054848701936001600160a01b0316929190606490670de0b6b3a76400000204620f4240028161450c57fe5b6001600160a01b0384166000908152601560209081526040808320338452601c835281842054845290915281205492909104925090606490670de0b6b3a76400000204620f4240029050600082828161456157fe5b04905084810360136000601c6000336001600160a01b03166001600160a01b031681526020019081526020016000205481526020019081526020016000206000336001600160a01b03166001600160a01b031681526020019081526020016000208190555060186000601c6000336001600160a01b03166001600160a01b031681526020019081526020016000205481526020019081526020016000205460176000336001600160a01b03166001600160a01b031681526020019081526020016000206000601c6000336001600160a01b03166001600160a01b031681526020019081526020016000205481526020019081526020016000208190555060156000856001600160a01b03166001600160a01b031681526020019081526020016000206000601c6000336001600160a01b03166001600160a01b031681526020019081526020016000205481526020019081526020016000205460146000601c6000336001600160a01b03166001600160a01b031681526020019081526020016000205481526020019081526020016000206000336001600160a01b03166001600160a01b031681526020019081526020016000208190555087602060008b6001600160a01b03166001600160a01b031681526020019081526020016000205401602060008b6001600160a01b03166001600160a01b03168152602001908152602001600020819055508460206000336001600160a01b03166001600160a01b03168152602001908152602001600020600082825403925050819055508760136000601c6000336001600160a01b03166001600160a01b0316815260200190815260200160002054815260200190815260200160002060008b6001600160a01b03166001600160a01b03168152602001908152602001600020540160136000601c6000336001600160a01b03166001600160a01b0316815260200190815260200160002054815260200190815260200160002060008b6001600160a01b03166001600160a01b031681526020019081526020016000208190555061486388615ccc565b50336000818152604d6020908152604080832092909255815188815291516001600160a01b038d169392600080516020615ebb83398151915292908290030190a350600198975050505050505050565b6001600160a01b0381166000908152600b602052604081205460ff16151560011415610e5f57506001610d0c565b6002547f8adaf30a32e175223a541ea69cb2b09c2c40a4d36e64529c0f6beadb1c53c39a80546101009092046001600160a01b03166001600160a01b03199092169190911790557f06bf4f473cd4d79aeae5cc8a0fd75c96c8059dbaf2acb4ee39656932ba19d088805460ff1990811660019081179092557fb59699a9cea9f863f36e0a923ebfd5f0847e8fb1fe47054d2d6153b45dfa8a9a8054821683179055600b6020527fc45d82828750119522c9307dff926298e79e42dc1ca6db7b577de46b8dc0eee380548216831790557fcfdfa7a74fc69c8acf707c0e03a2554a8f00d00256a00a3dea229280c13857e980548216831790557f4b267af3f0dfbd536d7896a46bb5d26bbbe9d2eb0a055c030795afbd71401cef80547fee753d54f10e412ae5c0c9c28e15517f8be876c9fc4a5258e3a1a4fe4ef494e180548416851790557f414c01b0e1c457381b945f39ecdc404df7574df9f5532096d38bcf7cc2f124a680548416851790557fa5a82e149ce51ab04b4fe1e6c1748f7b8d0abf93d935bcd091955094674f54e180548416851790557fbc69becb0584bcf7ba8ff96e8f832bcaf67a100ed011a4ccdfe7316623e6cf7480548416851790557fb80ece3fab54663a86e760d03e27704c916ecf1cf28942dbe1c0a0d7059864a280548416851790557f485614bb00bf0bcdac2415f00acee3b8efbe61d3bbec9efc7012a8047e28354380548416851790557f7ac182010849aa3a3a110ddca0183dad74dc4eea98579c3dcec398209a212f3380548416851790558216831782168317905573a1ff1474e0a5db4801e426289db485b456de78826000527f99cce137e674a1cebb7eda315c06102539f6384af5d215fda3b212ced31f629f80549091169091179055565b336000818152601c6020908152604080832054808452601383528184208585529092529091205490918390614b9f9084615aab565b808210158015614bbc5750336000908152604d6020526040902054155b15614d73576000838152601a60209081526040808320546001600160a01b0316835260158252808320868452909152812054606490670de0b6b3a764000002336000908152600b6020526040902054919004915060ff1615156001148015614c245750600085115b614c75576040805162461bcd60e51b815260206004820152601760248201527f4d656d626572206f7220476c6f62616c42616c616e6365000000000000000000604482015290519081900360640190fd5b336000818152604d6020818152604080842060018155600080516020615e9b833981519152835281852080548c01905589855260138352818520868652835281852080548c900390558985526019835281852080548c0190557f8adaf30a32e175223a541ea69cb2b09c2c40a4d36e64529c0f6beadb1c53c39a546001600160a01b03168552601583528185208a86528352818520548686527f1cfd05295e1e2807b17860e3f753be2d73e143637c711d96503fa979b987fe6584528286205592825292909155815185815291517ff7b36fc0cca27666847afc93af0117fec37ce4f9ebc576a0e44d0de76e02e4f19281900390910190a250614dad565b50604080516000808252915133917ff7b36fc0cca27666847afc93af0117fec37ce4f9ebc576a0e44d0de76e02e4f1919081900360200190a25b50505050565b60009182526014602090815260408084206001600160a01b0393909316845291905290205490565b6001600160a01b0381166000908152600c602052604081205460ff16151560011415610e5f57506001610d0c565b336000818152600e602052604090205460ff161515600114614e2a57600080fd5b336001600160a01b0384161415614e4057600080fd5b6001600160a01b0383166000818152600e6020908152604091829020805460ff19168615159081179091558251908152915133927f8a13a3fa731d6813da1e5db0e97f4533f20e170440daff4893342b5ac23dfbf092908290030190a3505050565b336000818152600b602052604081205490919060ff161515600114614ec657600080fd5b82518390614ed85750600091506135a7565b5050506020015190565b336000908152604d60205260408120548190158015614f05575060038360ff1611155b8015614f15575060018360ff1610155b15614f5657614f243385615aab565b5050336000908152601c60208181526040808420868155604e83529320805460ff191660ff861617905552548161211f565b5050336000908152601c60205260409020548161211f565b336000818152600b602052604081205490919060ff161515600114614f9257600080fd5b50506001600160a01b039182166000908152600f6020908152604080832093909416825291909152205490565b336000818152600d60205260408120549091829160ff161515600114614fe457600080fd5b336000908152601d60209081526040808320546001600160a01b038916845260128352818420818552909252909120805460ff19166519db1bd8985b60d21b90921415918217905561503557600080fd5b6001600160a01b038516331461567c576001600160a01b0385166000818152601560209081526040808320338452601d835281842054808552908352818420549484526016835281842090845282528220929092556519db1bd8985b60d21b9052601890527f5e9c3923fcbb6c6646f9350fb33018bda332eb599a8c05e055499c2065cf0cfc541580156150e35750336000908152601d602090815260408083205483526019909152902054155b1561512c576001600160a01b0385166000908152601660209081526040808320338452601d83528184208054855290835281842088905554835260199091529020805460010190555b6001600160a01b0385166000818152601560209081526040808320338452601d83528184208054855290835281842089905554808452601983528184205494845260168352818420908452909152812054909190606490670de0b6b3a76400000204620f4240028161519a57fe5b6001600160a01b0388166000908152601560209081526040808320338452601d8352818420548452909152812054929091049250908290606490670de0b6b3a76400000204620f424002816151eb57fe5b336000908152601d60209081526040808320805484526019808452828520805497909604958690556003546001600160a01b03168552601584528285206519db1bd8985b60d21b80875281865284872080549454885292865293862054938652909352670de0b6b3a764000060648088028290049381028290048301939093039093556053549496509391840204620f4240028161528557fe5b6003546001600160a01b031660009081526015602090815260408083206519db1bd8985b60d21b845290915290205491900491508190606490670de0b6b3a76400000204620f424002816152d557fe5b0460538190555088601b6000601d6000336001600160a01b03166001600160a01b031681526020019081526020016000205481526020019081526020016000208190555088601560008c6001600160a01b03166001600160a01b031681526020019081526020016000206000601d6000336001600160a01b03166001600160a01b03168152602001908152602001600020548152602001908152602001600020819055506000601560008c6001600160a01b03166001600160a01b031681526020019081526020016000206000601d6000336001600160a01b03166001600160a01b031681526020019081526020016000205481526020019081526020016000205490506000601660008d6001600160a01b03166001600160a01b031681526020019081526020016000206000601d6000336001600160a01b03166001600160a01b03168152602001908152602001600020548152602001908152602001600020549050808b830103601560008e6001600160a01b03166001600160a01b031681526020019081526020016000206000601d6000336001600160a01b03166001600160a01b0316815260200190815260200160002054815260200190815260200160002081905550600160186000601d6000336001600160a01b03166001600160a01b03168152602001908152602001600020548152602001908152602001600020600082825401925050819055506001601860006519db1bd8985b60d21b60001b8152602001908152602001600020600082825401925050819055506064601560008e6001600160a01b03166001600160a01b031681526020019081526020016000206000601d6000336001600160a01b03166001600160a01b0316815260200190815260200160002054815260200190815260200160002054670de0b6b3a7640000028161558157fe5b6001600160a01b038e8116600090815260166020908152604080832033808552601d84528285208054865291845282852054605180546064670de0b6b3a76400009093029290920490910398909704979097019095559354808352601a8252848320549093168252601581528382208383528152908390205483519283529082015281517fbb5f3a98b075980e08be27de702c2bb71c59930a36b0d28fbaf0030a9b714959929181900390910190a25050336000908152601d6020908152604080832054808452601a8352818420546001600160a01b03168452601583528184209084529091529020549750600196506156bc945050505050565b336000908152601d6020908152604080832054808452601a8352818420546001600160a01b03168452601583528184209084529091529020549250600291505b509250929050565b336000818152600d602052604081205490919060ff1615156001146156e857600080fd5b60019350336000908152601d6020526040902054831461570757600080fd5b6001600160a01b03851660008181526012602090815260408083208784528252808320805460ff1916891515908117909155601a83529281902080546001600160a01b03191690941790935560188152825186815290810191909152815133927f215e8044146f1415ce2971887d448a2a573c47c3c1179eda369be24ad7e511b6928290030190a26001915061114e565b336000818152600b602052604081205490919060ff1615156001146157bc57600080fd5b6000838152601a60209081526040808320546001600160a01b038881168552601784528285208886528452828520546018909452919093205492169114801590615827575060008481526013602090815260408083206001600160a01b038916845290915290205415155b15615885576001600160a01b03811660008181526012602090815260408083208884528252808320805460ff19166001179055928252601581528282208783529052205461587157fe5b61587b8585615aab565b6001925050610e2a565b6002925050610e2a565b336000818152600b602052604081205490919060ff1615156001146158b357600080fd5b6001600160a01b0385166000908152600c602052604090205460ff16151560011480156158fd57506001600160a01b0383166000908152600d602052604090205460ff1615156001145b801561592657506001600160a01b0384166000908152600c602052604090205460ff1615156001145b61592f57600080fd5b336000818152602080526040902054683635c9adc5dea0000090811015615a24576001600160a01b038581166000908152600080516020615e9b833981519152602081815260408084208054600588049081019091558280528185208054820190558c86168552838352818520805482019055828052818520805490910190558a851684529181528183208054600a87049081019091558180528284208054909101905594909216808252601c855282822054825260138552828220908252845281812080548490039055838052818120805493909303909255600c90925220805460ff19166001908117909155915061114e565b60009350505061114e565b60003381670de0b6b3a7640000615a4583613156565b81615a4c57fe5b04905060018110615a60579150611e219050565b600092505050611e21565b6001600160a01b0382166000908152600b602052604081205460ff161515600114156115e55750336000908152601d602052604090208190556001611588565b6000818152601a6020908152604080832054601383528184206001600160a01b0387811686529084528285205460178552838620878752855283862054601890955292909420549316929091108015615b2557506001600160a01b0384166000908152601760209081526040808320868452909152902054155b15615b86576001600160a01b0380831660009081526015602090815260408083208784528252808320546014835281842094891680855294835281842055868352601882528083205493835260178252808320878452909152902055614dad565b6001600160a01b03841660009081526017602090815260408083208684528252808320546018909252909120541115614dad5760008381526014602090815260408083206001600160a01b03881684529091528120548290606490670de0b6b3a76400000204620f42400281615bf857fe5b6001600160a01b038516600090815260156020908152604080832089845290915281205492909104925090606490670de0b6b3a76400000204620f42400290506000828281615c4357fe5b60008881526013602090815260408083206001600160a01b03808e16808652918452828520969095049586905582805281842080549096018a90039095558a83526018825280832054858452601783528184208c85528352818420559289168252601581528282208a835281528282205460148252838320948352939052205550614dad915050565b60008115615ce7575060538054603283040190556001610d0c565b506000905080610d0c565b605180548201905560548054670de0b6b3a7640000909204918201905560558054820190556056805482019055605780548201905560588054820190556059805482019055605a805482019055605b805482019055605c805482019055605d805482019055605e805482019055605f805482019055606080548201905560528054600d9092029091019055600190565b6001600160a01b0393841660008181526025602090815260408083208054670de0b6b3a7640000909a04998a0190556028825280832080548a01905560045488168352602b825280832080548a019055928252602e815282822080548901905594861681526031855281812080548801905592851683526034845280832080548701905590841682526037835280822080548601905560055484168252603a835280822080548601905560085484168252603d835280822080548601905560095484168252808352808220805486019055600a5484168252604383528082208054860190556002546101009004841682526046835280822080548601905560075490931681526049909152208054909101905560019056fe7ccbd7b43422367c669064a1bbe3e6dab76b21a28a5b8782baec8892f4516fa8ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122095dc0c7b1ff41291792765e97a9611a19f8b80125522de60a30b0e68542be87064736f6c63430006060033
Deployed Bytecode Sourcemap
768:90684:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;768:90684:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;74009:481:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;74009:481:0;;;;;;;;;;:::i;:::-;;74578:166;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;74578:166:0;-1:-1:-1;;;;;74578:166:0;;:::i;:::-;;;;;;;;;;;;;;;;4951:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4951:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;71453:547;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;71453:547:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;50547:249;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;50547:249:0;-1:-1:-1;;;;;50547:249:0;;:::i;35548:319::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;35548:319:0;;;;;;;;:::i;69033:998::-;;;:::i;72145:842::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;72145:842:0;;;;;;;;;;;;;:::i;22281:3831::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;22281:3831:0;;;;:::i;75169:172::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;75169:172:0;-1:-1:-1;;;;;75169:172:0;;:::i;77362:225::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;77362:225:0;;;;;;;;:::i;76990:241::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;76990:241:0;-1:-1:-1;;;;;76990:241:0;;:::i;14433:26::-;;;:::i;50870:357::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;50870:357:0;;;;;;;;:::i;32379:2889::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;32379:2889:0;;;;;;;;;;;;;;;;;:::i;51301:187::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;51301:187:0;;:::i;:::-;;;;-1:-1:-1;;;;;51301:187:0;;;;;;;;;;;;;;36517:2117;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;36517:2117:0;;;;;;-1:-1:-1;;;;;36517:2117:0;;:::i;52345:247::-;;;:::i;5054:26::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;55533:515;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;55533:515:0;;;;;;;;;;;;;;;:::i;86071:1657::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;86071:1657:0;;-1:-1:-1;;;;;86071:1657:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;74844:255;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;74844:255:0;;:::i;65366:3655::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;65366:3655:0;;;-1:-1:-1;;;;;65366:3655:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;54899:521::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;54899:521:0;;;;;;;;;;;;;;;:::i;54213:573::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;54213:573:0;;;;;;;;;;:::i;77764:8204::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;77764:8204:0;;-1:-1:-1;;;;;77764:8204:0;;;;;;;;:::i;75403:165::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;75403:165:0;-1:-1:-1;;;;;75403:165:0;;:::i;17253:1741::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;17253:1741:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;76657:161::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;76657:161:0;-1:-1:-1;;;;;76657:161:0;;:::i;51944:334::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;51944:334:0;-1:-1:-1;;;;;51944:334:0;;:::i;75650:324::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;75650:324:0;;;;;;;;;;:::i;30549:1664::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;30549:1664:0;;:::i;53407:259::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;53407:259:0;-1:-1:-1;;;;;53407:259:0;;:::i;73057:449::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;73057:449:0;;:::i;5016:29::-;;;:::i;38805:11644::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;38805:11644:0;;-1:-1:-1;;;;;38805:11644:0;;;;;;;;;;;;;:::i;26263:2376::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;26263:2376:0;;;;;;;;:::i;52684:254::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;52684:254:0;-1:-1:-1;;;;;52684:254:0;;:::i;15673:1430::-;;;:::i;28702:1784::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;28702:1784:0;;:::i;51591:257::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;51591:257:0;;;;;;-1:-1:-1;;;;;51591:257:0;;:::i;53042:274::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;53042:274:0;-1:-1:-1;;;;;53042:274:0;;:::i;53798:335::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;53798:335:0;;;;;;;;;;:::i;73573:356::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;73573:356:0;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;73573:356:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;73573:356:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;73573:356:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;73573:356:0;;-1:-1:-1;73573:356:0;;-1:-1:-1;;;;;73573:356:0:i;70624:671::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;70624:671:0;;;;;;;;;:::i;36161:209::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;36161:209:0;;;;;;;;;;:::i;57359:4576::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;57359:4576:0;;;;;;;;:::i;56161:1088::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;56161:1088:0;;;;;;;;;;;;;;;:::i;64333:809::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;64333:809:0;;;;;;;;:::i;19328:2386::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;19328:2386:0;;;;;;;;;;;;;;;;;;;:::i;76142:343::-;;;:::i;70145:349::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;70145:349:0;;;;;;;;:::i;74009:481::-;74121:10;1764:23;;;;:5;:23;;;;;;;;:31;;:23;:31;1675:137;;12:1:-1;9;2:12;1675:137:0;-1:-1:-1;;;;;74157:31:0;::::1;;::::0;;;:18:::1;:31;::::0;;;;;;;:41;;-1:-1:-1;;74157:41:0::1;::::0;::::1;;::::0;;::::1;::::0;;;74215:32:::1;:45:::0;;;;;:49;;;74281:30:::1;:43:::0;;;;;:47;;;74345:35:::1;:48:::0;;;;;:52;;;;74419:61;;;;;;74447:10:::1;::::0;74419:61:::1;::::0;;;;;;;::::1;74009:481:::0;;;:::o;74578:166::-;-1:-1:-1;;;;;74709:25:0;;74673:7;74709:25;;;:18;:25;;;;;;74578:166;;;;:::o;4951:52::-;;;;;;;;;;;;;;;-1:-1:-1;;4951:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;71453:547::-;71600:10;71631:4;1455:36;;;:18;:36;;;;;;71631:4;;71600:10;1455:36;;:44;;:36;:44;1353:163;;12:1:-1;9;2:12;1353:163:0;-1:-1:-1;;;;;71665:36:0;::::1;;::::0;;;:21:::1;:36;::::0;;;;;;;:61;;;;;;;;:68;;-1:-1:-1;;71665:68:0::1;71729:4;71665:68:::0;;::::1;::::0;;;71754:23;;;:8:::1;:23:::0;;;;;;::::1;;:31;;;71751:240;;;71829:10;71807:33;::::0;;;:21:::1;:33;::::0;;;;:77;;;71912:4:::1;::::0;-1:-1:-1;71905:11:0::1;;71751:240;71968:5;71961:12;;71751:240;71453:547:::0;;;;;:::o;50547:249::-;-1:-1:-1;;;;;50669:18:0;;50640:4;50669:18;;;:5;:18;;;;;;;;:26;;:18;:26;50666:121;;;-1:-1:-1;50720:4:0;50713:11;;50666:121;-1:-1:-1;50768:5:0;50761:12;;35548:319;35638:10;35670:4;1117:26;;;:8;:26;;;;;;35670:4;;35638:10;1117:26;;:34;;:26;:34;1026:142;;12:1:-1;9;2:12;1026:142:0;-1:-1:-1;;;;;35697:21:0;::::1;35689:30;;12:1:-1;9::::0;2:12:::1;35689:30:0;35741:10;35732:20;::::0;;;:8:::1;:20;::::0;;;;;;;-1:-1:-1;;;;;35732:29:0;::::1;::::0;;;;;;;;;;:47;;;35797:36;;;;;;;35732:29;;35741:10;35797:36:::1;::::0;;;;;;;;;::::1;-1:-1:-1::0;35853:4:0::1;::::0;35548:319;-1:-1:-1;;;35548:319:0:o;69033:998::-;69119:10;69113:17;;;;:5;:17;;;;;;;;:25;;:17;:25;:127;;;;-1:-1:-1;69195:10:0;69142:66;69176:30;;;:18;:30;;;;;;;;;69161:46;;;:14;:46;;;;;;-1:-1:-1;;;;;69161:46:0;69142:66;;:18;:66;;;;;:98;;;;;;;;;;;69113:127;69110:914;;;69334:10;69258:23;69315:30;;;:18;:30;;;;;;;;;;69300:46;;;:14;:46;;;;;;-1:-1:-1;;;;;69300:46:0;;;69285:62;;:14;:62;;;;;;:94;;;;;;;;;;69513:12;;;;;;;;;;69422:104;;-1:-1:-1;;;;;;;;;;;69422:104:0;;;;;:137;;69390:3;69382:4;69285:101;;;69284:109;;;69422:137;;;;;;69611:30;;69588:54;;:22;:54;;;;;:73;;;;;;69693:17;;;;69678:33;;;;;;;;-1:-1:-1;;;69678:101:0;;;;;;;:149;;69798:21;;;69797:30;;;;69678:149;;;;;;69864:12;;;;;;;69844:33;;;;;;;;;:66;;;;;;69982:12;;69961:51;;;;;;;69284:109;;69982:12;;;;;;;69334:10;-1:-1:-1;;;;;;;;;;;69961:51:0;;;;;;;69110:914;;69033:998::o;72145:842::-;72284:10;72315:7;1764:23;;;:5;:23;;;;;;72315:7;;72284:10;1764:23;;:31;;:23;:31;1675:137;;12:1:-1;9;2:12;1675:137:0;-1:-1:-1;;;;;72352:36:0;::::1;;::::0;;;:21:::1;:36;::::0;;;;;;;:55;;;;;;;;:62;;-1:-1:-1;;72352:62:0::1;72410:4;72352:62:::0;;::::1;::::0;;;72435:23;;;:8:::1;:23:::0;;;;;;::::1;;:31;;;72432:546;;;72507:10;72488:30;::::0;;;:18:::1;:30;::::0;;;;;;;:50;;;72559:32:::1;:44:::0;;;;;;:67;;72625:1:::1;72559:67;::::0;;72652:64;;;;;;;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;72744:17;72737:24;;;;72432:546;72842:10;72806:47;::::0;;;:35:::1;:47;::::0;;;;:70;;-1:-1:-1;;72806:70:0;;;:47;-1:-1:-1;72943:17:0;;-1:-1:-1;72432:546:0::1;72145:842:::0;;;;;;:::o;22281:3831::-;22378:10;1117:26;;;;:8;:26;;;;;;;;:34;;:26;:34;1026:142;;12:1:-1;9;2:12;1026:142:0;22472:10:::1;22435:24;22548:1;22529:20;::::0;::::1;;22526:3141;;;22594:45;22611:10;22623:15;22594:16;:45::i;:::-;-1:-1:-1::0;;;;;22656:41:0;::::1;;::::0;;;:23:::1;:41;::::0;;;;:70;;;::::1;::::0;;22567:72;-1:-1:-1;22526:3141:0::1;;;22749:15;:20;;22768:1;22749:20;22746:2921;;;22814:45;22831:10;22843:15;22814:16;:45::i;:::-;-1:-1:-1::0;;;;;22876:45:0;::::1;;::::0;;;:27:::1;:45;::::0;;;;:74;;;::::1;::::0;;22787:72;-1:-1:-1;22746:2921:0::1;;;22973:15;:20;;22992:1;22973:20;22970:2697;;;23038:45;23055:10;23067:15;23038:16;:45::i;:::-;-1:-1:-1::0;;;;;23100:47:0;::::1;;::::0;;;:29:::1;:47;::::0;;;;:76;;;::::1;::::0;;23011:72;-1:-1:-1;22970:2697:0::1;;;23199:15;:20;;23218:1;23199:20;23196:2471;;;23264:45;23281:10;23293:15;23264:16;:45::i;:::-;-1:-1:-1::0;;;;;23326:41:0;::::1;;::::0;;;:23:::1;:41;::::0;;;;:70;;;::::1;::::0;;23237:72;-1:-1:-1;23196:2471:0::1;;;23419:15;:20;;23438:1;23419:20;23416:2251;;;23484:45;23501:10;23513:15;23484:16;:45::i;:::-;-1:-1:-1::0;;;;;23546:40:0;::::1;;::::0;;;:22:::1;:40;::::0;;;;:69;;;::::1;::::0;;23457:72;-1:-1:-1;23416:2251:0::1;;;23638:15;:20;;23657:1;23638:20;23635:2032;;;23703:45;23720:10;23732:15;23703:16;:45::i;:::-;-1:-1:-1::0;;;;;23765:40:0;::::1;;::::0;;;:22:::1;:40;::::0;;;;:69;;;::::1;::::0;;23676:72;-1:-1:-1;23635:2032:0::1;;;23857:15;:20;;23876:1;23857:20;23854:1813;;;23922:45;23939:10;23951:15;23922:16;:45::i;:::-;-1:-1:-1::0;;;;;23984:42:0;::::1;;::::0;;;:24:::1;:42;::::0;;;;:71;;;::::1;::::0;;23895:72;-1:-1:-1;23854:1813:0::1;;;24078:15;:20;;24097:1;24078:20;24075:1592;;;24143:45;24160:10;24172:15;24143:16;:45::i;:::-;-1:-1:-1::0;;;;;24205:40:0;::::1;;::::0;;;:22:::1;:40;::::0;;;;;;;:69;;;::::1;::::0;;24303:90;:108;;;;;:137;;;::::1;::::0;;24497:37;;;;;;;:49;::::1;24457:89:::0;;24205:69;-1:-1:-1;24075:1592:0::1;;;24569:15;:20;;24588:1;24569:20;24566:1101;;;24634:45;24651:10;24663:15;24634:16;:45::i;:::-;-1:-1:-1::0;;;;;24696:37:0;::::1;;::::0;;;:19:::1;:37;::::0;;;;:66;;;::::1;::::0;;24607:72;-1:-1:-1;24566:1101:0::1;;;24785:15;:21;;24804:2;24785:21;24782:885;;;24851:45;24868:10;24880:15;24851:16;:45::i;:::-;-1:-1:-1::0;;;;;24913:46:0;::::1;;::::0;;;:28:::1;:46;::::0;;;;:75;;;::::1;::::0;;24824:72;-1:-1:-1;24782:885:0::1;;;25011:15;:21;;25030:2;25011:21;25008:659;;;25077:45;25094:10;25106:15;25077:16;:45::i;:::-;-1:-1:-1::0;;;;;25139:44:0;::::1;;::::0;;;:26:::1;:44;::::0;;;;:73;;;::::1;::::0;;25050:72;-1:-1:-1;25008:659:0::1;;;25235:15;:21;;25254:2;25235:21;25232:435;;;25301:45;25318:10;25330:15;25301:16;:45::i;:::-;-1:-1:-1::0;;;;;25363:37:0;::::1;;::::0;;;:19:::1;:37;::::0;;;;:66;;;::::1;::::0;;25274:72;-1:-1:-1;25232:435:0::1;;;25452:15;:21;;25471:2;25452:21;25449:218;;;25518:45;25535:10;25547:15;25518:16;:45::i;:::-;-1:-1:-1::0;;;;;25580:44:0;::::1;;::::0;;;:26:::1;:44;::::0;;;;:73;;;::::1;::::0;;25491:72;-1:-1:-1;25449:218:0::1;25718:15;:20;;25737:1;25718:20;25715:188;;-1:-1:-1::0;;;;;25754:108:0;::::1;:90;:108:::0;;;-1:-1:-1;;;;;;;;;;;25754:90:0::1;:108:::0;:90;:108;;:137;;;::::1;::::0;;25715:188:::1;-1:-1:-1::0;;;;;25953:37:0;::::1;;::::0;;;:19:::1;:37:::0;;;;;;;;;;:49;::::1;25913:89:::0;;26045:57;;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;;;;::::1;::::0;;;;;;;;;::::1;1207:1;;22281:3831:::0;;:::o;75169:172::-;-1:-1:-1;;;;;75303:28:0;75267:7;75303:28;;;:21;:28;;;;;;;75169:172::o;77362:225::-;77491:7;77527:41;;;:22;:41;;;;;;;;-1:-1:-1;;;;;77527:50:0;;;;;;;;;;77362:225;;;;;:::o;76990:241::-;-1:-1:-1;;;;;77123:98:0;77087:7;77123:98;;;-1:-1:-1;;;;;;;;;;;77123:90:0;:98;:90;:98;;;;76990:241::o;14433:26::-;;;;:::o;50870:357::-;-1:-1:-1;;;;;51033:29:0;;51001:7;51033:29;;;:14;:29;;;;;;;;51111:48;;;;;;;;;51104:55;;51030:188;-1:-1:-1;51203:1:0;51196:8;;32379:2889;32484:10;32515:4;1117:26;;;:8;:26;;;;;;32515:4;;32484:10;1117:26;;:34;;:26;:34;1026:142;;12:1:-1;9;2:12;1026:142:0;-1:-1:-1;;;;;32579:28:0;::::1;32541:25;32579:28:::0;;;:22:::1;:28;::::0;;;;;;;;32663:41;;;:22:::1;:41:::0;;;;;:47;;;;;;;;;;32769:2:::1;32760:11:::0;::::1;32750:22:::0;::::1;32785:57;32579:28:::0;;32785:32:::1;:57::i;:::-;32884:6;32858:22;:32;32855:2404;;-1:-1:-1::0;;;;;33051:12:0;::::1;32932:24;33051:12:::0;;;:8:::1;:12;::::0;;;;;32959:10:::1;::::0;33051:12:::1;;:20;;:12:::0;:20:::1;:48:::0;::::1;;;;33098:1;33089:6;:10;33051:48;:75;;;;;33124:2;-1:-1:-1::0;;;;;33116:10:0::1;:4;-1:-1:-1::0;;;;;33116:10:0::1;;;33051:75;:129;;;;-1:-1:-1::0;;;;;;33154:14:0;::::1;;::::0;;;:8:::1;:14;::::0;;;;;;;33169:10:::1;33154:26:::0;;;;;;;;33144:36;::::1;;33051:129;:165;;;;-1:-1:-1::0;33198:10:0::1;-1:-1:-1::0;;;;;33198:18:0;::::1;;;33051:165;:222;;;;-1:-1:-1::0;33257:10:0::1;33234:34;::::0;;;:22:::1;:34;::::0;;;;;:39;33051:222:::1;33043:231;;12:1:-1;9::::0;2:12:::1;33043:231:0;33314:10;33291:34;::::0;;;:22:::1;:34;::::0;;;;33342:1:::1;33291:52:::0;;33360:25:::1;33378:6:::0;33360:17:::1;:25::i;:::-;-1:-1:-1::0;;;;;;33475:23:0;::::1;;::::0;;;:19:::1;:23:::0;;;;;;;:32;::::1;33435:72:::0;;33586:2:::1;33501:6:::0;33577:11:::1;33567:6;:22;33524:19;:25;33544:4;-1:-1:-1::0;;;;;33524:25:0::1;-1:-1:-1::0;;;;;33524:25:0::1;;;;;;;;;;;;;:65;;;;;;;;;;;33677:14;:49;33692:14;:33;33707:17;33692:33;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;33692:33:0::1;-1:-1:-1::0;;;;;33677:49:0::1;-1:-1:-1::0;;;;;33677:49:0::1;;;;;;;;;;;;:68;33727:17;33677:68;;;;;;;;;;;;33606:23;:42;33630:17;33606:42;;;;;;;;;;;:54;33649:10;-1:-1:-1::0;;;;;33606:54:0::1;-1:-1:-1::0;;;;;33606:54:0::1;;;;;;;;;;;;:139;;;;33846:6;33802:8;:14;33811:4;-1:-1:-1::0;;;;;33802:14:0::1;-1:-1:-1::0;;;;;33802:14:0::1;;;;;;;;;;;;:26;33817:10;-1:-1:-1::0;;;;;33802:26:0::1;-1:-1:-1::0;;;;;33802:26:0::1;;;;;;;;;;;;;:50;;;;;;;;;;;33910:6;33869:17;:23;33887:4;-1:-1:-1::0;;;;;33869:23:0::1;-1:-1:-1::0;;;;;33869:23:0::1;;;;;;;;;;;;;:47;;;;;;;;;;;33984:1;33933:22;:34;33956:10;-1:-1:-1::0;;;;;33933:34:0::1;-1:-1:-1::0;;;;;33933:34:0::1;;;;;;;;;;;;:52;;;;34002:21;34040:14;:33;34055:17;34040:33;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;34040:33:0::1;34002:71;;34090:22;34129:2;34090:41;;34148:17;34273:22;34255:3;34186:23;:42;34210:17;34186:42;;;;;;;;;;;:58;34229:14;-1:-1:-1::0;;;;;34186:58:0::1;-1:-1:-1::0;;;;;34186:58:0::1;;;;;;;;;;;;;34247:4;34186:65;34185:73;;;;;;34262:7;34184:85;34183:112;;;;;-1:-1:-1::0;;;;;34354:29:0;::::1;34313:22;34354:29:::0;;;:14:::1;:29;::::0;;;;;;;:48;;;;;;;;;34183:112;;;::::1;::::0;-1:-1:-1;34313:22:0;34413:3:::1;::::0;34405:4:::1;34354:55;34353:63;34420:7;34352:75;34313:114;;34444:19;34497:9;34480:14;:26;;;;;;34444:62;;34611:6;34597:11;:20;34523:22;:41;34546:17;34523:41;;;;;;;;;;;:57;34565:14;-1:-1:-1::0;;;;;34523:57:0::1;-1:-1:-1::0;;;;;34523:57:0::1;;;;;;;;;;;;:94;;;;34717:30;:49;34748:17;34717:49;;;;;;;;;;;;34634:31;:47;34666:14;-1:-1:-1::0;;;;;34634:47:0::1;-1:-1:-1::0;;;;;34634:47:0::1;;;;;;;;;;;;:66;34682:17;34634:66;;;;;;;;;;;:132;;;;34858:17;:36;34876:17;34858:36;;;;;;;;;;;;34783:23;:42;34807:17;34783:42;;;;;;;;;;;:58;34826:14;-1:-1:-1::0;;;;;34783:58:0::1;-1:-1:-1::0;;;;;34783:58:0::1;;;;;;;;;;;;:111;;;;35033:6;34985:22;:41;35008:17;34985:41;;;;;;;;;;;:45;35027:2;-1:-1:-1::0;;;;;34985:45:0::1;-1:-1:-1::0;;;;;34985:45:0::1;;;;;;;;;;;;;:54;34923:22;:41;34946:17;34923:41;;;;;;;;;;;:45;34965:2;-1:-1:-1::0;;;;;34923:45:0::1;-1:-1:-1::0;;;;;34923:45:0::1;;;;;;;;;;;;:116;;;;35107:1;35056:22;:34;35079:10;-1:-1:-1::0;;;;;35056:34:0::1;-1:-1:-1::0;;;;;35056:34:0::1;;;;;;;;;;;;:52;;;;35157:2;-1:-1:-1::0;;;;;35130:38:0::1;35139:16;-1:-1:-1::0;;;;;35130:38:0::1;-1:-1:-1::0;;;;;;;;;;;35161:6:0::1;35130:38;;;;;;;;;;;;;;;;;;35192:4;35185:11;;;;;;;;;;;;;32855:2404;35240:5;35233:12;;;;;;;51301:187:::0;51409:7;51445:33;;;:14;:33;;;;;;-1:-1:-1;;;;;51445:33:0;;51301:187::o;36517:2117::-;36623:10;36654:4;1764:23;;;:5;:23;;;;;;36654:4;;36623:10;1764:23;;:31;;:23;:31;1675:137;;12:1:-1;9;2:12;1675:137:0;36840:10:::1;36680:23;36821:30:::0;;;:18:::1;:30;::::0;;;;;;;;36798:54;;;:22:::1;:54:::0;;;;;36853:14:::1;:46:::0;;;;;;-1:-1:-1;;;;;36853:46:0::1;36798:102:::0;;;;;;;;36924:30;;;;;36733:3:::1;36725:4;36708:21:::0;::::1;36707:29;::::0;36780:120;::::1;::::0;-1:-1:-1;;;36924:100:0::1;36921:1704;;-1:-1:-1::0;;;;;37050:33:0;::::1;;::::0;;;:21:::1;:33;::::0;;;;;;;37107:10:::1;37084:34:::0;;:22:::1;:34:::0;;;;;;37050:69;;;;;;;;::::1;;:77;;:69:::0;:77:::1;:201:::0;::::1;;;-1:-1:-1::0;37198:10:0::1;37145:66;37179:30:::0;;;:18:::1;:30;::::0;;;;;;;;37164:46;;;:14:::1;:46:::0;;;;;;-1:-1:-1;;;;;37164:46:0::1;37145:66:::0;;:18:::1;:66:::0;;;;;:98;;;;;;;;;::::1;;:106;;37164:46:::0;37145:106:::1;37050:201;:338;;;;-1:-1:-1::0;37375:12:0::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;37375:12:0::1;37284:90;:104:::0;;;-1:-1:-1;;;;;;;;;;;37284:90:0::1;:104:::0;:90;:104;;;37269:119;::::1;;37050:338;:376;;;;-1:-1:-1::0;37406:20:0;37050:376:::1;37042:385;;12:1:-1;9::::0;2:12:::1;37042:385:0;37473:11;:43:::0;;;;::::1;::::0;;37775:10:::1;-1:-1:-1::0;37756:30:0;;;:18:::1;:30;::::0;;;;;;;;;37733:54;;:22:::1;:54:::0;;;;;;37628:17:::1;::::0;-1:-1:-1;;;;;37628:17:0;;::::1;37613:33:::0;;:14:::1;:33:::0;;;;;-1:-1:-1;;;37613:101:0;;;;;;;:188;;37797:4:::1;37790:3;37733:60:::0;;::::1;37732:69:::0;;;::::1;37613:188:::0;;::::1;::::0;;;37926:30;;37903:54;;:22:::1;:54:::0;;;;;;37958:14:::1;:46:::0;;;;;;;;::::1;37903:102:::0;;;;;;;;;37818:67;;;;;;:187;;;;;::::1;::::0;;38057:30;;38034:54;;;;;;;;38089:46;;;;;;;;::::1;38034:102:::0;;;;;;;:119;;;38344:30;;38321:54;;;;;;;38376:46;;;;;;;;::::1;38321:102:::0;;;;;;;;;38273:12:::1;::::0;37628:17:::1;38273:12:::0;::::1;::::0;;::::1;38182:104:::0;;-1:-1:-1;;;;;;;;;;;38182:104:0;;;;;;:241;;38303:120;;::::1;38182:241:::0;;::::1;::::0;;;38481:49;;;;;;;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;38558:4;38551:11;;;;;;36921:1704;38606:5;38599:12;;;;;;52345:247:::0;52508:16;;52459:124;52345:247;:::o;5054:26::-;;;;;;:::o;55533:515::-;55675:10;55706:4;1764:23;;;:5;:23;;;;;;55706:4;;55675:10;1764:23;;:31;;:23;:31;1675:137;;12:1:-1;9;2:12;1675:137:0;55781:10:::1;55759:33;::::0;;;:21:::1;:33;::::0;;;;;55735:57;::::1;55732:307;;;55818:10;-1:-1:-1::0;;;;;55818:27:0;::::1;;;55810:36;;12:1:-1;9::::0;2:12:::1;55810:36:0;-1:-1:-1::0;;;;;55863:36:0;::::1;;::::0;;;:21:::1;:36;::::0;;;;;;;:58;;;;;;;;:85;;-1:-1:-1;;55863:85:0::1;::::0;::::1;;;::::0;;-1:-1:-1;;;55965:11:0::1;;55732:307;56020:5;56013:12;;;;86071:1657:::0;86199:7;86208:5;86242:15;:20;;86261:1;86242:20;86239:1480;;;-1:-1:-1;;;;;;;86288:36:0;;;;;;:18;:36;;;;;;86326:1;86280:48;;86239:1480;86351:15;:20;;86370:1;86351:20;86348:1371;;;-1:-1:-1;;;;;;;86397:40:0;;;;;;:22;:40;;;;;;86439:1;86389:52;;86348:1371;86464:15;:20;;86483:1;86464:20;86461:1258;;;-1:-1:-1;;;;;;;86510:42:0;;;;;;:24;:42;;;;;;86554:1;86502:54;;86461:1258;86579:15;:20;;86598:1;86579:20;86576:1143;;;-1:-1:-1;;;;;;;86625:36:0;;;;;;:18;:36;;;;;;86663:1;86617:48;;86576:1143;86688:15;:20;;86707:1;86688:20;86685:1034;;;-1:-1:-1;;;;;;;86734:35:0;;;;;;:17;:35;;;;;;86771:1;86726:47;;86685:1034;86796:15;:20;;86815:1;86796:20;86793:926;;;-1:-1:-1;;;;;;;86842:35:0;;;;;;:17;:35;;;;;;86879:1;86834:47;;86793:926;86904:15;:20;;86923:1;86904:20;86901:818;;;-1:-1:-1;;;;;;;86950:37:0;;;;;;:19;:37;;;;;;86989:1;86942:49;;86901:818;87014:15;:20;;87033:1;87014:20;87011:708;;;-1:-1:-1;;;;;;;87060:35:0;;;;;;:17;:35;;;;;;87097:1;87052:47;;87011:708;87122:15;:20;;87141:1;87122:20;87119:600;;;-1:-1:-1;;;;;;;87168:32:0;;;;;;:14;:32;;;;;;87202:1;87160:44;;87119:600;87227:15;:21;;87246:2;87227:21;87224:495;;;-1:-1:-1;;;;;;;87274:41:0;;;;;;:23;:41;;;;;;;87317:2;87266:54;;87224:495;87343:15;:21;;87362:2;87343:21;87340:379;;;-1:-1:-1;;;;;;;87390:39:0;;;;;;:21;:39;;;;;;87431:2;87382:52;;87340:379;87457:15;:21;;87476:2;87457:21;87454:265;;;-1:-1:-1;;;;;;;87504:32:0;;;;;;:14;:32;;;;;;87538:2;87496:45;;87454:265;87564:15;:21;;87583:2;87564:21;87561:158;;;-1:-1:-1;;;;;;;87611:39:0;;;;;;:21;:39;;;;;;87652:2;87603:52;;87561:158;-1:-1:-1;87700:1:0;;-1:-1:-1;87700:1:0;87561:158;86071:1657;;;;;:::o;74844:255::-;74952:7;75006:41;;;:22;:41;;;;;;;74844:255::o;65366:3655::-;65629:10;1455:36;;;;:18;:36;;;;;;;;:44;;:36;:44;1353:163;;12:1:-1;9;2:12;1353:163:0;65706:10:::1;65659:25;65687:30:::0;;;:18:::1;:30;::::0;;;;;;;;65772:21:::1;:33:::0;;;;;;65940;;;:14:::1;:33:::0;;;;;;-1:-1:-1;;;;;65940:33:0::1;65925:49:::0;;:14:::1;:49:::0;;;;;:68;;;;;;;;;65888:3:::1;65880:4;65863:21:::0;::::1;65862:29;::::0;65907:86;::::1;65904:3108;;;-1:-1:-1::0;;;;;66056:20:0;::::1;;::::0;;;:8:::1;:20;::::0;;;;;::::1;;:28;;:20:::0;:28:::1;:89:::0;::::1;;;;66140:5;66116:20;:29;;66056:89;:151;;;;;66201:6;66177:20;:30;;66056:151;:207;;;;-1:-1:-1::0;66239:10:0::1;-1:-1:-1::0;;;;;66239:24:0;::::1;;;66056:207;:290;;;;-1:-1:-1::0;66335:10:0::1;66316:30;::::0;;;:18:::1;:30;::::0;;;;;66295:51;::::1;66056:290;:369;;;;-1:-1:-1::0;66414:10:0::1;66392:33;::::0;;;:21:::1;:33;::::0;;;;;66365:60;::::1;66056:369;66048:378;;12:1:-1;9::::0;2:12:::1;66048:378:0;66484:37;66505:15;66484:20;:37::i;:::-;;66749:20;66723:15;66741:4;66723:22;66722:47;;;;;-1:-1:-1::0;;;;;66585:119:0;::::1;:90;:119:::0;;;-1:-1:-1;;;;;;;;;;;66585:90:0::1;:119:::0;:90;:119;;:184;;66722:47;;;::::1;66585:184:::0;;::::1;::::0;;66929:20;66921:4:::1;66903:22:::0;::::1;66929:20:::0;66902:47:::1;;;;-1:-1:-1::0;;;;;66851:48:0;::::1;;::::0;;;:19:::1;:48:::0;;;;;;;66902:47;;;::::1;66851:98:::0;;::::1;66786:163:::0;;67014:79:::1;67033:15:::0;67050:10;67062:8;67072;67082:10;67014:18:::1;:79::i;:::-;-1:-1:-1::0;67331:12:0::1;::::0;;-1:-1:-1;;;;;67331:12:0;;::::1;67159:16;67240:104:::0;;;-1:-1:-1;;;;;;;;;;;67240:90:0::1;:104:::0;;;:90;:104;;;:130;;67218:5:::1;67211:3;67193:21:::0;::::1;67192:31;67240:130:::0;;::::1;::::0;;;67402:17:::1;::::0;;::::1;67387:33:::0;;:14:::1;:33:::0;;;;;-1:-1:-1;;;67387:101:0;;;;;;;:167;;67541:13:::1;67525:12;67507:30:::0;::::1;67506:48;67387:167;::::0;;67641:12;;;;::::1;67621:33:::0;;;;;;;;;:44;::::1;67571:94:::0;;67754:16:::1;67735:15;67717:33:::0;::::1;67716:54;::::0;67878:6:::1;67855:29:::0;::::1;67836:13;67817:33:::0;::::1;67855:29:::0;67816:69:::1;;;;;67787:98;;68107:4;68095:9;68077:15;:27;68076:35;68019:22;:41;68042:17;68019:41;;;;;;;;;;;:53;68061:10;-1:-1:-1::0;;;;;68019:53:0::1;-1:-1:-1::0;;;;;68019:53:0::1;;;;;;;;;;;;;:93;67949:22;:41;67972:17;67949:41;;;;;;;;;;;:53;67991:10;-1:-1:-1::0;;;;;67949:53:0::1;-1:-1:-1::0;;;;;67949:53:0::1;;;;;;;;;;;;:163;;;;68243:4;68231:9;68213:15;:27;68212:35;68177:19;:31;68197:10;-1:-1:-1::0;;;;;68177:31:0::1;-1:-1:-1::0;;;;;68177:31:0::1;;;;;;;;;;;;;:71;68129:19;:31;68149:10;-1:-1:-1::0;;;;;68129:31:0::1;-1:-1:-1::0;;;;;68129:31:0::1;;;;;;;;;;;;:119;;;;68345:4;68333:9;68315:15;:27;68314:35;68265:18;:30;68284:10;-1:-1:-1::0;;;;;68265:30:0::1;-1:-1:-1::0;;;;;68265:30:0::1;;;;;;;;;;;;;:85;;;;;;;;;;;68438:4;68426:9;:16;68367:22;:41;68390:17;68367:41;;;;;;;;;;;;:75;;;;;;;;;;;68620:8;68608:9;:20;68486:22;:90;-1:-1:-1::0;;;68486:90:0::1;;;;;;;;;;;;;:104;68577:12;;;;;;;;;-1:-1:-1::0;;;;;68577:12:0::1;-1:-1:-1::0;;;;;68486:104:0::1;-1:-1:-1::0;;;;;68486:104:0::1;;;;;;;;;;;;;:142;;;;;;;;;;;68720:8;68708:9;:20;68657:19;:33;68677:12;;;;;;;;;-1:-1:-1::0;;;;;68677:12:0::1;-1:-1:-1::0;;;;;68657:33:0::1;-1:-1:-1::0;;;;;68657:33:0::1;;;;;;;;;;;;;:71;;;;;;;;;;;68800:10;-1:-1:-1::0;;;;;68779:49:0::1;68788:10;-1:-1:-1::0;;;;;68779:49:0::1;-1:-1:-1::0;;;;;;;;;;;68812:15:0::1;68779:49;;;;;;;;;;;;;;;;;;65904:3108;;;;;;-1:-1:-1::0;68949:49:0::1;::::0;;68926:1:::1;68949:49:::0;;;;;-1:-1:-1;;;;;68949:49:0;::::1;::::0;68958:10:::1;::::0;-1:-1:-1;;;;;;;;;;;68949:49:0;;;;::::1;::::0;;::::1;65904:3108;1555:1;;;65366:3655:::0;;;;;;;;:::o;54899:521::-;55044:10;55075:4;1764:23;;;:5;:23;;;;;;55075:4;;55044:10;1764:23;;:31;;:23;:31;1675:137;;12:1:-1;9;2:12;1675:137:0;55150:10:::1;55131:30;::::0;;;:18:::1;:30;::::0;;;;;55104:57;::::1;55101:310;;;55187:10;-1:-1:-1::0;;;;;55187:27:0;::::1;;;55179:36;;12:1:-1;9::::0;2:12:::1;55179:36:0;-1:-1:-1::0;;;;;55232:36:0;::::1;;::::0;;;:21:::1;:36;::::0;;;;;;;:61;;;;;;;;:88;;-1:-1:-1;;55232:88:0::1;::::0;::::1;;;::::0;;-1:-1:-1;;;55337:11:0::1;;54213:573:::0;54323:10;2007:32;;;;:14;:32;;;;;;;;:40;;:32;:40;1983:81;;12:1:-1;9;2:12;1983:81:0;54363:10:::1;-1:-1:-1::0;;;;;54363:25:0;::::1;;;54355:53;;;::::0;;-1:-1:-1;;;54355:53:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;54355:53:0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;54425:18:0;::::1;;::::0;;;:5:::1;:18;::::0;;;;;;;:42;;-1:-1:-1;;54425:42:0::1;::::0;::::1;;::::0;;::::1;::::0;;;54517:10:::1;54484:44:::0;;;:32:::1;:44:::0;;;;;:62;;;54563:30:::1;:42:::0;;;;;:60;;;54640:35:::1;:47:::0;;;;;:65;;;;54727:49;;;;;;;::::1;::::0;;;;;;;;;::::1;54213:573:::0;;;:::o;77764:8204::-;77892:7;77924:15;:20;;77943:1;77924:20;77921:8038;;;77962:25;78035:19;;78030:1;78025;78006:16;;:20;;;;;;78005:26;;;;;;78004:50;;;;;-1:-1:-1;;;;;78111:36:0;;78071:23;78111:36;;;:18;:36;;;;;;;;;78409:17;:35;;;;;;78364:18;:36;;;;;;;78004:50;;;;;-1:-1:-1;78111:36:0;;78071:23;;78447:1;78409:39;;;;78364:40;78409:39;78363:86;;;;-1:-1:-1;;;;;78301:41:0;;;;;;:23;:41;;;;;;;;;78257:23;:41;;;;;;;78363:86;;;;;78257:85;78202:35;;;78201:142;78363:86;78200:250;;;;;;-1:-1:-1;78467:18:0;;-1:-1:-1;;;78467:18:0;77921:8038;78508:15;:20;;78527:1;78508:20;78505:7454;;;78546:25;78619:23;;78614:1;78609;78590:16;;:20;;;;;;78589:26;;;;;;78588:54;;;;;-1:-1:-1;;;;;78703:40:0;;78659:27;78703:40;;;:22;:40;;;;;;;;;79041:17;:35;;;;;;78996:18;:36;;;;;;;78588:54;;;;;-1:-1:-1;78703:40:0;;78659:27;;79079:1;79041:39;;;;78996:40;79041:39;78995:86;;;;-1:-1:-1;;;;;78924:45:0;;;;;;:27;:45;;;;;;;;;78870:27;:45;;;;;;;78995:86;;;;;78869:105;78798:51;;;78797:178;78995:86;78796:286;;;78505:7454;79140:15;:20;;79159:1;79140:20;79137:6822;;;79178:25;79251:26;;79246:1;79241;79222:16;;:20;;;;;;79221:26;;;;;;79220:57;;;;;-1:-1:-1;;;;;79340:42:0;;79294:29;79340:42;;;:24;:42;;;;;;;;;79686:17;:35;;;;;;79641:18;:36;;;;;;;79220:57;;;;;-1:-1:-1;79340:42:0;;79294:29;;79724:1;79686:39;;;;79641:40;79686:39;79640:86;;;;-1:-1:-1;;;;;79567:47:0;;;;;;:29;:47;;;;;;;;;79511:29;:47;;;;;;;79640:86;;;;;79510:109;79437:53;;;79436:184;79640:86;79435:292;;;79137:6822;79785:15;:20;;79804:1;79785:20;79782:6177;;;79823:25;79896:19;;79891:1;79886;79867:16;;:20;;;;;;79866:26;;;;;;79865:50;;;;;-1:-1:-1;;;;;79972:36:0;;79932:23;79972:36;;;:18;:36;;;;;;;;;80294:17;:35;;;;;;80249:18;:36;;;;;;;79865:50;;;;;-1:-1:-1;79972:36:0;;79932:23;;80332:1;80294:39;;;;80249:40;80294:39;80248:86;;;;-1:-1:-1;;;;;80181:41:0;;;;;;:23;:41;;;;;;;;;80131:23;:41;;;;;;;80248:86;;;;;80130:97;80063:47;;;80062:166;80248:86;80061:274;;;79782:6177;80393:15;:20;;80412:1;80393:20;80390:5569;;;80431:25;80504:21;;80499:1;80494;80475:16;;:20;;;;;;80474:26;;;;;;80473:52;;;;;-1:-1:-1;;;;;80584:35:0;;80542:25;80584:35;;;:17;:35;;;;;;;;;80896:17;:35;;;;;;80851:18;:36;;;;;;;80473:52;;;;;-1:-1:-1;80584:35:0;;80542:25;;80934:1;80896:39;;;;80851:40;80896:39;80850:86;;;;-1:-1:-1;;;;;80781:43:0;;;;;;:25;:43;;;;;;;;;80736:22;:40;;;;;;;80850:86;;;;;80735:94;80674:41;;;80673:157;80850:86;80672:265;;;80390:5569;80995:15;:20;;81014:1;80995:20;80992:4967;;;81033:25;81106:21;;81101:1;81096;81077:16;;:20;;;;;;81076:26;;;;;;81075:52;;;;;-1:-1:-1;;;;;81186:35:0;;81144:25;81186:35;;;:17;:35;;;;;;;;;81510:17;:35;;;;;;81465:18;:36;;;;;;;81075:52;;;;;-1:-1:-1;81186:35:0;;81144:25;;81548:1;81510:39;;;;81465:40;81510:39;81464:86;;;;-1:-1:-1;;;;;81395:43:0;;;;;;:25;:43;;;;;;;;;81346:22;:40;;;;;;;81464:86;;;;;81345:98;81276:49;;;81275:169;81464:86;81274:277;;;80992:4967;81609:15;:20;;81628:1;81609:20;81606:4353;;;81647:25;81720:23;;81715:1;81710;81691:16;;:20;;;;;;81690:26;;;;;;81689:54;;;;;-1:-1:-1;;;;;81804:37:0;;81760:27;81804:37;;;:19;:37;;;;;;;;;82136:17;:35;;;;;;82091:18;:36;;;;;;;81689:54;;;;;-1:-1:-1;81804:37:0;;81760:27;;82174:1;82136:39;;;;82091:40;82136:39;82090:86;;;;-1:-1:-1;;;;;82019:45:0;;;;;;:27;:45;;;;;;;;;81968:24;:42;;;;;;;82090:86;;;;;81967:102;81896:51;;;81895:175;82090:86;81894:283;;;81606:4353;82235:15;:20;;82254:1;82235:20;82232:3727;;;82273:25;82332:21;;82327:1;82322;82303:16;;:20;;;;;;82302:26;;;;;;82301:52;;;;;-1:-1:-1;;;;;82398:35:0;;82370:25;82398:35;;;:17;:35;;;;;;;;;82709:17;:35;;;;;;82664:18;:36;;;;;;;82301:52;;;;;-1:-1:-1;82398:35:0;;82370:25;;82747:1;82709:39;;;;82664:40;82709:39;82663:86;;;;-1:-1:-1;;;;;82594:43:0;;;;;;:25;:43;;;;;;;;;82545:22;:40;;;;;;;82663:86;;;;;82544:98;82475:49;;;82474:169;82663:86;82473:277;;;82232:3727;82808:15;:20;;82827:1;82808:20;82805:3154;;;82846:25;82925:18;;82915:1;82910;82891:16;;:20;;;;;;82890:26;;;;;;82920:1;82889:32;82888:55;;;;;-1:-1:-1;;;;;82999:32:0;;82960:22;82999:32;;;:14;:32;;;;;;;;;83311:17;:35;;;;;;83266:18;:36;;;;;;;82888:55;;;;;-1:-1:-1;82999:32:0;;82960:22;;83349:1;83311:39;;;;83266:40;83311:39;83265:86;;;;-1:-1:-1;;;;;83199:40:0;;;;;;:22;:40;;;;;;;;;83153:19;:37;;;;;;;83265:86;;;;;83152:92;83086:46;;;83085:160;83265:86;83084:268;;;82805:3154;83410:15;:21;;83429:2;83410:21;83407:2552;;;83449:25;83536:27;;83529:2;83510:16;;:21;;;;;;83504:1;83499;83480:16;;:20;;;;;;83479:26;;;;;;83478:54;83477:86;;;;;-1:-1:-1;;;;;83614:41:0;;83580:31;83614:41;;;:23;:41;;;;;;;;83949:17;:35;;;;;;83904:18;:36;;;;;;;83477:86;;;;;-1:-1:-1;83614:41:0;83580:31;;83987:1;83949:39;;;;83904:40;83949:39;83903:86;;;;-1:-1:-1;;;;;83828:49:0;;;;;;:31;:49;;;;;;;;;83773:28;:46;;;;;;;83903:86;;;;;83772:110;83697:55;;;83696:187;83903:86;83695:295;;;83407:2552;84048:15;:21;;84067:2;84048:21;84045:1914;;;84087:25;84160;;84155:1;84150;84131:16;;:20;;;;;;84130:26;;;;;;84129:56;;;;;-1:-1:-1;;;;;84248:39:0;;84202:29;84248:39;;;:21;:39;;;;;;;;;84588:17;:35;;;;;;84543:18;:36;;;;;;;84129:56;;;;;-1:-1:-1;84248:39:0;;84202:29;;84626:1;84588:39;;;;84543:40;84588:39;84542:86;;;;-1:-1:-1;;;;;84469:47:0;;;;;;:29;:47;;;;;;;;;84416:26;:44;;;;;;;84542:86;;;;;84415:106;84342:53;;;84341:181;84542:86;84340:289;;;84045:1914;84687:15;:21;;84706:2;84687:21;84684:1275;;;84726:25;84799:18;;84794:1;84789;84770:16;;:20;;;;;;84769:26;;;;;;84768:49;;;;;-1:-1:-1;;;;;84873:32:0;;84834:22;84873:32;;;:14;:32;;;;;;;;;85185:17;:35;;;;;;85140:18;:36;;;;;;;84768:49;;;;;-1:-1:-1;84873:32:0;;84834:22;;85223:1;85185:39;;;;85140:40;85185:39;85139:86;;;;-1:-1:-1;;;;;85073:40:0;;;;;;:22;:40;;;;;;;;;85027:19;:37;;;;;;;85139:86;;;;;85026:92;84960:46;;;84959:160;85139:86;84958:268;;;84684:1275;85284:15;:21;;85303:2;85284:21;85281:678;;;85323:25;85396;;85391:1;85386;85367:16;;:20;;;;;;85366:26;;;;;;85365:56;;;;;-1:-1:-1;;;;;85484:39:0;;85438:29;85484:39;;;:21;:39;;;;;;;;;85824:17;:35;;;;;;85779:18;:36;;;;;;;85365:56;;;;;-1:-1:-1;85484:39:0;;85438:29;;85862:1;85824:39;;;;85779:40;85824:39;85778:86;;;;-1:-1:-1;;;;;85705:47:0;;;;;;:29;:47;;;;;;;;;85652:26;:44;;;;;;;85778:86;;;;;85651:106;85578:53;;;85577:181;85778:86;85576:289;;;75403:165;-1:-1:-1;;;;;75530:28:0;75494:7;75530:28;;;:21;:28;;;;;;;75403:165::o;17253:1741::-;17550:10;2007:32;;;;:14;:32;;;;;;;;:40;;:32;:40;1983:81;;12:1:-1;9;2:12;1983:81:0;17605:10:::1;17590:26;::::0;;;:14:::1;:26;::::0;;;;;::::1;;17582:49;;;::::0;;-1:-1:-1;;;17582:49:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;17582:49:0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;17713:12:0::1;:36:::0;;-1:-1:-1;;;;;;17713:36:0::1;;-1:-1:-1::0;;;;;17713:36:0;;::::1;;;::::0;;17855:23:::1;:59:::0;;-1:-1:-1;;;;;;17855:59:0;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;18012:19:::1;:51:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;18147:12:::1;:37:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;18282:19:::1;:51:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;18416:12:::1;:37:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;18557:21:::1;:56:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;18711:19:::1;:51:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;18816:10:::1;-1:-1:-1::0;18783:44:0;;;:32:::1;:44;::::0;;;;;;;:58;;;18854:30:::1;:42:::0;;;;;:56;;;18923:35:::1;:47:::0;;;;;:61;17253:1741::o;76657:161::-;-1:-1:-1;;;;;76781:27:0;76745:7;76781:27;;;:19;:27;;;;;;;76657:161::o;51944:334::-;52056:7;-1:-1:-1;;;;;52088:27:0;;52105:10;52088:27;52085:184;;;-1:-1:-1;52163:10:0;52140:34;;;;:22;:34;;;;;;52133:41;;52085:184;-1:-1:-1;;;;;;52218:37:0;;;;;;:22;:37;;;;;;52211:44;;75650:324;75777:10;1455:36;;;;:18;:36;;;;;;;;:44;;:36;:44;1353:163;;12:1:-1;9;2:12;1353:163:0;75817:10:::1;-1:-1:-1::0;;;;;75817:25:0;::::1;;;75809:34;;12:1:-1;9::::0;2:12:::1;75809:34:0;-1:-1:-1::0;;;;;75860:21:0;::::1;;::::0;;;:8:::1;:21;::::0;;;;;;;;:31;;-1:-1:-1;;75860:31:0::1;::::0;::::1;;::::0;;::::1;::::0;;;75913:51;;;;;;;75931:10:::1;::::0;75913:51:::1;::::0;;;;;;;::::1;75650:324:::0;;;:::o;30549:1664::-;30641:10;1117:26;;;;:8;:26;;;;;;;;:34;;:26;:34;1026:142;;12:1:-1;9;2:12;1026:142:0;30734:10:::1;30673:25;30711:34:::0;;;:22:::1;:34;::::0;;;;;;;;30889:41;;;:22:::1;:41:::0;;;;;;30818:14:::1;:33:::0;;;;;;-1:-1:-1;;;;;30818:33:0::1;30803:49:::0;;:14:::1;:49:::0;;;;;:68;;;;;;;;;;30711:34;;30673:25;30889:41;30882:3:::1;::::0;30874:4:::1;30803:75;30802:83;30801:129;::::0;-1:-1:-1;30970:6:0;30989:63:::1;31022:10;31034:17:::0;30989:32:::1;:63::i;:::-;31094:6;31068:22;:32;;:85;;;;-1:-1:-1::0;31137:10:0::1;31114:34;::::0;;;:22:::1;:34;::::0;;;;;:39;31068:85:::1;31065:1139;;;31267:10;31258:20;::::0;;;:8:::1;:20;::::0;;;;;::::1;;:28;;:20:::0;:28:::1;:56:::0;::::1;;;;31313:1;31304:6;:10;31258:56;31250:65;;12:1:-1;9::::0;2:12:::1;31250:65:0;31355:10;31332:34;::::0;;;:22:::1;:34;::::0;;;;;;;31383:1:::1;31332:52:::0;;-1:-1:-1;;;;;;;;;;;31434:102:0;;;;;:126;;;;::::1;::::0;;31575:41;;;31434:22:::1;31575:41:::0;;;;;:53;;;;;;;;:77;;;::::1;::::0;;31667:41;;;:22:::1;:41:::0;;;;;:65;;;;::::1;::::0;;31882:17:::1;::::0;-1:-1:-1;;;;;31882:17:0::1;31867:33:::0;;:14:::1;:33:::0;;;;;-1:-1:-1;;;31867:101:0;;;;;;;;31747:103;;;:91;:103;;;;;:221;31987:34;;;:38;;;;32047:30;;;;;;;::::1;::::0;;;;;;;;::::1;31065:1139;;;-1:-1:-1::0;32160:30:0::1;::::0;;32137:1:::1;32160:30:::0;;;;;32171:10:::1;::::0;32160:30:::1;::::0;;;;;::::1;::::0;;::::1;31065:1139;1207:1;;;30549:1664:::0;;:::o;53407:259::-;-1:-1:-1;;;;;53530:27:0;;53501:4;53530:27;;;:14;:27;;;;;;;;:35;;:27;:35;53527:130;;;-1:-1:-1;53590:4:0;53583:11;;73057:449;73145:10;1117:26;;;;:8;:26;;;;;;73173:13;;73145:10;1117:26;;:34;;:26;:34;1026:142;;12:1:-1;9;2:12;1026:142:0;73201:7:::1;73225:68;73235:2;73231:1;:6;;;:26;;;;;73241:8;73250:1;73241:11;;;;;;;;;;;;-1:-1:-1::0;;;;;;73241:16:0::1;::::0;::::1;73231:26;73225:68;;;73276:3;;73225:68;;;73305:23;73341:1;73331:12;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;73331:12:0;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;21:6:-1::0;;108:14:::1;73331:12:0::0;87:42:-1::1;143:17;::::0;-1:-1;73331:12:0::1;;73305:38;;73365:1;73361:5;;73356:103;73372:2;73368:1;:6;;;:26;;;;;73378:8;73387:1;73378:11;;;;;;;;;;;;-1:-1:-1::0;;;;;;73378:16:0::1;::::0;::::1;73368:26;73356:103;;;73434:8;73443:1;73434:11;;;;;;;;;;;;73418:10;73429:1;73418:13;;;;;;;;;;;;;:27;-1:-1:-1::0;;;;;73418:27:0::1;;;;;;;;-1:-1:-1::0;73396:3:0::1;::::0;;::::1;::::0;73356:103:::1;;;73485:10:::0;-1:-1:-1;;1207:1:0::1;73057:449:::0;;;;:::o;5016:29::-;;;;;;;;;;;;;;;-1:-1:-1;;5016:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38805:11644;38938:10;38969:4;1117:26;;;:8;:26;;;;;;38969:4;;38938:10;1117:26;;:34;;:26;:34;1026:142;;12:1:-1;9;2:12;1026:142:0;39008:1:::1;38998:7;:11;:45;;;;;39023:15;:20;;39042:1;39023:20;38998:45;38995:11445;;;-1:-1:-1::0;;;;;39069:20:0;::::1;;::::0;;;:8:::1;:20;::::0;;;;;::::1;;:28;;:20:::0;:28:::1;39061:37;;12:1:-1;9::::0;2:12:::1;39061:37:0;39176:10;39135:24;39278:36:::0;;;:18:::1;:36;::::0;;;;;39267:47;::::1;::::0;::::1;::::0;:77:::1;;-1:-1:-1::0;39332:12:0;39267:77:::1;:125;;;;;39376:16;-1:-1:-1::0;;;;;39362:30:0::1;:10;-1:-1:-1::0;;;;;39362:30:0::1;;;39267:125;39259:134;;12:1:-1;9::::0;2:12:::1;39259:134:0;-1:-1:-1::0;;;;;39574:36:0;::::1;;::::0;;;:18:::1;:36;::::0;;;;;;;;39530:23:::1;:41:::0;;;;;;;39614:7;;39574:36;;39530:80:::1;;;;-1:-1:-1::0;;;;;39472:35:0;;::::1;;::::0;;;:23:::1;:35;::::0;;;;;;;:149;;39530:80;;;::::1;39529:92:::0;;;::::1;39472:149:::0;;::::1;::::0;;;39674:18:::1;:30:::0;;;;;;:59;;;::::1;::::0;;39754:36;::::1;::::0;;;;:65;;;;::::1;::::0;;-1:-1:-1;;;39840:11:0::1;;38995:11445;39884:1;39874:7;:11;:45;;;;;39899:15;:20;;39918:1;39899:20;39874:45;39871:10569;;;-1:-1:-1::0;;;;;39945:20:0;::::1;;::::0;;;:8:::1;:20;::::0;;;;;::::1;;:28;;:20:::0;:28:::1;39937:37;;12:1:-1;9::::0;2:12:::1;39937:37:0;40052:10;40011:24;40154:40:::0;;;:22:::1;:40;::::0;;;;;40143:51;::::1;::::0;::::1;::::0;:81:::1;;-1:-1:-1::0;40212:12:0;40143:81:::1;:129;;;;;40256:16;-1:-1:-1::0;;;;;40242:30:0::1;:10;-1:-1:-1::0;;;;;40242:30:0::1;;;40143:129;40135:138;;12:1:-1;9::::0;2:12:::1;40135:138:0;-1:-1:-1::0;;;;;40462:40:0;::::1;;::::0;;;:22:::1;:40;::::0;;;;;;;;40414:27:::1;:45:::0;;;;;;;40506:7;;40462:40;;40414:88:::1;;;;-1:-1:-1::0;;;;;40352:39:0;;::::1;;::::0;;;:27:::1;:39;::::0;;;;;;;:161;;40414:88;;;::::1;40413:100:::0;;;::::1;40352:161:::0;;::::1;::::0;;;40566:22:::1;:34:::0;;;;;;:63;;;::::1;::::0;;40650:40;::::1;::::0;;;;:69;;;;::::1;::::0;;-1:-1:-1;;;40740:11:0::1;;39871:10569;40784:1;40774:7;:11;:45;;;;;40799:15;:20;;40818:1;40799:20;40774:45;40771:9669;;;-1:-1:-1::0;;;;;40845:20:0;::::1;;::::0;;;:8:::1;:20;::::0;;;;;::::1;;:28;;:20:::0;:28:::1;40837:37;;12:1:-1;9::::0;2:12:::1;40837:37:0;40952:10;40911:24;41054:42:::0;;;:24:::1;:42;::::0;;;;;41043:53;::::1;::::0;::::1;::::0;:83:::1;;-1:-1:-1::0;41114:12:0;41043:83:::1;:131;;;;;41158:16;-1:-1:-1::0;;;;;41144:30:0::1;:10;-1:-1:-1::0;;;;;41144:30:0::1;;;41043:131;41035:140;;12:1:-1;9::::0;2:12:::1;41035:140:0;-1:-1:-1::0;;;;;41368:42:0;::::1;;::::0;;;:24:::1;:42;::::0;;;;;;;;41318:29:::1;:47:::0;;;;;;;41414:7;;41368:42;;41318:92:::1;;;;-1:-1:-1::0;;;;;41254:41:0;;::::1;;::::0;;;:29:::1;:41;::::0;;;;;;;:167;;41318:92;;;::::1;41317:104:::0;;;::::1;41254:167:::0;;::::1;::::0;;;41474:24:::1;:36:::0;;;;;;:65;;;::::1;::::0;;41560:42;::::1;::::0;;;;:71;;;;::::1;::::0;;-1:-1:-1;;;41652:11:0::1;;40771:9669;41696:1;41686:7;:11;:45;;;;;41711:15;:20;;41730:1;41711:20;41686:45;41683:8757;;;-1:-1:-1::0;;;;;41757:20:0;::::1;;::::0;;;:8:::1;:20;::::0;;;;;::::1;;:28;;:20:::0;:28:::1;41749:37;;12:1:-1;9::::0;2:12:::1;41749:37:0;41864:10;41823:24;41966:36:::0;;;:18:::1;:36;::::0;;;;;41955:47;::::1;::::0;::::1;::::0;:77:::1;;-1:-1:-1::0;42020:12:0;41955:77:::1;:125;;;;;42064:16;-1:-1:-1::0;;;;;42050:30:0::1;:10;-1:-1:-1::0;;;;;42050:30:0::1;;;41955:125;41947:134;;12:1:-1;9::::0;2:12:::1;41947:134:0;-1:-1:-1::0;;;;;42262:36:0;::::1;;::::0;;;:18:::1;:36;::::0;;;;;;;;42218:23:::1;:41:::0;;;;;;;42302:7;;42262:36;;42218:80:::1;;;;-1:-1:-1::0;;;;;42160:35:0;;::::1;;::::0;;;:23:::1;:35;::::0;;;;;;;:149;;42218:80;;;::::1;42217:92:::0;;;::::1;42160:149:::0;;::::1;::::0;;;42362:18:::1;:30:::0;;;;;;:59;;;::::1;::::0;;42442:36;::::1;::::0;;;;:65;;;;::::1;::::0;;-1:-1:-1;;;42528:11:0::1;;41683:8757;42572:1;42562:7;:11;:45;;;;;42587:15;:20;;42606:1;42587:20;42562:45;42559:7881;;;-1:-1:-1::0;;;;;42633:20:0;::::1;;::::0;;;:8:::1;:20;::::0;;;;;::::1;;:28;;:20:::0;:28:::1;42625:37;;12:1:-1;9::::0;2:12:::1;42625:37:0;42740:10;42699:24;42842:35:::0;;;:17:::1;:35;::::0;;;;;42831:46;::::1;::::0;::::1;::::0;:76:::1;;-1:-1:-1::0;42895:12:0;42831:76:::1;:124;;;;;42939:16;-1:-1:-1::0;;;;;42925:30:0::1;:10;-1:-1:-1::0;;;;;42925:30:0::1;;;42831:124;42823:133;;12:1:-1;9::::0;2:12:::1;42823:133:0;-1:-1:-1::0;;;;;43138:35:0;::::1;;::::0;;;:17:::1;:35;::::0;;;;;;;;43095:22:::1;:40:::0;;;;;;;43177:7;;43138:35;;43095:78:::1;;;;-1:-1:-1::0;;;;;43035:37:0;;::::1;;::::0;;;:25:::1;:37;::::0;;;;;;;:149;;43095:78;;;::::1;43094:90:::0;;;::::1;43035:149:::0;;::::1;::::0;;;43237:17:::1;:29:::0;;;;;;:58;;;::::1;::::0;;43316:35;::::1;::::0;;;;:64;;;;::::1;::::0;;-1:-1:-1;;;43401:11:0::1;;42559:7881;43445:1;43435:7;:11;:45;;;;;43460:15;:20;;43479:1;43460:20;43435:45;43432:7008;;;-1:-1:-1::0;;;;;43506:20:0;::::1;;::::0;;;:8:::1;:20;::::0;;;;;::::1;;:28;;:20:::0;:28:::1;43498:37;;12:1:-1;9::::0;2:12:::1;43498:37:0;43599:10;43572:24;43701:35:::0;;;:17:::1;:35;::::0;;;;;43690:46;::::1;::::0;::::1;::::0;:76:::1;;-1:-1:-1::0;43754:12:0;43690:76:::1;:124;;;;;43798:16;-1:-1:-1::0;;;;;43784:30:0::1;:10;-1:-1:-1::0;;;;;43784:30:0::1;;;43690:124;43682:133;;12:1:-1;9::::0;2:12:::1;43682:133:0;-1:-1:-1::0;;;;;43997:35:0;::::1;;::::0;;;:17:::1;:35;::::0;;;;;;;;43954:22:::1;:40:::0;;;;;;;44036:7;;43997:35;;43954:78:::1;;;;-1:-1:-1::0;;;;;43894:37:0;;::::1;;::::0;;;:25:::1;:37;::::0;;;;;;;:149;;43954:78;;;::::1;43953:90:::0;;;::::1;43894:149:::0;;::::1;::::0;;;44096:17:::1;:29:::0;;;;;;:58;;;::::1;::::0;;44175:35;::::1;::::0;;;;:64;;;;::::1;::::0;;-1:-1:-1;;;44260:11:0::1;;43432:7008;44304:1;44294:7;:11;:35;;;;;44309:15;:20;;44328:1;44309:20;44294:35;44291:6149;;;-1:-1:-1::0;;;;;44355:20:0;::::1;;::::0;;;:8:::1;:20;::::0;;;;;::::1;;:28;;:20:::0;:28:::1;44347:37;;12:1:-1;9::::0;2:12:::1;44347:37:0;44462:10;44421:24;44564:37:::0;;;:19:::1;:37;::::0;;;;;44553:48;::::1;::::0;::::1;::::0;:78:::1;;-1:-1:-1::0;44619:12:0;44553:78:::1;:126;;;;;44663:16;-1:-1:-1::0;;;;;44649:30:0::1;:10;-1:-1:-1::0;;;;;44649:30:0::1;;;44553:126;44545:135;;12:1:-1;9::::0;2:12:::1;44545:135:0;-1:-1:-1::0;;;;;44866:37:0;::::1;;::::0;;;:19:::1;:37;::::0;;;;;;;;44821:24:::1;:42:::0;;;;;;;44907:7;;44866:37;;44821:82:::1;;;;-1:-1:-1::0;;;;;44759:39:0;;::::1;;::::0;;;:27:::1;:39;::::0;;;;;;;:155;;44821:82;;;::::1;44820:94:::0;;;::::1;44759:155:::0;;::::1;::::0;;;44967:19:::1;:31:::0;;;;;;:60;;;::::1;::::0;;45048:37;::::1;::::0;;;;:66;;;;::::1;::::0;;-1:-1:-1;;;45135:11:0::1;;44291:6149;45179:1;45169:7;:11;:45;;;;;45194:15;:20;;45213:1;45194:20;45169:45;45166:5274;;;-1:-1:-1::0;;;;;45240:20:0;::::1;;::::0;;;:8:::1;:20;::::0;;;;;::::1;;:28;;:20:::0;:28:::1;45232:37;;12:1:-1;9::::0;2:12:::1;45232:37:0;45347:10;45306:24;45449:35:::0;;;:17:::1;:35;::::0;;;;;45438:46;::::1;::::0;::::1;::::0;:76:::1;;-1:-1:-1::0;45502:12:0;45438:76:::1;:124;;;;;45546:16;-1:-1:-1::0;;;;;45532:30:0::1;:10;-1:-1:-1::0;;;;;45532:30:0::1;;;45438:124;45430:133;;12:1:-1;9::::0;2:12:::1;45430:133:0;-1:-1:-1::0;;;;;45745:35:0;::::1;;::::0;;;:17:::1;:35;::::0;;;;;;;;45702:22:::1;:40:::0;;;;;;;45784:7;;45745:35;;45702:78:::1;;;;-1:-1:-1::0;;;;;45642:37:0;;::::1;;::::0;;;:25:::1;:37;::::0;;;;;;;:149;;45702:78;;;::::1;45701:90:::0;;;::::1;45642:149:::0;;::::1;::::0;;;45844:17:::1;:29:::0;;;;;;:58;;;::::1;::::0;;45923:35;::::1;::::0;;;;:64;;;;::::1;::::0;;-1:-1:-1;;;46008:11:0::1;;45166:5274;46052:1;46042:7;:11;:45;;;;;46067:15;:20;;46086:1;46067:20;46042:45;46039:4401;;;-1:-1:-1::0;;;;;46113:20:0;::::1;;::::0;;;:8:::1;:20;::::0;;;;;::::1;;:28;;:20:::0;:28:::1;46105:37;;12:1:-1;9::::0;2:12:::1;46105:37:0;46206:10;46179:24;46308:32:::0;;;:14:::1;:32;::::0;;;;;46297:43;::::1;::::0;::::1;::::0;:73:::1;;-1:-1:-1::0;46358:12:0;46297:73:::1;:121;;;;;46402:16;-1:-1:-1::0;;;;;46388:30:0::1;:10;-1:-1:-1::0;;;;;46388:30:0::1;;;46297:121;46289:130;;12:1:-1;9::::0;2:12:::1;46289:130:0;-1:-1:-1::0;;;;;46595:32:0;::::1;;::::0;;;:14:::1;:32;::::0;;;;;;;;46555:19:::1;:37:::0;;;;;;;46631:7;;46595:32;;46555:72:::1;;;;-1:-1:-1::0;;;;;46498:34:0;;::::1;;::::0;;;:22:::1;:34;::::0;;;;;;;:140;;46555:72;;;::::1;46554:84:::0;;;::::1;46498:140:::0;;::::1;::::0;;;46691:14:::1;:26:::0;;;;;;:55;;;::::1;::::0;;46767:32;::::1;::::0;;;;:61;;;;::::1;::::0;;-1:-1:-1;;;46849:11:0::1;;46039:4401;46893:1;46883:7;:11;:46;;;;;46908:15;:21;;46927:2;46908:21;46883:46;46880:3560;;;-1:-1:-1::0;;;;;46955:20:0;::::1;;::::0;;;:8:::1;:20;::::0;;;;;::::1;;:28;;:20:::0;:28:::1;46947:37;;12:1:-1;9::::0;2:12:::1;46947:37:0;47062:10;47021:24;47164:41:::0;;;:23:::1;:41;::::0;;;;;;47153:52;::::1;::::0;::::1;::::0;:82:::1;;-1:-1:-1::0;47223:12:0;47153:82:::1;:130;;;;;47267:16;-1:-1:-1::0;;;;;47253:30:0::1;:10;-1:-1:-1::0;;;;;47253:30:0::1;;;47153:130;47145:139;;12:1:-1;9::::0;2:12:::1;47145:139:0;-1:-1:-1::0;;;;;47478:41:0;::::1;;::::0;;;:23:::1;:41;::::0;;;;;;;47429:28:::1;:46:::0;;;;;;47523:7;;47478:41;;47429:90:::1;;;;-1:-1:-1::0;;;;;47363:43:0;;::::1;;::::0;;;:31:::1;:43;::::0;;;;;;;:167;;47429:90;;;::::1;47428:102:::0;;;::::1;47363:167:::0;;::::1;::::0;;;47583:35;;;;;;;:64;;;::::1;::::0;;47668:41;::::1;::::0;;;;:70;;;;::::1;::::0;;-1:-1:-1;;;47759:11:0::1;;46880:3560;47803:1;47793:7;:11;:46;;;;;47818:15;:21;;47837:2;47818:21;47793:46;47790:2650;;;-1:-1:-1::0;;;;;47865:20:0;::::1;;::::0;;;:8:::1;:20;::::0;;;;;::::1;;:28;;:20:::0;:28:::1;47857:37;;12:1:-1;9::::0;2:12:::1;47857:37:0;47958:10;47931:24;48060:39:::0;;;:21:::1;:39;::::0;;;;;48049:50;::::1;::::0;::::1;::::0;:80:::1;;-1:-1:-1::0;48117:12:0;48049:80:::1;:128;;;;;48161:16;-1:-1:-1::0;;;;;48147:30:0::1;:10;-1:-1:-1::0;;;;;48147:30:0::1;;;48049:128;48041:137;;12:1:-1;9::::0;2:12:::1;48041:137:0;-1:-1:-1::0;;;;;48368:39:0;::::1;;::::0;;;:21:::1;:39;::::0;;;;;;;;48321:26:::1;:44:::0;;;;;;;48411:7;;48368:39;;48321:86:::1;;;;-1:-1:-1::0;;;;;48257:41:0;;::::1;;::::0;;;:29:::1;:41;::::0;;;;;;;:161;;48321:86;;;::::1;48320:98:::0;;;::::1;48257:161:::0;;::::1;::::0;;;48471:21:::1;:33:::0;;;;;;:62;;;::::1;::::0;;48554:39;::::1;::::0;;;;:68;;;;::::1;::::0;;-1:-1:-1;;;48643:11:0::1;;47790:2650;48687:1;48677:7;:11;:46;;;;;48702:15;:21;;48721:2;48702:21;48677:46;48674:1766;;;-1:-1:-1::0;;;;;48749:20:0;::::1;;::::0;;;:8:::1;:20;::::0;;;;;::::1;;:28;;:20:::0;:28:::1;48741:37;;12:1:-1;9::::0;2:12:::1;48741:37:0;48839:10;48812:24;48941:32:::0;;;:14:::1;:32;::::0;;;;;48930:43;::::1;::::0;::::1;::::0;:73:::1;;-1:-1:-1::0;48991:12:0;48930:73:::1;:121;;;;;49035:16;-1:-1:-1::0;;;;;49021:30:0::1;:10;-1:-1:-1::0;;;;;49021:30:0::1;;;48930:121;48922:130;;12:1:-1;9::::0;2:12:::1;48922:130:0;-1:-1:-1::0;;;;;49228:32:0;::::1;;::::0;;;:14:::1;:32;::::0;;;;;;;;49188:19:::1;:37:::0;;;;;;;49264:7;;49228:32;;49188:72:::1;;;;-1:-1:-1::0;;;;;49131:34:0;;::::1;;::::0;;;:22:::1;:34;::::0;;;;;;;:140;;49188:72;;;::::1;49187:84:::0;;;::::1;49131:140:::0;;::::1;::::0;;;49324:14:::1;:26:::0;;;;;;:55;;;::::1;::::0;;49400:32;::::1;::::0;;;;:61;;;;::::1;::::0;;-1:-1:-1;;;49482:11:0::1;;48674:1766;49526:1;49516:7;:11;:46;;;;;49541:15;:21;;49560:2;49541:21;49516:46;49513:927;;;-1:-1:-1::0;;;;;49588:20:0;::::1;;::::0;;;:8:::1;:20;::::0;;;;;::::1;;:28;;:20:::0;:28:::1;49580:37;;12:1:-1;9::::0;2:12:::1;49580:37:0;49681:10;49654:24;49783:39:::0;;;:21:::1;:39;::::0;;;;;49772:50;::::1;::::0;::::1;::::0;:80:::1;;-1:-1:-1::0;49840:12:0;49772:80:::1;:128;;;;;49884:16;-1:-1:-1::0;;;;;49870:30:0::1;:10;-1:-1:-1::0;;;;;49870:30:0::1;;;49772:128;49764:137;;12:1:-1;9::::0;2:12:::1;49764:137:0;-1:-1:-1::0;;;;;50091:39:0;::::1;;::::0;;;:21:::1;:39;::::0;;;;;;;;50044:26:::1;:44:::0;;;;;;;50134:7;;50091:39;;50044:86:::1;;;;-1:-1:-1::0;;;;;49980:41:0;;::::1;;::::0;;;:29:::1;:41;::::0;;;;;;;:161;;50044:86;;;::::1;50043:98:::0;;;::::1;49980:161:::0;;::::1;::::0;;;50194:21:::1;:33:::0;;;;;;:62;;;::::1;::::0;;50277:39;::::1;::::0;;;;:68;;;;::::1;::::0;;-1:-1:-1;;;50366:11:0::1;;26263:2376:::0;26418:10;26371:4;26395:34;;;:22;:34;;;;;;;;26432:1;26395:38;;26604:22;:34;;;;;;26581:58;;:22;:58;;;;;:70;;;;;;;;;;26487:2;26469:20;;26510:23;;;;26469:20;26562:89;;;26554:118;;;;;-1:-1:-1;;;26554:118:0;;;;;;;;;;;;-1:-1:-1;;;26554:118:0;;;;;;;;;;;;;;;26754:10;26740:25;;;;:13;:25;;;;;;26693:23;;;;;26740:25;;;:30;26737:162;;;-1:-1:-1;;;;;26804:20:0;;;;;;:8;:20;;;;;;;;:28;;:20;:28;:52;;;;-1:-1:-1;26845:10:0;26836:20;;;;:8;:20;;;;;;;;26804:52;26796:77;;;;;-1:-1:-1;;;26796:77:0;;;;;;;;;;;;-1:-1:-1;;;26796:77:0;;;;;;;;;;;;;;;26987:10;26964:34;;;;:22;:34;;;;;;26919:80;;26952:10;;26919:32;:80::i;:::-;27162:10;27020:14;27139:34;;;:22;:34;;;;;;;;;27124:50;;;:14;:50;;;;;;27321:22;:58;;;;;:70;;;;;;;;;27221:59;;;:23;:59;;;;;:71;;;;;;;;;;27047:22;;;;-1:-1:-1;;;;;27124:50:0;;27020:14;27321:70;27303:3;;27295:4;27221:78;27220:86;27310:7;27219:98;27218:173;;;;;-1:-1:-1;;;;;27442:29:0;;27405:22;27442:29;;;:14;:29;;;;;;;;27495:10;27472:34;;:22;:34;;;;;;27442:65;;;;;;;;27218:173;;;;;-1:-1:-1;27405:22:0;27518:3;;27510:4;27442:72;27441:80;27525:7;27440:92;27405:127;;27545:19;27594:9;27577:14;:26;;;;;;27545:58;;27725:6;27711:11;:20;27628:22;:58;27651:22;:34;27674:10;-1:-1:-1;;;;;27651:34:0;-1:-1:-1;;;;;27651:34:0;;;;;;;;;;;;;27628:58;;;;;;;;;;;:70;27687:10;-1:-1:-1;;;;;27628:70:0;-1:-1:-1;;;;;27628:70:0;;;;;;;;;;;;:103;;;;27844:30;:66;27875:22;:34;27898:10;-1:-1:-1;;;;;27875:34:0;-1:-1:-1;;;;;27875:34:0;;;;;;;;;;;;;27844:66;;;;;;;;;;;;27752:31;:43;27784:10;-1:-1:-1;;;;;27752:43:0;-1:-1:-1;;;;;27752:43:0;;;;;;;;;;;;:79;27796:22;:34;27819:10;-1:-1:-1;;;;;27796:34:0;-1:-1:-1;;;;;27796:34:0;;;;;;;;;;;;;27752:79;;;;;;;;;;;:158;;;;28007:14;:29;28022:13;-1:-1:-1;;;;;28007:29:0;-1:-1:-1;;;;;28007:29:0;;;;;;;;;;;;:65;28037:22;:34;28060:10;-1:-1:-1;;;;;28037:34:0;-1:-1:-1;;;;;28037:34:0;;;;;;;;;;;;;28007:65;;;;;;;;;;;;27923:23;:59;27947:22;:34;27970:10;-1:-1:-1;;;;;27947:34:0;-1:-1:-1;;;;;27947:34:0;;;;;;;;;;;;;27923:59;;;;;;;;;;;:71;27983:10;-1:-1:-1;;;;;27923:71:0;-1:-1:-1;;;;;27923:71:0;;;;;;;;;;;;:149;;;;28163:15;28129:19;:31;28149:10;-1:-1:-1;;;;;28129:31:0;-1:-1:-1;;;;;28129:31:0;;;;;;;;;;;;;:49;28085:19;:31;28105:10;-1:-1:-1;;;;;28085:31:0;-1:-1:-1;;;;;28085:31:0;;;;;;;;;;;;:93;;;;28236:6;28191:19;:31;28211:10;-1:-1:-1;;;;;28191:31:0;-1:-1:-1;;;;;28191:31:0;;;;;;;;;;;;;:51;;;;;;;;;;;28412:15;28339:22;:58;28362:22;:34;28385:10;-1:-1:-1;;;;;28362:34:0;-1:-1:-1;;;;;28362:34:0;;;;;;;;;;;;;28339:58;;;;;;;;;;;:70;28398:10;-1:-1:-1;;;;;28339:70:0;-1:-1:-1;;;;;28339:70:0;;;;;;;;;;;;;:88;28256:22;:58;28279:22;:34;28302:10;-1:-1:-1;;;;;28279:34:0;-1:-1:-1;;;;;28279:34:0;;;;;;;;;;;;;28256:58;;;;;;;;;;;:70;28315:10;-1:-1:-1;;;;;28256:70:0;-1:-1:-1;;;;;28256:70:0;;;;;;;;;;;;:171;;;;28440:34;28458:15;28440:17;:34::i;:::-;-1:-1:-1;28518:10:0;28532:1;28495:34;;;:22;:34;;;;;;;;:38;;;;28559:40;;;;;;;-1:-1:-1;;;;;28559:40:0;;;28518:10;-1:-1:-1;;;;;;;;;;;28559:40:0;;;;;;;;-1:-1:-1;28627:4:0;;26263:2376;-1:-1:-1;;;;;;;;26263:2376:0:o;52684:254::-;-1:-1:-1;;;;;52808:21:0;;52779:4;52808:21;;;:8;:21;;;;;;;;:29;;:21;:29;52805:124;;;-1:-1:-1;52862:4:0;52855:11;;15673:1430;15865:12;;15780:82;:97;;15865:12;;;;-1:-1:-1;;;;;15865:12:0;-1:-1:-1;;;;;;15780:97:0;;;;;;;;;15915:58;:75;;-1:-1:-1;;15915:75:0;;;-1:-1:-1;15915:75:0;;;;;;16030:58;:75;;;;;;;;16118:8;15780:82;16118:52;;:69;;;;;;;;16200:52;:69;;;;;;;;16282:52;:69;;16364:52;:69;;;;;;;;16446:52;:69;;;;;;;;16528:52;:69;;;;;;;;16610:52;:69;;;;;;;;16692:52;:69;;;;;;;;16774:52;:69;;;;;;;;16856:52;:69;;;;;;;;16282;;;;16938;;;;;;17029:42;-1:-1:-1;17020:52:0;;:69;;;;;;;;;;15673:1430::o;28702:1784::-;28850:10;28789:25;28827:34;;;:22;:34;;;;;;;;;28917:41;;;:22;:41;;;;;:53;;;;;;;;;;28827:34;;29010:6;;29029:63;;28827:34;29029:32;:63::i;:::-;29134:6;29108:22;:32;;:85;;;;-1:-1:-1;29177:10:0;29154:34;;;;:22;:34;;;;;;:39;29108:85;29105:1372;;;29288:14;29356:33;;;:14;:33;;;;;;;;;-1:-1:-1;;;;;29356:33:0;29341:49;;:14;:49;;;;;:68;;;;;;;;;29420:3;;29412:4;29341:75;29455:10;29446:20;;;;:8;:20;;;;;;29340:83;;;;-1:-1:-1;29446:20:0;;:28;;:20;:28;:56;;;;;29501:1;29492:6;:10;29446:56;29438:92;;;;;-1:-1:-1;;;29438:92:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;29570:10;29547:34;;;;:22;:34;;;;;;;;29598:1;29547:52;;-1:-1:-1;;;;;;;;;;;29649:102:0;;;;;:126;;;;;;29804:41;;;29649:22;29804:41;;;;;:53;;;;;;;;:77;;;;;;;29910:41;;;:22;:41;;;;;:65;;;;;;30139:82;;-1:-1:-1;;;;;30139:82:0;30124:98;;:14;:98;;;;;:117;;;;;;;;;30004:103;;;:91;:103;;;;;:237;30260:34;;;:38;;;;30320:30;;;;;;;;;;;;;;;;;29105:1372;;;;-1:-1:-1;30433:30:0;;;30410:1;30433:30;;;;;30444:10;;30433:30;;;;;;;;;;29105:1372;28702:1784;;;;:::o;51591:257::-;51738:7;51774:42;;;:23;:42;;;;;;;;-1:-1:-1;;;;;51774:64:0;;;;;;;;;;;;;51591:257::o;53042:274::-;-1:-1:-1;;;;;53176:31:0;;53147:4;53176:31;;;:18;:31;;;;;;;;:39;;:31;:39;53173:134;;;-1:-1:-1;53240:4:0;53233:11;;53798:335;53917:10;2007:32;;;;:14;:32;;;;;;;;:40;;:32;:40;1983:81;;12:1:-1;9;2:12;1983:81:0;53957:10:::1;-1:-1:-1::0;;;;;53957:25:0;::::1;;;53949:34;;12:1:-1;9::::0;2:12:::1;53949:34:0;-1:-1:-1::0;;;;;54000:27:0;::::1;;::::0;;;:14:::1;:27;::::0;;;;;;;;:51;;-1:-1:-1;;54000:51:0::1;::::0;::::1;;::::0;;::::1;::::0;;;54073:50;;;;;;;54090:10:::1;::::0;54073:50:::1;::::0;;;;;;;::::1;53798:335:::0;;;:::o;73573:356::-;73665:10;73693:14;1117:26;;;:8;:26;;;;;;73693:14;;73665:10;1117:26;;:34;;:26;:34;1026:142;;12:1:-1;9;2:12;1026:142:0;73779:26;;73759:6;;73775:70:::1;;-1:-1:-1::0;73832:3:0::1;::::0;-1:-1:-1;73825:10:0::1;;73775:70;-1:-1:-1::0;;;73907:2:0::1;73895:15;73889:22:::0;;73573:356::o;70624:671::-;70786:10;70724:7;70763:34;;;:22;:34;;;;;;70724:7;;70763:39;:58;;;;;70820:1;70806:10;:15;;;;70763:58;:77;;;;;70839:1;70825:10;:15;;;;70763:77;70760:522;;;70870:63;70903:10;70915:17;70870:32;:63::i;:::-;-1:-1:-1;;70985:10:0;70962:34;;;;:22;:34;;;;;;;;:68;;;71059:13;:25;;;;:51;;-1:-1:-1;;71059:51:0;;;;;;;71135:34;;71059:51;71127:55;;70760:522;-1:-1:-1;;71246:10:0;71223:34;;;;:22;:34;;;;;;71259:10;71215:55;;36161:209;36258:10;36295:14;1117:26;;;:8;:26;;;;;;36295:14;;36258:10;1117:26;;:34;;:26;:34;1026:142;;12:1:-1;9;2:12;1026:142:0;-1:-1:-1;;;;;;;36331:20:0;;::::1;;::::0;;;:8:::1;:20;::::0;;;;;;;:29;;;::::1;::::0;;;;;;;;;36161:209::o;57359:4576::-;57477:10;57508:7;1764:23;;;:5;:23;;;;;;57508:7;;;;1764:23;;:31;;:23;:31;1675:137;;12:1:-1;9;2:12;1675:137:0;57690:10:::1;57671:30;::::0;;;:18:::1;:30;::::0;;;;;;;;-1:-1:-1;;;;;57552:33:0;::::1;::::0;;:18:::1;:33:::0;;;;;:65;;;;;;;;;:219;;-1:-1:-1;;57552:219:0::1;-1:-1:-1::0;;;57671:100:0;;::::1;;57552:219:::0;;::::1;::::0;;57544:228:::1;;12:1:-1;9::::0;2:12:::1;57544:228:0;-1:-1:-1::0;;;;;57792:27:0;::::1;57809:10;57792:27;57789:4137;;-1:-1:-1::0;;;;;57926:29:0;::::1;;::::0;;;:14:::1;:29;::::0;;;;;;;57975:10:::1;57956:30:::0;;:18:::1;:30:::0;;;;;;57926:61;;;;;;;;;;57841:32;;;:17:::1;:32:::0;;;;;:64;;;;;;;:146;;;;-1:-1:-1;;;58027:98:0;;:30:::1;:98:::0;;;;:103;:166;::::1;;;-1:-1:-1::0;58176:10:0::1;58134:54;58157:30:::0;;;:18:::1;:30;::::0;;;;;;;;58134:54;;:22:::1;:54:::0;;;;;;:59;58027:166:::1;58024:442;;;-1:-1:-1::0;;;;;58239:32:0;::::1;;::::0;;;:17:::1;:32;::::0;;;;;;;58291:10:::1;58272:30:::0;;:18:::1;:30:::0;;;;;;;58239:64;;;;;;;;:103;;;58410:30;58387:54;;:22:::1;:54:::0;;;;;:59;;58445:1:::1;58387:59;::::0;;58024:442:::1;-1:-1:-1::0;;;;;58506:29:0;::::1;;::::0;;;:14:::1;:29;::::0;;;;;;;58555:10:::1;58536:30:::0;;:18:::1;:30:::0;;;;;;;58506:61;;;;;;;;:96;;;58802:30;58779:54;;;:22:::1;:54:::0;;;;;;58686:32;;;:17:::1;:32:::0;;;;;:64;;;;;;;;;58506:29;;58779:54;58761:3:::1;::::0;58753:4:::1;58686:71;58685:79;58768:7;58684:91;58683:150;;;;;-1:-1:-1::0;;;;;58918:29:0;::::1;58874:19;58918:29:::0;;;:14:::1;:29;::::0;;;;;;;58967:10:::1;58948:30:::0;;:18:::1;:30:::0;;;;;;58918:61;;;;;;;;58683:150;;;::::1;::::0;-1:-1:-1;58874:19:0;58683:150;;58990:3:::1;::::0;58982:4:::1;58918:68;58916:77;58997:7;58915:89;58914:105;;;;;59151:10;59056:33;59132:30:::0;;;:18:::1;:30;::::0;;;;;;;;;59109:54;;:22:::1;:54:::0;;;;;;;;58914:105;;;::::1;59205:86:::0;;;;59394:17:::1;::::0;-1:-1:-1;;;;;59394:17:0::1;59379:33:::0;;:14:::1;:33:::0;;;;;-1:-1:-1;;;59379:101:0;;;;;;;;;;;59768:30;;59745:54;;;;;;;;;59640:101;;;;;;59871:4:::1;59864:3;59836:31:::0;;::::1;59835:40:::0;;::::1;59745:60:::0;;::::1;59744:69:::0;;::::1;59640:173:::0;::::1;59639:236:::0;;;::::1;59517:358:::0;;;60007:16:::1;::::0;58914:105;;-1:-1:-1;59379:101:0;60007:16;59959:26;::::1;59958:34;59996:7;59957:46;60007:16:::0;59956:67:::1;;;;60114:17;::::0;-1:-1:-1;;;;;60114:17:0::1;60099:33;::::0;;;:14:::1;:33;::::0;;;;;;;-1:-1:-1;;;60099:101:0;;;;;;;;59956:67;;::::1;::::0;-1:-1:-1;59956:67:0;;60212:3:::1;::::0;60204:4:::1;60099:109;60098:117;60219:7;60097:129;60096:150;;;;;;60060:16;:186;;;;60357:14;60287:17;:49;60305:18;:30;60324:10;-1:-1:-1::0;;;;;60305:30:0::1;-1:-1:-1::0;;;;;60305:30:0::1;;;;;;;;;;;;;60287:49;;;;;;;;;;;:84;;;;60490:14;60408;:29;60423:13;-1:-1:-1::0;;;;;60408:29:0::1;-1:-1:-1::0;;;;;60408:29:0::1;;;;;;;;;;;;:61;60438:18;:30;60457:10;-1:-1:-1::0;;;;;60438:30:0::1;-1:-1:-1::0;;;;;60438:30:0::1;;;;;;;;;;;;;60408:61;;;;;;;;;;;:96;;;;60541:15;60577:14;:29;60592:13;-1:-1:-1::0;;;;;60577:29:0::1;-1:-1:-1::0;;;;;60577:29:0::1;;;;;;;;;;;;:61;60607:18;:30;60626:10;-1:-1:-1::0;;;;;60607:30:0::1;-1:-1:-1::0;;;;;60607:30:0::1;;;;;;;;;;;;;60577:61;;;;;;;;;;;;60541:97;;60675:18;60714:17;:32;60732:13;-1:-1:-1::0;;;;;60714:32:0::1;-1:-1:-1::0;;;;;60714:32:0::1;;;;;;;;;;;;:64;60747:18;:30;60766:10;-1:-1:-1::0;;;;;60747:30:0::1;-1:-1:-1::0;;;;;60747:30:0::1;;;;;;;;;;;;;60714:64;;;;;;;;;;;;60675:103;;60926:10;60908:14;60898:7;:24;60897:39;60815:14;:29;60830:13;-1:-1:-1::0;;;;;60815:29:0::1;-1:-1:-1::0;;;;;60815:29:0::1;;;;;;;;;;;;:61;60845:18;:30;60864:10;-1:-1:-1::0;;;;;60845:30:0::1;-1:-1:-1::0;;;;;60845:30:0::1;;;;;;;;;;;;;60815:61;;;;;;;;;;;:121;;;;61041:1;60957:30;:62;60988:18;:30;61007:10;-1:-1:-1::0;;;;;60988:30:0::1;-1:-1:-1::0;;;;;60988:30:0::1;;;;;;;;;;;;;60957:62;;;;;;;;;;;;:85;;;;;;;;;;;61199:1;61079:30;:98;-1:-1:-1::0;;;61079:98:0::1;;;;;;;;;;;;;;:121;;;;;;;;;;;61443:3;61371:14;:29;61386:13;-1:-1:-1::0;;;;;61371:29:0::1;-1:-1:-1::0;;;;;61371:29:0::1;;;;;;;;;;;;:61;61401:18;:30;61420:10;-1:-1:-1::0;;;;;61401:30:0::1;-1:-1:-1::0;;;;;61401:30:0::1;;;;;;;;;;;;;61371:61;;;;;;;;;;;;61435:4;61371:68;61370:76;;;;;-1:-1:-1::0;;;;;61286:32:0;;::::1;;::::0;;;:17:::1;:32;::::0;;;;;;;61338:10:::1;61319:30:::0;;;:18:::1;:30:::0;;;;;;;61286:64;;;;;;;;;61270:11:::1;::::0;;61361:3:::1;61353:4;61286:71:::0;;::::1;61285:79:::0;;;::::1;61270:95:::0;;::::1;61370:76:::0;;;::::1;61269:178:::0;;;::::1;61237:210:::0;;;61503:30;;61550:46;;;:14:::1;:46:::0;;;;;;;;::::1;61535:62:::0;;:14:::1;:62:::0;;;;;:94;;;;;;;;;;61473:157;;;;;;;::::1;::::0;;;::::1;::::0;;;;;;;;;::::1;-1:-1:-1::0;;61708:10:0::1;61659:62;61689:30:::0;;;:18:::1;:30;::::0;;;;;;;;61674:46;;;:14:::1;:46:::0;;;;;;-1:-1:-1;;;;;61674:46:0::1;61659:62:::0;;:14:::1;:62:::0;;;;;:94;;;;;;;;;;-1:-1:-1;61674:46:0;;-1:-1:-1;61651:106:0::1;::::0;-1:-1:-1;;;;;61651:106:0::1;57789:4137;61859:10;61810:62;61840:30:::0;;;:18:::1;:30;::::0;;;;;;;;61825:46;;;:14:::1;:46:::0;;;;;;-1:-1:-1;;;;;61825:46:0::1;61810:62:::0;;:14:::1;:62:::0;;;;;:94;;;;;;;;;;-1:-1:-1;61906:1:0::1;::::0;-1:-1:-1;57789:4137:0::1;57359:4576:::0;;;;;;:::o;56161:1088::-;56297:10;56328:4;1764:23;;;:5;:23;;;;;;56328:4;;56297:10;1764:23;;:31;;:23;:31;1675:137;;12:1:-1;9;2:12;1675:137:0;56370:4:::1;::::0;-1:-1:-1;56419:10:0::1;56400:30;::::0;;;:18:::1;:30;::::0;;;;;:51;::::1;56392:60;;12:1:-1;9::::0;2:12:::1;56392:60:0;-1:-1:-1::0;;;;;56469:33:0;::::1;;::::0;;;:18:::1;:33;::::0;;;;;;;:52;;;;;;;;:79;;-1:-1:-1;;56469:79:0::1;::::0;::::1;;::::0;;::::1;::::0;;;56565:14:::1;:33:::0;;;;;;:63;;-1:-1:-1;;;;;;56565:63:0::1;::::0;;::::1;::::0;;;56779:30:::1;:49:::0;;56869:62;;;;;;;::::1;::::0;;;;;;56889:10:::1;::::0;56869:62:::1;::::0;;;;;;::::1;56955:4;56948:11;;;;64333:809:::0;64467:10;64498:5;1117:26;;;:8;:26;;;;;;64498:5;;64467:10;1117:26;;:34;;:26;:34;1026:142;;12:1:-1;9;2:12;1026:142:0;64525:21:::1;64559:33:::0;;;:14:::1;:33;::::0;;;;;;;;-1:-1:-1;;;;;64661:47:0;;::::1;::::0;;:31:::1;:47:::0;;;;;:66;;;;;;;;;64608:30:::1;:49:::0;;;;;;;;64559:33;::::1;::::0;64608:119:::1;::::0;::::1;::::0;:195:::1;;-1:-1:-1::0;64802:1:0::1;64742:41:::0;;;:22:::1;:41;::::0;;;;;;;-1:-1:-1;;;;;64742:57:0;::::1;::::0;;;;;;;;:61;;64608:195:::1;64605:528;;;-1:-1:-1::0;;;;;64829:33:0;::::1;;::::0;;;:18:::1;:33;::::0;;;;;;;:52;;;;;;;;:59;;-1:-1:-1;;64829:59:0::1;64884:4;64829:59;::::0;;64913:29;;;:14:::1;:29:::0;;;;;:48;;;;;;;64906:60:::1;;;;64983:66;65016:14;65031:17;64983:32;:66::i;:::-;65073:1;65066:8;;;;;64605:528;65118:1;65111:8;;;;;19328:2386:::0;19486:10;19517:13;1117:26;;;:8;:26;;;;;;19517:13;;19486:10;1117:26;;:34;;:26;:34;1026:142;;12:1:-1;9;2:12;1026:142:0;-1:-1:-1;;;;;19560:40:0;::::1;;::::0;;;:18:::1;:40;::::0;;;;;::::1;;:48;;:40:::0;:48:::1;:82:::0;::::1;;;-1:-1:-1::0;;;;;;19622:12:0;::::1;;::::0;;;:5:::1;:12;::::0;;;;;::::1;;:20;;:12:::0;:20:::1;19560:82;:144;;;;-1:-1:-1::0;;;;;;19656:40:0;::::1;;::::0;;;:18:::1;:40;::::0;;;;;::::1;;:48;;:40:::0;:48:::1;19560:144;19552:153;;12:1:-1;9::::0;2:12:::1;19552:153:0;19788:10;19747:24;19884:37:::0;;;:19:::1;:37:::0;;;;;;19853:11:::1;::::0;19884:53;-1:-1:-1;19881:1824:0::1;;;-1:-1:-1::0;;;;;20099:97:0;;::::1;:90;:97:::0;;;-1:-1:-1;;;;;;;;;;;20099:90:0::1;:97:::0;;;:90;:97;;;;;20094:1:::1;20078:17:::0;::::1;20077:119:::0;;::::1;19959:237:::0;;;20246:26;;;;;;;;:66;::::1;20217:95:::0;;20489:112;;::::1;::::0;;;;;;;;;;20467:134;::::1;20333:268:::0;;20666:41;;;;;;;;:63;;::::1;20622:107:::0;;20907:112;;::::1;::::0;;;;;;;;;;20901:2:::1;20885:18:::0;::::1;20884:135:::0;;::::1;20750:269:::0;;;21084:41;;;;;;;;:82;;::::1;21040:126:::0;;21313:40;;;::::1;::::0;;;:22:::1;:40:::0;;;;;;21290:64;;:22:::1;:64:::0;;;;;:82;;;;;;;;;;:98;;::::1;21187:201:::0;;21467:37;;;;;;;;:53;;;::::1;21409:111:::0;;;21541:18:::1;:36:::0;;;;:61;;-1:-1:-1;;21541:61:0::1;-1:-1:-1::0;21541:61:0;;::::1;::::0;;;-1:-1:-1;;21623:11:0::1;;19881:1824;21686:5;21679:12;;;;;;76142:343:::0;76223:7;76279:10;76223:7;76352:4;76322:27;76279:10;76322:9;:27::i;:::-;:34;;;;;;76302:55;;76384:1;76373:7;:12;76370:106;;76410:7;-1:-1:-1;76403:14:0;;-1:-1:-1;76403:14:0;76370:106;76461:1;76454:8;;;;;;70145:349;-1:-1:-1;;;;;70281:23:0;;70252:4;70281:23;;;:8;:23;;;;;;;;:31;;:23;:31;70278:207;;;-1:-1:-1;70349:10:0;70330:30;;;;:18;:30;;;;;:64;;;70418:4;70411:11;;62090:2010;62223:21;62257:33;;;:14;:33;;;;;;;;;62346:22;:41;;;;;-1:-1:-1;;;;;62346:57:0;;;;;;;;;;;;62471:31;:47;;;;;:66;;;;;;;;;62419:30;:49;;;;;;;;62257:33;;;62346:57;;-1:-1:-1;62419:203:0;;;;-1:-1:-1;;;;;;62551:47:0;;;;;;:31;:47;;;;;;;;:66;;;;;;;;;:71;62419:203;62416:1675;;;-1:-1:-1;;;;;62728:29:0;;;;;;;:14;:29;;;;;;;;:48;;;;;;;;;62653:23;:42;;;;;:58;;;;;;;;;;;;:123;62876:49;;;:30;:49;;;;;;62793:47;;;:31;:47;;;;;:66;;;;;;;;:132;62416:1675;;;-1:-1:-1;;;;;63012:47:0;;;;;;:31;:47;;;;;;;;:66;;;;;;;;;62960:30;:49;;;;;;;:118;62957:1134;;;63108:17;63146:42;;;:23;:42;;;;;;;;-1:-1:-1;;;;;63146:58:0;;;;;;;;;;63233:22;;63215:3;;63207:4;63146:65;63145:73;63222:7;63144:85;63143:112;;;;;-1:-1:-1;;;;;63314:29:0;;63273:22;63314:29;;;:14;:29;;;;;;;;:48;;;;;;;;;63143:112;;;;;-1:-1:-1;63273:22:0;63373:3;;63365:4;63314:55;63313:63;63380:7;63312:75;63273:114;;63404:19;63457:9;63440:14;:26;;;;;63483:41;;;;:22;:41;;;;;;;;-1:-1:-1;;;;;63483:57:0;;;;;;;;;;;;63440:26;;;;63483:85;;;;63650:35;;;;;;;;:49;;;63649:76;;;63597:128;;;63825:49;;;:30;:49;;;;;;63742:47;;;:31;:47;;;;;:66;;;;;;;;:132;63978:29;;;;;:14;:29;;;;;:48;;;;;;;;;63903:23;:42;;;;;:58;;;;;;;:123;-1:-1:-1;62957:1134:0;;-1:-1:-1;;62957:1134:0;89664:367;89755:4;89784:19;;89781:241;;-1:-1:-1;89854:16:0;;;89892:2;89874:20;;89854:41;89821:74;;-1:-1:-1;89912:11:0;;89781:241;-1:-1:-1;89978:1:0;;-1:-1:-1;89978:1:0;89996:12;;87999:1554;88143:11;;;:29;;88119:53;;88244:19;;;88236:4;88218:22;;;88217:46;;;88185:78;;88339:23;;;88312:50;;88276:86;;88441:26;;;88414:53;;88375:92;;88539:19;;;88512:46;;88480:78;;88632:21;;;88605:48;;88571:82;;88727:21;;;88700:48;;88666:82;;88824:23;;;88797:50;;88761:86;;88921:21;;;88894:48;;88860:82;;89013:18;;;88986:45;;88955:76;;89111:27;;;89084:54;;89044:94;;89216:25;;;89189:52;;89151:90;;89312:18;;;89285:45;;89254:76;;89407:25;;;89380:52;;89343:89;;89505:14;;;89499:2;89473:28;;;89472:47;;;89445:74;;-1:-1:-1;;87999:1554:0:o;90138:1311::-;-1:-1:-1;;;;;90340:26:0;;;90314:4;90340:26;;;:18;:26;;;;;;;;:62;;90398:4;90380:22;;;90340:62;;;;;90415:22;:30;;;;;:66;;;;;;90519:23;;;;90494:49;;:24;:49;;;;;:85;;;;;;90592:26;;;:18;:26;;;;;:62;;;;;;90667:29;;;;;:17;:29;;;;;:65;;;;;;90745:32;;;;;:17;:32;;;;;:68;;;;;;90826:36;;;;;:19;:36;;;;;:72;;;;;;90929:19;;;;90911:38;;:17;:38;;;;;:74;;;;;;91013:12;;;;90998:28;;:14;:28;;;;;:64;;;;;;91099:21;;;;91075:46;;;;;;;;:82;;;;;;91192:19;;;;91170:42;;:21;:42;;;;;:78;;;;;;91276:12;;;;;;;91261:28;;:14;:28;;;;;:63;;;;;;91359:19;;;;;91337:42;;:21;:42;;;;:78;;;;;;;-1:-1:-1;;90138:1311:0:o
Swarm Source
ipfs://95dc0c7b1ff41291792765e97a9611a19f8b80125522de60a30b0e68542be870
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.