Overview
Max Total Supply
30,930.559271893236142862 CANA
Holders
207 (0.00%)
Market
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.01 CANAValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
| # | Exchange | Pair | Price | 24H Volume | % Volume |
|---|
Contract Name:
MaseerOne
Compiler Version
v0.8.30+commit.73712a01
Optimization Enabled:
Yes with 21000 runs
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: BUSL-1.1
// Copyright (c) 2025 Maseer LTD
//
// This file is subject to the Business Source License 1.1.
// You may not use this file except in compliance with the License.
//
// You may obtain a copy of the License at:
// https://github.com/Maseer-LTD/maseer-one/blob/master/LICENSE
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
pragma solidity ^0.8.28;
import {MaseerToken} from "./MaseerToken.sol";
interface Gem {
function transfer(address usr, uint256 wad) external returns (bool);
function transferFrom(address src, address dst, uint256 wad) external returns (bool);
function balanceOf(address account) external view returns (uint256);
}
interface Cop {
function pass(address usr) external view returns (bool);
}
interface Pip {
function read() external view returns (uint256);
}
interface Act {
function mintable() external view returns (bool);
function burnable() external view returns (bool);
function cooldown() external view returns (uint256);
function capacity() external view returns (uint256);
function mintcost(uint256) external view returns (uint256);
function burncost(uint256) external view returns (uint256);
function terms() external view returns (string memory);
}
interface Adm {
function issuer(address usr) external view returns (bool);
}
// ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
// :==============================================================:
// :==============================================================:
// :==============================================================:
// :==============================================================:
// :==============================================================:
// :============@@@@@@@@@@@=@@@@@@==@@@@@@========================:
// :===========@@.........@@@.....@@@....@========================:
// :===========@........@@@.....@@@....@@@========================:
// :===========@......@@@.....@@@.....@@@=========================:
// :===========@....@@@:....@@@.....@@@===========================:
// :===========@..:@@@....@@@-....@@@=============================:
// :===========@:@@@....@@@@....@@@===============================:
// :===========@@@....@@@@....@@@=================================:
// :===========@.....@@@....@@@===================================:
// :===========@...@@@....:@@@====================================:
// :===========@:@@@.....@@@====@@@@@@@@@@====@@@@@@@@@===========:
// :===========@@@.....@@@======@........@+==@@.......@===========:
// :===========@:....@@@========@........@@==@........@===========:
// :===========@...@@@==========@.........@=@@........@===========:
// :===========@.@@@============@.........@@@.........@===========:
// :===========@@@==============@..........@..........@===========:
// :============================@..........#..........@===========:
// :============================@.....................@===========:
// :============================@.....................@===========:
// :============================@......@.......@......@===========:
// :============================@......@@......@......@===========:
// :============================@......@@.....@@......@===========:
// :============================*@@@@@@*#@@@@@#*@@@@@@*===========:
// :==============================================================:
// :==============================================================:
// :==============================================================:
// :==============================================================:
// :==============================================================:
// ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
contract MaseerOne is MaseerToken {
address immutable public gem; // Purchase token
address immutable public pip; // Oracle price feed
address immutable public act; // Market timing feed
address immutable public adm; // Issuer control
address immutable public cop; // Compliance feed
address immutable public flo; // Output conduit
uint256 public totalPending;
uint256 public redemptionCount;
mapping (uint256 => Redemption) public redemptions;
struct Redemption {
uint256 amount;
address redeemer;
uint96 date;
}
event ContractCreated(
address indexed creator,
uint256 indexed price,
uint256 indexed amount
);
event ContractRedemption(
uint256 indexed id,
uint256 indexed date,
address indexed redeemer,
uint256 amount
);
event ClaimProcessed(
uint256 indexed id,
address indexed claimer,
uint256 indexed amount
);
event Settled(
address indexed conduit,
uint256 indexed amount
);
event Issued(
address indexed issuer,
uint256 indexed amount
);
event Smelted(
address indexed smelter,
uint256 indexed amount
);
error NotAuthorized(address usr);
error TransferToContract();
error TransferToZeroAddress();
error TransferFailed();
error MarketClosed();
error InvalidPrice();
error ExceedsCap();
error ClaimableAfter(uint256 time);
error NoPendingClaim();
error DustThreshold(uint256 min);
constructor(
address gem_,
address pip_,
address act_,
address adm_,
address cop_,
address flo_,
string memory name_,
string memory symbol_
) MaseerToken(name_, symbol_) {
gem = gem_;
pip = pip_;
act = act_;
adm = adm_;
cop = cop_;
flo = flo_;
}
modifier pass(address usr_) {
if (!_canPass(usr_)) revert NotAuthorized(usr_);
_;
}
modifier mintlive() {
if (!mintable()) revert MarketClosed();
_;
}
modifier burnlive() {
if (!burnable()) revert MarketClosed();
_;
}
modifier issuer() {
if (!Adm(adm).issuer(msg.sender)) revert NotAuthorized(msg.sender);
_;
}
function mint(uint256 amt) external mintlive pass(msg.sender) returns (uint256 _out) {
// Oracle price check
uint256 _unit = _read();
// Revert if the price is zero
if (_unit == 0) revert InvalidPrice();
// Adjust the price for minting
_unit = _mintcost(_unit);
// Assert minimum purchase amount of one unit to avoid dust
if (amt < _unit) revert DustThreshold(_unit);
// Calculate the mint amount
_out = _wdiv(amt, _unit);
// Revert if the total supply after mint exceeds the cap
if (totalSupply + _out > _capacity()) revert ExceedsCap();
// Transfer tokens in
_safeTransferFrom(gem, msg.sender, address(this), amt);
// Mint the tokens
_mint(msg.sender, _out);
// Emit contract event
emit ContractCreated(msg.sender, _unit, _out);
}
function redeem(uint256 amt) external burnlive pass(msg.sender) returns (uint256 _id) {
// Assert minimum redemption amount of one token to avoid dust
if (amt < WAD) revert DustThreshold(WAD);
// Oracle price check
uint256 _unit = _read();
// Revert if the price is zero
if (_unit == 0) revert InvalidPrice();
// Adjust the price for redemption
_unit = _burncost(_unit);
// Calculate the redemption amount
uint256 _claim = _wmul(amt, _unit);
// Add to the total pending redemptions
totalPending += _claim;
// Assign a new redemption ID
_id = redemptionCount++;
// Calculate the redemption date
uint96 _time = uint96(block.timestamp + _cooldown());
// Store the redemption
redemptions[_id] = Redemption({
amount: _claim,
redeemer: msg.sender,
date: _time
});
// Burn the tokens
_burn(msg.sender, amt);
// Emit contract event
emit ContractRedemption(_id, _time, msg.sender, _claim);
}
function exit(uint256 id) external pass(msg.sender) returns (uint256 _out) {
Redemption storage _redemption = redemptions[id];
uint256 _time = _redemption.date;
// Check if the claim is past the redemption period
if (_time > block.timestamp) revert ClaimableAfter(_time);
if (_time == 0) revert NoPendingClaim();
uint256 _amt = _redemption.amount;
uint256 _bal = _gemBalance();
// User can claim the amount owed or current available balance
_out = (_amt < _bal) ? _amt : _bal;
// Decrement the total pending redemptions
// Decrement the user's pending redemptions
unchecked {
totalPending -= _out;
_redemption.amount -= _out;
}
// Transfer the tokens
_safeTransfer(gem, _redemption.redeemer, _out);
// Emit claim
emit ClaimProcessed(id, _redemption.redeemer, _out);
}
function settle() external pass(msg.sender) returns (uint256 _out) {
// Get the gem balance
uint256 _bal = _gemBalance();
uint256 _pnd = totalPending;
// Return 0 if the balance is reserved for pending claims
if (_bal <= _pnd) return 0;
// Calculate the balance after pending redemptions
unchecked {
_out = _bal - _pnd;
}
// Send the remaining balance to the output conduit
_safeTransfer(gem, flo, _out);
// Emit settle
emit Settled(flo, _out);
}
// Issuer function for minting assets or bridging
function issue(uint256 amt) external issuer pass(msg.sender) {
_mint(msg.sender, amt);
emit Issued(msg.sender, amt);
}
// Issuer smelting function to burn for a specific user
function smelt(address usr, uint256 amt) external issuer pass(msg.sender) {
_burn(usr, amt);
emit Smelted(usr, amt);
}
// User-level smelting function for burning tokens
function smelt(uint256 amt) external pass(msg.sender) {
_burn(msg.sender, amt);
emit Smelted(msg.sender, amt);
}
// View functions
function mintable() public view returns (bool) {
return Act(act).mintable();
}
function burnable() public view returns (bool) {
return Act(act).burnable();
}
function canPass(address usr) external view returns (bool) {
return _canPass(usr);
}
function cooldown() external view returns (uint256) {
return _cooldown();
}
function navprice() external view returns (uint256) {
return _read();
}
function mintcost() external view returns (uint256) {
return _mintcost(_read());
}
function burncost() external view returns (uint256) {
return _burncost(_read());
}
function capacity() external view returns (uint256) {
return _capacity();
}
function terms() external view returns (string memory) {
return Act(act).terms();
}
function redemptionAddr(uint256 id) external view returns (address) {
return redemptions[id].redeemer;
}
function redemptionDate(uint256 id) external view returns (uint256) {
return redemptions[id].date;
}
function redemptionAmount(uint256 id) external view returns (uint256) {
return redemptions[id].amount;
}
function unsettled() external view returns (uint256) {
uint256 _bal = _gemBalance();
return (_bal < totalPending) ? 0 : _bal - totalPending;
}
function obligated() external view returns (uint256) {
uint256 _bal = _gemBalance();
return (_bal > totalPending) ? 0 : totalPending - _bal;
}
// Token overrides for compliance
function approve(address usr) public override pass(msg.sender) pass(usr) returns (bool) {
return super.approve(usr);
}
function approve(address usr, uint256 wad) public override pass(msg.sender) pass(usr) returns (bool) {
return super.approve(usr, wad);
}
function transfer(address dst, uint256 wad) public override pass(msg.sender) pass(dst) returns (bool) {
if (dst == address(this)) revert TransferToContract();
return super.transfer(dst, wad);
}
function transferFrom(address src, address dst, uint256 wad) public override pass(msg.sender) pass(src) pass(dst) returns (bool) {
if (dst == address(this)) revert TransferToContract();
return super.transferFrom(src, dst, wad);
}
function permit(
address owner,
address spender,
uint256 value,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s
) public override pass(msg.sender) pass(owner) pass(spender) {
super.permit(owner, spender, value, deadline, v, r, s);
}
// Internal utility functions
function _canPass(address _usr) internal view returns (bool) {
return Cop(cop).pass(_usr);
}
function _cooldown() internal view returns (uint256) {
return Act(act).cooldown();
}
function _mintcost(uint256 _price) internal view returns (uint256) {
return Act(act).mintcost(_price);
}
function _burncost(uint256 _price) internal view returns (uint256) {
return Act(act).burncost(_price);
}
function _capacity() internal view returns (uint256) {
return Act(act).capacity();
}
function _read() internal view returns (uint256) {
return Pip(pip).read();
}
function _gemBalance() internal view returns (uint256) {
return Gem(gem).balanceOf(address(this));
}
function _wdiv(uint256 x, uint256 y) internal pure returns (uint256 z) {
z = (x * WAD) / y;
}
function _wmul(uint256 x, uint256 y) internal pure returns (uint256 z) {
z = (x * y) / WAD;
}
function _safeTransfer(address _token, address _to, uint256 _amt) internal {
(bool success, bytes memory data) = _token.call(abi.encodeWithSelector(Gem.transfer.selector, _to, _amt));
if (!success || (data.length > 0 && abi.decode(data, (bool)) == false)) revert TransferFailed();
}
function _safeTransferFrom(address _token, address _from, address _to, uint256 _amt) internal {
(bool success, bytes memory data) = _token.call(abi.encodeWithSelector(Gem.transferFrom.selector, _from, _to, _amt));
if (!success || (data.length > 0 && abi.decode(data, (bool)) == false)) revert TransferFailed();
}
}// SPDX-License-Identifier: BUSL-1.1
// Copyright (c) 2025 Maseer LTD
//
// This file is subject to the Business Source License 1.1.
// You may not use this file except in compliance with the License.
//
// You may obtain a copy of the License at:
// https://github.com/Maseer-LTD/maseer-one/blob/master/LICENSE
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
pragma solidity ^0.8.28;
abstract contract MaseerToken {
// ERC-20
uint256 public totalSupply;
mapping (address => uint256) public balanceOf;
mapping (address => mapping (address => uint256)) public allowance;
string public name;
string public symbol;
uint8 constant public decimals = 18; // standard token precision.
uint256 constant internal WAD = 1e18;
// EIP-2612
bytes32 immutable internal INITIAL_DOMAIN_SEPARATOR;
uint256 immutable internal INITIAL_CHAIN_ID;
mapping(address => uint256) public nonces;
constructor(string memory name_, string memory symbol_) {
name = name_;
symbol = symbol_;
INITIAL_CHAIN_ID = block.chainid;
INITIAL_DOMAIN_SEPARATOR = _computeDomainSeparator();
}
event Approval(address indexed src, address indexed usr, uint256 wad);
event Transfer(address indexed src, address indexed dst, uint256 wad);
error InvalidChain(uint256 expected, uint256 actual);
error PermitDeadlineExpired(uint256 deadline, uint256 actual);
error InvalidSigner(address recovered, address expected);
function approve(address usr) public virtual returns (bool) {
return approve(usr, type(uint256).max);
}
function approve(address usr, uint256 wad) public virtual returns (bool) {
allowance[msg.sender][usr] = wad;
emit Approval(msg.sender, usr, wad);
return true;
}
function transfer(address dst, uint256 wad) public virtual returns (bool) {
balanceOf[msg.sender] -= wad;
// Cannot overflow because balance
// can't exceed totalSupply
unchecked {
balanceOf[dst] += wad;
}
emit Transfer(msg.sender, dst, wad);
return true;
}
function transferFrom(address src, address dst, uint256 wad)
public virtual
returns (bool)
{
uint256 _allowance = allowance[src][msg.sender];
if (_allowance != type(uint256).max) {
allowance[src][msg.sender] = _allowance - wad;
}
balanceOf[src] -= wad;
balanceOf[dst] += wad;
emit Transfer(src, dst, wad);
return true;
}
function permit(
address owner,
address spender,
uint256 value,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s
) public virtual {
if (deadline < block.timestamp) revert PermitDeadlineExpired(deadline, block.timestamp);
// Unchecked because the owner's nonce is uint256 which cannot realistically overflow.
unchecked {
address recoveredAddress = ecrecover(
keccak256(
abi.encodePacked(
"\x19\x01",
DOMAIN_SEPARATOR(),
keccak256(
abi.encode(
keccak256(
"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"
),
owner,
spender,
value,
nonces[owner]++,
deadline
)
)
)
),
v,
r,
s
);
if (recoveredAddress == address(0) || recoveredAddress != owner) revert InvalidSigner(recoveredAddress, owner);
allowance[recoveredAddress][spender] = value;
}
emit Approval(owner, spender, value);
}
function _mint(address usr, uint256 wad) internal {
totalSupply += wad;
// Cannot overflow
unchecked {
balanceOf[usr] += wad;
}
emit Transfer(address(0), usr, wad);
}
function _burn(address usr, uint256 wad) internal {
balanceOf[usr] -= wad;
// Cannot overflow
unchecked {
totalSupply -= wad;
}
emit Transfer(usr, address(0), wad);
}
function DOMAIN_SEPARATOR() public view returns (bytes32) {
return (block.chainid == INITIAL_CHAIN_ID) ? INITIAL_DOMAIN_SEPARATOR : _computeDomainSeparator();
}
function _computeDomainSeparator() internal view returns (bytes32) {
return keccak256(abi.encode(
keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
keccak256(bytes(name)),
keccak256(bytes("1")),
block.chainid,
address(this)
));
}
}{
"remappings": [
"forge-std/=lib/forge-std/src/"
],
"optimizer": {
"enabled": true,
"runs": 21000
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "cancun",
"viaIR": false,
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"gem_","type":"address"},{"internalType":"address","name":"pip_","type":"address"},{"internalType":"address","name":"act_","type":"address"},{"internalType":"address","name":"adm_","type":"address"},{"internalType":"address","name":"cop_","type":"address"},{"internalType":"address","name":"flo_","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"ClaimableAfter","type":"error"},{"inputs":[{"internalType":"uint256","name":"min","type":"uint256"}],"name":"DustThreshold","type":"error"},{"inputs":[],"name":"ExceedsCap","type":"error"},{"inputs":[{"internalType":"uint256","name":"expected","type":"uint256"},{"internalType":"uint256","name":"actual","type":"uint256"}],"name":"InvalidChain","type":"error"},{"inputs":[],"name":"InvalidPrice","type":"error"},{"inputs":[{"internalType":"address","name":"recovered","type":"address"},{"internalType":"address","name":"expected","type":"address"}],"name":"InvalidSigner","type":"error"},{"inputs":[],"name":"MarketClosed","type":"error"},{"inputs":[],"name":"NoPendingClaim","type":"error"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"NotAuthorized","type":"error"},{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"actual","type":"uint256"}],"name":"PermitDeadlineExpired","type":"error"},{"inputs":[],"name":"TransferFailed","type":"error"},{"inputs":[],"name":"TransferToContract","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"src","type":"address"},{"indexed":true,"internalType":"address","name":"usr","type":"address"},{"indexed":false,"internalType":"uint256","name":"wad","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":true,"internalType":"address","name":"claimer","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClaimProcessed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"creator","type":"address"},{"indexed":true,"internalType":"uint256","name":"price","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ContractCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"date","type":"uint256"},{"indexed":true,"internalType":"address","name":"redeemer","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ContractRedemption","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"issuer","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Issued","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"conduit","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Settled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"smelter","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Smelted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"src","type":"address"},{"indexed":true,"internalType":"address","name":"dst","type":"address"},{"indexed":false,"internalType":"uint256","name":"wad","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"act","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"adm","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burncost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"canPass","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"capacity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cop","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"exit","outputs":[{"internalType":"uint256","name":"_out","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flo","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gem","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"issue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"mint","outputs":[{"internalType":"uint256","name":"_out","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintcost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"navprice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"obligated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pip","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"redemptionAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"redemptionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redemptionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"redemptionDate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"redemptions","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"redeemer","type":"address"},{"internalType":"uint96","name":"date","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"settle","outputs":[{"internalType":"uint256","name":"_out","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"smelt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"smelt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"terms","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalPending","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unsettled","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]Contract Creation Code
610180604052348015610010575f5ffd5b506040516132e63803806132e683398101604081905261002f916101f5565b8181600361003d8382610340565b50600461004a8282610340565b504660a05261005761008f565b6080525050506001600160a01b0396871660c0525093851660e05291841661010052831661012052821661014052166101605261046b565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60036040516100c091906103fa565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b80516001600160a01b0381168114610153575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261017b575f5ffd5b81516001600160401b0381111561019457610194610158565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101c2576101c2610158565b6040528181528382016020018510156101d9575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f5f5f5f5f5f610100898b03121561020d575f5ffd5b6102168961013d565b975061022460208a0161013d565b965061023260408a0161013d565b955061024060608a0161013d565b945061024e60808a0161013d565b935061025c60a08a0161013d565b60c08a01519093506001600160401b03811115610277575f5ffd5b6102838b828c0161016c565b60e08b015190935090506001600160401b038111156102a0575f5ffd5b6102ac8b828c0161016c565b9150509295985092959890939650565b600181811c908216806102d057607f821691505b6020821081036102ee57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561033b57805f5260205f20601f840160051c810160208510156103195750805b601f840160051c820191505b81811015610338575f8155600101610325565b50505b505050565b81516001600160401b0381111561035957610359610158565b61036d8161036784546102bc565b846102f4565b6020601f82116001811461039f575f83156103885750848201515b5f19600385901b1c1916600184901b178455610338565b5f84815260208120601f198516915b828110156103ce57878501518255602094850194600190920191016103ae565b50848210156103eb57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f8354610407816102bc565b60018216801561041e576001811461043357610460565b60ff1983168652811515820286019350610460565b865f5260205f205f5b838110156104585781548882015260019091019060200161043c565b505081860193505b509195945050505050565b60805160a05160c05160e05161010051610120516101405161016051612da961053d5f395f818161039701528181610946015261098701525f81816104d50152611adb01525f81816102e10152818161129c015261142901525f818161072c01528181610c40015281816110fd01528181611575015281816120820152818161218401528181612206015261229e01525f81816106ad01526120ec01525f818161052b0152818161092501528181610e5f015281816110940152611bee01525f610be601525f610c1b0152612da95ff3fe608060405234801561000f575f5ffd5b50600436106102d8575f3560e01c806370a0823111610187578063ad1a2396116100dd578063d741e2f911610093578063dd62ed3e1161006e578063dd62ed3e146106f5578063ede750941461071f578063ee42b10b14610727575f5ffd5b8063d741e2f9146106a8578063daea85c5146106cf578063db006a75146106e2575f5ffd5b8063cc872b66116100c3578063cc872b661461067a578063d50256251461068d578063d505accf14610695575f5ffd5b8063ad1a2396146105c5578063beb65893146105d8575f5ffd5b806394c3cbf41161013d578063a0712d6811610118578063a0712d6814610597578063a07c7ce4146105aa578063a9059cbb146105b2575f5ffd5b806394c3cbf41461057f57806395d89b4114610587578063973efb5c1461058f575f5ffd5b80637bd2bea71161016d5780637bd2bea7146105265780637ecebe001461054d5780637f8661a11461056c575f5ffd5b806370a08231146104ff578063787a08a61461051e575f5ffd5b806326ea37991161023c5780634bf365df116101f25780635cfc1a51116101cd5780635cfc1a51146104c85780635f7efbea146104d05780636c96474f146104f7575f5ffd5b80634bf365df146104805780634d773aa61461048857806351f5d98d14610490575f5ffd5b80633644e515116102225780633644e515146104275780633f90916a1461042f57806342c4a1aa14610438575f5ffd5b806326ea379914610404578063313ce5671461040d575f5ffd5b806311da60b411610291578063219df1cc11610277578063219df1cc146103c957806323b872dd146103de578063248c11f5146103f1575f5ffd5b806311da60b4146103b957806318160ddd146103c1575f5ffd5b806306ff7a41116102c157806306ff7a4114610342578063095ea7b31461036f5780630a77bd4914610392575f5ffd5b806304d7aef2146102dc57806306fdde031461032d575b5f5ffd5b6103037f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61033561074e565b6040516103249190612862565b6103616103503660046128b5565b5f9081526008602052604090205490565b604051908152602001610324565b61038261037d3660046128f4565b6107da565b6040519015158152602001610324565b6103037f000000000000000000000000000000000000000000000000000000000000000081565b6103616108a3565b6103615f5481565b6103dc6103d73660046128b5565b6109d3565b005b6103826103ec36600461291c565b610a65565b6103826103ff366004612956565b610bd3565b61036160075481565b610415601281565b60405160ff9091168152602001610324565b610361610be3565b61036160065481565b6103616104463660046128b5565b5f908152600860205260409020600101547401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1690565b610382610c3d565b610361610ccb565b61030361049e3660046128b5565b5f9081526008602052604090206001015473ffffffffffffffffffffffffffffffffffffffff1690565b610361610cfb565b6103037f000000000000000000000000000000000000000000000000000000000000000081565b610361610d04565b61036161050d366004612956565b60016020525f908152604090205481565b610361610d15565b6103037f000000000000000000000000000000000000000000000000000000000000000081565b61036161055b366004612956565b60056020525f908152604090205481565b61036161057a3660046128b5565b610d1e565b610361610eed565b610335610efe565b610361610f0b565b6103616105a53660046128b5565b610f14565b6103826110fa565b6103826105c03660046128f4565b611164565b6103dc6105d33660046128f4565b61126e565b61063c6105e63660046128b5565b60086020525f90815260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff8116907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1683565b6040805193845273ffffffffffffffffffffffffffffffffffffffff90921660208401526bffffffffffffffffffffffff1690820152606001610324565b6103dc6106883660046128b5565b6113fb565b610335611571565b6103dc6106a336600461296f565b611620565b6103037f000000000000000000000000000000000000000000000000000000000000000081565b6103826106dd366004612956565b611743565b6103616106f03660046128b5565b611805565b6103616107033660046129dc565b600260209081525f928352604080842090915290825290205481565b610361611a72565b6103037f000000000000000000000000000000000000000000000000000000000000000081565b6003805461075b90612a0d565b80601f016020809104026020016040519081016040528092919081815260200182805461078790612a0d565b80156107d25780601f106107a9576101008083540402835291602001916107d2565b820191905f5260205f20905b8154815290600101906020018083116107b557829003601f168201915b505050505081565b5f336107e581611a94565b610838576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b8361084281611a94565b610890576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b61089a8585611b46565b95945050505050565b5f336108ae81611a94565b6108fc576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b5f610905611bbe565b60065490915080821161091b575f935050505090565b808203935061096b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000086611c6c565b604051849073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016907f7823e479a1a4ebe2418874847436f8a1680c5ee5b17f38bb59dbff28e1b45552905f90a350505090565b336109dd81611a94565b610a2b576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b610a353383611dac565b604051829033907f266ba2fe22d2b352fe1eb8c45b5d486ff3c0b83ef953959b6d34397d53fb088d905f90a35050565b5f33610a7081611a94565b610abe576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b84610ac881611a94565b610b16576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b84610b2081611a94565b610b6e576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b3073ffffffffffffffffffffffffffffffffffffffff871603610bbd576040517f3a49fd5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bc8878787611e3d565b979650505050505050565b5f610bdd82611a94565b92915050565b5f7f00000000000000000000000000000000000000000000000000000000000000004614610c1857610c13611fb5565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634bf365df6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ca7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c139190612a5e565b5f5f610cd5611bbe565b90506006548111610cf35780600654610cee9190612aaa565b610cf5565b5f5b91505090565b5f610c1361207f565b5f610c13610d106120e9565b612153565b5f610c13612203565b5f33610d2981611a94565b610d77576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b5f83815260086020526040902060018101547401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1642811115610dec576040517f774cceca0000000000000000000000000000000000000000000000000000000081526004810182905260240161082f565b805f03610e25576040517f9b604d0b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81545f610e30611bbe565b9050808210610e3f5780610e41565b815b600680548290039055845481900385556001850154909650610e9b907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff1688611c6c565b6001840154604051879173ffffffffffffffffffffffffffffffffffffffff169089907f786e090d783caced3baddcb29bd555ffb93faf484529ab87feab4ec4c48a81e1905f90a45050505050919050565b5f610c13610ef96120e9565b61226d565b6004805461075b90612a0d565b5f610c136120e9565b5f610f1d610c3d565b610f53576040517f0b5f6bf000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33610f5d81611a94565b610fab576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b5f610fb46120e9565b9050805f03610fee576040517ebfc92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ff78161226d565b905080841015611036576040517fa4a050250000000000000000000000000000000000000000000000000000000081526004810182905260240161082f565b61104084826122e2565b925061104a61207f565b835f546110579190612abd565b111561108f576040517f2edaff4300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110bb7f0000000000000000000000000000000000000000000000000000000000000000333087612307565b6110c53384612450565b6040518390829033907f58781ca443f8e3ecffad28c83044b16c6e549d8e9c677aebb3b8ee176f99f53f905f90a45050919050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a07c7ce46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ca7573d5f5f3e3d5ffd5b5f3361116f81611a94565b6111bd576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b836111c781611a94565b611215576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b3073ffffffffffffffffffffffffffffffffffffffff861603611264576040517f3a49fd5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61089a85856124be565b6040517f5711caaf0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635711caaf90602401602060405180830381865afa1580156112f6573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061131a9190612a5e565b611352576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815233600482015260240161082f565b3361135c81611a94565b6113aa576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b6113b48383611dac565b604051829073ffffffffffffffffffffffffffffffffffffffff8516907f266ba2fe22d2b352fe1eb8c45b5d486ff3c0b83ef953959b6d34397d53fb088d905f90a3505050565b6040517f5711caaf0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635711caaf90602401602060405180830381865afa158015611483573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114a79190612a5e565b6114df576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815233600482015260240161082f565b336114e981611a94565b611537576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b6115413383612450565b604051829033907fa59f12e354e8cd10bb74c559844c2dd69a5458e31fe56c7594c62ca57480509a905f90a35050565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d50256256040518163ffffffff1660e01b81526004015f60405180830381865afa1580156115db573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610c139190810190612afd565b3361162a81611a94565b611678576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b8761168281611a94565b6116d0576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b876116da81611a94565b611728576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b6117378a8a8a8a8a8a8a612541565b50505050505050505050565b5f3361174e81611a94565b61179c576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b826117a681611a94565b6117f4576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b6117fd84612823565b949350505050565b5f61180e6110fa565b611844576040517f0b5f6bf000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3361184e81611a94565b61189c576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b670de0b6b3a76400008310156118e8576040517fa4a05025000000000000000000000000000000000000000000000000000000008152670de0b6b3a7640000600482015260240161082f565b5f6118f16120e9565b9050805f0361192b576040517ebfc92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61193481612153565b90505f611941858361284e565b90508060065f8282546119549190612abd565b909155505060078054905f61196883612bed565b9190505593505f611977612203565b6119819042612abd565b604080516060810182528481523360208083018281526bffffffffffffffffffffffff8087168587019081525f8d81526008909452959092209351845551935116740100000000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff9390931692909217600190910155909150611a099087611dac565b3373ffffffffffffffffffffffffffffffffffffffff16816bffffffffffffffffffffffff16867f5a084092180e1b482afdddc2a20027f4d3619225151fb1a9934c119cd7307f3285604051611a6191815260200190565b60405180910390a450505050919050565b5f5f611a7c611bbe565b90506006548110610cf357600654610cee9082612aaa565b6040517f82c4b3b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906382c4b3b290602401602060405180830381865afa158015611b22573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bdd9190612a5e565b335f81815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611bad9086815260200190565b60405180910390a350600192915050565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611c48573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c139190612c24565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291515f92839290871691611d029190612c3b565b5f604051808303815f865af19150503d805f8114611d3b576040519150601f19603f3d011682016040523d82523d5f602084013e611d40565b606091505b5091509150811580611d6e57505f8151118015611d6e575080806020019051810190611d6c9190612a5e565b155b15611da5576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526001602052604081208054839290611de0908490612aaa565b90915550505f8054829003815560405182815273ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611ecf57611e9e8382612aaa565b73ffffffffffffffffffffffffffffffffffffffff86165f9081526002602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85165f9081526001602052604081208054859290611f03908490612aaa565b909155505073ffffffffffffffffffffffffffffffffffffffff84165f9081526001602052604081208054859290611f3c908490612abd565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611fa291815260200190565b60405180910390a3506001949350505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6003604051611fe69190612c51565b604080519182900382208282018252600183527f31000000000000000000000000000000000000000000000000000000000000006020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635cfc1a516040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c48573d5f5f3e3d5ffd5b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166357de26a46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c48573d5f5f3e3d5ffd5b6040517fef86cf56000000000000000000000000000000000000000000000000000000008152600481018290525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063ef86cf56906024015b602060405180830381865afa1580156121df573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bdd9190612c24565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663787a08a66040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c48573d5f5f3e3d5ffd5b6040517f5c4f46ed000000000000000000000000000000000000000000000000000000008152600481018290525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635c4f46ed906024016121c4565b5f816122f6670de0b6b3a764000085612d24565b6123009190612d3b565b9392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905291515f928392908816916123a59190612c3b565b5f604051808303815f865af19150503d805f81146123de576040519150601f19603f3d011682016040523d82523d5f602084013e6123e3565b606091505b509150915081158061241157505f815111801561241157508080602001905181019061240f9190612a5e565b155b15612448576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b805f5f8282546124609190612abd565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611e31565b335f908152600160205260408120805483919083906124de908490612aaa565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f81815260016020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611bad9086815260200190565b42841015612584576040517fc4773cba0000000000000000000000000000000000000000000000000000000081526004810185905242602482015260440161082f565b5f600161258f610be3565b73ffffffffffffffffffffffffffffffffffffffff8a81165f8181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e0830190915280519201919091207f190100000000000000000000000000000000000000000000000000000000000061010083015261010282019290925261012281019190915261014201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201205f84529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa1580156126dd573d5f5f3e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116158061275757508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b156127ae576040517f7ba5ffb500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80831660048301528916602482015260440161082f565b73ffffffffffffffffffffffffffffffffffffffff9081165f9081526002602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b5f610bdd827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6107da565b5f670de0b6b3a76400006122f68385612d24565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f602082840312156128c5575f5ffd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146128ef575f5ffd5b919050565b5f5f60408385031215612905575f5ffd5b61290e836128cc565b946020939093013593505050565b5f5f5f6060848603121561292e575f5ffd5b612937846128cc565b9250612945602085016128cc565b929592945050506040919091013590565b5f60208284031215612966575f5ffd5b612300826128cc565b5f5f5f5f5f5f5f60e0888a031215612985575f5ffd5b61298e886128cc565b965061299c602089016128cc565b95506040880135945060608801359350608088013560ff811681146129bf575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f604083850312156129ed575f5ffd5b6129f6836128cc565b9150612a04602084016128cc565b90509250929050565b600181811c90821680612a2157607f821691505b602082108103612a58577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f60208284031215612a6e575f5ffd5b81518015158114612300575f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b81810381811115610bdd57610bdd612a7d565b80820180821115610bdd57610bdd612a7d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f60208284031215612b0d575f5ffd5b815167ffffffffffffffff811115612b23575f5ffd5b8201601f81018413612b33575f5ffd5b805167ffffffffffffffff811115612b4d57612b4d612ad0565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715612bb957612bb9612ad0565b604052818152828201602001861015612bd0575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c1d57612c1d612a7d565b5060010190565b5f60208284031215612c34575f5ffd5b5051919050565b5f82518060208501845e5f920191825250919050565b5f5f83545f8160011c90506001821680612c6c57607f821691505b602082108103612ca3577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b808015612cb75760018114612cea57612d18565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450612d18565b5f888152602090205f5b84811015612d1057815489820152600190910190602001612cf4565b505082870194505b50929695505050505050565b8082028115828204841417610bdd57610bdd612a7d565b5f82612d6e577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea264697066735822122059106cbf2d7123c48402cc6b33b94eb0603e790e371a35a5fda68b7c68f2d04564736f6c634300081e0033000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000e7c5c484a61cc93a638f67906a9900d94b40fda70000000000000000000000003a0de7a4678ca9341a63ffe78041385eda65b12800000000000000000000000000d2dc03b8207b2d261bda5d149dd7fcf3bdf8d7000000000000000000000000456e0074853cd23a3cdea3a1bb85575ed9b1a71800000000000000000000000012c8091a719125bf08875635c3ed738510c5614100000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000002743414e4120486f6c64696e67732043616c69666f726e696120436172626f6e204372656469747300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000443414e4100000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561000f575f5ffd5b50600436106102d8575f3560e01c806370a0823111610187578063ad1a2396116100dd578063d741e2f911610093578063dd62ed3e1161006e578063dd62ed3e146106f5578063ede750941461071f578063ee42b10b14610727575f5ffd5b8063d741e2f9146106a8578063daea85c5146106cf578063db006a75146106e2575f5ffd5b8063cc872b66116100c3578063cc872b661461067a578063d50256251461068d578063d505accf14610695575f5ffd5b8063ad1a2396146105c5578063beb65893146105d8575f5ffd5b806394c3cbf41161013d578063a0712d6811610118578063a0712d6814610597578063a07c7ce4146105aa578063a9059cbb146105b2575f5ffd5b806394c3cbf41461057f57806395d89b4114610587578063973efb5c1461058f575f5ffd5b80637bd2bea71161016d5780637bd2bea7146105265780637ecebe001461054d5780637f8661a11461056c575f5ffd5b806370a08231146104ff578063787a08a61461051e575f5ffd5b806326ea37991161023c5780634bf365df116101f25780635cfc1a51116101cd5780635cfc1a51146104c85780635f7efbea146104d05780636c96474f146104f7575f5ffd5b80634bf365df146104805780634d773aa61461048857806351f5d98d14610490575f5ffd5b80633644e515116102225780633644e515146104275780633f90916a1461042f57806342c4a1aa14610438575f5ffd5b806326ea379914610404578063313ce5671461040d575f5ffd5b806311da60b411610291578063219df1cc11610277578063219df1cc146103c957806323b872dd146103de578063248c11f5146103f1575f5ffd5b806311da60b4146103b957806318160ddd146103c1575f5ffd5b806306ff7a41116102c157806306ff7a4114610342578063095ea7b31461036f5780630a77bd4914610392575f5ffd5b806304d7aef2146102dc57806306fdde031461032d575b5f5ffd5b6103037f00000000000000000000000000d2dc03b8207b2d261bda5d149dd7fcf3bdf8d781565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61033561074e565b6040516103249190612862565b6103616103503660046128b5565b5f9081526008602052604090205490565b604051908152602001610324565b61038261037d3660046128f4565b6107da565b6040519015158152602001610324565b6103037f00000000000000000000000012c8091a719125bf08875635c3ed738510c5614181565b6103616108a3565b6103615f5481565b6103dc6103d73660046128b5565b6109d3565b005b6103826103ec36600461291c565b610a65565b6103826103ff366004612956565b610bd3565b61036160075481565b610415601281565b60405160ff9091168152602001610324565b610361610be3565b61036160065481565b6103616104463660046128b5565b5f908152600860205260409020600101547401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1690565b610382610c3d565b610361610ccb565b61030361049e3660046128b5565b5f9081526008602052604090206001015473ffffffffffffffffffffffffffffffffffffffff1690565b610361610cfb565b6103037f000000000000000000000000456e0074853cd23a3cdea3a1bb85575ed9b1a71881565b610361610d04565b61036161050d366004612956565b60016020525f908152604090205481565b610361610d15565b6103037f000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec781565b61036161055b366004612956565b60056020525f908152604090205481565b61036161057a3660046128b5565b610d1e565b610361610eed565b610335610efe565b610361610f0b565b6103616105a53660046128b5565b610f14565b6103826110fa565b6103826105c03660046128f4565b611164565b6103dc6105d33660046128f4565b61126e565b61063c6105e63660046128b5565b60086020525f90815260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff8116907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1683565b6040805193845273ffffffffffffffffffffffffffffffffffffffff90921660208401526bffffffffffffffffffffffff1690820152606001610324565b6103dc6106883660046128b5565b6113fb565b610335611571565b6103dc6106a336600461296f565b611620565b6103037f000000000000000000000000e7c5c484a61cc93a638f67906a9900d94b40fda781565b6103826106dd366004612956565b611743565b6103616106f03660046128b5565b611805565b6103616107033660046129dc565b600260209081525f928352604080842090915290825290205481565b610361611a72565b6103037f0000000000000000000000003a0de7a4678ca9341a63ffe78041385eda65b12881565b6003805461075b90612a0d565b80601f016020809104026020016040519081016040528092919081815260200182805461078790612a0d565b80156107d25780601f106107a9576101008083540402835291602001916107d2565b820191905f5260205f20905b8154815290600101906020018083116107b557829003601f168201915b505050505081565b5f336107e581611a94565b610838576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b8361084281611a94565b610890576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b61089a8585611b46565b95945050505050565b5f336108ae81611a94565b6108fc576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b5f610905611bbe565b60065490915080821161091b575f935050505090565b808203935061096b7f000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec77f00000000000000000000000012c8091a719125bf08875635c3ed738510c5614186611c6c565b604051849073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000012c8091a719125bf08875635c3ed738510c5614116907f7823e479a1a4ebe2418874847436f8a1680c5ee5b17f38bb59dbff28e1b45552905f90a350505090565b336109dd81611a94565b610a2b576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b610a353383611dac565b604051829033907f266ba2fe22d2b352fe1eb8c45b5d486ff3c0b83ef953959b6d34397d53fb088d905f90a35050565b5f33610a7081611a94565b610abe576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b84610ac881611a94565b610b16576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b84610b2081611a94565b610b6e576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b3073ffffffffffffffffffffffffffffffffffffffff871603610bbd576040517f3a49fd5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bc8878787611e3d565b979650505050505050565b5f610bdd82611a94565b92915050565b5f7f00000000000000000000000000000000000000000000000000000000000000014614610c1857610c13611fb5565b905090565b507f38762f7bde177d1bc466ab7bc20885f877f926cd07c284b7996cbe182b6f383e90565b5f7f0000000000000000000000003a0de7a4678ca9341a63ffe78041385eda65b12873ffffffffffffffffffffffffffffffffffffffff16634bf365df6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ca7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c139190612a5e565b5f5f610cd5611bbe565b90506006548111610cf35780600654610cee9190612aaa565b610cf5565b5f5b91505090565b5f610c1361207f565b5f610c13610d106120e9565b612153565b5f610c13612203565b5f33610d2981611a94565b610d77576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b5f83815260086020526040902060018101547401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1642811115610dec576040517f774cceca0000000000000000000000000000000000000000000000000000000081526004810182905260240161082f565b805f03610e25576040517f9b604d0b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81545f610e30611bbe565b9050808210610e3f5780610e41565b815b600680548290039055845481900385556001850154909650610e9b907f000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec79073ffffffffffffffffffffffffffffffffffffffff1688611c6c565b6001840154604051879173ffffffffffffffffffffffffffffffffffffffff169089907f786e090d783caced3baddcb29bd555ffb93faf484529ab87feab4ec4c48a81e1905f90a45050505050919050565b5f610c13610ef96120e9565b61226d565b6004805461075b90612a0d565b5f610c136120e9565b5f610f1d610c3d565b610f53576040517f0b5f6bf000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33610f5d81611a94565b610fab576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b5f610fb46120e9565b9050805f03610fee576040517ebfc92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ff78161226d565b905080841015611036576040517fa4a050250000000000000000000000000000000000000000000000000000000081526004810182905260240161082f565b61104084826122e2565b925061104a61207f565b835f546110579190612abd565b111561108f576040517f2edaff4300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110bb7f000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7333087612307565b6110c53384612450565b6040518390829033907f58781ca443f8e3ecffad28c83044b16c6e549d8e9c677aebb3b8ee176f99f53f905f90a45050919050565b5f7f0000000000000000000000003a0de7a4678ca9341a63ffe78041385eda65b12873ffffffffffffffffffffffffffffffffffffffff1663a07c7ce46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ca7573d5f5f3e3d5ffd5b5f3361116f81611a94565b6111bd576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b836111c781611a94565b611215576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b3073ffffffffffffffffffffffffffffffffffffffff861603611264576040517f3a49fd5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61089a85856124be565b6040517f5711caaf0000000000000000000000000000000000000000000000000000000081523360048201527f00000000000000000000000000d2dc03b8207b2d261bda5d149dd7fcf3bdf8d773ffffffffffffffffffffffffffffffffffffffff1690635711caaf90602401602060405180830381865afa1580156112f6573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061131a9190612a5e565b611352576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815233600482015260240161082f565b3361135c81611a94565b6113aa576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b6113b48383611dac565b604051829073ffffffffffffffffffffffffffffffffffffffff8516907f266ba2fe22d2b352fe1eb8c45b5d486ff3c0b83ef953959b6d34397d53fb088d905f90a3505050565b6040517f5711caaf0000000000000000000000000000000000000000000000000000000081523360048201527f00000000000000000000000000d2dc03b8207b2d261bda5d149dd7fcf3bdf8d773ffffffffffffffffffffffffffffffffffffffff1690635711caaf90602401602060405180830381865afa158015611483573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114a79190612a5e565b6114df576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815233600482015260240161082f565b336114e981611a94565b611537576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b6115413383612450565b604051829033907fa59f12e354e8cd10bb74c559844c2dd69a5458e31fe56c7594c62ca57480509a905f90a35050565b60607f0000000000000000000000003a0de7a4678ca9341a63ffe78041385eda65b12873ffffffffffffffffffffffffffffffffffffffff1663d50256256040518163ffffffff1660e01b81526004015f60405180830381865afa1580156115db573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610c139190810190612afd565b3361162a81611a94565b611678576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b8761168281611a94565b6116d0576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b876116da81611a94565b611728576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b6117378a8a8a8a8a8a8a612541565b50505050505050505050565b5f3361174e81611a94565b61179c576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b826117a681611a94565b6117f4576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b6117fd84612823565b949350505050565b5f61180e6110fa565b611844576040517f0b5f6bf000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3361184e81611a94565b61189c576040517f4a0bfec100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161082f565b670de0b6b3a76400008310156118e8576040517fa4a05025000000000000000000000000000000000000000000000000000000008152670de0b6b3a7640000600482015260240161082f565b5f6118f16120e9565b9050805f0361192b576040517ebfc92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61193481612153565b90505f611941858361284e565b90508060065f8282546119549190612abd565b909155505060078054905f61196883612bed565b9190505593505f611977612203565b6119819042612abd565b604080516060810182528481523360208083018281526bffffffffffffffffffffffff8087168587019081525f8d81526008909452959092209351845551935116740100000000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff9390931692909217600190910155909150611a099087611dac565b3373ffffffffffffffffffffffffffffffffffffffff16816bffffffffffffffffffffffff16867f5a084092180e1b482afdddc2a20027f4d3619225151fb1a9934c119cd7307f3285604051611a6191815260200190565b60405180910390a450505050919050565b5f5f611a7c611bbe565b90506006548110610cf357600654610cee9082612aaa565b6040517f82c4b3b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301525f917f000000000000000000000000456e0074853cd23a3cdea3a1bb85575ed9b1a718909116906382c4b3b290602401602060405180830381865afa158015611b22573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bdd9190612a5e565b335f81815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611bad9086815260200190565b60405180910390a350600192915050565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f907f000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec773ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611c48573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c139190612c24565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291515f92839290871691611d029190612c3b565b5f604051808303815f865af19150503d805f8114611d3b576040519150601f19603f3d011682016040523d82523d5f602084013e611d40565b606091505b5091509150811580611d6e57505f8151118015611d6e575080806020019051810190611d6c9190612a5e565b155b15611da5576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526001602052604081208054839290611de0908490612aaa565b90915550505f8054829003815560405182815273ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611ecf57611e9e8382612aaa565b73ffffffffffffffffffffffffffffffffffffffff86165f9081526002602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85165f9081526001602052604081208054859290611f03908490612aaa565b909155505073ffffffffffffffffffffffffffffffffffffffff84165f9081526001602052604081208054859290611f3c908490612abd565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611fa291815260200190565b60405180910390a3506001949350505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6003604051611fe69190612c51565b604080519182900382208282018252600183527f31000000000000000000000000000000000000000000000000000000000000006020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f7f0000000000000000000000003a0de7a4678ca9341a63ffe78041385eda65b12873ffffffffffffffffffffffffffffffffffffffff16635cfc1a516040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c48573d5f5f3e3d5ffd5b5f7f000000000000000000000000e7c5c484a61cc93a638f67906a9900d94b40fda773ffffffffffffffffffffffffffffffffffffffff166357de26a46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c48573d5f5f3e3d5ffd5b6040517fef86cf56000000000000000000000000000000000000000000000000000000008152600481018290525f907f0000000000000000000000003a0de7a4678ca9341a63ffe78041385eda65b12873ffffffffffffffffffffffffffffffffffffffff169063ef86cf56906024015b602060405180830381865afa1580156121df573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bdd9190612c24565b5f7f0000000000000000000000003a0de7a4678ca9341a63ffe78041385eda65b12873ffffffffffffffffffffffffffffffffffffffff1663787a08a66040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c48573d5f5f3e3d5ffd5b6040517f5c4f46ed000000000000000000000000000000000000000000000000000000008152600481018290525f907f0000000000000000000000003a0de7a4678ca9341a63ffe78041385eda65b12873ffffffffffffffffffffffffffffffffffffffff1690635c4f46ed906024016121c4565b5f816122f6670de0b6b3a764000085612d24565b6123009190612d3b565b9392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905291515f928392908816916123a59190612c3b565b5f604051808303815f865af19150503d805f81146123de576040519150601f19603f3d011682016040523d82523d5f602084013e6123e3565b606091505b509150915081158061241157505f815111801561241157508080602001905181019061240f9190612a5e565b155b15612448576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b805f5f8282546124609190612abd565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611e31565b335f908152600160205260408120805483919083906124de908490612aaa565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f81815260016020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611bad9086815260200190565b42841015612584576040517fc4773cba0000000000000000000000000000000000000000000000000000000081526004810185905242602482015260440161082f565b5f600161258f610be3565b73ffffffffffffffffffffffffffffffffffffffff8a81165f8181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e0830190915280519201919091207f190100000000000000000000000000000000000000000000000000000000000061010083015261010282019290925261012281019190915261014201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201205f84529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa1580156126dd573d5f5f3e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116158061275757508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b156127ae576040517f7ba5ffb500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80831660048301528916602482015260440161082f565b73ffffffffffffffffffffffffffffffffffffffff9081165f9081526002602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b5f610bdd827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6107da565b5f670de0b6b3a76400006122f68385612d24565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f602082840312156128c5575f5ffd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146128ef575f5ffd5b919050565b5f5f60408385031215612905575f5ffd5b61290e836128cc565b946020939093013593505050565b5f5f5f6060848603121561292e575f5ffd5b612937846128cc565b9250612945602085016128cc565b929592945050506040919091013590565b5f60208284031215612966575f5ffd5b612300826128cc565b5f5f5f5f5f5f5f60e0888a031215612985575f5ffd5b61298e886128cc565b965061299c602089016128cc565b95506040880135945060608801359350608088013560ff811681146129bf575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f604083850312156129ed575f5ffd5b6129f6836128cc565b9150612a04602084016128cc565b90509250929050565b600181811c90821680612a2157607f821691505b602082108103612a58577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f60208284031215612a6e575f5ffd5b81518015158114612300575f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b81810381811115610bdd57610bdd612a7d565b80820180821115610bdd57610bdd612a7d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f60208284031215612b0d575f5ffd5b815167ffffffffffffffff811115612b23575f5ffd5b8201601f81018413612b33575f5ffd5b805167ffffffffffffffff811115612b4d57612b4d612ad0565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715612bb957612bb9612ad0565b604052818152828201602001861015612bd0575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c1d57612c1d612a7d565b5060010190565b5f60208284031215612c34575f5ffd5b5051919050565b5f82518060208501845e5f920191825250919050565b5f5f83545f8160011c90506001821680612c6c57607f821691505b602082108103612ca3577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b808015612cb75760018114612cea57612d18565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450612d18565b5f888152602090205f5b84811015612d1057815489820152600190910190602001612cf4565b505082870194505b50929695505050505050565b8082028115828204841417610bdd57610bdd612a7d565b5f82612d6e577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea264697066735822122059106cbf2d7123c48402cc6b33b94eb0603e790e371a35a5fda68b7c68f2d04564736f6c634300081e0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000e7c5c484a61cc93a638f67906a9900d94b40fda70000000000000000000000003a0de7a4678ca9341a63ffe78041385eda65b12800000000000000000000000000d2dc03b8207b2d261bda5d149dd7fcf3bdf8d7000000000000000000000000456e0074853cd23a3cdea3a1bb85575ed9b1a71800000000000000000000000012c8091a719125bf08875635c3ed738510c5614100000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000002743414e4120486f6c64696e67732043616c69666f726e696120436172626f6e204372656469747300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000443414e4100000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : gem_ (address): 0xdAC17F958D2ee523a2206206994597C13D831ec7
Arg [1] : pip_ (address): 0xE7c5c484A61Cc93A638F67906a9900d94b40FDA7
Arg [2] : act_ (address): 0x3a0DE7A4678CA9341a63Ffe78041385EdA65B128
Arg [3] : adm_ (address): 0x00d2dc03B8207b2D261Bda5D149Dd7FcF3bdF8d7
Arg [4] : cop_ (address): 0x456e0074853cd23a3cDeA3A1Bb85575eD9b1a718
Arg [5] : flo_ (address): 0x12C8091a719125Bf08875635c3Ed738510C56141
Arg [6] : name_ (string): CANA Holdings California Carbon Credits
Arg [7] : symbol_ (string): CANA
-----Encoded View---------------
13 Constructor Arguments found :
Arg [0] : 000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7
Arg [1] : 000000000000000000000000e7c5c484a61cc93a638f67906a9900d94b40fda7
Arg [2] : 0000000000000000000000003a0de7a4678ca9341a63ffe78041385eda65b128
Arg [3] : 00000000000000000000000000d2dc03b8207b2d261bda5d149dd7fcf3bdf8d7
Arg [4] : 000000000000000000000000456e0074853cd23a3cdea3a1bb85575ed9b1a718
Arg [5] : 00000000000000000000000012c8091a719125bf08875635c3ed738510c56141
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000027
Arg [9] : 43414e4120486f6c64696e67732043616c69666f726e696120436172626f6e20
Arg [10] : 4372656469747300000000000000000000000000000000000000000000000000
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [12] : 43414e4100000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.
Add Token to MetaMask (Web3)