Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 6,968 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 20653361 | 6 days ago | IN | 0 ETH | 0.00021315 | ||||
Transfer | 20651616 | 6 days ago | IN | 0 ETH | 0.00014258 | ||||
Approve | 20594838 | 14 days ago | IN | 0 ETH | 0.00003106 | ||||
Transfer | 20578213 | 16 days ago | IN | 0 ETH | 0.00057285 | ||||
Transfer | 20553645 | 20 days ago | IN | 0 ETH | 0.00011976 | ||||
Transfer | 20510320 | 26 days ago | IN | 0 ETH | 0.00023832 | ||||
Approve | 20479470 | 30 days ago | IN | 0 ETH | 0.00017841 | ||||
Approve | 20479285 | 30 days ago | IN | 0 ETH | 0.00024144 | ||||
Approve | 19974148 | 100 days ago | IN | 0 ETH | 0.00021369 | ||||
Approve | 19974049 | 100 days ago | IN | 0 ETH | 0.00022696 | ||||
Approve | 19974043 | 100 days ago | IN | 0 ETH | 0.00023148 | ||||
Approve | 19970686 | 101 days ago | IN | 0 ETH | 0.0006838 | ||||
Approve | 19677952 | 142 days ago | IN | 0 ETH | 0.0005353 | ||||
Approve | 19481588 | 169 days ago | IN | 0 ETH | 0.00061923 | ||||
Approve | 19481588 | 169 days ago | IN | 0 ETH | 0.00061923 | ||||
Approve | 19477328 | 170 days ago | IN | 0 ETH | 0.00088935 | ||||
Approve | 19436507 | 176 days ago | IN | 0 ETH | 0.00108573 | ||||
Approve | 19074185 | 227 days ago | IN | 0 ETH | 0.00020552 | ||||
Transfer | 19010276 | 236 days ago | IN | 0 ETH | 0.00190279 | ||||
Approve | 18936126 | 246 days ago | IN | 0 ETH | 0.00050822 | ||||
Approve | 18920845 | 248 days ago | IN | 0 ETH | 0.00063593 | ||||
Approve | 18920844 | 248 days ago | IN | 0 ETH | 0.00064367 | ||||
Approve | 18880327 | 254 days ago | IN | 0 ETH | 0.00051916 | ||||
Approve | 18855747 | 257 days ago | IN | 0 ETH | 0.00052093 | ||||
Approve | 18855650 | 257 days ago | IN | 0 ETH | 0.00058494 |
Advanced mode: Intended for advanced users or developers and will display all Internal Transactions including zero value transfers. Name tag integration is not available in advanced view.
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | ||||
---|---|---|---|---|---|---|---|
20653361 | 6 days ago | 0 ETH | |||||
20653361 | 6 days ago | 0 ETH | |||||
20653361 | 6 days ago | 0 ETH | |||||
20653361 | 6 days ago | 0 ETH | |||||
20653361 | 6 days ago | 0 ETH | |||||
20653361 | 6 days ago | 0 ETH | |||||
20651616 | 6 days ago | 0 ETH | |||||
20651616 | 6 days ago | 0 ETH | |||||
20651616 | 6 days ago | 0 ETH | |||||
20651616 | 6 days ago | 0 ETH | |||||
20651616 | 6 days ago | 0 ETH | |||||
20651616 | 6 days ago | 0 ETH | |||||
20578213 | 16 days ago | 0 ETH | |||||
20578213 | 16 days ago | 0 ETH | |||||
20578213 | 16 days ago | 0 ETH | |||||
20578213 | 16 days ago | 0 ETH | |||||
20578213 | 16 days ago | 0 ETH | |||||
20578213 | 16 days ago | 0 ETH | |||||
20553645 | 20 days ago | 0 ETH | |||||
20553645 | 20 days ago | 0 ETH | |||||
20553645 | 20 days ago | 0 ETH | |||||
20553645 | 20 days ago | 0 ETH | |||||
20553645 | 20 days ago | 0 ETH | |||||
20553645 | 20 days ago | 0 ETH | |||||
20510320 | 26 days ago | 0 ETH |
Loading...
Loading
Contract Name:
DeFiat_Token
Compiler Version
v0.6.0+commit.26b70077
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-08-28 */ // SPDX-License-Identifier: DeFiat 2020 /* * Copyright (c) 2020 DeFiat.net * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE */ /* * DISCLAIMER: * DeFiat (the “Token”) is a utility token experiment using the ERC20 standard on * the Ethereum Blockchain (The “Blockchain"). The DeFiat website and White Paper (the “WP”) * are for illustration only and do not make the Team liable for any of their content. * The DeFiat website may evolve over time, including but not limited to, a change of URL, * change of content, adding or removing functionalities. * THERE IS NO GUARANTEE THAT THE UTILITY OF THE TOKENS OR THE PROJECT DESCRIBED IN THE * AVAILABLE INFORMATION (AS DEFINED BELOW) WILL BE DELIVERED. REGARDLESS OF THE ACQUISITION * METHOD, BY ACQUIRING THE TOKEN YOU ARE AGREEING TO HAVE NO RECOURSE, CLAIM, ACTION, * JUDGEMENT OR REMEDY AGAINST THE TEAM IF THE UTILITY OF THE TOKENS OR IF THE PROJECT * DESCRIBED IN THE AVAILABLE INFORMATION IS NOT DELIVERED OR REALISED. */ /* * Below are the 3 DeFiat ecosystem contracts: * Defiat_Points, the loyalty token: 0x8c9d8f5cc3427f460e20f63b36992f74aa19e27d * Defiat_Gov, the governance contract: 0x3aa3303877a0d1c360a9fe2693ae9f31087a1381 * Defiat_Token, the actual contract managing the DeFiat DFT token. * Any questions regarding the code, please reach out to the team. */ //Libraries, Interfaces and ERC20 baseline contract. SPDX-License-Identifier: MIT pragma solidity ^0.6.0; library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } //max and min from Zeppelin math. function max(uint256 a, uint256 b) internal pure returns (uint256) { return a >= b ? a : b; } function min(uint256 a, uint256 b) internal pure returns (uint256) { return a < b ? a : b; } } //Zeppelin's SafeMath abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } //don't use /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } contract _ERC20 is Context, IERC20 { using SafeMath for uint256; //using Address for address; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; uint8 private _decimals; /** * @dev Sets the values for {name} and {symbol}, initializes {decimals} with * a default value of 18. * * To select a different value for {decimals}, use {_setupDecimals}. * * All three of these values are immutable: they can only be set once during * construction. */ function _constructor(string memory name, string memory symbol) internal { _name = name; _symbol = symbol; _decimals = 18; } //Public Functions /** * @dev Returns the name of the token. */ function name() public view returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is * called. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view returns (uint8) { return _decimals; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}; * * Requirements: * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } //Internal Functions /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } //overriden in Defiat_Token /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements * * - `to` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens. * * This is internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Sets {decimals} to a value other than the default one of 18. * * WARNING: This function should only be called from the constructor. Most * applications that interact with token contracts will not expect * {decimals} to ever change, and may work incorrectly if it does. */ function _setupDecimals(uint8 decimals_) internal { _decimals = decimals_; } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { } } //DeFiat Points - 2020 AUG 27 pragma solidity ^0.6.0; contract DeFiat_Points is _ERC20{ //global variables address public deFiat_Token; //1 DeFiat token address mapping(address => bool) public deFiat_Gov; //multiple governing addresses uint256 public txThreshold; //min tansfer to generate points mapping (uint => uint256) public _discountTranches; mapping (address => uint256) private _discounts; //current discount (base100) //== modifiers == modifier onlyGovernors { require(deFiat_Gov[msg.sender] == true, "Only governing contract"); _; } modifier onlyToken { require(msg.sender == deFiat_Token, "Only token"); _; } constructor() public { //token and governing contract deFiat_Gov[msg.sender] = true; //msg.sender is the 1st governor _constructor("DeFiat Points", "DFTP"); //calls the ERC20 "_constructor" to update token name txThreshold = 1e18*100;// setAll10DiscountTranches( 1e18*10, 1e18*50, 1e18*100, 1e18*500, 1e18*1000, 1e18*1e10, 1e18*1e10+1, 1e18*1e10+2, 1e18*1e10+3); //60% and abovse closed at launch. _discounts[msg.sender]=100; //no minting. _totalSupply = 0 } //== VIEW == function viewDiscountOf(address _address) public view returns (uint256) { return _discounts[_address]; } function viewEligibilityOf(address _address) public view returns (uint256 tranche) { uint256 _tranche = 0; for(uint256 i=0; i<=9; i++){ if(balanceOf(_address) >= _discountTranches[i]) { _tranche = i;} else{break;} } return _tranche; } function discountPointsNeeded(uint _tranche) public view returns (uint256 pointsNeeded) { return( _discountTranches[_tranche]); //check the nb of points needed to access discount tranche } //== SET == function updateMyDiscountOf() public returns (bool) { uint256 _tranche = viewEligibilityOf(msg.sender); _discounts[msg.sender] = SafeMath.mul(10, _tranche); //update of discount base100 return true; } //users execute this function to upgrade a status level to the max tranche //== SET onlyGovernor == function setDeFiatToken(address _token) external onlyGovernors returns(address){ return deFiat_Token = _token; } function setGovernor(address _address, bool _rights) external onlyGovernors { require(msg.sender != _address); //prevents self stripping of rights deFiat_Gov[_address] = _rights; } function setTxTreshold(uint _amount) external onlyGovernors { txThreshold = _amount; //base 1e18 } //minimum amount of tokens to generate points per transaction function overrideDiscount(address _address, uint256 _newDiscount) external onlyGovernors { require(_newDiscount <= 100); //100 = 100% discount _discounts[_address] = _newDiscount; } function overrideLoyaltyPoints(address _address, uint256 _newPoints) external onlyGovernors { _burn(_address, balanceOf(_address)); //burn all points _mint(_address, _newPoints); //mint new points } function setDiscountTranches(uint _tranche, uint256 _pointsNeeded) external onlyGovernors { require(_tranche <10, "max tranche is 9"); //tranche 9 = 90% discount _discountTranches[_tranche] = _pointsNeeded; } function setAll10DiscountTranches( uint256 _pointsNeeded1, uint256 _pointsNeeded2, uint256 _pointsNeeded3, uint256 _pointsNeeded4, uint256 _pointsNeeded5, uint256 _pointsNeeded6, uint256 _pointsNeeded7, uint256 _pointsNeeded8, uint256 _pointsNeeded9) public onlyGovernors { _discountTranches[0] = 0; _discountTranches[1] = _pointsNeeded1; //10% _discountTranches[2] = _pointsNeeded2; //20% _discountTranches[3] = _pointsNeeded3; //30% _discountTranches[4] = _pointsNeeded4; //40% _discountTranches[5] = _pointsNeeded5; //50% _discountTranches[6] = _pointsNeeded6; //60% _discountTranches[7] = _pointsNeeded7; //70% _discountTranches[8] = _pointsNeeded8; //80% _discountTranches[9] = _pointsNeeded9; //90% } //== MINT points: onlyToken == function addPoints(address _address, uint256 _txSize, uint256 _points) external onlyToken { if(_txSize >= txThreshold){ _mint(_address, _points);} } function _transfer(address sender, address recipient, uint256 amount) internal override virtual { _ERC20._transfer(sender, recipient, amount); //force update discount uint256 _tranche = viewEligibilityOf(msg.sender); _discounts[msg.sender] = SafeMath.mul(10, _tranche); } //overriden to update discount at every points Transfer. Avoids passing tokens to get discounts. function burn(uint256 _amount) public returns(bool) { _ERC20._burn(msg.sender,_amount); } } //DeFiat Governance v0.1 - 2020 AUG 27 pragma solidity ^0.6.0; contract DeFiat_Gov{ //Governance contract for DeFiat Token. address public mastermind; mapping (address => uint256) private actorLevel; //governance = multi-tier level mapping (address => uint256) private override _balances; mapping (address => uint256) private override _allowances; uint256 private burnRate; // %rate of burn at each transaction uint256 private feeRate; // %rate of fee taken at each transaction address private feeDestination; //target address for fees (to support staking contracts) event stdEvent(address _txOrigin, uint256 _number, bytes32 _signature, string _desc); //== CONSTRUCTOR constructor() public { mastermind = msg.sender; actorLevel[mastermind] = 3; feeDestination = mastermind; emit stdEvent(msg.sender, 3, sha256(abi.encodePacked(mastermind)), "constructor"); } //== MODIFIERS == modifier onlyMastermind { require(msg.sender == mastermind, " only Mastermind"); _; } modifier onlyGovernor { require(actorLevel[msg.sender] >= 2,"only Governors"); _; } modifier onlyPartner { require(actorLevel[msg.sender] >= 1,"only Partners"); _; } //future use //== VIEW == function viewActorLevelOf(address _address) public view returns (uint256) { return actorLevel[_address]; //address lvl (3, 2, 1 or 0) } function viewBurnRate() public view returns (uint256) { return burnRate; } function viewFeeRate() public view returns (uint256) { return feeRate; } function viewFeeDestination() public view returns (address) { return feeDestination; } //== SET INTERNAL VARIABLES== function setActorLevel(address _address, uint256 _newLevel) public { require(_newLevel < actorLevel[msg.sender], "Can only give rights below you"); actorLevel[_address] = _newLevel; //updates level -> adds or removes rights emit stdEvent(_address, _newLevel, sha256(abi.encodePacked(msg.sender, _newLevel)), "Level changed"); } //MasterMind specific function removeAllRights(address _address) public onlyMastermind { require(_address != mastermind); actorLevel[_address] = 0; //removes all rights emit stdEvent(address(_address), 0, sha256(abi.encodePacked(_address)), "Rights Revoked"); } function killContract() public onlyMastermind { selfdestruct(msg.sender); //destroys the contract if replacement needed } //only Mastermind can kill contract function setMastermind(address _mastermind) public onlyMastermind { mastermind = _mastermind; //Only one mastermind actorLevel[_mastermind] = 3; actorLevel[msg.sender] = 2; //new level for previous mastermind emit stdEvent(tx.origin, 0, sha256(abi.encodePacked(_mastermind, mastermind)), "MasterMind Changed"); } //only Mastermind can transfer his own rights //Governors specific function changeBurnRate(uint _burnRate) public onlyGovernor { require(_burnRate <=200, "20% limit"); //cannot burn more than 20%/tx burnRate = _burnRate; emit stdEvent(address(msg.sender), _burnRate, sha256(abi.encodePacked(msg.sender, _burnRate)), "BurnRate Changed"); } //only governors can change burnRate/tx function changeFeeRate(uint _feeRate) public onlyGovernor { require(_feeRate <=200, "20% limit"); //cannot take more than 20% fees/tx feeRate = _feeRate; emit stdEvent(address(msg.sender), _feeRate, sha256(abi.encodePacked(msg.sender, _feeRate)), "FeeRate Changed"); } //only governors can change feeRate/tx function setFeeDestination(address _nextDest) public onlyGovernor { feeDestination = _nextDest; } } //DeFiat Token - 2020 AUG 27 pragma solidity ^0.6.0; contract DeFiat_Token is _ERC20 { //overrides the _transfer function and adds burn capabilities using SafeMath for uint; //== Variables == address private mastermind; // token creator. address public DeFiat_gov; // contract governing the Token address public DeFiat_points; // ERC20 loyalty TOKEN uint256 private _totalSupply; string private _name; string private _symbol; uint8 private _decimals; struct Transaction { address sender; address recipient; uint256 burnRate; uint256 feeRate; address feeDestination; uint256 senderDiscount; uint256 recipientDiscount; uint256 actualDiscount; } Transaction private transaction; //== Modifiers == modifier onlyMastermind { require(msg.sender == mastermind, "only Mastermind"); _; } modifier onlyGovernor { require(msg.sender == mastermind || msg.sender == DeFiat_gov, "only Governance contract"); _; } //only Governance managing contract modifier onlyPoints { require(msg.sender == mastermind || msg.sender == DeFiat_points, " only Points contract"); _; } //only Points managing contract //== Events == event stdEvent(address _address, uint256 _number, bytes32 _signature, string _desc); //== Token generation == constructor (address _gov, address _points) public { //token requires that governance and points are up and running mastermind = msg.sender; _constructor("DeFiat","DFT"); //calls the ERC20 _constructor _mint(mastermind, 1e18 * 500000); //mint 300,000 tokens DeFiat_gov = _gov; // contract governing the Token DeFiat_points = _points; // ERC20 loyalty TOKEN } //== mastermind == function widthdrawAnyToken(address _recipient, address _ERC20address, uint256 _amount) public onlyGovernor returns (bool) { IERC20(_ERC20address).transfer(_recipient, _amount); //use of the _ERC20 traditional transfer return true; } //get tokens sent by error to contract function setGovernorContract(address _gov) external onlyGovernor { DeFiat_gov = _gov; } // -> governance transfer function setPointsContract(address _pts) external onlyGovernor { DeFiat_points = _pts; } // -> new points management contract function setMastermind(address _mastermind) external onlyMastermind { mastermind = _mastermind; //use the 0x0 address to resign } // transfered to go contract OCT 2020 //== View variables from external contracts == function _viewFeeRate() public view returns(uint256){ return DeFiat_Gov(DeFiat_gov).viewFeeRate(); } function _viewBurnRate() public view returns(uint256){ return DeFiat_Gov(DeFiat_gov).viewBurnRate(); } function _viewFeeDestination() public view returns(address){ return DeFiat_Gov(DeFiat_gov).viewFeeDestination(); } function _viewDiscountOf(address _address) public view returns(uint256){ return DeFiat_Points(DeFiat_points).viewDiscountOf(_address); } function _viewPointsOf(address _address) public view returns(uint256){ return DeFiat_Points(DeFiat_points).balanceOf(_address); } //== override _transfer function in the ERC20Simple contract == function updateTxStruct(address sender, address recipient) internal returns(bool){ transaction.sender = sender; transaction.recipient = recipient; transaction.burnRate = _viewBurnRate(); transaction.feeRate = _viewFeeRate(); transaction.feeDestination = _viewFeeDestination(); transaction.senderDiscount = _viewDiscountOf(sender); transaction.recipientDiscount = _viewDiscountOf(recipient); transaction.actualDiscount = SafeMath.max(transaction.senderDiscount, transaction.recipientDiscount); if( transaction.actualDiscount > 100){transaction.actualDiscount = 100;} //manages "forever pools" return true; } //struct used to prevent "stack too deep" error function addPoints(address sender, uint256 _threshold) public { DeFiat_Points(DeFiat_points).addPoints(sender, _threshold, 1e18); //Update user's loyalty points +1 = +1e18 } function _transfer(address sender, address recipient, uint256 amount) internal override { //overrides the inherited ERC20 _transfer require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); //load transaction Struct (gets info from external contracts) updateTxStruct(sender, recipient); //get discounts and apply them. You get the MAX discounts of the sender x recipient. discount is base100 uint256 dAmount = SafeMath.div( SafeMath.mul(amount, SafeMath.sub(100, transaction.actualDiscount)) ,100); //amount discounted to calculate fees //Calculates burn and fees on discounted amount (burn and fees are 0.0X% ie base 10000 -> "10" = 0.1%) uint _toBurn = SafeMath.div(SafeMath.mul(dAmount,transaction.burnRate),10000); uint _toFee = SafeMath.div(SafeMath.mul(dAmount,transaction.feeRate),10000); uint _amount = SafeMath.sub(amount, SafeMath.add(_toBurn,_toFee)); //calculates the remaning amount to be sent //transfers -> forcing _ERC20 inheritance level if(_toFee > 0) { _ERC20._transfer(sender, transaction.feeDestination, _toFee); //native _transfer + emit } //transfer fee if(_toBurn > 0) {_ERC20._burn(sender,_toBurn);} //native _burn tokens from sender //transfer remaining amount. + emit _ERC20._transfer(sender, recipient, _amount); //native _transfer + emit //mint loyalty points and update lastTX if(sender != recipient){addPoints(sender, amount);} //uses the full amount to determine point minting } function burn(uint256 _amount) public returns(bool) { _ERC20._burn(msg.sender,_amount); } } // End of code. Thanks for reading. If you had the patience and skills to read it all, send us a msg on out social media platrofms. (DeFiat 2020)
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_gov","type":"address"},{"internalType":"address","name":"_points","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"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":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"uint256","name":"_number","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"_signature","type":"bytes32"},{"indexed":false,"internalType":"string","name":"_desc","type":"string"}],"name":"stdEvent","type":"event"},{"inputs":[],"name":"DeFiat_gov","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DeFiat_points","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_viewBurnRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"_viewDiscountOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_viewFeeDestination","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_viewFeeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"_viewPointsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"addPoints","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_gov","type":"address"}],"name":"setGovernorContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_mastermind","type":"address"}],"name":"setMastermind","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pts","type":"address"}],"name":"setPointsContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"address","name":"_ERC20address","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"widthdrawAnyToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162002cf938038062002cf9833981810160405260408110156200003757600080fd5b81019080805190602001909291908051906020019092919050505033600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200010f6040518060400160405280600681526020017f44654669617400000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4446540000000000000000000000000000000000000000000000000000000000815250620001d760201b60201c565b6200014d600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166969e10de76676d08000006200022960201b60201c565b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505062000544565b8160039080519060200190620001ef92919062000495565b5080600490805190602001906200020892919062000495565b506012600560006101000a81548160ff021916908360ff1602179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620002cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b620002e1600083836200040760201b60201c565b620002fd816002546200040c60201b62001da21790919060201c565b6002819055506200035b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200040c60201b62001da21790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b505050565b6000808284019050838110156200048b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004d857805160ff191683800117855562000509565b8280016001018555821562000509579182015b8281111562000508578251825591602001919060010190620004eb565b5b5090506200051891906200051c565b5090565b6200054191905b808211156200053d57600081600090555060010162000523565b5090565b90565b6127a580620005546000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c8063545f5057116100c357806395754abb1161007c57806395754abb146106f457806395d89b4114610738578063a457c2d7146107bb578063a9059cbb14610821578063bdcdb02f14610887578063dd62ed3e146108cb57610158565b8063545f50571461053857806355d2d3d7146105565780635649aceb146105dc57806370a0823114610634578063769623dd1461068c57806376d29ff5146106d657610158565b80632256f585116101155780632256f5851461034a57806323b872dd14610394578063313ce5671461041a578063395093511461043e57806342966c68146104a4578063507cd30f146104ea57610158565b806306c498221461015d57806306fdde03146101a1578063095ea7b3146102245780630baea1ad1461028a578063122ae47c146102e257806318160ddd1461032c575b600080fd5b61019f6004803603602081101561017357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610943565b005b6101a9610aa2565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101e95780820151818401526020810190506101ce565b50505050905090810190601f1680156102165780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102706004803603604081101561023a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b44565b604051808215151515815260200191505060405180910390f35b6102cc600480360360208110156102a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b62565b6040518082815260200191505060405180910390f35b6102ea610c45565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610334610c6b565b6040518082815260200191505060405180910390f35b610352610c75565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610400600480360360608110156103aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c9b565b604051808215151515815260200191505060405180910390f35b610422610d74565b604051808260ff1660ff16815260200191505060405180910390f35b61048a6004803603604081101561045457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d8b565b604051808215151515815260200191505060405180910390f35b6104d0600480360360208110156104ba57600080fd5b8101908080359060200190929190505050610e3e565b604051808215151515815260200191505060405180910390f35b6105366004803603604081101561050057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e4f565b005b610540610f24565b6040518082815260200191505060405180910390f35b6105c26004803603606081101561056c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fce565b604051808215151515815260200191505060405180910390f35b61061e600480360360208110156105f257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111b9565b6040518082815260200191505060405180910390f35b6106766004803603602081101561064a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061129c565b6040518082815260200191505060405180910390f35b6106946112e4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106de61138e565b6040518082815260200191505060405180910390f35b6107366004803603602081101561070a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611438565b005b610740611597565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610780578082015181840152602081019050610765565b50505050905090810190601f1680156107ad5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610807600480360360408110156107d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611639565b604051808215151515815260200191505060405180910390f35b61086d6004803603604081101561083757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611706565b604051808215151515815260200191505060405180910390f35b6108c96004803603602081101561089d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611724565b005b61092d600480360360408110156108e157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061182b565b6040518082815260200191505060405180910390f35b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806109ec5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610a5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6f6e6c7920476f7665726e616e636520636f6e7472616374000000000000000081525060200191505060405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b3a5780601f10610b0f57610100808354040283529160200191610b3a565b820191906000526020600020905b815481529060010190602001808311610b1d57829003601f168201915b5050505050905090565b6000610b58610b516118b2565b84846118ba565b6001905092915050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610c0357600080fd5b505afa158015610c17573d6000803e3d6000fd5b505050506040513d6020811015610c2d57600080fd5b81019080805190602001909291905050509050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610ca8848484611ab1565b610d6984610cb46118b2565b610d64856040518060600160405280602881526020016126b960289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d1a6118b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ce29092919063ffffffff16565b6118ba565b600190509392505050565b6000600560009054906101000a900460ff16905090565b6000610e34610d986118b2565b84610e2f8560016000610da96118b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611da290919063ffffffff16565b6118ba565b6001905092915050565b6000610e4a3383611e2a565b919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323d14d608383670de0b6b3a76400006040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050600060405180830381600087803b158015610f0857600080fd5b505af1158015610f1c573d6000803e3d6000fd5b505050505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bc97240a6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f8e57600080fd5b505afa158015610fa2573d6000803e3d6000fd5b505050506040513d6020811015610fb857600080fd5b8101908080519060200190929190505050905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806110795750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6110eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6f6e6c7920476f7665726e616e636520636f6e7472616374000000000000000081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561117257600080fd5b505af1158015611186573d6000803e3d6000fd5b505050506040513d602081101561119c57600080fd5b810190808051906020019092919050505050600190509392505050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633ef94fa7836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561125a57600080fd5b505afa15801561126e573d6000803e3d6000fd5b505050506040513d602081101561128457600080fd5b81019080805190602001909291905050509050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166344fbf7f16040518163ffffffff1660e01b815260040160206040518083038186803b15801561134e57600080fd5b505afa158015611362573d6000803e3d6000fd5b505050506040513d602081101561137857600080fd5b8101908080519060200190929190505050905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633150cf806040518163ffffffff1660e01b815260040160206040518083038186803b1580156113f857600080fd5b505afa15801561140c573d6000803e3d6000fd5b505050506040513d602081101561142257600080fd5b8101908080519060200190929190505050905090565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806114e15750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611553576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6f6e6c7920476f7665726e616e636520636f6e7472616374000000000000000081525060200191505060405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561162f5780601f106116045761010080835404028352916020019161162f565b820191906000526020600020905b81548152906001019060200180831161161257829003601f168201915b5050505050905090565b60006116fc6116466118b2565b846116f78560405180606001604052806025815260200161274b60259139600160006116706118b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ce29092919063ffffffff16565b6118ba565b6001905092915050565b600061171a6117136118b2565b8484611ab1565b6001905092915050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6f6e6c79204d61737465726d696e64000000000000000000000000000000000081525060200191505060405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611940576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806127276024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806126506022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806127026025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bbd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061260b6023913960400191505060405180910390fd5b611bc78383611fee565b506000611bed611be683611be16064600c6007015461214a565b612194565b606461221a565b90506000611c0b611c0383600c60020154612194565b61271061221a565b90506000611c29611c2184600c60030154612194565b61271061221a565b90506000611c4085611c3b8585611da2565b61214a565b90506000821115611c7c57611c7b87600c60040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612264565b5b6000831115611c9057611c8f8784611e2a565b5b611c9b878783612264565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614611cd957611cd88786610e4f565b5b50505050505050565b6000838311158290611d8f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d54578082015181840152602081019050611d39565b50505050905090810190601f168015611d815780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611e20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611eb0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126e16021913960400191505060405180910390fd5b611ebc82600083612525565b611f278160405180606001604052806022815260200161262e602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ce29092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f7e8160025461214a90919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600082600c60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600c60010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612080610f24565b600c6002018190555061209161138e565b600c600301819055506120a26112e4565b600c60040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506120ee836111b9565b600c60050181905550612100826111b9565b600c6006018190555061211d600c60050154600c6006015461252a565b600c600701819055506064600c600701541115612140576064600c600701819055505b6001905092915050565b600061218c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ce2565b905092915050565b6000808314156121a75760009050612214565b60008284029050828482816121b857fe5b041461220f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126986021913960400191505060405180910390fd5b809150505b92915050565b600061225c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612544565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156122ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806127026025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612370576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061260b6023913960400191505060405180910390fd5b61237b838383612525565b6123e681604051806060016040528060268152602001612672602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ce29092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612479816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611da290919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b505050565b60008183101561253a578161253c565b825b905092915050565b600080831182906125f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156125b557808201518184015260208101905061259a565b50505050905090810190601f1680156125e25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816125fc57fe5b04905080915050939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b37b2efef2be4a1b04145669df58cc2807fd436fcac54cb0f879076795435eeb64736f6c634300060000330000000000000000000000003aa3303877a0d1c360a9fe2693ae9f31087a13810000000000000000000000008c9d8f5cc3427f460e20f63b36992f74aa19e27d
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101585760003560e01c8063545f5057116100c357806395754abb1161007c57806395754abb146106f457806395d89b4114610738578063a457c2d7146107bb578063a9059cbb14610821578063bdcdb02f14610887578063dd62ed3e146108cb57610158565b8063545f50571461053857806355d2d3d7146105565780635649aceb146105dc57806370a0823114610634578063769623dd1461068c57806376d29ff5146106d657610158565b80632256f585116101155780632256f5851461034a57806323b872dd14610394578063313ce5671461041a578063395093511461043e57806342966c68146104a4578063507cd30f146104ea57610158565b806306c498221461015d57806306fdde03146101a1578063095ea7b3146102245780630baea1ad1461028a578063122ae47c146102e257806318160ddd1461032c575b600080fd5b61019f6004803603602081101561017357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610943565b005b6101a9610aa2565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101e95780820151818401526020810190506101ce565b50505050905090810190601f1680156102165780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102706004803603604081101561023a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b44565b604051808215151515815260200191505060405180910390f35b6102cc600480360360208110156102a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b62565b6040518082815260200191505060405180910390f35b6102ea610c45565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610334610c6b565b6040518082815260200191505060405180910390f35b610352610c75565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610400600480360360608110156103aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c9b565b604051808215151515815260200191505060405180910390f35b610422610d74565b604051808260ff1660ff16815260200191505060405180910390f35b61048a6004803603604081101561045457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d8b565b604051808215151515815260200191505060405180910390f35b6104d0600480360360208110156104ba57600080fd5b8101908080359060200190929190505050610e3e565b604051808215151515815260200191505060405180910390f35b6105366004803603604081101561050057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e4f565b005b610540610f24565b6040518082815260200191505060405180910390f35b6105c26004803603606081101561056c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fce565b604051808215151515815260200191505060405180910390f35b61061e600480360360208110156105f257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111b9565b6040518082815260200191505060405180910390f35b6106766004803603602081101561064a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061129c565b6040518082815260200191505060405180910390f35b6106946112e4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106de61138e565b6040518082815260200191505060405180910390f35b6107366004803603602081101561070a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611438565b005b610740611597565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610780578082015181840152602081019050610765565b50505050905090810190601f1680156107ad5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610807600480360360408110156107d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611639565b604051808215151515815260200191505060405180910390f35b61086d6004803603604081101561083757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611706565b604051808215151515815260200191505060405180910390f35b6108c96004803603602081101561089d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611724565b005b61092d600480360360408110156108e157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061182b565b6040518082815260200191505060405180910390f35b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806109ec5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610a5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6f6e6c7920476f7665726e616e636520636f6e7472616374000000000000000081525060200191505060405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b3a5780601f10610b0f57610100808354040283529160200191610b3a565b820191906000526020600020905b815481529060010190602001808311610b1d57829003601f168201915b5050505050905090565b6000610b58610b516118b2565b84846118ba565b6001905092915050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610c0357600080fd5b505afa158015610c17573d6000803e3d6000fd5b505050506040513d6020811015610c2d57600080fd5b81019080805190602001909291905050509050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610ca8848484611ab1565b610d6984610cb46118b2565b610d64856040518060600160405280602881526020016126b960289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d1a6118b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ce29092919063ffffffff16565b6118ba565b600190509392505050565b6000600560009054906101000a900460ff16905090565b6000610e34610d986118b2565b84610e2f8560016000610da96118b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611da290919063ffffffff16565b6118ba565b6001905092915050565b6000610e4a3383611e2a565b919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323d14d608383670de0b6b3a76400006040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050600060405180830381600087803b158015610f0857600080fd5b505af1158015610f1c573d6000803e3d6000fd5b505050505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bc97240a6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f8e57600080fd5b505afa158015610fa2573d6000803e3d6000fd5b505050506040513d6020811015610fb857600080fd5b8101908080519060200190929190505050905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806110795750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6110eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6f6e6c7920476f7665726e616e636520636f6e7472616374000000000000000081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561117257600080fd5b505af1158015611186573d6000803e3d6000fd5b505050506040513d602081101561119c57600080fd5b810190808051906020019092919050505050600190509392505050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633ef94fa7836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561125a57600080fd5b505afa15801561126e573d6000803e3d6000fd5b505050506040513d602081101561128457600080fd5b81019080805190602001909291905050509050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166344fbf7f16040518163ffffffff1660e01b815260040160206040518083038186803b15801561134e57600080fd5b505afa158015611362573d6000803e3d6000fd5b505050506040513d602081101561137857600080fd5b8101908080519060200190929190505050905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633150cf806040518163ffffffff1660e01b815260040160206040518083038186803b1580156113f857600080fd5b505afa15801561140c573d6000803e3d6000fd5b505050506040513d602081101561142257600080fd5b8101908080519060200190929190505050905090565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806114e15750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611553576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6f6e6c7920476f7665726e616e636520636f6e7472616374000000000000000081525060200191505060405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561162f5780601f106116045761010080835404028352916020019161162f565b820191906000526020600020905b81548152906001019060200180831161161257829003601f168201915b5050505050905090565b60006116fc6116466118b2565b846116f78560405180606001604052806025815260200161274b60259139600160006116706118b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ce29092919063ffffffff16565b6118ba565b6001905092915050565b600061171a6117136118b2565b8484611ab1565b6001905092915050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6f6e6c79204d61737465726d696e64000000000000000000000000000000000081525060200191505060405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611940576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806127276024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806126506022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806127026025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bbd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061260b6023913960400191505060405180910390fd5b611bc78383611fee565b506000611bed611be683611be16064600c6007015461214a565b612194565b606461221a565b90506000611c0b611c0383600c60020154612194565b61271061221a565b90506000611c29611c2184600c60030154612194565b61271061221a565b90506000611c4085611c3b8585611da2565b61214a565b90506000821115611c7c57611c7b87600c60040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612264565b5b6000831115611c9057611c8f8784611e2a565b5b611c9b878783612264565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614611cd957611cd88786610e4f565b5b50505050505050565b6000838311158290611d8f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d54578082015181840152602081019050611d39565b50505050905090810190601f168015611d815780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611e20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611eb0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126e16021913960400191505060405180910390fd5b611ebc82600083612525565b611f278160405180606001604052806022815260200161262e602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ce29092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f7e8160025461214a90919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600082600c60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600c60010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612080610f24565b600c6002018190555061209161138e565b600c600301819055506120a26112e4565b600c60040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506120ee836111b9565b600c60050181905550612100826111b9565b600c6006018190555061211d600c60050154600c6006015461252a565b600c600701819055506064600c600701541115612140576064600c600701819055505b6001905092915050565b600061218c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ce2565b905092915050565b6000808314156121a75760009050612214565b60008284029050828482816121b857fe5b041461220f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806126986021913960400191505060405180910390fd5b809150505b92915050565b600061225c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612544565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156122ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806127026025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612370576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061260b6023913960400191505060405180910390fd5b61237b838383612525565b6123e681604051806060016040528060268152602001612672602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ce29092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612479816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611da290919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b505050565b60008183101561253a578161253c565b825b905092915050565b600080831182906125f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156125b557808201518184015260208101905061259a565b50505050905090810190601f1680156125e25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816125fc57fe5b04905080915050939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b37b2efef2be4a1b04145669df58cc2807fd436fcac54cb0f879076795435eeb64736f6c63430006000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000003aa3303877a0d1c360a9fe2693ae9f31087a13810000000000000000000000008c9d8f5cc3427f460e20f63b36992f74aa19e27d
-----Decoded View---------------
Arg [0] : _gov (address): 0x3Aa3303877A0D1c360a9FE2693AE9f31087A1381
Arg [1] : _points (address): 0x8c9d8f5CC3427F460e20F63b36992f74AA19e27d
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000003aa3303877a0d1c360a9fe2693ae9f31087a1381
Arg [1] : 0000000000000000000000008c9d8f5cc3427f460e20f63b36992f74aa19e27d
Deployed Bytecode Sourcemap
29584:6312:0:-:0;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29584:6312:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31749:101;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;31749:101:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;11580:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;11580:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13686:169;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13686:169:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;32803:143;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32803:143:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;29794:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12655:100;;;:::i;:::-;;;;;;;;;;;;;;;;;;;29863:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14329:321;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14329:321:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12507:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15059:218;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15059:218:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;35788:103;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;35788:103:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;33803:183;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;33803:183:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;32391:116;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31449:255;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;31449:255:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;32647:150;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32647:150:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12818:119;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12818:119:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32513:128;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;32272:113;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31885:102;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;31885:102:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;11782:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;11782:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15780:269;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15780:269:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13150:175;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13150:175:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;32035:143;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32035:143:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;13388:151;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13388:151:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31749:101;30549:10;;;;;;;;;;;30535:24;;:10;:24;;;:52;;;;30577:10;;;;;;;;;;;30563:24;;:10;:24;;;30535:52;30527:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31838:4:::1;31825:10;;:17;;;;;;;;;;;;;;;;;;31749:101:::0;:::o;11580:83::-;11617:13;11650:5;11643:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11580:83;:::o;13686:169::-;13769:4;13786:39;13795:12;:10;:12::i;:::-;13809:7;13818:6;13786:8;:39::i;:::-;13843:4;13836:11;;13686:169;;;;:::o;32803:143::-;32864:7;32904:13;;;;;;;;;;;32890:38;;;32929:8;32890:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32890:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32890:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32890:48:0;;;;;;;;;;;;;;;;32883:55;;32803:143;;;:::o;29794:25::-;;;;;;;;;;;;;:::o;12655:100::-;12708:7;12735:12;;12728:19;;12655:100;:::o;29863:28::-;;;;;;;;;;;;;:::o;14329:321::-;14435:4;14452:36;14462:6;14470:9;14481:6;14452:9;:36::i;:::-;14499:121;14508:6;14516:12;:10;:12::i;:::-;14530:89;14568:6;14530:89;;;;;;;;;;;;;;;;;:11;:19;14542:6;14530:19;;;;;;;;;;;;;;;:33;14550:12;:10;:12::i;:::-;14530:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;14499:8;:121::i;:::-;14638:4;14631:11;;14329:321;;;;;:::o;12507:83::-;12548:5;12573:9;;;;;;;;;;;12566:16;;12507:83;:::o;15059:218::-;15147:4;15164:83;15173:12;:10;:12::i;:::-;15187:7;15196:50;15235:10;15196:11;:25;15208:12;:10;:12::i;:::-;15196:25;;;;;;;;;;;;;;;:34;15222:7;15196:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;15164:8;:83::i;:::-;15265:4;15258:11;;15059:218;;;;:::o;35788:103::-;35834:4;35851:32;35864:10;35875:7;35851:12;:32::i;:::-;35788:103;;;:::o;33803:183::-;33886:13;;;;;;;;;;;33872:38;;;33911:6;33919:10;33931:4;33872:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33872:64:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33872:64:0;;;;33803:183;;:::o;32391:116::-;32436:7;32473:10;;;;;;;;;;;32462:35;;;:37;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32462:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32462:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32462:37:0;;;;;;;;;;;;;;;;32455:44;;32391:116;:::o;31449:255::-;31565:4;30549:10;;;;;;;;;;;30535:24;;:10;:24;;;:52;;;;30577:10;;;;;;;;;;;30563:24;;:10;:24;;;30535:52;30527:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31589:13:::1;31582:30;;;31613:10;31625:7;31582:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;31582:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;31582:51:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26::::0;19:12:::1;2:2;31582:51:0;;;;;;;;;;;;;;;;;31692:4;31685:11;;31449:255:::0;;;;;:::o;32647:150::-;32710:7;32750:13;;;;;;;;;;;32736:43;;;32780:8;32736:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32736:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32736:53:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32736:53:0;;;;;;;;;;;;;;;;32729:60;;32647:150;;;:::o;12818:119::-;12884:7;12911:9;:18;12921:7;12911:18;;;;;;;;;;;;;;;;12904:25;;12818:119;;;:::o;32513:128::-;32564:7;32601:10;;;;;;;;;;;32590:41;;;:43;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32590:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32590:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32590:43:0;;;;;;;;;;;;;;;;32583:50;;32513:128;:::o;32272:113::-;32316:7;32352:10;;;;;;;;;;;32341:34;;;:36;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32341:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32341:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32341:36:0;;;;;;;;;;;;;;;;32334:43;;32272:113;:::o;31885:102::-;30549:10;;;;;;;;;;;30535:24;;:10;:24;;;:52;;;;30577:10;;;;;;;;;;;30563:24;;:10;:24;;;30535:52;30527:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31975:4:::1;31959:13;;:20;;;;;;;;;;;;;;;;;;31885:102:::0;:::o;11782:87::-;11821:13;11854:7;11847:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11782:87;:::o;15780:269::-;15873:4;15890:129;15899:12;:10;:12::i;:::-;15913:7;15922:96;15961:15;15922:96;;;;;;;;;;;;;;;;;:11;:25;15934:12;:10;:12::i;:::-;15922:25;;;;;;;;;;;;;;;:34;15948:7;15922:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;15890:8;:129::i;:::-;16037:4;16030:11;;15780:269;;;;:::o;13150:175::-;13236:4;13253:42;13263:12;:10;:12::i;:::-;13277:9;13288:6;13253:9;:42::i;:::-;13313:4;13306:11;;13150:175;;;;:::o;32035:143::-;30446:10;;;;;;;;;;;30432:24;;:10;:24;;;30424:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32127:11:::1;32114:10;;:24;;;;;;;;;;;;;;;;;;32035:143:::0;:::o;13388:151::-;13477:7;13504:11;:18;13516:5;13504:18;;;;;;;;;;;;;;;:27;13523:7;13504:27;;;;;;;;;;;;;;;;13497:34;;13388:151;;;;:::o;7564:106::-;7617:15;7652:10;7645:17;;7564:106;:::o;18980:346::-;19099:1;19082:19;;:5;:19;;;;19074:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19180:1;19161:21;;:7;:21;;;;19153:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19264:6;19234:11;:18;19246:5;19234:18;;;;;;;;;;;;;;;:27;19253:7;19234:27;;;;;;;;;;;;;;;:36;;;;19302:7;19286:32;;19295:5;19286:32;;;19311:6;19286:32;;;;;;;;;;;;;;;;;;18980:346;;;:::o;33998:1778::-;34165:1;34147:20;;:6;:20;;;;34139:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34249:1;34228:23;;:9;:23;;;;34220:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34379:33;34394:6;34402:9;34379:14;:33::i;:::-;;34543:15;34571:143;34598:101;34611:6;34653:45;34666:3;34671:11;:26;;;34653:12;:45::i;:::-;34598:12;:101::i;:::-;34710:3;34571:12;:143::i;:::-;34543:171;;34877:12;34892:62;34905:42;34918:7;34926:11;:20;;;34905:12;:42::i;:::-;34948:5;34892:12;:62::i;:::-;34877:77;;34966:11;34980:61;34993:41;35006:7;35014:11;:19;;;34993:12;:41::i;:::-;35035:5;34980:12;:61::i;:::-;34966:75;;35053:12;35068:50;35081:6;35089:28;35102:7;35110:6;35089:12;:28::i;:::-;35068:12;:50::i;:::-;35053:65;;35243:1;35234:6;:10;35231:124;;;35257:60;35274:6;35282:11;:26;;;;;;;;;;;;35310:6;35257:16;:60::i;:::-;35231:124;35403:1;35393:7;:11;35390:47;;;35407:28;35420:6;35427:7;35407:12;:28::i;:::-;35390:47;35536:44;35553:6;35561:9;35572:7;35536:16;:44::i;:::-;35681:9;35671:19;;:6;:19;;;35668:51;;35692:25;35702:6;35710;35692:9;:25::i;:::-;35668:51;33998:1778;;;;;;;:::o;3664:192::-;3750:7;3783:1;3778;:6;;3786:12;3770:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3770:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3810:9;3826:1;3822;:5;3810:17;;3847:1;3840:8;;;3664:192;;;;;:::o;2761:181::-;2819:7;2839:9;2855:1;2851;:5;2839:17;;2880:1;2875;:6;;2867:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2933:1;2926:8;;;2761:181;;;;:::o;18122:418::-;18225:1;18206:21;;:7;:21;;;;18198:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18278:49;18299:7;18316:1;18320:6;18278:20;:49::i;:::-;18361:68;18384:6;18361:68;;;;;;;;;;;;;;;;;:9;:18;18371:7;18361:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;18340:9;:18;18350:7;18340:18;;;;;;;;;;;;;;;:89;;;;18455:24;18472:6;18455:12;;:16;;:24;;;;:::i;:::-;18440:12;:39;;;;18521:1;18495:37;;18504:7;18495:37;;;18525:6;18495:37;;;;;;;;;;;;;;;;;;18122:418;;:::o;33025:718::-;33101:4;33138:6;33117:11;:18;;;:27;;;;;;;;;;;;;;;;;;33179:9;33155:11;:21;;;:33;;;;;;;;;;;;;;;;;;33222:15;:13;:15::i;:::-;33199:11;:20;;:38;;;;33270:14;:12;:14::i;:::-;33248:11;:19;;:36;;;;33324:21;:19;:21::i;:::-;33295:11;:26;;;:50;;;;;;;;;;;;;;;;;;33385:23;33401:6;33385:15;:23::i;:::-;33356:11;:26;;:52;;;;33451:26;33467:9;33451:15;:26::i;:::-;33419:11;:29;;:58;;;;33517:71;33530:11;:26;;;33558:11;:29;;;33517:12;:71::i;:::-;33488:11;:26;;:100;;;;33643:3;33614:11;:26;;;:32;33610:72;;;33677:3;33648:11;:26;;:32;;;;33610:72;33731:4;33724:11;;33025:718;;;;:::o;3225:136::-;3283:7;3310:43;3314:1;3317;3310:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3303:50;;3225:136;;;;:::o;4115:471::-;4173:7;4423:1;4418;:6;4414:47;;;4448:1;4441:8;;;;4414:47;4473:9;4489:1;4485;:5;4473:17;;4518:1;4513;4509;:5;;;;;;:10;4501:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4577:1;4570:8;;;4115:471;;;;;:::o;5062:132::-;5120:7;5147:39;5151:1;5154;5147:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5140:46;;5062:132;;;;:::o;16563:539::-;16687:1;16669:20;;:6;:20;;;;16661:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16771:1;16750:23;;:9;:23;;;;16742:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16826:47;16847:6;16855:9;16866:6;16826:20;:47::i;:::-;16906:71;16928:6;16906:71;;;;;;;;;;;;;;;;;:9;:17;16916:6;16906:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;16886:9;:17;16896:6;16886:17;;;;;;;;;;;;;;;:91;;;;17011:32;17036:6;17011:9;:20;17021:9;17011:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;16988:9;:20;16998:9;16988:20;;;;;;;;;;;;;;;:55;;;;17076:9;17059:35;;17068:6;17059:35;;;17087:6;17059:35;;;;;;;;;;;;;;;;;;16563:539;;;:::o;20351:92::-;;;;:::o;7274:107::-;7332:7;7364:1;7359;:6;;:14;;7372:1;7359:14;;;7368:1;7359:14;7352:21;;7274:107;;;;:::o;5690:278::-;5776:7;5808:1;5804;:5;5811:12;5796:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5796:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5835:9;5851:1;5847;:5;;;;;;5835:17;;5959:1;5952:8;;;5690:278;;;;;:::o
Swarm Source
ipfs://b37b2efef2be4a1b04145669df58cc2807fd436fcac54cb0f879076795435eeb
Loading...
Loading
Loading...
Loading
OVERVIEW
DeFiat (DFT) is a fully-governed, deflationary ERC-20 token with a multi-tiered loyalty reward system. Every time DFT is transacted, an amount from the transaction is taken for fees and another amount is permanently burned; naturally reducing supply over time.Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $1 | 250 | $250 |
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.