Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 1 internal transaction
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| - | 11205048 | 1946 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
DssSpell
Compiler Version
v0.5.12+commit.7709ece9
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2020-11-06
*/
// hevm: flattened sources of src/DssSpell.sol
pragma solidity =0.5.12 >=0.5.12;
////// lib/dss-interfaces/src/dapp/DSPauseAbstract.sol
/* pragma solidity >=0.5.12; */
// https://github.com/dapphub/ds-pause
interface DSPauseAbstract {
function setOwner(address) external;
function setAuthority(address) external;
function setDelay(uint256) external;
function plans(bytes32) external view returns (bool);
function proxy() external view returns (address);
function delay() external view returns (uint256);
function plot(address, bytes32, bytes calldata, uint256) external;
function drop(address, bytes32, bytes calldata, uint256) external;
function exec(address, bytes32, bytes calldata, uint256) external returns (bytes memory);
}
////// lib/dss-interfaces/src/dss/CatAbstract.sol
/* pragma solidity >=0.5.12; */
// https://github.com/makerdao/dss/blob/master/src/cat.sol
interface CatAbstract {
function wards(address) external view returns (uint256);
function rely(address) external;
function deny(address) external;
function box() external view returns (uint256);
function litter() external view returns (uint256);
function ilks(bytes32) external view returns (address, uint256, uint256);
function live() external view returns (uint256);
function vat() external view returns (address);
function vow() external view returns (address);
function file(bytes32, address) external;
function file(bytes32, uint256) external;
function file(bytes32, bytes32, uint256) external;
function file(bytes32, bytes32, address) external;
function bite(bytes32, address) external returns (uint256);
function claw(uint256) external;
function cage() external;
}
////// lib/dss-interfaces/src/dss/ChainlogAbstract.sol
/* pragma solidity >=0.5.12; */
// https://github.com/makerdao/dss-chain-log
interface ChainlogAbstract {
function wards(address) external view returns (uint256);
function rely(address) external;
function deny(address) external;
function keys() external view returns (bytes32[] memory);
function version() external view returns (string memory);
function ipfs() external view returns (string memory);
function setVersion(string calldata) external;
function setSha256sum(string calldata) external;
function setIPFS(string calldata) external;
function setAddress(bytes32,address) external;
function removeAddress(bytes32) external;
function count() external view returns (uint256);
function get(uint256) external view returns (bytes32,address);
function list() external view returns (bytes32[] memory);
function getAddress(bytes32) external view returns (address);
}
////// lib/dss-interfaces/src/dss/FlipAbstract.sol
/* pragma solidity >=0.5.12; */
// https://github.com/makerdao/dss/blob/master/src/flip.sol
interface FlipAbstract {
function wards(address) external view returns (uint256);
function rely(address usr) external;
function deny(address usr) external;
function bids(uint256) external view returns (uint256, uint256, address, uint48, uint48, address, address, uint256);
function vat() external view returns (address);
function cat() external view returns (address);
function ilk() external view returns (bytes32);
function beg() external view returns (uint256);
function ttl() external view returns (uint48);
function tau() external view returns (uint48);
function kicks() external view returns (uint256);
function file(bytes32, uint256) external;
function kick(address, address, uint256, uint256, uint256) external returns (uint256);
function tick(uint256) external;
function tend(uint256, uint256, uint256) external;
function dent(uint256, uint256, uint256) external;
function deal(uint256) external;
function yank(uint256) external;
}
////// lib/dss-interfaces/src/dss/GemJoinAbstract.sol
/* pragma solidity >=0.5.12; */
// https://github.com/makerdao/dss/blob/master/src/join.sol
interface GemJoinAbstract {
function wards(address) external view returns (uint256);
function rely(address) external;
function deny(address) external;
function vat() external view returns (address);
function ilk() external view returns (bytes32);
function gem() external view returns (address);
function dec() external view returns (uint256);
function live() external view returns (uint256);
function cage() external;
function join(address, uint256) external;
function exit(address, uint256) external;
}
////// lib/dss-interfaces/src/dss/IlkRegistryAbstract.sol
/* pragma solidity >=0.5.12; */
// https://github.com/makerdao/ilk-registry
interface IlkRegistryAbstract {
function wards(address) external view returns (uint256);
function rely(address) external;
function deny(address) external;
function vat() external view returns (address);
function cat() external view returns (address);
function spot() external view returns (address);
function ilkData(bytes32) external view returns (
uint256, address, address, address, address, uint256, string memory, string memory
);
function ilks() external view returns (bytes32[] memory);
function ilks(uint) external view returns (bytes32);
function add(address) external;
function remove(bytes32) external;
function update(bytes32) external;
function removeAuth(bytes32) external;
function file(bytes32, address) external;
function file(bytes32, bytes32, address) external;
function file(bytes32, bytes32, uint256) external;
function file(bytes32, bytes32, string calldata) external;
function count() external view returns (uint256);
function list() external view returns (bytes32[] memory);
function list(uint256, uint256) external view returns (bytes32[] memory);
function get(uint256) external view returns (bytes32);
function info(bytes32) external view returns (
string memory, string memory, uint256, address, address, address, address
);
function pos(bytes32) external view returns (uint256);
function gem(bytes32) external view returns (address);
function pip(bytes32) external view returns (address);
function join(bytes32) external view returns (address);
function flip(bytes32) external view returns (address);
function dec(bytes32) external view returns (uint256);
function symbol(bytes32) external view returns (string memory);
function name(bytes32) external view returns (string memory);
}
////// lib/dss-interfaces/src/dss/JugAbstract.sol
/* pragma solidity >=0.5.12; */
// https://github.com/makerdao/dss/blob/master/src/jug.sol
interface JugAbstract {
function wards(address) external view returns (uint256);
function rely(address) external;
function deny(address) external;
function ilks(bytes32) external view returns (uint256, uint256);
function vat() external view returns (address);
function vow() external view returns (address);
function base() external view returns (address);
function init(bytes32) external;
function file(bytes32, bytes32, uint256) external;
function file(bytes32, uint256) external;
function file(bytes32, address) external;
function drip(bytes32) external returns (uint256);
}
////// lib/dss-interfaces/src/dss/MedianAbstract.sol
/* pragma solidity >=0.5.12; */
// https://github.com/makerdao/median
interface MedianAbstract {
function wards(address) external view returns (uint256);
function rely(address) external;
function deny(address) external;
function age() external view returns (uint32);
function wat() external view returns (bytes32);
function bar() external view returns (uint256);
function orcl(address) external view returns (uint256);
function bud(address) external view returns (uint256);
function slot(uint8) external view returns (address);
function read() external view returns (uint256);
function peek() external view returns (uint256, bool);
function lift(address[] calldata) external;
function drop(address[] calldata) external;
function setBar(uint256) external;
function kiss(address) external;
function diss(address) external;
function kiss(address[] calldata) external;
function diss(address[] calldata) external;
function poke(uint256[] calldata, uint256[] calldata, uint8[] calldata, bytes32[] calldata, bytes32[] calldata) external;
}
////// lib/dss-interfaces/src/dss/OsmAbstract.sol
/* pragma solidity >=0.5.12; */
// https://github.com/makerdao/osm
interface OsmAbstract {
function wards(address) external view returns (uint256);
function rely(address) external;
function deny(address) external;
function stopped() external view returns (uint256);
function src() external view returns (address);
function hop() external view returns (uint16);
function zzz() external view returns (uint64);
function cur() external view returns (uint128, uint128);
function nxt() external view returns (uint128, uint128);
function bud(address) external view returns (uint256);
function stop() external;
function start() external;
function change(address) external;
function step(uint16) external;
function void() external;
function pass() external view returns (bool);
function poke() external;
function peek() external view returns (bytes32, bool);
function peep() external view returns (bytes32, bool);
function read() external view returns (bytes32);
function kiss(address) external;
function diss(address) external;
function kiss(address[] calldata) external;
function diss(address[] calldata) external;
}
////// lib/dss-interfaces/src/dss/OsmMomAbstract.sol
/* pragma solidity >=0.5.12; */
// https://github.com/makerdao/osm-mom
interface OsmMomAbstract {
function owner() external view returns (address);
function authority() external view returns (address);
function osms(bytes32) external view returns (address);
function setOsm(bytes32, address) external;
function setOwner(address) external;
function setAuthority(address) external;
function stop(bytes32) external;
}
////// lib/dss-interfaces/src/dss/SpotAbstract.sol
/* pragma solidity >=0.5.12; */
// https://github.com/makerdao/dss/blob/master/src/spot.sol
interface SpotAbstract {
function wards(address) external view returns (uint256);
function rely(address) external;
function deny(address) external;
function ilks(bytes32) external view returns (address, uint256);
function vat() external view returns (address);
function par() external view returns (uint256);
function live() external view returns (uint256);
function file(bytes32, bytes32, address) external;
function file(bytes32, uint256) external;
function file(bytes32, bytes32, uint256) external;
function poke(bytes32) external;
function cage() external;
}
////// lib/dss-interfaces/src/dss/VatAbstract.sol
/* pragma solidity >=0.5.12; */
// https://github.com/makerdao/dss/blob/master/src/vat.sol
interface VatAbstract {
function wards(address) external view returns (uint256);
function rely(address) external;
function deny(address) external;
function can(address, address) external view returns (uint256);
function hope(address) external;
function nope(address) external;
function ilks(bytes32) external view returns (uint256, uint256, uint256, uint256, uint256);
function urns(bytes32, address) external view returns (uint256, uint256);
function gem(bytes32, address) external view returns (uint256);
function dai(address) external view returns (uint256);
function sin(address) external view returns (uint256);
function debt() external view returns (uint256);
function vice() external view returns (uint256);
function Line() external view returns (uint256);
function live() external view returns (uint256);
function init(bytes32) external;
function file(bytes32, uint256) external;
function file(bytes32, bytes32, uint256) external;
function cage() external;
function slip(bytes32, address, int256) external;
function flux(bytes32, address, address, uint256) external;
function move(address, address, uint256) external;
function frob(bytes32, address, address, address, int256, int256) external;
function fork(bytes32, address, address, int256, int256) external;
function grab(bytes32, address, address, address, int256, int256) external;
function heal(uint256) external;
function suck(address, address, uint256) external;
function fold(bytes32, address, int256) external;
}
////// src/DssSpell.sol
// Copyright (C) 2020 Maker Ecosystem Growth Holdings, INC.
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
/* pragma solidity 0.5.12; */
/* import "lib/dss-interfaces/src/dapp/DSPauseAbstract.sol"; */
/* import "lib/dss-interfaces/src/dss/CatAbstract.sol"; */
/* import "lib/dss-interfaces/src/dss/FlipAbstract.sol"; */
/* import "lib/dss-interfaces/src/dss/IlkRegistryAbstract.sol"; */
/* import "lib/dss-interfaces/src/dss/GemJoinAbstract.sol"; */
/* import "lib/dss-interfaces/src/dss/JugAbstract.sol"; */
/* import "lib/dss-interfaces/src/dss/MedianAbstract.sol"; */
/* import "lib/dss-interfaces/src/dss/OsmAbstract.sol"; */
/* import "lib/dss-interfaces/src/dss/OsmMomAbstract.sol"; */
/* import "lib/dss-interfaces/src/dss/SpotAbstract.sol"; */
/* import "lib/dss-interfaces/src/dss/VatAbstract.sol"; */
/* import "lib/dss-interfaces/src/dss/ChainlogAbstract.sol"; */
contract SpellAction {
// MAINNET ADDRESSES
//
// The contracts in this list should correspond to MCD core contracts, verify
// against the current release list at:
// https://changelog.makerdao.com/releases/mainnet/1.1.4/contracts.json
address constant MCD_VAT = 0x35D1b3F3D7966A1DFe207aa4514C12a259A0492B;
address constant MCD_CAT = 0xa5679C04fc3d9d8b0AaB1F0ab83555b301cA70Ea;
address constant MCD_JUG = 0x19c0976f590D67707E62397C87829d896Dc0f1F1;
address constant MCD_SPOT = 0x65C79fcB50Ca1594B025960e539eD7A9a6D434A3;
address constant MCD_POT = 0x197E90f9FAD81970bA7976f33CbD77088E5D7cf7;
address constant MCD_END = 0xaB14d3CE3F733CACB76eC2AbE7d2fcb00c99F3d5;
address constant FLIPPER_MOM = 0xc4bE7F74Ee3743bDEd8E0fA218ee5cf06397f472;
address constant OSM_MOM = 0x76416A4d5190d071bfed309861527431304aA14f;
address constant ILK_REGISTRY = 0x8b4ce5DCbb01e0e1f0521cd8dCfb31B308E52c24;
address constant CHANGELOG = 0xdA0Ab1e0017DEbCd72Be8599041a2aa3bA7e740F;
address constant BAL = 0xba100000625a3754423978a60c9317c58a424e3D;
address constant MCD_JOIN_BAL_A = 0x4a03Aa7fb3973d8f0221B466EefB53D0aC195f55;
address constant MCD_FLIP_BAL_A = 0xb2b9bd446eE5e58036D2876fce62b7Ab7334583e;
address constant PIP_BAL = 0x3ff860c0F28D69F392543A16A397D0dAe85D16dE;
address constant YFI = 0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e;
address constant MCD_JOIN_YFI_A = 0x3ff33d9162aD47660083D7DC4bC02Fb231c81677;
address constant MCD_FLIP_YFI_A = 0xEe4C9C36257afB8098059a4763A374a4ECFE28A7;
address constant PIP_YFI = 0x5F122465bCf86F45922036970Be6DD7F58820214;
// Decimals & precision
uint256 constant THOUSAND = 10 ** 3;
uint256 constant MILLION = 10 ** 6;
uint256 constant WAD = 10 ** 18;
uint256 constant RAY = 10 ** 27;
uint256 constant RAD = 10 ** 45;
// Many of the settings that change weekly rely on the rate accumulator
// described at https://docs.makerdao.com/smart-contract-modules/rates-module
// To check this yourself, use the following rate calculation (example 8%):
//
// $ bc -l <<< 'scale=27; e( l(1.08)/(60 * 60 * 24 * 365) )'
//
// A table of rates can be found at
// https://ipfs.io/ipfs/QmefQMseb3AiTapiAKKexdKHig8wroKuZbmLtPLv4u2YwW
uint256 constant FOUR_PERCENT_RATE = 1000000001243680656318820312;
uint256 constant FIVE_PERCENT_RATE = 1000000001547125957863212448;
function execute() external {
// Set the global debt ceiling
// 1476 (current DC) + 4 (BAL-A) + 7 (YFI-A) - 50 (ETH-A decrease) - 10 (ETH-B decrease)
// + 40 (WBTC-A increase) + 5 (LINK-A increase) - 7.5 (USDT-A decrease) - 0.75 (MANA-A decrease)
VatAbstract(MCD_VAT).file("Line", (1463 * MILLION + 750 * THOUSAND) * RAD);
// Set the ETH-A debt ceiling
//
// Existing debt ceiling: 540 million
// New debt ceiling: 490 million
VatAbstract(MCD_VAT).file("ETH-A", "line", 490 * MILLION * RAD);
// Set the ETH-B debt ceiling
//
// Existing debt ceiling: 20 million
// New debt ceiling: 10 million
VatAbstract(MCD_VAT).file("ETH-B", "line", 10 * MILLION * RAD);
// Set the WBTC-A debt ceiling
//
// Existing debt ceiling: 120 million
// New debt ceiling: 160 million
VatAbstract(MCD_VAT).file("WBTC-A", "line", 160 * MILLION * RAD);
// Set the MANA-A debt ceiling
//
// Existing debt ceiling: 1 million
// New debt ceiling: 250 thousand
VatAbstract(MCD_VAT).file("MANA-A", "line", 250 * THOUSAND * RAD);
// Set the USDT-A debt ceiling
//
// Existing debt ceiling: 10 million
// New debt ceiling: 2.5 million
VatAbstract(MCD_VAT).file("USDT-A", "line", (2 * MILLION + 500 * THOUSAND) * RAD);
// Set the LINK-A debt ceiling
//
// Existing debt ceiling: 5 million
// New debt ceiling: 10 million
VatAbstract(MCD_VAT).file("LINK-A", "line", 10 * MILLION * RAD);
// Set the ETH-B stability fee
//
// Previous: 6%
// New: 4%
JugAbstract(MCD_JUG).drip("ETH-B");
JugAbstract(MCD_JUG).file("ETH-B", "duty", FOUR_PERCENT_RATE);
// Version bump chainlog (due new collateral types)
ChainlogAbstract(CHANGELOG).setVersion("1.1.4");
//
// Add BAL-A
//
bytes32 ilk = "BAL-A";
// Sanity checks
require(GemJoinAbstract(MCD_JOIN_BAL_A).vat() == MCD_VAT, "join-vat-not-match");
require(GemJoinAbstract(MCD_JOIN_BAL_A).ilk() == ilk, "join-ilk-not-match");
require(GemJoinAbstract(MCD_JOIN_BAL_A).gem() == BAL, "join-gem-not-match");
require(GemJoinAbstract(MCD_JOIN_BAL_A).dec() == 18, "join-dec-not-match");
require(FlipAbstract(MCD_FLIP_BAL_A).vat() == MCD_VAT, "flip-vat-not-match");
require(FlipAbstract(MCD_FLIP_BAL_A).cat() == MCD_CAT, "flip-cat-not-match");
require(FlipAbstract(MCD_FLIP_BAL_A).ilk() == ilk, "flip-ilk-not-match");
// Add the new flip and join to the Chainlog
ChainlogAbstract(CHANGELOG).setAddress("BAL", BAL);
ChainlogAbstract(CHANGELOG).setAddress("PIP_BAL", PIP_BAL);
ChainlogAbstract(CHANGELOG).setAddress("MCD_JOIN_BAL_A", MCD_JOIN_BAL_A);
ChainlogAbstract(CHANGELOG).setAddress("MCD_FLIP_BAL_A", MCD_FLIP_BAL_A);
// Set the BAL PIP in the Spotter
SpotAbstract(MCD_SPOT).file(ilk, "pip", PIP_BAL);
// Set the BAL-A Flipper in the Cat
CatAbstract(MCD_CAT).file(ilk, "flip", MCD_FLIP_BAL_A);
// Init BAL-A ilk in Vat & Jug
VatAbstract(MCD_VAT).init(ilk);
JugAbstract(MCD_JUG).init(ilk);
// Allow BAL-A Join to modify Vat registry
VatAbstract(MCD_VAT).rely(MCD_JOIN_BAL_A);
// Allow the BAL-A Flipper to reduce the Cat litterbox on deal()
CatAbstract(MCD_CAT).rely(MCD_FLIP_BAL_A);
// Allow Cat to kick auctions in BAL-A Flipper
FlipAbstract(MCD_FLIP_BAL_A).rely(MCD_CAT);
// Allow End to yank auctions in BAL-A Flipper
FlipAbstract(MCD_FLIP_BAL_A).rely(MCD_END);
// Allow FlipperMom to access to the BAL-A Flipper
FlipAbstract(MCD_FLIP_BAL_A).rely(FLIPPER_MOM);
// Disallow Cat to kick auctions in BAL-A Flipper
// !!!!!!!! Only for certain collaterals that do not trigger liquidations like USDC-A)
// FlipperMomAbstract(FLIPPER_MOM).deny(MCD_FLIP_BAL_A);
// Allow OsmMom to access to the BAL Osm
// !!!!!!!! Only if PIP_BAL = Osm and hasn't been already relied due a previous deployed ilk
OsmAbstract(PIP_BAL).rely(OSM_MOM);
// Whitelist Osm to read the Median data (only necessary if it is the first time the token is being added to an ilk)
// !!!!!!!! Only if PIP_BAL = Osm, its src is a Median and hasn't been already whitelisted due a previous deployed ilk
MedianAbstract(OsmAbstract(PIP_BAL).src()).kiss(PIP_BAL);
// Whitelist Spotter to read the Osm data (only necessary if it is the first time the token is being added to an ilk)
// !!!!!!!! Only if PIP_BAL = Osm or PIP_BAL = Median and hasn't been already whitelisted due a previous deployed ilk
OsmAbstract(PIP_BAL).kiss(MCD_SPOT);
// Whitelist End to read the Osm data (only necessary if it is the first time the token is being added to an ilk)
// !!!!!!!! Only if PIP_BAL = Osm or PIP_BAL = Median and hasn't been already whitelisted due a previous deployed ilk
OsmAbstract(PIP_BAL).kiss(MCD_END);
// Set BAL Osm in the OsmMom for new ilk
// !!!!!!!! Only if PIP_BAL = Osm
OsmMomAbstract(OSM_MOM).setOsm(ilk, PIP_BAL);
// Set the global debt ceiling (end of spell)
// VatAbstract(MCD_VAT).file("Line", 1220 * MILLION * RAD);
// Set the BAL-A debt ceiling
VatAbstract(MCD_VAT).file(ilk, "line", 4 * MILLION * RAD);
// Set the BAL-A dust
VatAbstract(MCD_VAT).file(ilk, "dust", 100 * RAD);
// Set the Lot size
CatAbstract(MCD_CAT).file(ilk, "dunk", 50 * THOUSAND * RAD);
// Set the BAL-A liquidation penalty (e.g. 13% => X = 113)
CatAbstract(MCD_CAT).file(ilk, "chop", 113 * WAD / 100);
// Set the BAL-A stability fee (e.g. 1% = 1000000000315522921573372069)
JugAbstract(MCD_JUG).file(ilk, "duty", FIVE_PERCENT_RATE);
// Set the BAL-A percentage between bids (e.g. 3% => X = 103)
FlipAbstract(MCD_FLIP_BAL_A).file("beg", 103 * WAD / 100);
// Set the BAL-A time max time between bids
FlipAbstract(MCD_FLIP_BAL_A).file("ttl", 6 hours);
// Set the BAL-A max auction duration to
FlipAbstract(MCD_FLIP_BAL_A).file("tau", 6 hours);
// Set the BAL-A min collateralization ratio (e.g. 150% => X = 150)
SpotAbstract(MCD_SPOT).file(ilk, "mat", 175 * RAY / 100);
// Update BAL-A spot value in Vat
SpotAbstract(MCD_SPOT).poke(ilk);
// Add new ilk to the IlkRegistry
IlkRegistryAbstract(ILK_REGISTRY).add(MCD_JOIN_BAL_A);
//
// Add YFI-A
//
ilk = "YFI-A";
// Sanity checks
require(GemJoinAbstract(MCD_JOIN_YFI_A).vat() == MCD_VAT, "join-vat-not-match");
require(GemJoinAbstract(MCD_JOIN_YFI_A).ilk() == ilk, "join-ilk-not-match");
require(GemJoinAbstract(MCD_JOIN_YFI_A).gem() == YFI, "join-gem-not-match");
require(GemJoinAbstract(MCD_JOIN_YFI_A).dec() == 18, "join-dec-not-match");
require(FlipAbstract(MCD_FLIP_YFI_A).vat() == MCD_VAT, "flip-vat-not-match");
require(FlipAbstract(MCD_FLIP_YFI_A).cat() == MCD_CAT, "flip-cat-not-match");
require(FlipAbstract(MCD_FLIP_YFI_A).ilk() == ilk, "flip-ilk-not-match");
// Add the new flip and join to the Chainlog
ChainlogAbstract(CHANGELOG).setAddress("YFI", YFI);
ChainlogAbstract(CHANGELOG).setAddress("PIP_YFI", PIP_YFI);
ChainlogAbstract(CHANGELOG).setAddress("MCD_JOIN_YFI_A", MCD_JOIN_YFI_A);
ChainlogAbstract(CHANGELOG).setAddress("MCD_FLIP_YFI_A", MCD_FLIP_YFI_A);
// Set the YFI PIP in the Spotter
SpotAbstract(MCD_SPOT).file(ilk, "pip", PIP_YFI);
// Set the YFI-A Flipper in the Cat
CatAbstract(MCD_CAT).file(ilk, "flip", MCD_FLIP_YFI_A);
// Init YFI-A ilk in Vat & Jug
VatAbstract(MCD_VAT).init(ilk);
JugAbstract(MCD_JUG).init(ilk);
// Allow YFI-A Join to modify Vat registry
VatAbstract(MCD_VAT).rely(MCD_JOIN_YFI_A);
// Allow the YFI-A Flipper to reduce the Cat litterbox on deal()
CatAbstract(MCD_CAT).rely(MCD_FLIP_YFI_A);
// Allow Cat to kick auctions in YFI-A Flipper
FlipAbstract(MCD_FLIP_YFI_A).rely(MCD_CAT);
// Allow End to yank auctions in YFI-A Flipper
FlipAbstract(MCD_FLIP_YFI_A).rely(MCD_END);
// Allow FlipperMom to access to the YFI-A Flipper
FlipAbstract(MCD_FLIP_YFI_A).rely(FLIPPER_MOM);
// Disallow Cat to kick auctions in YFI-A Flipper
// !!!!!!!! Only for certain collaterals that do not trigger liquidations like USDC-A)
// FlipperMomAbstract(FLIPPER_MOM).deny(MCD_FLIP_YFI_A);
// Allow OsmMom to access to the YFI Osm
// !!!!!!!! Only if PIP_YFI = Osm and hasn't been already relied due a previous deployed ilk
OsmAbstract(PIP_YFI).rely(OSM_MOM);
// Whitelist Osm to read the Median data (only necessary if it is the first time the token is being added to an ilk)
// !!!!!!!! Only if PIP_YFI = Osm, its src is a Median and hasn't been already whitelisted due a previous deployed ilk
MedianAbstract(OsmAbstract(PIP_YFI).src()).kiss(PIP_YFI);
// Whitelist Spotter to read the Osm data (only necessary if it is the first time the token is being added to an ilk)
// !!!!!!!! Only if PIP_YFI = Osm or PIP_YFI = Median and hasn't been already whitelisted due a previous deployed ilk
OsmAbstract(PIP_YFI).kiss(MCD_SPOT);
// Whitelist End to read the Osm data (only necessary if it is the first time the token is being added to an ilk)
// !!!!!!!! Only if PIP_YFI = Osm or PIP_YFI = Median and hasn't been already whitelisted due a previous deployed ilk
OsmAbstract(PIP_YFI).kiss(MCD_END);
// Set YFI Osm in the OsmMom for new ilk
// !!!!!!!! Only if PIP_YFI = Osm
OsmMomAbstract(OSM_MOM).setOsm(ilk, PIP_YFI);
// Set the global debt ceiling (end of spell)
// VatAbstract(MCD_VAT).file("Line", 1227 * MILLION * RAD);
// Set the YFI-A debt ceiling
VatAbstract(MCD_VAT).file(ilk, "line", 7 * MILLION * RAD);
// Set the YFI-A dust
VatAbstract(MCD_VAT).file(ilk, "dust", 100 * RAD);
// Set the Lot size
CatAbstract(MCD_CAT).file(ilk, "dunk", 50 * THOUSAND * RAD);
// Set the YFI-A liquidation penalty (e.g. 13% => X = 113)
CatAbstract(MCD_CAT).file(ilk, "chop", 113 * WAD / 100);
// Set the YFI-A stability fee (e.g. 1% = 1000000000315522921573372069)
JugAbstract(MCD_JUG).file(ilk, "duty", FOUR_PERCENT_RATE);
// Set the YFI-A percentage between bids (e.g. 3% => X = 103)
FlipAbstract(MCD_FLIP_YFI_A).file("beg", 103 * WAD / 100);
// Set the YFI-A time max time between bids
FlipAbstract(MCD_FLIP_YFI_A).file("ttl", 6 hours);
// Set the YFI-A max auction duration to
FlipAbstract(MCD_FLIP_YFI_A).file("tau", 6 hours);
// Set the YFI-A min collateralization ratio (e.g. 150% => X = 150)
SpotAbstract(MCD_SPOT).file(ilk, "mat", 175 * RAY / 100);
// Update YFI-A spot value in Vat
SpotAbstract(MCD_SPOT).poke(ilk);
// Add new ilk to the IlkRegistry
IlkRegistryAbstract(ILK_REGISTRY).add(MCD_JOIN_YFI_A);
}
}
contract DssSpell {
DSPauseAbstract public pause =
DSPauseAbstract(0xbE286431454714F511008713973d3B053A2d38f3);
address public action;
bytes32 public tag;
uint256 public eta;
bytes public sig;
uint256 public expiration;
bool public done;
// Provides a descriptive tag for bot consumption
// This should be modified weekly to provide a summary of the actions
// Hash: seth keccak -- "$(wget https://raw.githubusercontent.com/makerdao/community/8413dc97baa7b6ccb8eb8fb1a007c15741d8d7e4/governance/votes/Executive%20vote%20-%20November%206%2C%202020.md -q -O - 2>/dev/null)"
string constant public description =
"2020-11-06 MakerDAO Executive Spell | Hash: 0x958c24628791d50feb4a0c84fcbe4f88e20c8eefc3c1cb3c7e1af21e5388ebba";
constructor() public {
sig = abi.encodeWithSignature("execute()");
action = address(new SpellAction());
bytes32 _tag;
address _action = action;
assembly { _tag := extcodehash(_action) }
tag = _tag;
expiration = now + 30 days;
}
modifier officeHours {
uint day = (now / 1 days + 3) % 7;
require(day < 5, "Can only be cast on a weekday");
uint hour = now / 1 hours % 24;
require(hour >= 14 && hour < 21, "Outside office hours");
_;
}
function schedule() public {
require(now <= expiration, "This contract has expired");
require(eta == 0, "This spell has already been scheduled");
eta = now + DSPauseAbstract(pause).delay();
pause.plot(action, tag, sig, eta);
}
function cast() public officeHours {
require(!done, "spell-already-cast");
done = true;
pause.exec(action, tag, sig, eta);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"constant":true,"inputs":[],"name":"action","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"cast","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"description","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"done","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"eta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"expiration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pause","outputs":[{"internalType":"contract DSPauseAbstract","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"schedule","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sig","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tag","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"}]Contract Creation Code
6080604052600080546001600160a01b03191673be286431454714f511008713973d3b053a2d38f317905534801561003657600080fd5b50604080516004808252602482019092526020810180516001600160e01b03167f614619540000000000000000000000000000000000000000000000000000000017815290516100879291906100e2565b5060405161009490610160565b604051809103906000f0801580156100b0573d6000803e3d6000fd5b50600180546001600160a01b0319166001600160a01b039283161790819055163f6002554262278d000160055561018a565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061012357805160ff1916838001178555610150565b82800160010185558215610150579182015b82811115610150578251825591602001919060010190610135565b5061015c92915061016d565b5090565b612fa1806109f983390190565b61018791905b8082111561015c5760008155600101610173565b90565b610860806101996000396000f3fe608060405234801561001057600080fd5b506004361061008d5760003560e01c8062a7029b146100925780630a7a1c4d1461010f5780634665096d1461013357806351f910661461014d5780637284e416146101555780638456cb591461015d57806396d373e514610165578063ae8421e11461016f578063b0604a261461018b578063f7992d8514610193575b600080fd5b61009a61019b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100d45781810151838201526020016100bc565b50505050905090810190601f1680156101015780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610117610229565b604080516001600160a01b039092168252519081900360200190f35b61013b610238565b60408051918252519081900360200190f35b61013b61023e565b61009a610244565b610117610260565b61016d61026f565b005b61017761056d565b604080519115158252519081900360200190f35b61016d610576565b61013b610792565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156102215780601f106101f657610100808354040283529160200191610221565b820191906000526020600020905b81548152906001019060200180831161020457829003601f168201915b505050505081565b6001546001600160a01b031681565b60055481565b60025481565b6040518060a00160405280606e81526020016107be606e913981565b6000546001600160a01b031681565b600762015180420460030106600581106102d0576040805162461bcd60e51b815260206004820152601d60248201527f43616e206f6e6c792062652063617374206f6e2061207765656b646179000000604482015290519081900360640190fd5b6018610e10420406600e81108015906102e95750601581105b610331576040805162461bcd60e51b81526020600482015260146024820152734f757473696465206f666669636520686f75727360601b604482015290519081900360640190fd5b60065460ff161561037e576040805162461bcd60e51b81526020600482015260126024820152711cdc195b1b0b585b1c9958591e4b58d85cdd60721b604482015290519081900360640190fd5b6006805460ff1916600190811790915560005481546002805460035460405163168ccd6760e01b81526001600160a01b039485166004828101828152602484018690526064840185905260806044850190815282546000199b811615610100029b909b01909a169690960460848401819052969097169763168ccd67979196949591949192909160a4909101908590801561045a5780601f1061042f5761010080835404028352916020019161045a565b820191906000526020600020905b81548152906001019060200180831161043d57829003601f168201915b505095505050505050600060405180830381600087803b15801561047d57600080fd5b505af1158015610491573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156104ba57600080fd5b8101908080516040519392919084600160201b8211156104d957600080fd5b9083019060208201858111156104ee57600080fd5b8251600160201b81118282018810171561050757600080fd5b82525081516020918201929091019080838360005b8381101561053457818101518382015260200161051c565b50505050905090810190601f1680156105615780820380516001836020036101000a031916815260200191505b50604052505050505050565b60065460ff1681565b6005544211156105c9576040805162461bcd60e51b8152602060048201526019602482015278151a1a5cc818dbdb9d1c9858dd081a185cc8195e1c1a5c9959603a1b604482015290519081900360640190fd5b600354156106085760405162461bcd60e51b81526004018080602001828103825260258152602001806107996025913960400191505060405180910390fd5b6000809054906101000a90046001600160a01b03166001600160a01b0316636a42b8f86040518163ffffffff1660e01b815260040160206040518083038186803b15801561065557600080fd5b505afa158015610669573d6000803e3d6000fd5b505050506040513d602081101561067f57600080fd5b50514201600381905560005460018054600280546040516346d2fbbb60e01b81526001600160a01b03938416600482810182815260248401859052606484018a90526080604485019081528254600019998116156101000299909901909816959095046084840181905295909716976346d2fbbb9791969395919490939092909160a490910190859080156107555780601f1061072a57610100808354040283529160200191610755565b820191906000526020600020905b81548152906001019060200180831161073857829003601f168201915b505095505050505050600060405180830381600087803b15801561077857600080fd5b505af115801561078c573d6000803e3d6000fd5b50505050565b6003548156fe54686973207370656c6c2068617320616c7265616479206265656e207363686564756c6564323032302d31312d3036204d616b657244414f20457865637574697665205370656c6c207c20486173683a20307839353863323436323837393164353066656234613063383466636265346638386532306338656566633363316362336337653161663231653533383865626261a265627a7a723158200eb4c9cb3c36d081250c835a88b8fe3f28150c312dc9bc43a8095d04a7434ebe64736f6c634300050c0032608060405234801561001057600080fd5b50612f81806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80636146195414610030575b600080fd5b61003861003a565b005b60408051630a6ba04560e21b8152634c696e6560e01b60048201527007a42132327cba2cbb88cd7fdcb43d80a360311b60248201529051600080516020612e6d833981519152916329ae811491604480830192600092919082900301818387803b1580156100a757600080fd5b505af11580156100bb573d6000803e3d6000fd5b505060408051630d05943f60e11b8152644554482d4160d81b6004820152636c696e6560e01b60248201526f51da79af09cf6327fbe2ff3aa4823ee160341b60448201529051600080516020612e6d8339815191529350631a0b287e9250606480830192600092919082900301818387803b15801561013957600080fd5b505af115801561014d573d6000803e3d6000fd5b505060408051630d05943f60e11b81526422aa2416a160d91b6004820152636c696e6560e01b60248201526f01aba4714957d300d0e549208b31adb160341b60448201529051600080516020612e6d8339815191529350631a0b287e9250606480830192600092919082900301818387803b1580156101cb57600080fd5b505af11580156101df573d6000803e3d6000fd5b505060408051630d05943f60e11b815265574254432d4160d01b6004820152636c696e6560e01b60248201526f01aba4714957d300d0e549208b31adb160381b60448201529051600080516020612e6d8339815191529350631a0b287e9250606480830192600092919082900301818387803b15801561025e57600080fd5b505af1158015610272573d6000803e3d6000fd5b505060408051630d05943f60e11b8152654d414e412d4160d01b6004820152636c696e6560e01b60248201526e558749db77f70029c77506823d22bd60311b60448201529051600080516020612e6d8339815191529350631a0b287e9250606480830192600092919082900301818387803b1580156102f057600080fd5b505af1158015610304573d6000803e3d6000fd5b505060408051630d05943f60e11b815265555344542d4160d01b6004820152636c696e6560e01b60248201526f01aba4714957d300d0e549208b31adb160321b60448201529051600080516020612e6d8339815191529350631a0b287e9250606480830192600092919082900301818387803b15801561038357600080fd5b505af1158015610397573d6000803e3d6000fd5b505060408051630d05943f60e11b8152654c494e4b2d4160d01b6004820152636c696e6560e01b60248201526f01aba4714957d300d0e549208b31adb160341b60448201529051600080516020612e6d8339815191529350631a0b287e9250606480830192600092919082900301818387803b15801561041657600080fd5b505af115801561042a573d6000803e3d6000fd5b50506040805163089c54b560e31b81526422aa2416a160d91b600482015290517319c0976f590d67707e62397c87829d896dc0f1f193506344e2a5a8925060248083019260209291908290030181600087803b15801561048957600080fd5b505af115801561049d573d6000803e3d6000fd5b505050506040513d60208110156104b357600080fd5b505060408051630d05943f60e11b81526422aa2416a160d91b6004820152636475747960e01b60248201526b033b2e3cb112f1349de86fd8604482015290517319c0976f590d67707e62397c87829d896dc0f1f191631a0b287e91606480830192600092919082900301818387803b15801561052e57600080fd5b505af1158015610542573d6000803e3d6000fd5b505060408051631e22f1e360e21b81526020600482015260056024820152640c4b8c4b8d60da1b60448201529051600080516020612f0d833981519152935063788bc78c9250606480830192600092919082900301818387803b1580156105a857600080fd5b505af11580156105bc573d6000803e3d6000fd5b5050505060006442414c2d4160d81b9050600080516020612e6d8339815191526001600160a01b0316600080516020612e8d8339815191526001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b15801561062c57600080fd5b505afa158015610640573d6000803e3d6000fd5b505050506040513d602081101561065657600080fd5b50516001600160a01b0316146106a8576040805162461bcd60e51b81526020600482015260126024820152710d4ded2dc5aecc2e85adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b80600080516020612e8d8339815191526001600160a01b031663c5ce281e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106f057600080fd5b505afa158015610704573d6000803e3d6000fd5b505050506040513d602081101561071a57600080fd5b505114610763576040805162461bcd60e51b81526020600482015260126024820152710d4ded2dc5ad2d8d65adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b73ba100000625a3754423978a60c9317c58a424e3d6001600160a01b0316600080516020612e8d8339815191526001600160a01b0316637bd2bea76040518163ffffffff1660e01b815260040160206040518083038186803b1580156107c857600080fd5b505afa1580156107dc573d6000803e3d6000fd5b505050506040513d60208110156107f257600080fd5b50516001600160a01b031614610844576040805162461bcd60e51b81526020600482015260126024820152710d4ded2dc5acecada5adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b600080516020612e8d8339815191526001600160a01b031663b3bcfa826040518163ffffffff1660e01b815260040160206040518083038186803b15801561088b57600080fd5b505afa15801561089f573d6000803e3d6000fd5b505050506040513d60208110156108b557600080fd5b5051601214610900576040805162461bcd60e51b81526020600482015260126024820152710d4ded2dc5ac8cac65adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b600080516020612e6d8339815191526001600160a01b0316600080516020612e2d8339815191526001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b15801561095f57600080fd5b505afa158015610973573d6000803e3d6000fd5b505050506040513d602081101561098957600080fd5b50516001600160a01b0316146109db576040805162461bcd60e51b81526020600482015260126024820152710ccd8d2e05aecc2e85adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b600080516020612eed8339815191526001600160a01b0316600080516020612e2d8339815191526001600160a01b031663e48818136040518163ffffffff1660e01b815260040160206040518083038186803b158015610a3a57600080fd5b505afa158015610a4e573d6000803e3d6000fd5b505050506040513d6020811015610a6457600080fd5b50516001600160a01b031614610ab6576040805162461bcd60e51b81526020600482015260126024820152710ccd8d2e05ac6c2e85adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b80600080516020612e2d8339815191526001600160a01b031663c5ce281e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610afe57600080fd5b505afa158015610b12573d6000803e3d6000fd5b505050506040513d6020811015610b2857600080fd5b505114610b71576040805162461bcd60e51b81526020600482015260126024820152710ccd8d2e05ad2d8d65adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b6040805163ca446dd960e01b81526210905360ea1b600482015273ba100000625a3754423978a60c9317c58a424e3d60248201529051600080516020612f0d8339815191529163ca446dd991604480830192600092919082900301818387803b158015610bdd57600080fd5b505af1158015610bf1573d6000803e3d6000fd5b50506040805163ca446dd960e01b81526614125417d0905360ca1b6004820152600080516020612ecd83398151915260248201529051600080516020612f0d833981519152935063ca446dd99250604480830192600092919082900301818387803b158015610c5f57600080fd5b505af1158015610c73573d6000803e3d6000fd5b50506040805163ca446dd960e01b81526d4d43445f4a4f494e5f42414c5f4160901b6004820152600080516020612e8d83398151915260248201529051600080516020612f0d833981519152935063ca446dd99250604480830192600092919082900301818387803b158015610ce857600080fd5b505af1158015610cfc573d6000803e3d6000fd5b50506040805163ca446dd960e01b81526d4d43445f464c49505f42414c5f4160901b6004820152600080516020612e2d83398151915260248201529051600080516020612f0d833981519152935063ca446dd99250604480830192600092919082900301818387803b158015610d7157600080fd5b505af1158015610d85573d6000803e3d6000fd5b50506040805163ebecb39d60e01b8152600481018590526207069760ec1b6024820152600080516020612ecd83398151915260448201529051600080516020612f2d833981519152935063ebecb39d9250606480830192600092919082900301818387803b158015610df657600080fd5b505af1158015610e0a573d6000803e3d6000fd5b50506040805163ebecb39d60e01b815260048101859052630666c69760e41b6024820152600080516020612e2d83398151915260448201529051600080516020612eed833981519152935063ebecb39d9250606480830192600092919082900301818387803b158015610e7c57600080fd5b505af1158015610e90573d6000803e3d6000fd5b50505050600080516020612e6d8339815191526001600160a01b0316633b663195826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610ee857600080fd5b505af1158015610efc573d6000803e3d6000fd5b505050507319c0976f590d67707e62397c87829d896dc0f1f16001600160a01b0316633b663195826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610f5a57600080fd5b505af1158015610f6e573d6000803e3d6000fd5b5050604080516332fd71af60e11b8152600080516020612e8d83398151915260048201529051600080516020612e6d83398151915293506365fae35e9250602480830192600092919082900301818387803b158015610fcc57600080fd5b505af1158015610fe0573d6000803e3d6000fd5b5050604080516332fd71af60e11b8152600080516020612e2d83398151915260048201529051600080516020612eed83398151915293506365fae35e9250602480830192600092919082900301818387803b15801561103e57600080fd5b505af1158015611052573d6000803e3d6000fd5b5050604080516332fd71af60e11b8152600080516020612eed83398151915260048201529051600080516020612e2d83398151915293506365fae35e9250602480830192600092919082900301818387803b1580156110b057600080fd5b505af11580156110c4573d6000803e3d6000fd5b5050604080516332fd71af60e11b815273ab14d3ce3f733cacb76ec2abe7d2fcb00c99f3d560048201529051600080516020612e2d83398151915293506365fae35e9250602480830192600092919082900301818387803b15801561112857600080fd5b505af115801561113c573d6000803e3d6000fd5b5050604080516332fd71af60e11b815273c4be7f74ee3743bded8e0fa218ee5cf06397f47260048201529051600080516020612e2d83398151915293506365fae35e9250602480830192600092919082900301818387803b1580156111a057600080fd5b505af11580156111b4573d6000803e3d6000fd5b5050604080516332fd71af60e11b81527376416a4d5190d071bfed309861527431304aa14f60048201529051600080516020612ecd83398151915293506365fae35e9250602480830192600092919082900301818387803b15801561121857600080fd5b505af115801561122c573d6000803e3d6000fd5b50505050600080516020612ecd8339815191526001600160a01b0316632e7dc6af6040518163ffffffff1660e01b815260040160206040518083038186803b15801561127757600080fd5b505afa15801561128b573d6000803e3d6000fd5b505050506040513d60208110156112a157600080fd5b505160408051633ca70a7160e21b8152600080516020612ecd833981519152600482015290516001600160a01b039092169163f29c29c49160248082019260009290919082900301818387803b1580156112fa57600080fd5b505af115801561130e573d6000803e3d6000fd5b505060408051633ca70a7160e21b8152600080516020612f2d83398151915260048201529051600080516020612ecd833981519152935063f29c29c49250602480830192600092919082900301818387803b15801561136c57600080fd5b505af1158015611380573d6000803e3d6000fd5b505060408051633ca70a7160e21b815273ab14d3ce3f733cacb76ec2abe7d2fcb00c99f3d560048201529051600080516020612ecd833981519152935063f29c29c49250602480830192600092919082900301818387803b1580156113e457600080fd5b505af11580156113f8573d6000803e3d6000fd5b5050604080516364c66fc360e11b815260048101859052600080516020612ecd833981519152602482015290517376416a4d5190d071bfed309861527431304aa14f935063c98cdf869250604480830192600092919082900301818387803b15801561146357600080fd5b505af1158015611477573d6000803e3d6000fd5b505060408051630d05943f60e11b815260048101859052636c696e6560e01b60248201526e558749db77f70029c77506823d22bd60351b60448201529051600080516020612e6d8339815191529350631a0b287e9250606480830192600092919082900301818387803b1580156114ed57600080fd5b505af1158015611501573d6000803e3d6000fd5b505060408051630d05943f60e11b81526004810185905263191d5cdd60e21b60248201526d23084f676940b7915149bd08b30d602f1b60448201529051600080516020612e6d8339815191529350631a0b287e9250606482810192600092919082900301818387803b15801561157657600080fd5b505af115801561158a573d6000803e3d6000fd5b505060408051630d05943f60e11b8152600481018590526364756e6b60e01b60248201526e111b0ec57e6499a1f4b1014d3f6d5960311b60448201529051600080516020612eed8339815191529350631a0b287e9250606480830192600092919082900301818387803b15801561160057600080fd5b505af1158015611614573d6000803e3d6000fd5b505060408051630d05943f60e11b81526004810185905263063686f760e41b6024820152670fae91035431000060448201529051600080516020612eed8339815191529350631a0b287e9250606482810192600092919082900301818387803b15801561168057600080fd5b505af1158015611694573d6000803e3d6000fd5b505060408051630d05943f60e11b815260048101859052636475747960e01b60248201526b033b2e3cb548ff197d3905a0604482015290517319c0976f590d67707e62397c87829d896dc0f1f19350631a0b287e9250606480830192600092919082900301818387803b15801561170a57600080fd5b505af115801561171e573d6000803e3d6000fd5b505060408051630a6ba04560e21b81526262656760e81b6004820152670e4b4b8af6a7000060248201529051600080516020612e2d83398151915293506329ae81149250604480830192600092919082900301818387803b15801561178257600080fd5b505af1158015611796573d6000803e3d6000fd5b505060408051630a6ba04560e21b8152621d1d1b60ea1b600482015261546060248201529051600080516020612e2d83398151915293506329ae81149250604480830192600092919082900301818387803b1580156117f457600080fd5b505af1158015611808573d6000803e3d6000fd5b505060408051630a6ba04560e21b81526274617560e81b600482015261546060248201529051600080516020612e2d83398151915293506329ae81149250604480830192600092919082900301818387803b15801561186657600080fd5b505af115801561187a573d6000803e3d6000fd5b505060408051630d05943f60e11b815260048101859052621b585d60ea1b60248201526b05a790ea17ace06a9600000060448201529051600080516020612f2d8339815191529350631a0b287e9250606482810192600092919082900301818387803b1580156118e957600080fd5b505af11580156118fd573d6000803e3d6000fd5b50505050600080516020612f2d8339815191526001600160a01b0316631504460f826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561195557600080fd5b505af1158015611969573d6000803e3d6000fd5b505060408051630a3b0a4f60e01b8152600080516020612e8d83398151915260048201529051738b4ce5dcbb01e0e1f0521cd8dcfb31b308e52c249350630a3b0a4f9250602480830192600092919082900301818387803b1580156119cd57600080fd5b505af11580156119e1573d6000803e3d6000fd5b50505050645946492d4160d81b9050600080516020612e6d8339815191526001600160a01b0316600080516020612e4d8339815191526001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015611a4f57600080fd5b505afa158015611a63573d6000803e3d6000fd5b505050506040513d6020811015611a7957600080fd5b50516001600160a01b031614611acb576040805162461bcd60e51b81526020600482015260126024820152710d4ded2dc5aecc2e85adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b80600080516020612e4d8339815191526001600160a01b031663c5ce281e6040518163ffffffff1660e01b815260040160206040518083038186803b158015611b1357600080fd5b505afa158015611b27573d6000803e3d6000fd5b505050506040513d6020811015611b3d57600080fd5b505114611b86576040805162461bcd60e51b81526020600482015260126024820152710d4ded2dc5ad2d8d65adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b730bc529c00c6401aef6d220be8c6ea1667f6ad93e6001600160a01b0316600080516020612e4d8339815191526001600160a01b0316637bd2bea76040518163ffffffff1660e01b815260040160206040518083038186803b158015611beb57600080fd5b505afa158015611bff573d6000803e3d6000fd5b505050506040513d6020811015611c1557600080fd5b50516001600160a01b031614611c67576040805162461bcd60e51b81526020600482015260126024820152710d4ded2dc5acecada5adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b600080516020612e4d8339815191526001600160a01b031663b3bcfa826040518163ffffffff1660e01b815260040160206040518083038186803b158015611cae57600080fd5b505afa158015611cc2573d6000803e3d6000fd5b505050506040513d6020811015611cd857600080fd5b5051601214611d23576040805162461bcd60e51b81526020600482015260126024820152710d4ded2dc5ac8cac65adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b600080516020612e6d8339815191526001600160a01b0316600080516020612ead8339815191526001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015611d8257600080fd5b505afa158015611d96573d6000803e3d6000fd5b505050506040513d6020811015611dac57600080fd5b50516001600160a01b031614611dfe576040805162461bcd60e51b81526020600482015260126024820152710ccd8d2e05aecc2e85adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b600080516020612eed8339815191526001600160a01b0316600080516020612ead8339815191526001600160a01b031663e48818136040518163ffffffff1660e01b815260040160206040518083038186803b158015611e5d57600080fd5b505afa158015611e71573d6000803e3d6000fd5b505050506040513d6020811015611e8757600080fd5b50516001600160a01b031614611ed9576040805162461bcd60e51b81526020600482015260126024820152710ccd8d2e05ac6c2e85adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b80600080516020612ead8339815191526001600160a01b031663c5ce281e6040518163ffffffff1660e01b815260040160206040518083038186803b158015611f2157600080fd5b505afa158015611f35573d6000803e3d6000fd5b505050506040513d6020811015611f4b57600080fd5b505114611f94576040805162461bcd60e51b81526020600482015260126024820152710ccd8d2e05ad2d8d65adcdee85adac2e8c6d60731b604482015290519081900360640190fd5b6040805163ca446dd960e01b81526259464960e81b6004820152730bc529c00c6401aef6d220be8c6ea1667f6ad93e60248201529051600080516020612f0d8339815191529163ca446dd991604480830192600092919082900301818387803b15801561200057600080fd5b505af1158015612014573d6000803e3d6000fd5b50506040805163ca446dd960e01b8152665049505f59464960c81b6004820152600080516020612e0d83398151915260248201529051600080516020612f0d833981519152935063ca446dd99250604480830192600092919082900301818387803b15801561208257600080fd5b505af1158015612096573d6000803e3d6000fd5b50506040805163ca446dd960e01b81526d4d43445f4a4f494e5f5946495f4160901b6004820152600080516020612e4d83398151915260248201529051600080516020612f0d833981519152935063ca446dd99250604480830192600092919082900301818387803b15801561210b57600080fd5b505af115801561211f573d6000803e3d6000fd5b50506040805163ca446dd960e01b81526d4d43445f464c49505f5946495f4160901b6004820152600080516020612ead83398151915260248201529051600080516020612f0d833981519152935063ca446dd99250604480830192600092919082900301818387803b15801561219457600080fd5b505af11580156121a8573d6000803e3d6000fd5b50506040805163ebecb39d60e01b8152600481018590526207069760ec1b6024820152600080516020612e0d83398151915260448201529051600080516020612f2d833981519152935063ebecb39d9250606480830192600092919082900301818387803b15801561221957600080fd5b505af115801561222d573d6000803e3d6000fd5b50506040805163ebecb39d60e01b815260048101859052630666c69760e41b6024820152600080516020612ead83398151915260448201529051600080516020612eed833981519152935063ebecb39d9250606480830192600092919082900301818387803b15801561229f57600080fd5b505af11580156122b3573d6000803e3d6000fd5b50505050600080516020612e6d8339815191526001600160a01b0316633b663195826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561230b57600080fd5b505af115801561231f573d6000803e3d6000fd5b505050507319c0976f590d67707e62397c87829d896dc0f1f16001600160a01b0316633b663195826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561237d57600080fd5b505af1158015612391573d6000803e3d6000fd5b5050604080516332fd71af60e11b8152600080516020612e4d83398151915260048201529051600080516020612e6d83398151915293506365fae35e9250602480830192600092919082900301818387803b1580156123ef57600080fd5b505af1158015612403573d6000803e3d6000fd5b5050604080516332fd71af60e11b8152600080516020612ead83398151915260048201529051600080516020612eed83398151915293506365fae35e9250602480830192600092919082900301818387803b15801561246157600080fd5b505af1158015612475573d6000803e3d6000fd5b5050604080516332fd71af60e11b8152600080516020612eed83398151915260048201529051600080516020612ead83398151915293506365fae35e9250602480830192600092919082900301818387803b1580156124d357600080fd5b505af11580156124e7573d6000803e3d6000fd5b5050604080516332fd71af60e11b815273ab14d3ce3f733cacb76ec2abe7d2fcb00c99f3d560048201529051600080516020612ead83398151915293506365fae35e9250602480830192600092919082900301818387803b15801561254b57600080fd5b505af115801561255f573d6000803e3d6000fd5b5050604080516332fd71af60e11b815273c4be7f74ee3743bded8e0fa218ee5cf06397f47260048201529051600080516020612ead83398151915293506365fae35e9250602480830192600092919082900301818387803b1580156125c357600080fd5b505af11580156125d7573d6000803e3d6000fd5b5050604080516332fd71af60e11b81527376416a4d5190d071bfed309861527431304aa14f60048201529051600080516020612e0d83398151915293506365fae35e9250602480830192600092919082900301818387803b15801561263b57600080fd5b505af115801561264f573d6000803e3d6000fd5b50505050600080516020612e0d8339815191526001600160a01b0316632e7dc6af6040518163ffffffff1660e01b815260040160206040518083038186803b15801561269a57600080fd5b505afa1580156126ae573d6000803e3d6000fd5b505050506040513d60208110156126c457600080fd5b505160408051633ca70a7160e21b8152600080516020612e0d833981519152600482015290516001600160a01b039092169163f29c29c49160248082019260009290919082900301818387803b15801561271d57600080fd5b505af1158015612731573d6000803e3d6000fd5b505060408051633ca70a7160e21b8152600080516020612f2d83398151915260048201529051600080516020612e0d833981519152935063f29c29c49250602480830192600092919082900301818387803b15801561278f57600080fd5b505af11580156127a3573d6000803e3d6000fd5b505060408051633ca70a7160e21b815273ab14d3ce3f733cacb76ec2abe7d2fcb00c99f3d560048201529051600080516020612e0d833981519152935063f29c29c49250602480830192600092919082900301818387803b15801561280757600080fd5b505af115801561281b573d6000803e3d6000fd5b5050604080516364c66fc360e11b815260048101859052600080516020612e0d833981519152602482015290517376416a4d5190d071bfed309861527431304aa14f935063c98cdf869250604480830192600092919082900301818387803b15801561288657600080fd5b505af115801561289a573d6000803e3d6000fd5b505060408051630d05943f60e11b815260048101859052636c696e6560e01b60248201526f0256b3050047c1012474332d8fabf32b60331b60448201529051600080516020612e6d8339815191529350631a0b287e9250606480830192600092919082900301818387803b15801561291157600080fd5b505af1158015612925573d6000803e3d6000fd5b505060408051630d05943f60e11b81526004810185905263191d5cdd60e21b60248201526d23084f676940b7915149bd08b30d602f1b60448201529051600080516020612e6d8339815191529350631a0b287e9250606482810192600092919082900301818387803b15801561299a57600080fd5b505af11580156129ae573d6000803e3d6000fd5b505060408051630d05943f60e11b8152600481018590526364756e6b60e01b60248201526e111b0ec57e6499a1f4b1014d3f6d5960311b60448201529051600080516020612eed8339815191529350631a0b287e9250606480830192600092919082900301818387803b158015612a2457600080fd5b505af1158015612a38573d6000803e3d6000fd5b505060408051630d05943f60e11b81526004810185905263063686f760e41b6024820152670fae91035431000060448201529051600080516020612eed8339815191529350631a0b287e9250606482810192600092919082900301818387803b158015612aa457600080fd5b505af1158015612ab8573d6000803e3d6000fd5b505060408051630d05943f60e11b815260048101859052636475747960e01b60248201526b033b2e3cb112f1349de86fd8604482015290517319c0976f590d67707e62397c87829d896dc0f1f19350631a0b287e9250606480830192600092919082900301818387803b158015612b2e57600080fd5b505af1158015612b42573d6000803e3d6000fd5b505060408051630a6ba04560e21b81526262656760e81b6004820152670e4b4b8af6a7000060248201529051600080516020612ead83398151915293506329ae81149250604480830192600092919082900301818387803b158015612ba657600080fd5b505af1158015612bba573d6000803e3d6000fd5b505060408051630a6ba04560e21b8152621d1d1b60ea1b600482015261546060248201529051600080516020612ead83398151915293506329ae81149250604480830192600092919082900301818387803b158015612c1857600080fd5b505af1158015612c2c573d6000803e3d6000fd5b505060408051630a6ba04560e21b81526274617560e81b600482015261546060248201529051600080516020612ead83398151915293506329ae81149250604480830192600092919082900301818387803b158015612c8a57600080fd5b505af1158015612c9e573d6000803e3d6000fd5b505060408051630d05943f60e11b815260048101859052621b585d60ea1b60248201526b05a790ea17ace06a9600000060448201529051600080516020612f2d8339815191529350631a0b287e9250606482810192600092919082900301818387803b158015612d0d57600080fd5b505af1158015612d21573d6000803e3d6000fd5b50505050600080516020612f2d8339815191526001600160a01b0316631504460f826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015612d7957600080fd5b505af1158015612d8d573d6000803e3d6000fd5b505060408051630a3b0a4f60e01b8152600080516020612e4d83398151915260048201529051738b4ce5dcbb01e0e1f0521cd8dcfb31b308e52c249350630a3b0a4f9250602480830192600092919082900301818387803b158015612df157600080fd5b505af1158015612e05573d6000803e3d6000fd5b505050505056fe0000000000000000000000005f122465bcf86f45922036970be6dd7f58820214000000000000000000000000b2b9bd446ee5e58036d2876fce62b7ab7334583e0000000000000000000000003ff33d9162ad47660083d7dc4bc02fb231c8167700000000000000000000000035d1b3f3d7966a1dfe207aa4514c12a259a0492b0000000000000000000000004a03aa7fb3973d8f0221b466eefb53d0ac195f55000000000000000000000000ee4c9c36257afb8098059a4763a374a4ecfe28a70000000000000000000000003ff860c0f28d69f392543a16a397d0dae85d16de000000000000000000000000a5679c04fc3d9d8b0aab1f0ab83555b301ca70ea000000000000000000000000da0ab1e0017debcd72be8599041a2aa3ba7e740f00000000000000000000000065c79fcb50ca1594b025960e539ed7a9a6d434a3a265627a7a7231582051db4002780dd971d8ab26e4d27b82690d4a3d4406f99abbb5abf95af8bfb4ba64736f6c634300050c0032
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061008d5760003560e01c8062a7029b146100925780630a7a1c4d1461010f5780634665096d1461013357806351f910661461014d5780637284e416146101555780638456cb591461015d57806396d373e514610165578063ae8421e11461016f578063b0604a261461018b578063f7992d8514610193575b600080fd5b61009a61019b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100d45781810151838201526020016100bc565b50505050905090810190601f1680156101015780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610117610229565b604080516001600160a01b039092168252519081900360200190f35b61013b610238565b60408051918252519081900360200190f35b61013b61023e565b61009a610244565b610117610260565b61016d61026f565b005b61017761056d565b604080519115158252519081900360200190f35b61016d610576565b61013b610792565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156102215780601f106101f657610100808354040283529160200191610221565b820191906000526020600020905b81548152906001019060200180831161020457829003601f168201915b505050505081565b6001546001600160a01b031681565b60055481565b60025481565b6040518060a00160405280606e81526020016107be606e913981565b6000546001600160a01b031681565b600762015180420460030106600581106102d0576040805162461bcd60e51b815260206004820152601d60248201527f43616e206f6e6c792062652063617374206f6e2061207765656b646179000000604482015290519081900360640190fd5b6018610e10420406600e81108015906102e95750601581105b610331576040805162461bcd60e51b81526020600482015260146024820152734f757473696465206f666669636520686f75727360601b604482015290519081900360640190fd5b60065460ff161561037e576040805162461bcd60e51b81526020600482015260126024820152711cdc195b1b0b585b1c9958591e4b58d85cdd60721b604482015290519081900360640190fd5b6006805460ff1916600190811790915560005481546002805460035460405163168ccd6760e01b81526001600160a01b039485166004828101828152602484018690526064840185905260806044850190815282546000199b811615610100029b909b01909a169690960460848401819052969097169763168ccd67979196949591949192909160a4909101908590801561045a5780601f1061042f5761010080835404028352916020019161045a565b820191906000526020600020905b81548152906001019060200180831161043d57829003601f168201915b505095505050505050600060405180830381600087803b15801561047d57600080fd5b505af1158015610491573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156104ba57600080fd5b8101908080516040519392919084600160201b8211156104d957600080fd5b9083019060208201858111156104ee57600080fd5b8251600160201b81118282018810171561050757600080fd5b82525081516020918201929091019080838360005b8381101561053457818101518382015260200161051c565b50505050905090810190601f1680156105615780820380516001836020036101000a031916815260200191505b50604052505050505050565b60065460ff1681565b6005544211156105c9576040805162461bcd60e51b8152602060048201526019602482015278151a1a5cc818dbdb9d1c9858dd081a185cc8195e1c1a5c9959603a1b604482015290519081900360640190fd5b600354156106085760405162461bcd60e51b81526004018080602001828103825260258152602001806107996025913960400191505060405180910390fd5b6000809054906101000a90046001600160a01b03166001600160a01b0316636a42b8f86040518163ffffffff1660e01b815260040160206040518083038186803b15801561065557600080fd5b505afa158015610669573d6000803e3d6000fd5b505050506040513d602081101561067f57600080fd5b50514201600381905560005460018054600280546040516346d2fbbb60e01b81526001600160a01b03938416600482810182815260248401859052606484018a90526080604485019081528254600019998116156101000299909901909816959095046084840181905295909716976346d2fbbb9791969395919490939092909160a490910190859080156107555780601f1061072a57610100808354040283529160200191610755565b820191906000526020600020905b81548152906001019060200180831161073857829003601f168201915b505095505050505050600060405180830381600087803b15801561077857600080fd5b505af115801561078c573d6000803e3d6000fd5b50505050565b6003548156fe54686973207370656c6c2068617320616c7265616479206265656e207363686564756c6564323032302d31312d3036204d616b657244414f20457865637574697665205370656c6c207c20486173683a20307839353863323436323837393164353066656234613063383466636265346638386532306338656566633363316362336337653161663231653533383865626261a265627a7a723158200eb4c9cb3c36d081250c835a88b8fe3f28150c312dc9bc43a8095d04a7434ebe64736f6c634300050c0032
Deployed Bytecode Sourcemap
28964:1856:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28964:1856:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29197:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;29197:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29095:29;;;:::i;:::-;;;;-1:-1:-1;;;;;29095:29:0;;;;;;;;;;;;;;29230:33;;;:::i;:::-;;;;;;;;;;;;;;;;29131:26;;;:::i;29655:158::-;;;:::i;28989:99::-;;;:::i;30661:156::-;;;:::i;:::-;;29270:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;30386:267;;;:::i;29164:26::-;;;:::i;29197:::-;;;;;;;;;;;;;;;-1:-1:-1;;29197:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;29095:29::-;;;-1:-1:-1;;;;;29095:29:0;;:::o;29230:33::-;;;;:::o;29131:26::-;;;;:::o;29655:158::-;;;;;;;;;;;;;;;;;;;:::o;28989:99::-;;;-1:-1:-1;;;;;28989:99:0;;:::o;30661:156::-;30189:1;30175:6;30169:3;:12;30184:1;30169:16;30168:22;30215:1;30209:7;;30201:49;;;;;-1:-1:-1;;;30201:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;30289:2;30279:7;30273:3;:13;:18;30318:2;30310:10;;;;;:23;;;30331:2;30324:4;:9;30310:23;30302:56;;;;;-1:-1:-1;;;30302:56:0;;;;;;;;;;;;-1:-1:-1;;;30302:56:0;;;;;;;;;;;;;;;30716:4;;;;30715:5;30707:36;;;;;-1:-1:-1;;;30707:36:0;;;;;;;;;;;;-1:-1:-1;;;30707:36:0;;;;;;;;;;;;;;;30754:4;:11;;-1:-1:-1;;30754:11:0;30761:4;30754:11;;;;;;:4;30776:5;30787:6;;30795:3;;;30805;;30776:33;;-1:-1:-1;;;30776:33:0;;-1:-1:-1;;;;;30787:6:0;;;30800:3;30776:33;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;30776:33:0;;;;30754:11;30776:33;;;;;;;;;;;;;;;;;;:5;;;;;:10;;30787:6;;30795:3;;30800;;30776:33;;;;;;;;;30800:3;;30776:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30776:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30776:33:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;30776:33:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;30776:33:0;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;30776:33:0;;420:4:-1;411:14;;;;30776:33:0;;;;;411:14:-1;30776:33:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;30776:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30661:156;;:::o;29270:27::-;;;;;;:::o;30386:267::-;30439:10;;30432:3;:17;;30424:55;;;;;-1:-1:-1;;;30424:55:0;;;;;;;;;;;;-1:-1:-1;;;30424:55:0;;;;;;;;;;;;;;;30498:3;;:8;30490:58;;;;-1:-1:-1;;;30490:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30587:5;;;;;;;;;-1:-1:-1;;;;;30587:5:0;-1:-1:-1;;;;;30571:28:0;;:30;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30571:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30571:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30571:30:0;30565:3;:36;30559:3;:42;;;30612:5;;;30623:6;;30631:3;;;30612:33;;-1:-1:-1;;;30612:33:0;;-1:-1:-1;;;;;30623:6:0;;;30636:3;30612:33;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;30612:33:0;;;;:5;:33;;;;;;;;;;;;;;;;;;:5;;;;;:10;;30623:6;;30631:3;;30636;;30565:36;;30612:33;;;;;;;;;30636:3;;30612:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30612:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30612:33:0;;;;30386:267::o;29164:26::-;;;;:::o
Swarm Source
bzzr://51db4002780dd971d8ab26e4d27b82690d4a3d4406f99abbb5abf95af8bfb4ba
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.