Overview
APE Balance
0 APE
APE Value
$0.00More Info
Private Name Tags
ContractCreator
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Escrow
Compiler Version
v0.8.24+commit.e11b9ed9
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; import "./ownable.sol"; import "./IOmnify.sol"; import "./ierc20metadata.sol"; import "./ierc20.sol"; contract Escrow is Ownable { event NewContract(string _id, address _owner, uint256 _blockNumber, uint256 _date); event ContractDeleted(string _id, address _owner, uint256 _blockNumber, uint256 _date); event BidAccepted(string _id, address _owner, uint256 _blockNumber, uint256 _date); event NewBid(string _id, address _owner, uint256 _blockNumber, uint256 _date); struct Bid { address bidder; address asset; uint256 amount; uint256 dateBid; bool isAccepted; bool isCancelled; bool exists; } struct EscrowContract { string id; address asset; uint256 assetAmount; bool isComplete; bool isDeleted; bool exists; uint256 bidCount; mapping(uint256 => Bid) bids; mapping(address => uint256) addressToBidCount; address owner; uint256 dateCreated; uint256 dateDeleted; } struct EscrowProfile { uint256 numOfCompleteContracts; uint256 numOfDeletedContracts; uint256 numOfBidsMade; uint256 numOfBidsReceived; uint256 contractCount; mapping(uint256 => string) profileContracts; } constructor(address _paramOmnifyAddress, uint8 _paramNativeDecimals, uint256 _paramContractFee) Ownable(msg.sender) { omnifyAddress = _paramOmnifyAddress; nativeCoinDecimals = _paramNativeDecimals; contractFee = _paramContractFee; } uint8 public nativeCoinDecimals; uint256 internal MAXUINT = 2 ** 256 - 1; uint256 public contractFee; uint256 public numberContracts; uint256 public amountAssetsInContracts; uint256 public numberBids; uint256 public amountAssetsInBids; uint256 public numberCompletedContracts; address public feeKeeperAddress; address public omnifyAddress; mapping(string => EscrowContract) public contracts; mapping(address => EscrowProfile) public escrowProfiles; function getMinAmount(uint8 _decimals) public pure returns (uint256) { if (_decimals == 0) { return 1; } if (_decimals == 1) { return 0.1 * (10 ** 1); } if (_decimals == 2) { return 0.01 * (10 ** 2); } if (_decimals >= 3) { uint8 powa = _decimals - 3; //0.001 return 1 * (10 ** powa); } return 1; } modifier onlyFeeKeeper(address _sender) { require(_sender == feeKeeperAddress); _; } function setOmnifyAddress(address _newaddress) external onlyOwner { omnifyAddress = _newaddress; } function setFeeKeeperAddress(address _feeKeeper) external onlyOwner { feeKeeperAddress = _feeKeeper; } function setContractFee(uint256 _fee) external onlyOwner { contractFee = _fee; } function setContractFeeByFeeKeeper(uint256 _fee) external onlyFeeKeeper(msg.sender) { contractFee = _fee; } function _addNumberContracts() internal { numberContracts++; } function _addAmountAssetsInContracts(uint256 _amount) internal { amountAssetsInContracts = safeAdd(amountAssetsInContracts, _amount); } function _addNumberBids() internal { numberBids++; } function _addAmountAssetsInBids(uint256 _amount) internal { amountAssetsInBids = safeAdd(amountAssetsInBids, _amount); } function _addCompletedContracts() internal { numberCompletedContracts++; } function lookupEscrowProfileContractCount(address _profile) public view returns (uint256) { return escrowProfiles[_profile].contractCount; } function lookupEscrowProfileCompleteContracts(address _profile) public view returns (uint256) { return escrowProfiles[_profile].numOfCompleteContracts; } function lookupEscrowProfileDeletedContracts(address _profile) public view returns (uint256) { return escrowProfiles[_profile].numOfDeletedContracts; } function lookupEscrowProfileBidsMade(address _profile) public view returns (uint256) { return escrowProfiles[_profile].numOfBidsMade; } function lookupEscrowProfileBidsReceived(address _profile) public view returns (uint256) { return escrowProfiles[_profile].numOfBidsReceived; } function lookupContractBids(string memory _id) public view returns (Bid[] memory) { uint256 contractBidCount = contracts[_id].bidCount; Bid[] memory bids = new Bid[](contractBidCount); if (contractBidCount > 0) { for (uint256 i = 0; i < contractBidCount; i++) { bids[i] = contracts[_id].bids[i + 1]; } } return bids; } function lookupEscrowProfileContracts(address _profile) public view returns (string[] memory) { uint256 profileContractCount = escrowProfiles[_profile].contractCount; string[] memory profileContracts = new string[](profileContractCount); if (profileContractCount > 0) { for (uint256 i = 0; i < profileContractCount; i++) { profileContracts[i] = escrowProfiles[_profile].profileContracts[i + 1]; } } return profileContracts; } function lookupContractAsset(string memory _id) public view returns (address) { return contracts[_id].asset; } function lookupContractAssetAmount(string memory _id) public view returns (uint256) { return contracts[_id].assetAmount; } function lookupContractIsComplete(string memory _id) public view returns (bool) { return contracts[_id].isComplete; } function lookupContractIsDeleted(string memory _id) public view returns (bool) { return contracts[_id].isDeleted; } function lookupContractExists(string memory _id) public view returns (bool) { return contracts[_id].exists; } function lookupCountractBidCount(string memory _id) public view returns (uint256) { return contracts[_id].bidCount; } function lookupContractOwner(string memory _id) public view returns (address) { return contracts[_id].owner; } function lookupContractDateCreated(string memory _id) public view returns (uint256) { return contracts[_id].dateCreated; } function lookupContractDateDeleted(string memory _id) public view returns (uint256) { return contracts[_id].dateDeleted; } function newContract(string memory _id, address _asset, uint256 _amount) external payable { require(!contracts[_id].exists); if (_asset == address(0)) { uint256 _minAmount = getMinAmount(nativeCoinDecimals); require(_amount >= _minAmount); uint256 totalAmount = _amount + contractFee; require(msg.value == totalAmount); escrowProfiles[msg.sender].contractCount++; uint256 profileCount = escrowProfiles[msg.sender].contractCount; escrowProfiles[msg.sender].profileContracts[profileCount] = _id; _addNumberContracts(); _addAmountAssetsInContracts(_amount); _addToContracts(_id, _asset, _amount); IOmnify mainContract = IOmnify(omnifyAddress); mainContract.addProfitsFromExternalContract{value: contractFee}(); emit NewContract(_id, msg.sender, block.number, block.timestamp); } else { require(msg.value == contractFee); MYIERC20Metadata coin = MYIERC20Metadata(_asset); uint8 _decimals = coin.decimals(); uint256 _minAmount = getMinAmount(_decimals); require(_amount >= _minAmount); bool success1 = coin.transferFrom(msg.sender, address(this), _amount); require(success1); escrowProfiles[msg.sender].contractCount++; uint256 profileCount = escrowProfiles[msg.sender].contractCount; escrowProfiles[msg.sender].profileContracts[profileCount] = _id; _addNumberContracts(); _addAmountAssetsInContracts(_amount); _addToContracts(_id, _asset, _amount); IOmnify mainContract = IOmnify(omnifyAddress); mainContract.addProfitsFromExternalContract{value: contractFee}(); emit NewContract(_id, msg.sender, block.number, block.timestamp); } } function newBid(string memory _contractId, address _asset, uint256 _amount) external payable { require(contracts[_contractId].exists); require(!contracts[_contractId].isDeleted); require(!contracts[_contractId].isComplete); require(contracts[_contractId].addressToBidCount[msg.sender] == 0); require(msg.sender != contracts[_contractId].owner); if (_asset == address(0)) { uint256 _minAmount = getMinAmount(nativeCoinDecimals); require(_amount >= _minAmount); require(msg.value >= _minAmount); require(msg.value == _amount); contracts[_contractId].bidCount++; address contractOwner = contracts[_contractId].owner; uint256 currentBidCount = contracts[_contractId].bidCount; contracts[_contractId].bids[currentBidCount].bidder = msg.sender; contracts[_contractId].bids[currentBidCount].amount = _amount; contracts[_contractId].bids[currentBidCount].asset = _asset; contracts[_contractId].bids[currentBidCount].dateBid = block.timestamp; contracts[_contractId].bids[currentBidCount].exists = true; contracts[_contractId].addressToBidCount[msg.sender] = currentBidCount; escrowProfiles[contractOwner].numOfBidsReceived++; escrowProfiles[msg.sender].numOfBidsMade++; escrowProfiles[msg.sender].contractCount++; escrowProfiles[msg.sender].profileContracts[escrowProfiles[msg.sender].contractCount] = _contractId; _addNumberBids(); _addAmountAssetsInBids(_amount); emit NewBid(_contractId, msg.sender, block.number, block.timestamp); } else { MYIERC20Metadata coin = MYIERC20Metadata(_asset); uint8 _decimals = coin.decimals(); uint256 _minAmount = getMinAmount(_decimals); require(_amount >= _minAmount); bool success1 = coin.transferFrom(msg.sender, address(this), _amount); require(success1); contracts[_contractId].bidCount++; address contractOwner = contracts[_contractId].owner; uint256 currentBidCount = contracts[_contractId].bidCount; contracts[_contractId].bids[currentBidCount].bidder = msg.sender; contracts[_contractId].bids[currentBidCount].amount = _amount; contracts[_contractId].bids[currentBidCount].asset = _asset; contracts[_contractId].bids[currentBidCount].dateBid = block.timestamp; contracts[_contractId].bids[currentBidCount].exists = true; contracts[_contractId].addressToBidCount[msg.sender] = currentBidCount; escrowProfiles[contractOwner].numOfBidsReceived++; escrowProfiles[msg.sender].numOfBidsMade++; escrowProfiles[msg.sender].contractCount++; escrowProfiles[msg.sender].profileContracts[escrowProfiles[msg.sender].contractCount] = _contractId; _addNumberBids(); _addAmountAssetsInBids(_amount); emit NewBid(_contractId, msg.sender, block.number, block.timestamp); } } function acceptBid(string memory _contractId, uint256 _acceptedBidCount) external { require(contracts[_contractId].exists); require(!contracts[_contractId].isDeleted); require(!contracts[_contractId].isComplete); require(!contracts[_contractId].bids[_acceptedBidCount].isAccepted); require(!contracts[_contractId].bids[_acceptedBidCount].isCancelled); require(contracts[_contractId].bids[_acceptedBidCount].exists); require(msg.sender == contracts[_contractId].owner); Bid memory theBid = contracts[_contractId].bids[_acceptedBidCount]; address contractAsset = contracts[_contractId].asset; address bidAsset = theBid.asset; address payable owner = payable(contracts[_contractId].owner); address payable bidder = payable(theBid.bidder); contracts[_contractId].isComplete = true; contracts[_contractId].bids[_acceptedBidCount].isAccepted = true; escrowProfiles[contracts[_contractId].owner].numOfCompleteContracts++; _addCompletedContracts(); if (bidAsset == address(0)) { (bool success,) = owner.call{value: theBid.amount}(""); require(success); } else { MYIERC20 bidCoin = MYIERC20(bidAsset); bool success = bidCoin.transfer(contracts[_contractId].owner, theBid.amount); require(success); } if (contractAsset == address(0)) { (bool success,) = bidder.call{value: contracts[_contractId].assetAmount}(""); require(success); } else { MYIERC20 contractCoin = MYIERC20(contractAsset); bool success = contractCoin.transfer(theBid.bidder, contracts[_contractId].assetAmount); require(success); } emit BidAccepted(_contractId, msg.sender, block.number, block.timestamp); } function cancelBid(string memory _contractId, uint256 _bidCount) external { require(contracts[_contractId].exists); require(!contracts[_contractId].bids[_bidCount].isCancelled); require(!contracts[_contractId].bids[_bidCount].isAccepted); require(msg.sender == contracts[_contractId].bids[_bidCount].bidder); require(contracts[_contractId].bids[_bidCount].exists); address bidAsset = contracts[_contractId].bids[_bidCount].asset; address bidder = contracts[_contractId].bids[_bidCount].bidder; uint256 bidAmount = contracts[_contractId].bids[_bidCount].amount; contracts[_contractId].bids[_bidCount].isCancelled = true; address payable payBidder = payable(bidder); if (bidAsset == address(0)) { (bool success,) = payBidder.call{value: bidAmount}(""); require(success); } else { MYIERC20 bidCoin = MYIERC20(bidAsset); bool success = bidCoin.transfer(bidder, bidAmount); require(success); } } function deleteContract(string memory _contractId) external { require(contracts[_contractId].exists); require(!contracts[_contractId].isDeleted); require(!contracts[_contractId].isComplete); require(msg.sender == contracts[_contractId].owner); address payable owner = payable(contracts[_contractId].owner); address contractAsset = contracts[_contractId].asset; contracts[_contractId].isDeleted = true; contracts[_contractId].dateDeleted = block.timestamp; escrowProfiles[msg.sender].numOfDeletedContracts++; if (contractAsset == address(0)) { (bool success,) = owner.call{value: contracts[_contractId].assetAmount}(""); require(success); } else { MYIERC20 contractCoin = MYIERC20(contractAsset); bool success = contractCoin.transfer(contracts[_contractId].owner, contracts[_contractId].assetAmount); require(success); } emit ContractDeleted(_contractId, msg.sender, block.number, block.timestamp); } function _addToContracts(string memory _id, address _asset, uint256 _amount) private { contracts[_id].id = _id; contracts[_id].asset = _asset; contracts[_id].assetAmount = _amount; contracts[_id].dateCreated = block.timestamp; contracts[_id].owner = msg.sender; contracts[_id].exists = true; } function safeAdd(uint256 _currentAmount, uint256 _amountToBeAdded) internal view returns (uint256) { uint256 _allowedAmount = MAXUINT - _currentAmount; if (_amountToBeAdded <= _allowedAmount) { return _currentAmount + _amountToBeAdded; } return _currentAmount; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; abstract contract MyContext { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * The initial owner is set to the address provided by the deployer. This can * later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is MyContext { address private _owner; /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the address provided by the deployer as the initial owner. */ constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; interface IOmnify { function addProfitsFromExternalContract() external payable; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; import "./ierc20.sol"; interface MYIERC20Metadata is MYIERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; /** * @dev Interface of the ERC-20 standard as defined in the ERC. */ interface MYIERC20 { /** * @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); /** * @dev Returns the value of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the value of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves a `value` amount of tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 value) 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 a `value` amount of tokens 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 value) external returns (bool); /** * @dev Moves a `value` amount of tokens from `from` to `to` using the * allowance mechanism. `value` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 value) external returns (bool); }
{ "remappings": [ "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", "@layerzerolabs/lz-evm-oapp-v2/contracts/=lib/LayerZero-v2/packages/layerzero-v2/evm/oapp/contracts/", "@layerzerolabs/lz-evm-protocol-v2/=lib/LayerZero-v2/packages/layerzero-v2/evm/protocol/", "@layerzerolabs/lz-evm-messagelib-v2/=lib/LayerZero-v2/packages/layerzero-v2/evm/messagelib/", "solidity-bytes-utils/contracts/=lib/solidity-bytes-utils/contracts/", "LayerZero-v2/=lib/LayerZero-v2/", "ds-test/=lib/solidity-stringutils/lib/ds-test/src/", "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", "forge-std/=lib/forge-std/src/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "solidity-stringutils/=lib/solidity-stringutils/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "paris", "viaIR": true, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_paramOmnifyAddress","type":"address"},{"internalType":"uint8","name":"_paramNativeDecimals","type":"uint8"},{"internalType":"uint256","name":"_paramContractFee","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_id","type":"string"},{"indexed":false,"internalType":"address","name":"_owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"_blockNumber","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_date","type":"uint256"}],"name":"BidAccepted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_id","type":"string"},{"indexed":false,"internalType":"address","name":"_owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"_blockNumber","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_date","type":"uint256"}],"name":"ContractDeleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_id","type":"string"},{"indexed":false,"internalType":"address","name":"_owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"_blockNumber","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_date","type":"uint256"}],"name":"NewBid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_id","type":"string"},{"indexed":false,"internalType":"address","name":"_owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"_blockNumber","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_date","type":"uint256"}],"name":"NewContract","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"string","name":"_contractId","type":"string"},{"internalType":"uint256","name":"_acceptedBidCount","type":"uint256"}],"name":"acceptBid","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"amountAssetsInBids","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"amountAssetsInContracts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_contractId","type":"string"},{"internalType":"uint256","name":"_bidCount","type":"uint256"}],"name":"cancelBid","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"contracts","outputs":[{"internalType":"string","name":"id","type":"string"},{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"assetAmount","type":"uint256"},{"internalType":"bool","name":"isComplete","type":"bool"},{"internalType":"bool","name":"isDeleted","type":"bool"},{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"uint256","name":"bidCount","type":"uint256"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"dateCreated","type":"uint256"},{"internalType":"uint256","name":"dateDeleted","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_contractId","type":"string"}],"name":"deleteContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"escrowProfiles","outputs":[{"internalType":"uint256","name":"numOfCompleteContracts","type":"uint256"},{"internalType":"uint256","name":"numOfDeletedContracts","type":"uint256"},{"internalType":"uint256","name":"numOfBidsMade","type":"uint256"},{"internalType":"uint256","name":"numOfBidsReceived","type":"uint256"},{"internalType":"uint256","name":"contractCount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeKeeperAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_decimals","type":"uint8"}],"name":"getMinAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"_id","type":"string"}],"name":"lookupContractAsset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_id","type":"string"}],"name":"lookupContractAssetAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_id","type":"string"}],"name":"lookupContractBids","outputs":[{"components":[{"internalType":"address","name":"bidder","type":"address"},{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"dateBid","type":"uint256"},{"internalType":"bool","name":"isAccepted","type":"bool"},{"internalType":"bool","name":"isCancelled","type":"bool"},{"internalType":"bool","name":"exists","type":"bool"}],"internalType":"struct Escrow.Bid[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_id","type":"string"}],"name":"lookupContractDateCreated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_id","type":"string"}],"name":"lookupContractDateDeleted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_id","type":"string"}],"name":"lookupContractExists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_id","type":"string"}],"name":"lookupContractIsComplete","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_id","type":"string"}],"name":"lookupContractIsDeleted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_id","type":"string"}],"name":"lookupContractOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_id","type":"string"}],"name":"lookupCountractBidCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_profile","type":"address"}],"name":"lookupEscrowProfileBidsMade","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_profile","type":"address"}],"name":"lookupEscrowProfileBidsReceived","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_profile","type":"address"}],"name":"lookupEscrowProfileCompleteContracts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_profile","type":"address"}],"name":"lookupEscrowProfileContractCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_profile","type":"address"}],"name":"lookupEscrowProfileContracts","outputs":[{"internalType":"string[]","name":"","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_profile","type":"address"}],"name":"lookupEscrowProfileDeletedContracts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nativeCoinDecimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_contractId","type":"string"},{"internalType":"address","name":"_asset","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"newBid","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string","name":"_id","type":"string"},{"internalType":"address","name":"_asset","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"newContract","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"numberBids","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numberCompletedContracts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numberContracts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"omnifyAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setContractFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setContractFeeByFeeKeeper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeKeeper","type":"address"}],"name":"setFeeKeeperAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newaddress","type":"address"}],"name":"setOmnifyAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080346200011057601f62002c6038819003918201601f19168301916001600160401b038311848410176200011557808492606094604052833981010312620001105780516001600160a01b03919082811690819003620001105760208201519160ff83168303620001105760400151913315620000f7576000549160405194339084167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600019600155600980546001600160a01b0319169190911790556001600160a81b03199091163360ff60a01b19161760a09190911b60ff60a01b1617600055600255612b3490816200012c8239f35b604051631e4fbdf760e01b815260006004820152602490fd5b600080fd5b634e487b7160e01b600052604160045260246000fdfe60406080815260048036101561001457600080fd5b60009160e0833560e01c908163083338a914612273575080630dcdfeb61461221e57806317b6dd42146121f55780631906f343146121c35780631a86c3e81461207d5780632cc921b8146120155780632f05ddc614611fc05780633dcb57ac14611f865780633fd32a6b14611a1e5780634375bba8146119e65780634420b0d8146119ae5780634aa67d311461198c57806350b602221461196d57806352e596fa146119425780635877707f1461190857806358cebf96146118bb5780635a386f871461189d578063604240c6146118395780636318ac6414611816578063715018a6146117bc5780638c5b8385146116cf5780638da5cb5b146116a757806396d2f478146111cb578063989c3a4f146111a05780639a38aa5a146111785780639d9fb7a21461114c578063be888b7c14610e51578063c342cac314610e1157838163cac66d2514610b9c57508063d2312fe114610b60578063d2708abd14610af9578063d41977cd14610ada578063d8fe213c14610abb578063da79fd2d14610a9c578063de2231da14610a73578063eac4cf3814610334578063f2fde38b146102a8578063f4ed4c8414610265578063f674d38f146102425763fc65f060146101de57600080fd5b3461023e57602036600319011261023e5760a09281906001600160a01b0361020461257b565b168152600b602052208054926001820154926002830154916003840154930154938151958652602086015284015260608301526080820152f35b8280fd5b8382346102615781600319360112610261576020906007549051908152f35b5080fd5b83346102a55760203660031901126102a55761027f61257b565b610287612a8d565b60018060a01b03166001600160601b0360a01b600854161760085580f35b80fd5b50903461023e57602036600319011261023e576102c361257b565b906102cc612a8d565b6001600160a01b0391821692831561031e575050600054826001600160601b0360a01b821617600055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a380f35b51631e4fbdf760e01b8152908101849052602490fd5b509190610340366125d9565b9192855184519260209360ff60038689019261035d818786612591565b8501948781600a9788815203019020015460101c1615610a6f5760ff60038a5187818b5161038c818389612591565b810188815203019020015460081c16610a6f5760ff60038a5187818b516103b4818389612591565b810188815203019020015416610a6f576006895186818a516103d7818388612591565b810187815203019020013360005285528860002054610a6f578851928751610400818685612591565b84018181528490038601909320600701546001600160a01b039390841633146107d3578284166107db5761043a60ff8a5460a01c16612792565b8088106107d75734106107d3578634036107d3576105e18688936006938b8e8a8f82908282518981806104718c8b51928391612591565b81018a81520301902001610485815461280e565b90558c600783518a818061049d8d8c51928391612591565b81018b8152030190200154169b8383518a81806104be8d8c51928391612591565b81018b81520301902001549b60056104e18b8b8751809381928d51928391612591565b8c81830152810103019020018d84528a52838320906001600160601b0360a01b9133838254161790558d60056105248d8d8d8d8b51948593849251928391612591565b820190815203019020019085528b526002858520015560056105518b8b8751809381928d51928391612591565b81018c815203019020018d84528a5260019e8f85852001921690825416179055600582518981806105868c8b51928391612591565b81018a815203019020018b825288524260038383200155600582518981806105b28c8b51928391612591565b81018a815203019020018b8252885220016201000062ff00001982541617905551948593849251928391612591565b8201908152030190200133600052855288600020558652600b835260038787200161060c815461280e565b9055338652600b8352600287872001610625815461280e565b9055338652600b8352818787200161063d815461280e565b9055338652600b83526005878720838101548852018352868620928551926001600160401b0384116107c05750610674845461261e565b601f811161077a575b5080601f84116001146106fc57509282806106d8946106eb9897948a9b97600080516020612adf8339815191529b936106f1575b501b916000199060031b1c19161790555b6106cd60055461280e565b600555600654612ab9565b600655519182914290439033908561281d565b0390a180f35b8901519250386106b1565b90601f9392931983168589528289209289905b82821061076357505092600080516020612adf833981519152989995926106d89592826106eb9a99961061074a575b5050811b0190556106c2565b88015160001960f88460031b161c19169055388061073e565b808785968294968d0151815501950193019061070f565b848852818820601f850160051c8101918386106107b6575b601f0160051c019083905b8281106107ab57505061067d565b89815501839061079d565b9091508190610792565b634e487b7160e01b885260419052602487fd5b8880fd5b8980fd5b895163313ce56760e01b8152868187818789165afa908115610a385790610809918b91610a42575b50612792565b87106107d35789516323b872dd60e01b8152338682019081523060208201526040810189905287908290819060600103818d8989165af1908115610a38578a91610a0b575b50156107d3576108778688936006938b8e8a8f82908282518981806104718c8b51928391612591565b8201908152030190200133600052855288600020558652600b83526003878720016108a2815461280e565b9055338652600b83526002878720016108bb815461280e565b9055338652600b835281878720016108d3815461280e565b9055338652600b83526005878720838101548852018352868620928551926001600160401b0384116107c0575061090a845461261e565b601f81116109c5575b5080601f841160011461096157509282806106d8946106eb9897948a9b97600080516020612adf8339815191529b936106f157501b916000199060031b1c19161790556106cd60055461280e565b90601f9392931983168589528289209289905b8282106109ae57505092600080516020612adf833981519152989995926106d89592826106eb9a99961061074a575050811b0190556106c2565b808785968294968d01518155019501930190610974565b848852818820601f850160051c810191838610610a01575b601f0160051c019083905b8281106109f6575050610913565b8981550183906109e8565b90915081906109dd565b610a2b9150873d8911610a31575b610a2381836124f3565b8101906127f6565b3861084e565b503d610a19565b8b513d8c823e3d90fd5b610a629150883d8a11610a68575b610a5a81836124f3565b8101906127dd565b38610803565b503d610a50565b8780fd5b83823461026157816003193601126102615760085490516001600160a01b039091168152602090f35b8382346102615781600319360112610261576020906005549051908152f35b8382346102615781600319360112610261576020906003549051908152f35b8382346102615781600319360112610261576020906002549051908152f35b5082346102a55760203660031901126102a5578235906001600160401b0382116102a55750602092610b2d9136910161252f565b600183610b4284519384815193849201612591565b820191600a83528481838060a01b0394030190200154169051908152f35b8382346102615760203660031901126102615760209160019082906001600160a01b03610b8b61257b565b168152600b85522001549051908152f35b8281853461026157610bad366126fd565b84929192519183519060209260ff600385880194610bcc818988612591565b8701968681600a998a815203019020015460101c1615610e0d5787518651610bf5818387612591565b8101868152818660059384930301902001828952855260ff838a8a20015460081c16610a6f5780895186818a51610c2d81838b612591565b81018a81520301902001828952855260ff838a8a20015416610a6f5780895186818a51610c5b81838b612591565b81018a815203019020838a52018552888820546001600160a01b039690871633036107d357818a5187818b51610c9281838c612591565b81018581520301902001838a52865260ff848b8b20015460101c16156107d357858582848b848f9c8f9b818f91828f8e89610ce0610d519f6001968b918d8851948593849251928391612591565b820190815203019020019082528752200154169c858251858180610d088d8b51928391612591565b81018b815203019020018c825284522054169c51809251610d2a818389612591565b81018581520301902001868d52835260028d8d2001549a8d51948593849251928391612591565b8201908152030190209188520183528686208101805461ff00191661010017905581610d9457505050829350829182915af1610d8b61284f565b50156102a55780f35b865163a9059cbb60e01b81526001600160a01b039490941690840190815260208101949094529193909283928592918390036040019183915af1928315610e0457508392610de7575b5050156102a55780f35b610dfd9250803d10610a3157610a2381836124f3565b8280610ddd565b513d85823e3d90fd5b8680fd5b83346102a55760203660031901126102a557610e2b61257b565b610e33612a8d565b60018060a01b03166001600160601b0360a01b600954161760095580f35b503461023e57602080600319360112611148578383356001600160401b03811161026157610e82903690860161252f565b93835185519060ff600386890193610e9b818587612591565b8301928781600a9586815203019020015460101c16156111485760ff6003875187818b51610eca81838a612591565b810186815203019020015460081c166111485760ff6003875187818b51610ef281838a612591565b810186815203019020015416611148578551928751610f12818686612591565b84018281528490038601909320600701546001600160a01b0393908416330361114457836007885188818c51610f4981838b612591565b81018781520301902001541693806001895189818d51610f6a81838c612591565b810188815203019020015416906003895189818d51610f8a81838c612591565b8101888152030190200161010061ff0019825416179055885160098b51610fb281848a612591565b8201918683528a814294030190200155338752600b8852600189882001610fd9815461280e565b90558989836110595760029450611006935088999250948897959188979251948593849251928391612591565b8201908152030190200154905af161101c61284f565b501561023e577f3041c6c52e527e55cbabbff2be5bf46a6ac5be181034f94c869b18799295f7c9916106eb915b519182914290439033908561281d565b8997506110d99893959496600293600761109d948b80955180925161107f818389612591565b81018b815203019020015416958d8d51948593849251928391612591565b8201908152030190200154885163a9059cbb60e01b81526001600160a01b03909316948301948552602085015290948593849291839160400190565b03925af191821561113a57859261111d575b50501561023e577f3041c6c52e527e55cbabbff2be5bf46a6ac5be181034f94c869b18799295f7c9916106eb91611049565b6111339250803d10610a3157610a2381836124f3565b38806110eb565b83513d87823e3d90fd5b8480fd5b8380fd5b505034610261576020366003190112610261576008546001600160a01b03163303610261573560025580f35b50903461023e57602036600319011261023e5760209282906001600160a01b03610b8b61257b565b8382346102615760203660031901126102615760209160039082906001600160a01b03610b8b61257b565b503461023e57826111db366126fd565b9093835190855190602092838801926111f5818386612591565b8101600a81526003828660ff94859403019020015460101c16156116a357806003885186818c5161122781838b612591565b8101600a815203019020015460081c166116a357806003885186818c5161124f81838b612591565b8101600a8152030190200154166116a3576005875185818b5161127381838a612591565b8101600a81520301902001858752845280828888200154166116a3576005875185818b516112a281838a612591565b8101600a8152030190200185875284528082888820015460081c166116a3576005875185818b516112d481838a612591565b8101600a8152030190200185875284528082888820015460101c16156116a35786518851611303818387612591565b600a90820190815281900385019020600701546001600160a01b039081163303610e0d576005885186818c5161133a81838b612591565b8101600a8152030190200186885285528787209188519061135a826124af565b82845416825284836001860154169488840195865260028101548c85015260038101546060850152015481811615156080840152818160081c16151560a084015260101c16151560c0820152878a878b858060016113c3858d8651809381928b51928391612591565b8101600a815203019020015416975116868a816007855187818a516113e9818389612591565b8101600a81520301902001541695828951169e600386518881855161140f81838a612591565b8101600a815203019020019060ff1991600183825416179055600587518981865161143b81838b612591565b8101600a81520301902001908a52875260018d878b20019182541617905582600786518881855161146d81838a612591565b8101600a8152030190200154168852600b865284882061148d815461280e565b905561149a60075461280e565b600755836115fd575050505083928392508291860151905af16114bb61284f565b5015610a6f575b826115375750505050839260026114e6859485948951809381928d51928391612591565b8101600a8152030190200154905af16114fd61284f565b501561023e57517ea9d0aed6173587cb14d2fef4aee8b03597cc9c85b778e40941f1c15daa966c9181906106eb904290439033908561281d565b61159d965061155e86809993600293979596975116948c8c51938492839251928391612591565b600a908201908152030190200154885163a9059cbb60e01b81526001600160a01b03909316948301948552602085015290948593849291839160400190565b03925af191821561113a5785926115e0575b50501561023e577ea9d0aed6173587cb14d2fef4aee8b03597cc9c85b778e40941f1c15daa966c916106eb91611049565b6115f69250803d10610a3157610a2381836124f3565b38806115af565b611661975085965094611620918596600794959651938492839251928391612591565b8101600a8152030190200154168c83870151935180968195829463a9059cbb60e01b84528d840160209093929193604081019460018060a01b031681520152565b03925af190811561169957899161167c575b506114c2578780fd5b6116939150873d8911610a3157610a2381836124f3565b38611673565b8a513d8b823e3d90fd5b8580fd5b838234610261578160031936011261026157905490516001600160a01b039091168152602090f35b50903461023e57602036600319011261023e578035926001600160401b0384116102a5575061171b6020611709611777953690850161252f565b81855193828580945193849201612591565b8101600a8152030190209161172f83612658565b9260018060a01b0392836001830154169360ff6002840154926003850154908501549260078601541693600960088701549601549680519a8b9a610140808d528c01906125b4565b9860208b015289015281811615156060890152818160081c161515608089015260101c16151560a087015260c086015260e08501526101008401526101208301520390f35b83346102a557806003193601126102a5576117d5612a8d565b600080546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b83823461026157816003193601126102615760ff6020925460a01c169051908152f35b5082346102a55760203660031901126102a5578235906001600160401b0382116102a5575060036118876020611875819660ff9536910161252f565b81865193828580945193849201612591565b8101600a81520301902001541690519015158152f35b50903461023e578260031936011261023e5760209250549051908152f35b5082346102a55760203660031901126102a5578235906001600160401b0382116102a557506118f56020611709819560089436910161252f565b8101600a81520301902001549051908152f35b5082346102a55760203660031901126102a5578235906001600160401b0382116102a557506118f56020611709819560099436910161252f565b8382346102615760203660031901126102615760209160029082906001600160a01b03610b8b61257b565b8382346102615781600319360112610261576020906006549051908152f35b505034610261576020366003190112610261576119a7612a8d565b3560025580f35b8382346102615760203660031901126102615760209181906001600160a01b036119d661257b565b168152600b845220549051908152f35b50903461023e57602036600319011261023e578035926001600160401b0384116102a557506118f5602061170981953690850161252f565b509190611a2a366125d9565b9094919282519584519260ff602094611a46818b888b01612591565b8901600a8152898660039b8c9303019020015460101c16610e0d576001600160a01b039180831680611c9a5750611a8360ff895460a01c16612792565b8210610a6f57611a9560025483612745565b3403610a6f57338852600b85528386892001611ab1815461280e565b9055338852600b85526005868920858101548a52018552858820988751996001600160401b038b11611c8757611ae7815461261e565b9a601f8c11611c44575b8a809c509798999a5088601f8211600114611bd75750808899611b4897989991611bcc575b508160011b9160001990851b1c19161790555b611b33815461280e565b9055611b40828654612ab9565b85558761287f565b600954169060025491803b1561114857839185518094819363162c2c8560e01b83525af18015611bc257611bae575b5050517fb8666097276fb34a235fcd33c2093c66bc80c5523e7612a04dd02616f79636ee9181906106eb904290439033908561281d565b611bb7906124e0565b61023e578238611b77565b83513d84823e3d90fd5b90508b015138611b16565b601f198216838a528c828b20928b915b838310611c285750505090611b489798999a836001949310611c10575b5050811b019055611b29565b8d015160001983871b60f8161c191690553880611c04565b8d015184559b8c019b8f9b50600190930192908101908e611be7565b818b52878b20601f820160051c81019c898310611c7d575b601f0160051c019b5b8c8110611c725750611af1565b8b8155600101611c65565b909c508c90611c5c565b634e487b7160e01b8a526041865260248afd5b60029991929394969798995434036107d757875163313ce56760e01b815286818981855afa908115611f7c5790611cd7918c91610a425750612792565b84106107d75787516323b872dd60e01b815233818901908152306020820152604081018690529091879183919082908e90829060600103925af1908115611f72578a91611f55575b50156107d357338952600b855285878a2001611d3b815461280e565b9055338952600b85526005878a20878101548b520185528689208851956001600160401b038711611f4257908a9594939291611d77825461261e565b601f8111611eed575b5080601f8911600114611e7f575096808798611dcf979891611e74575b508160011b9160001990851b1c19161790555b611dba815461280e565b9055611dc7828754612ab9565b86558761287f565b6009541660025492813b1561023e5784518094819363162c2c8560e01b83525af18015611e6a57611e31575b50517fb8666097276fb34a235fcd33c2093c66bc80c5523e7612a04dd02616f79636ee9181906106eb904290439033908561281d565b916106eb9193611e617fb8666097276fb34a235fcd33c2093c66bc80c5523e7612a04dd02616f79636ee946124e0565b93915091611dfb565b82513d86823e3d90fd5b90508b015138611d9d565b9790601f1982168389528c8a8a209a8a915b838310611ed157505050988291600193611dcf999a9b10611eb9575b5050811b019055611db0565b8d015160001983871b60f8161c191690553880611ead565b8401518c556001909b019a8f9a5092830192908101908e611e91565b909180939495969752818c20601f890160051c810191838a10611f38575b90601f8e99989796959493920160051c01905b818110611f2b5750611d80565b9788558c97600101611f1e565b9091508190611f0b565b634e487b7160e01b8b526041885260248bfd5b611f6c9150863d8811610a3157610a2381836124f3565b38611d1f565b88513d8c823e3d90fd5b89513d8d823e3d90fd5b5082346102a55760203660031901126102a5578235906001600160401b0382116102a557506118f56020611709819560029436910161252f565b5082346102a55760203660031901126102a5578235906001600160401b0382116102a557506003611ffc6020611875819660ff9536910161252f565b8101600a815203019020015460101c1690519015158152f35b5082346102a55760203660031901126102a5578235906001600160401b0382116102a557506020926120499136910161252f565b60078361205e84519384815193849201612591565b820191600a8352848160018060a01b0394030190200154169051908152f35b5091903461026157602091826003193601126102a5576001600160a01b036120a361257b565b1691828252600b808552818684200154906120bd8261272e565b946120ca885196876124f3565b8286526120d68361272e565b601f190187865b8281106121b3575050508261214a575b5050505083519280840190808552835180925280868601968360051b870101940192955b82871061211e5785850386f35b90919293828061213a600193603f198a820301865288516125b4565b9601920196019592919092612111565b845b83811061215957506120ed565b818652828852600589872001600182018083116121a0579060019291885289526121848a8820612658565b61218e828a612768565b526121998189612768565b500161214c565b634e487b7160e01b885260118752602488fd5b606082828b0101520188906120dd565b50903461023e57602036600319011261023e57359160ff831683036102a557506121ee602092612792565b9051908152f35b83823461026157816003193601126102615760095490516001600160a01b039091168152602090f35b5082346102a55760203660031901126102a5578235906001600160401b0382116102a55750600361225a6020611875819660ff9536910161252f565b8101600a815203019020015460081c1690519015158152f35b92939050346102a557602090816003193601126102a55784356001600160401b038111610261576122a7903690870161252f565b948351865182858901916122bc818585612591565b8301928681600a95600a8152030190200154916122d88361272e565b986122e588519a8b6124f3565b838a526122f18461272e565b601f190187875b8a8d8483106124715750505050508361239d575b50505050509391929083519381850192828652845180945282828701950196915b84831061233a5786860387f35b875180516001600160a01b03908116885281860151168786015280820151878301526060808201519088015260808082015115159088015260a08082015115159088015260c090810151151590870152968301969481019460019092019161232d565b855b8481106123ac575061230c565b60058951898185516123bf81838b612591565b8101878152030190200160019081830180841161245e57838e8a8d8f808f60019a999861244c988252845220918151976123f8896124af565b8a8060a01b0390818554168a52840154169088015260028201549087015260038101546060870152015460ff9081811615156080870152818160081c16151560a087015260101c16151560c0850152612768565b52612457818d612768565b500161239f565b634e487b7160e01b8a526011895260248afd5b8284918c845194612481866124af565b81865281858701528501528c60608501528c60808501528c60a08501528c60c08501520101520188906122f8565b60e081019081106001600160401b038211176124ca57604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116124ca57604052565b90601f801991011681019081106001600160401b038211176124ca57604052565b6001600160401b0381116124ca57601f01601f191660200190565b81601f820112156125765780359061254682612514565b9261255460405194856124f3565b8284526020838301011161257657816000926020809301838601378301015290565b600080fd5b600435906001600160a01b038216820361257657565b60005b8381106125a45750506000910152565b8181015183820152602001612594565b906020916125cd81518092818552858086019101612591565b601f01601f1916010190565b606060031982011261257657600435906001600160401b038211612576576126039160040161252f565b906024356001600160a01b0381168103612576579060443590565b90600182811c9216801561264e575b602083101461263857565b634e487b7160e01b600052602260045260246000fd5b91607f169161262d565b9060405191826000825461266b8161261e565b908184526020946001916001811690816000146126db575060011461269c575b50505061269a925003836124f3565b565b600090815285812095935091905b8183106126c357505061269a935082010138808061268b565b855488840185015294850194879450918301916126aa565b9250505061269a94925060ff191682840152151560051b82010138808061268b565b604060031982011261257657600435906001600160401b038211612576576127279160040161252f565b9060243590565b6001600160401b0381116124ca5760051b60200190565b9190820180921161275257565b634e487b7160e01b600052601160045260246000fd5b805182101561277c5760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b60ff1680156127d757600181146127d757600281146127d75760038110156127ba5750600190565b6002190160ff81116127525760ff16604d811161275257600a0a90565b50600190565b90816020910312612576575160ff811681036125765790565b90816020910312612576575180151581036125765790565b60001981146127525760010190565b90926128366060939695946080845260808401906125b4565b6001600160a01b03909616602083015260408201520152565b3d1561287a573d9061286082612514565b9161286e60405193846124f3565b82523d6000602084013e565b606090565b6040908151918151936020958684019561289a818789612591565b8501948781600a978881520301902084516001600160401b0381116124ca576128c3825461261e565b601f8111612a45575b5088601f82116001146129d657918160039a989694926129b09a9896946000916129cb575b508160011b91600019908d1b1c19161790555b600183518881875161291781838d612591565b810189815203019020016001600160601b0360a01b9260018060a01b031683825416179055600283518881875161294f81838d612591565b810189815203019020015581516008845161296b81848a612591565b82019186835288814294030190200155600782518781865161298e81838c612591565b8101888152030190200190339082541617905551948593849251928391612591565b82019081520301902001805462ff0000191662010000179055565b9050860151386128f1565b601f19821690836000528a6000209160005b818110612a2e5750926129b09a989694926001928260039e9c9a989610612a16575b5050811b019055612904565b880151600019838f1b60f8161c191690553880612a0a565b91928c60018192868d0151815501940192016129e8565b6000836000528a600020601f840160051c8101928c8510612a83575b601f0160051c01915b828110612a785750506128cc565b818155600101612a6a565b9092508290612a61565b6000546001600160a01b03163303612aa157565b60405163118cdaa760e01b8152336004820152602490fd5b9060015482810390811161275257811115612ad2575090565b612adb91612745565b9056fe318d025aa0a5536b9e83dce244e41fb22176aa94426ced6f6142d249dd323531a2646970667358221220af11b7a94158f85833b7200c7b93daa948ab3eba631f7e3f6d5458ddf99b2a6064736f6c63430008180033000000000000000000000000883ba282d409e0e984bef70b338f641d0045942f0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000305d3509223c8000
Deployed Bytecode
0x60406080815260048036101561001457600080fd5b60009160e0833560e01c908163083338a914612273575080630dcdfeb61461221e57806317b6dd42146121f55780631906f343146121c35780631a86c3e81461207d5780632cc921b8146120155780632f05ddc614611fc05780633dcb57ac14611f865780633fd32a6b14611a1e5780634375bba8146119e65780634420b0d8146119ae5780634aa67d311461198c57806350b602221461196d57806352e596fa146119425780635877707f1461190857806358cebf96146118bb5780635a386f871461189d578063604240c6146118395780636318ac6414611816578063715018a6146117bc5780638c5b8385146116cf5780638da5cb5b146116a757806396d2f478146111cb578063989c3a4f146111a05780639a38aa5a146111785780639d9fb7a21461114c578063be888b7c14610e51578063c342cac314610e1157838163cac66d2514610b9c57508063d2312fe114610b60578063d2708abd14610af9578063d41977cd14610ada578063d8fe213c14610abb578063da79fd2d14610a9c578063de2231da14610a73578063eac4cf3814610334578063f2fde38b146102a8578063f4ed4c8414610265578063f674d38f146102425763fc65f060146101de57600080fd5b3461023e57602036600319011261023e5760a09281906001600160a01b0361020461257b565b168152600b602052208054926001820154926002830154916003840154930154938151958652602086015284015260608301526080820152f35b8280fd5b8382346102615781600319360112610261576020906007549051908152f35b5080fd5b83346102a55760203660031901126102a55761027f61257b565b610287612a8d565b60018060a01b03166001600160601b0360a01b600854161760085580f35b80fd5b50903461023e57602036600319011261023e576102c361257b565b906102cc612a8d565b6001600160a01b0391821692831561031e575050600054826001600160601b0360a01b821617600055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a380f35b51631e4fbdf760e01b8152908101849052602490fd5b509190610340366125d9565b9192855184519260209360ff60038689019261035d818786612591565b8501948781600a9788815203019020015460101c1615610a6f5760ff60038a5187818b5161038c818389612591565b810188815203019020015460081c16610a6f5760ff60038a5187818b516103b4818389612591565b810188815203019020015416610a6f576006895186818a516103d7818388612591565b810187815203019020013360005285528860002054610a6f578851928751610400818685612591565b84018181528490038601909320600701546001600160a01b039390841633146107d3578284166107db5761043a60ff8a5460a01c16612792565b8088106107d75734106107d3578634036107d3576105e18688936006938b8e8a8f82908282518981806104718c8b51928391612591565b81018a81520301902001610485815461280e565b90558c600783518a818061049d8d8c51928391612591565b81018b8152030190200154169b8383518a81806104be8d8c51928391612591565b81018b81520301902001549b60056104e18b8b8751809381928d51928391612591565b8c81830152810103019020018d84528a52838320906001600160601b0360a01b9133838254161790558d60056105248d8d8d8d8b51948593849251928391612591565b820190815203019020019085528b526002858520015560056105518b8b8751809381928d51928391612591565b81018c815203019020018d84528a5260019e8f85852001921690825416179055600582518981806105868c8b51928391612591565b81018a815203019020018b825288524260038383200155600582518981806105b28c8b51928391612591565b81018a815203019020018b8252885220016201000062ff00001982541617905551948593849251928391612591565b8201908152030190200133600052855288600020558652600b835260038787200161060c815461280e565b9055338652600b8352600287872001610625815461280e565b9055338652600b8352818787200161063d815461280e565b9055338652600b83526005878720838101548852018352868620928551926001600160401b0384116107c05750610674845461261e565b601f811161077a575b5080601f84116001146106fc57509282806106d8946106eb9897948a9b97600080516020612adf8339815191529b936106f1575b501b916000199060031b1c19161790555b6106cd60055461280e565b600555600654612ab9565b600655519182914290439033908561281d565b0390a180f35b8901519250386106b1565b90601f9392931983168589528289209289905b82821061076357505092600080516020612adf833981519152989995926106d89592826106eb9a99961061074a575b5050811b0190556106c2565b88015160001960f88460031b161c19169055388061073e565b808785968294968d0151815501950193019061070f565b848852818820601f850160051c8101918386106107b6575b601f0160051c019083905b8281106107ab57505061067d565b89815501839061079d565b9091508190610792565b634e487b7160e01b885260419052602487fd5b8880fd5b8980fd5b895163313ce56760e01b8152868187818789165afa908115610a385790610809918b91610a42575b50612792565b87106107d35789516323b872dd60e01b8152338682019081523060208201526040810189905287908290819060600103818d8989165af1908115610a38578a91610a0b575b50156107d3576108778688936006938b8e8a8f82908282518981806104718c8b51928391612591565b8201908152030190200133600052855288600020558652600b83526003878720016108a2815461280e565b9055338652600b83526002878720016108bb815461280e565b9055338652600b835281878720016108d3815461280e565b9055338652600b83526005878720838101548852018352868620928551926001600160401b0384116107c0575061090a845461261e565b601f81116109c5575b5080601f841160011461096157509282806106d8946106eb9897948a9b97600080516020612adf8339815191529b936106f157501b916000199060031b1c19161790556106cd60055461280e565b90601f9392931983168589528289209289905b8282106109ae57505092600080516020612adf833981519152989995926106d89592826106eb9a99961061074a575050811b0190556106c2565b808785968294968d01518155019501930190610974565b848852818820601f850160051c810191838610610a01575b601f0160051c019083905b8281106109f6575050610913565b8981550183906109e8565b90915081906109dd565b610a2b9150873d8911610a31575b610a2381836124f3565b8101906127f6565b3861084e565b503d610a19565b8b513d8c823e3d90fd5b610a629150883d8a11610a68575b610a5a81836124f3565b8101906127dd565b38610803565b503d610a50565b8780fd5b83823461026157816003193601126102615760085490516001600160a01b039091168152602090f35b8382346102615781600319360112610261576020906005549051908152f35b8382346102615781600319360112610261576020906003549051908152f35b8382346102615781600319360112610261576020906002549051908152f35b5082346102a55760203660031901126102a5578235906001600160401b0382116102a55750602092610b2d9136910161252f565b600183610b4284519384815193849201612591565b820191600a83528481838060a01b0394030190200154169051908152f35b8382346102615760203660031901126102615760209160019082906001600160a01b03610b8b61257b565b168152600b85522001549051908152f35b8281853461026157610bad366126fd565b84929192519183519060209260ff600385880194610bcc818988612591565b8701968681600a998a815203019020015460101c1615610e0d5787518651610bf5818387612591565b8101868152818660059384930301902001828952855260ff838a8a20015460081c16610a6f5780895186818a51610c2d81838b612591565b81018a81520301902001828952855260ff838a8a20015416610a6f5780895186818a51610c5b81838b612591565b81018a815203019020838a52018552888820546001600160a01b039690871633036107d357818a5187818b51610c9281838c612591565b81018581520301902001838a52865260ff848b8b20015460101c16156107d357858582848b848f9c8f9b818f91828f8e89610ce0610d519f6001968b918d8851948593849251928391612591565b820190815203019020019082528752200154169c858251858180610d088d8b51928391612591565b81018b815203019020018c825284522054169c51809251610d2a818389612591565b81018581520301902001868d52835260028d8d2001549a8d51948593849251928391612591565b8201908152030190209188520183528686208101805461ff00191661010017905581610d9457505050829350829182915af1610d8b61284f565b50156102a55780f35b865163a9059cbb60e01b81526001600160a01b039490941690840190815260208101949094529193909283928592918390036040019183915af1928315610e0457508392610de7575b5050156102a55780f35b610dfd9250803d10610a3157610a2381836124f3565b8280610ddd565b513d85823e3d90fd5b8680fd5b83346102a55760203660031901126102a557610e2b61257b565b610e33612a8d565b60018060a01b03166001600160601b0360a01b600954161760095580f35b503461023e57602080600319360112611148578383356001600160401b03811161026157610e82903690860161252f565b93835185519060ff600386890193610e9b818587612591565b8301928781600a9586815203019020015460101c16156111485760ff6003875187818b51610eca81838a612591565b810186815203019020015460081c166111485760ff6003875187818b51610ef281838a612591565b810186815203019020015416611148578551928751610f12818686612591565b84018281528490038601909320600701546001600160a01b0393908416330361114457836007885188818c51610f4981838b612591565b81018781520301902001541693806001895189818d51610f6a81838c612591565b810188815203019020015416906003895189818d51610f8a81838c612591565b8101888152030190200161010061ff0019825416179055885160098b51610fb281848a612591565b8201918683528a814294030190200155338752600b8852600189882001610fd9815461280e565b90558989836110595760029450611006935088999250948897959188979251948593849251928391612591565b8201908152030190200154905af161101c61284f565b501561023e577f3041c6c52e527e55cbabbff2be5bf46a6ac5be181034f94c869b18799295f7c9916106eb915b519182914290439033908561281d565b8997506110d99893959496600293600761109d948b80955180925161107f818389612591565b81018b815203019020015416958d8d51948593849251928391612591565b8201908152030190200154885163a9059cbb60e01b81526001600160a01b03909316948301948552602085015290948593849291839160400190565b03925af191821561113a57859261111d575b50501561023e577f3041c6c52e527e55cbabbff2be5bf46a6ac5be181034f94c869b18799295f7c9916106eb91611049565b6111339250803d10610a3157610a2381836124f3565b38806110eb565b83513d87823e3d90fd5b8480fd5b8380fd5b505034610261576020366003190112610261576008546001600160a01b03163303610261573560025580f35b50903461023e57602036600319011261023e5760209282906001600160a01b03610b8b61257b565b8382346102615760203660031901126102615760209160039082906001600160a01b03610b8b61257b565b503461023e57826111db366126fd565b9093835190855190602092838801926111f5818386612591565b8101600a81526003828660ff94859403019020015460101c16156116a357806003885186818c5161122781838b612591565b8101600a815203019020015460081c166116a357806003885186818c5161124f81838b612591565b8101600a8152030190200154166116a3576005875185818b5161127381838a612591565b8101600a81520301902001858752845280828888200154166116a3576005875185818b516112a281838a612591565b8101600a8152030190200185875284528082888820015460081c166116a3576005875185818b516112d481838a612591565b8101600a8152030190200185875284528082888820015460101c16156116a35786518851611303818387612591565b600a90820190815281900385019020600701546001600160a01b039081163303610e0d576005885186818c5161133a81838b612591565b8101600a8152030190200186885285528787209188519061135a826124af565b82845416825284836001860154169488840195865260028101548c85015260038101546060850152015481811615156080840152818160081c16151560a084015260101c16151560c0820152878a878b858060016113c3858d8651809381928b51928391612591565b8101600a815203019020015416975116868a816007855187818a516113e9818389612591565b8101600a81520301902001541695828951169e600386518881855161140f81838a612591565b8101600a815203019020019060ff1991600183825416179055600587518981865161143b81838b612591565b8101600a81520301902001908a52875260018d878b20019182541617905582600786518881855161146d81838a612591565b8101600a8152030190200154168852600b865284882061148d815461280e565b905561149a60075461280e565b600755836115fd575050505083928392508291860151905af16114bb61284f565b5015610a6f575b826115375750505050839260026114e6859485948951809381928d51928391612591565b8101600a8152030190200154905af16114fd61284f565b501561023e57517ea9d0aed6173587cb14d2fef4aee8b03597cc9c85b778e40941f1c15daa966c9181906106eb904290439033908561281d565b61159d965061155e86809993600293979596975116948c8c51938492839251928391612591565b600a908201908152030190200154885163a9059cbb60e01b81526001600160a01b03909316948301948552602085015290948593849291839160400190565b03925af191821561113a5785926115e0575b50501561023e577ea9d0aed6173587cb14d2fef4aee8b03597cc9c85b778e40941f1c15daa966c916106eb91611049565b6115f69250803d10610a3157610a2381836124f3565b38806115af565b611661975085965094611620918596600794959651938492839251928391612591565b8101600a8152030190200154168c83870151935180968195829463a9059cbb60e01b84528d840160209093929193604081019460018060a01b031681520152565b03925af190811561169957899161167c575b506114c2578780fd5b6116939150873d8911610a3157610a2381836124f3565b38611673565b8a513d8b823e3d90fd5b8580fd5b838234610261578160031936011261026157905490516001600160a01b039091168152602090f35b50903461023e57602036600319011261023e578035926001600160401b0384116102a5575061171b6020611709611777953690850161252f565b81855193828580945193849201612591565b8101600a8152030190209161172f83612658565b9260018060a01b0392836001830154169360ff6002840154926003850154908501549260078601541693600960088701549601549680519a8b9a610140808d528c01906125b4565b9860208b015289015281811615156060890152818160081c161515608089015260101c16151560a087015260c086015260e08501526101008401526101208301520390f35b83346102a557806003193601126102a5576117d5612a8d565b600080546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b83823461026157816003193601126102615760ff6020925460a01c169051908152f35b5082346102a55760203660031901126102a5578235906001600160401b0382116102a5575060036118876020611875819660ff9536910161252f565b81865193828580945193849201612591565b8101600a81520301902001541690519015158152f35b50903461023e578260031936011261023e5760209250549051908152f35b5082346102a55760203660031901126102a5578235906001600160401b0382116102a557506118f56020611709819560089436910161252f565b8101600a81520301902001549051908152f35b5082346102a55760203660031901126102a5578235906001600160401b0382116102a557506118f56020611709819560099436910161252f565b8382346102615760203660031901126102615760209160029082906001600160a01b03610b8b61257b565b8382346102615781600319360112610261576020906006549051908152f35b505034610261576020366003190112610261576119a7612a8d565b3560025580f35b8382346102615760203660031901126102615760209181906001600160a01b036119d661257b565b168152600b845220549051908152f35b50903461023e57602036600319011261023e578035926001600160401b0384116102a557506118f5602061170981953690850161252f565b509190611a2a366125d9565b9094919282519584519260ff602094611a46818b888b01612591565b8901600a8152898660039b8c9303019020015460101c16610e0d576001600160a01b039180831680611c9a5750611a8360ff895460a01c16612792565b8210610a6f57611a9560025483612745565b3403610a6f57338852600b85528386892001611ab1815461280e565b9055338852600b85526005868920858101548a52018552858820988751996001600160401b038b11611c8757611ae7815461261e565b9a601f8c11611c44575b8a809c509798999a5088601f8211600114611bd75750808899611b4897989991611bcc575b508160011b9160001990851b1c19161790555b611b33815461280e565b9055611b40828654612ab9565b85558761287f565b600954169060025491803b1561114857839185518094819363162c2c8560e01b83525af18015611bc257611bae575b5050517fb8666097276fb34a235fcd33c2093c66bc80c5523e7612a04dd02616f79636ee9181906106eb904290439033908561281d565b611bb7906124e0565b61023e578238611b77565b83513d84823e3d90fd5b90508b015138611b16565b601f198216838a528c828b20928b915b838310611c285750505090611b489798999a836001949310611c10575b5050811b019055611b29565b8d015160001983871b60f8161c191690553880611c04565b8d015184559b8c019b8f9b50600190930192908101908e611be7565b818b52878b20601f820160051c81019c898310611c7d575b601f0160051c019b5b8c8110611c725750611af1565b8b8155600101611c65565b909c508c90611c5c565b634e487b7160e01b8a526041865260248afd5b60029991929394969798995434036107d757875163313ce56760e01b815286818981855afa908115611f7c5790611cd7918c91610a425750612792565b84106107d75787516323b872dd60e01b815233818901908152306020820152604081018690529091879183919082908e90829060600103925af1908115611f72578a91611f55575b50156107d357338952600b855285878a2001611d3b815461280e565b9055338952600b85526005878a20878101548b520185528689208851956001600160401b038711611f4257908a9594939291611d77825461261e565b601f8111611eed575b5080601f8911600114611e7f575096808798611dcf979891611e74575b508160011b9160001990851b1c19161790555b611dba815461280e565b9055611dc7828754612ab9565b86558761287f565b6009541660025492813b1561023e5784518094819363162c2c8560e01b83525af18015611e6a57611e31575b50517fb8666097276fb34a235fcd33c2093c66bc80c5523e7612a04dd02616f79636ee9181906106eb904290439033908561281d565b916106eb9193611e617fb8666097276fb34a235fcd33c2093c66bc80c5523e7612a04dd02616f79636ee946124e0565b93915091611dfb565b82513d86823e3d90fd5b90508b015138611d9d565b9790601f1982168389528c8a8a209a8a915b838310611ed157505050988291600193611dcf999a9b10611eb9575b5050811b019055611db0565b8d015160001983871b60f8161c191690553880611ead565b8401518c556001909b019a8f9a5092830192908101908e611e91565b909180939495969752818c20601f890160051c810191838a10611f38575b90601f8e99989796959493920160051c01905b818110611f2b5750611d80565b9788558c97600101611f1e565b9091508190611f0b565b634e487b7160e01b8b526041885260248bfd5b611f6c9150863d8811610a3157610a2381836124f3565b38611d1f565b88513d8c823e3d90fd5b89513d8d823e3d90fd5b5082346102a55760203660031901126102a5578235906001600160401b0382116102a557506118f56020611709819560029436910161252f565b5082346102a55760203660031901126102a5578235906001600160401b0382116102a557506003611ffc6020611875819660ff9536910161252f565b8101600a815203019020015460101c1690519015158152f35b5082346102a55760203660031901126102a5578235906001600160401b0382116102a557506020926120499136910161252f565b60078361205e84519384815193849201612591565b820191600a8352848160018060a01b0394030190200154169051908152f35b5091903461026157602091826003193601126102a5576001600160a01b036120a361257b565b1691828252600b808552818684200154906120bd8261272e565b946120ca885196876124f3565b8286526120d68361272e565b601f190187865b8281106121b3575050508261214a575b5050505083519280840190808552835180925280868601968360051b870101940192955b82871061211e5785850386f35b90919293828061213a600193603f198a820301865288516125b4565b9601920196019592919092612111565b845b83811061215957506120ed565b818652828852600589872001600182018083116121a0579060019291885289526121848a8820612658565b61218e828a612768565b526121998189612768565b500161214c565b634e487b7160e01b885260118752602488fd5b606082828b0101520188906120dd565b50903461023e57602036600319011261023e57359160ff831683036102a557506121ee602092612792565b9051908152f35b83823461026157816003193601126102615760095490516001600160a01b039091168152602090f35b5082346102a55760203660031901126102a5578235906001600160401b0382116102a55750600361225a6020611875819660ff9536910161252f565b8101600a815203019020015460081c1690519015158152f35b92939050346102a557602090816003193601126102a55784356001600160401b038111610261576122a7903690870161252f565b948351865182858901916122bc818585612591565b8301928681600a95600a8152030190200154916122d88361272e565b986122e588519a8b6124f3565b838a526122f18461272e565b601f190187875b8a8d8483106124715750505050508361239d575b50505050509391929083519381850192828652845180945282828701950196915b84831061233a5786860387f35b875180516001600160a01b03908116885281860151168786015280820151878301526060808201519088015260808082015115159088015260a08082015115159088015260c090810151151590870152968301969481019460019092019161232d565b855b8481106123ac575061230c565b60058951898185516123bf81838b612591565b8101878152030190200160019081830180841161245e57838e8a8d8f808f60019a999861244c988252845220918151976123f8896124af565b8a8060a01b0390818554168a52840154169088015260028201549087015260038101546060870152015460ff9081811615156080870152818160081c16151560a087015260101c16151560c0850152612768565b52612457818d612768565b500161239f565b634e487b7160e01b8a526011895260248afd5b8284918c845194612481866124af565b81865281858701528501528c60608501528c60808501528c60a08501528c60c08501520101520188906122f8565b60e081019081106001600160401b038211176124ca57604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116124ca57604052565b90601f801991011681019081106001600160401b038211176124ca57604052565b6001600160401b0381116124ca57601f01601f191660200190565b81601f820112156125765780359061254682612514565b9261255460405194856124f3565b8284526020838301011161257657816000926020809301838601378301015290565b600080fd5b600435906001600160a01b038216820361257657565b60005b8381106125a45750506000910152565b8181015183820152602001612594565b906020916125cd81518092818552858086019101612591565b601f01601f1916010190565b606060031982011261257657600435906001600160401b038211612576576126039160040161252f565b906024356001600160a01b0381168103612576579060443590565b90600182811c9216801561264e575b602083101461263857565b634e487b7160e01b600052602260045260246000fd5b91607f169161262d565b9060405191826000825461266b8161261e565b908184526020946001916001811690816000146126db575060011461269c575b50505061269a925003836124f3565b565b600090815285812095935091905b8183106126c357505061269a935082010138808061268b565b855488840185015294850194879450918301916126aa565b9250505061269a94925060ff191682840152151560051b82010138808061268b565b604060031982011261257657600435906001600160401b038211612576576127279160040161252f565b9060243590565b6001600160401b0381116124ca5760051b60200190565b9190820180921161275257565b634e487b7160e01b600052601160045260246000fd5b805182101561277c5760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b60ff1680156127d757600181146127d757600281146127d75760038110156127ba5750600190565b6002190160ff81116127525760ff16604d811161275257600a0a90565b50600190565b90816020910312612576575160ff811681036125765790565b90816020910312612576575180151581036125765790565b60001981146127525760010190565b90926128366060939695946080845260808401906125b4565b6001600160a01b03909616602083015260408201520152565b3d1561287a573d9061286082612514565b9161286e60405193846124f3565b82523d6000602084013e565b606090565b6040908151918151936020958684019561289a818789612591565b8501948781600a978881520301902084516001600160401b0381116124ca576128c3825461261e565b601f8111612a45575b5088601f82116001146129d657918160039a989694926129b09a9896946000916129cb575b508160011b91600019908d1b1c19161790555b600183518881875161291781838d612591565b810189815203019020016001600160601b0360a01b9260018060a01b031683825416179055600283518881875161294f81838d612591565b810189815203019020015581516008845161296b81848a612591565b82019186835288814294030190200155600782518781865161298e81838c612591565b8101888152030190200190339082541617905551948593849251928391612591565b82019081520301902001805462ff0000191662010000179055565b9050860151386128f1565b601f19821690836000528a6000209160005b818110612a2e5750926129b09a989694926001928260039e9c9a989610612a16575b5050811b019055612904565b880151600019838f1b60f8161c191690553880612a0a565b91928c60018192868d0151815501940192016129e8565b6000836000528a600020601f840160051c8101928c8510612a83575b601f0160051c01915b828110612a785750506128cc565b818155600101612a6a565b9092508290612a61565b6000546001600160a01b03163303612aa157565b60405163118cdaa760e01b8152336004820152602490fd5b9060015482810390811161275257811115612ad2575090565b612adb91612745565b9056fe318d025aa0a5536b9e83dce244e41fb22176aa94426ced6f6142d249dd323531a2646970667358221220af11b7a94158f85833b7200c7b93daa948ab3eba631f7e3f6d5458ddf99b2a6064736f6c63430008180033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000883ba282d409e0e984bef70b338f641d0045942f0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000305d3509223c8000
-----Decoded View---------------
Arg [0] : _paramOmnifyAddress (address): 0x883bA282D409e0E984Bef70B338f641D0045942F
Arg [1] : _paramNativeDecimals (uint8): 18
Arg [2] : _paramContractFee (uint256): 3485000000000000000
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000883ba282d409e0e984bef70b338f641d0045942f
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [2] : 000000000000000000000000000000000000000000000000305d3509223c8000
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.