ETH Price: $3,238.27 (-0.48%)

Contract

0x206d268c0bBf3fBd8dAB35BA91ca89203A3c59AA
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Update Result117253102021-01-25 14:02:281446 days ago1611583348IN
0x206d268c...03A3c59AA
0 ETH0.0068342794
Update Result117241832021-01-25 10:02:151446 days ago1611568935IN
0x206d268c...03A3c59AA
0 ETH0.0063253387
Update Result117230912021-01-25 6:03:071446 days ago1611554587IN
0x206d268c...03A3c59AA
0 ETH0.0061799285
Update Result117220102021-01-25 2:02:131447 days ago1611540133IN
0x206d268c...03A3c59AA
0 ETH0.00807025111
Update Result117209222021-01-24 22:01:461447 days ago1611525706IN
0x206d268c...03A3c59AA
0 ETH0.0052347672
Update Result117198502021-01-24 18:02:581447 days ago1611511378IN
0x206d268c...03A3c59AA
0 ETH0.0054528775
Update Result117187502021-01-24 14:03:451447 days ago1611497025IN
0x206d268c...03A3c59AA
0 ETH0.0037079551
Update Result117176652021-01-24 10:02:501447 days ago1611482570IN
0x206d268c...03A3c59AA
0 ETH0.003671650.5
Update Result117166152021-01-24 6:02:381447 days ago1611468158IN
0x206d268c...03A3c59AA
0 ETH0.0045077162.00000145
Update Result117155362021-01-24 2:02:311448 days ago1611453751IN
0x206d268c...03A3c59AA
0 ETH0.0038130852.44600146
Update Result117144462021-01-23 22:02:041448 days ago1611439324IN
0x206d268c...03A3c59AA
0 ETH0.0060926483.79950597
Update Result117133192021-01-23 18:02:341448 days ago1611424954IN
0x206d268c...03A3c59AA
0 ETH0.0068342794
Update Result117122582021-01-23 14:02:211448 days ago1611410541IN
0x206d268c...03A3c59AA
0 ETH0.0044895361.750001
Update Result117111482021-01-23 10:02:081448 days ago1611396128IN
0x206d268c...03A3c59AA
0 ETH0.005569276.6000008
Update Result117100982021-01-23 6:03:181448 days ago1611381798IN
0x206d268c...03A3c59AA
0 ETH0.0036352550
Update Result117089852021-01-23 2:02:011449 days ago1611367321IN
0x206d268c...03A3c59AA
0 ETH0.0049439468
Update Result117078942021-01-22 22:02:101449 days ago1611352930IN
0x206d268c...03A3c59AA
0 ETH0.0039987755
Update Result117068022021-01-22 18:02:051449 days ago1611338525IN
0x206d268c...03A3c59AA
0 ETH0.0087973121
Update Result117057322021-01-22 14:03:161449 days ago1611324196IN
0x206d268c...03A3c59AA
0 ETH0.00748861103
Update Result117046442021-01-22 10:02:201449 days ago1611309740IN
0x206d268c...03A3c59AA
0 ETH0.0051620571
Update Result117036152021-01-22 6:11:411449 days ago1611295901IN
0x206d268c...03A3c59AA
0 ETH0.0055982877.00000145
Update Result117025502021-01-22 2:02:191450 days ago1611280939IN
0x206d268c...03A3c59AA
0 ETH0.02893659398.00000145
Update Result117014412021-01-21 22:07:081450 days ago1611266828IN
0x206d268c...03A3c59AA
0 ETH0.005816480
Update Result117002992021-01-21 18:02:151450 days ago1611252135IN
0x206d268c...03A3c59AA
0 ETH0.0073432101
Update Result116992292021-01-21 14:02:121450 days ago1611237732IN
0x206d268c...03A3c59AA
0 ETH0.0057509679.1
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DSM

Compiler Version
v0.6.7+commit.b8d736ae

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2020-10-26
*/

pragma solidity ^0.6.7;

abstract contract DSValueLike {
    function getResultWithValidity() virtual external view returns (uint256, bool);
}

contract DSM {
    // --- Auth ---
    mapping (address => uint) public authorizedAccounts;
    /**
    * @notice Add auth to an account
    * @param account Account to add auth to
    */
    function addAuthorization(address account) external isAuthorized {
        authorizedAccounts[account] = 1;
        emit AddAuthorization(account);
    }
    /**
    * @notice Remove auth from an account
    * @param account Account to remove auth from
    */
    function removeAuthorization(address account) external isAuthorized {
        authorizedAccounts[account] = 0;
        emit RemoveAuthorization(account);
    }
    /**
    * @notice Checks whether msg.sender can call an authed function
    **/
    modifier isAuthorized {
        require(authorizedAccounts[msg.sender] == 1, "DSM/account-not-authorized");
        _;
    }

    // --- Stop ---
    uint256 public stopped;
    modifier stoppable { require(stopped == 0, "DSM/is-stopped"); _; }

    // --- Math ---
    function add(uint64 x, uint64 y) internal pure returns (uint64 z) {
        z = x + y;
        require(z >= x);
    }

    address public priceSource;
    uint16  public updateDelay = ONE_HOUR;      // [seconds]
    uint64  public lastUpdateTime;              // [timestamp]
    uint256 public newPriceDeviation;           // [wad]

    uint16  constant ONE_HOUR = uint16(3600);   // [seconds]
    uint256 public constant WAD = 10 ** 18;

    struct Feed {
        uint128 value;
        uint128 isValid;
    }

    Feed currentFeed;
    Feed nextFeed;

    // --- Events ---
    event AddAuthorization(address account);
    event RemoveAuthorization(address account);
    event Start();
    event Stop();
    event ChangePriceSource(address priceSource);
    event ChangeDeviation(uint deviation);
    event ChangeDelay(uint16 delay);
    event RestartValue();
    event UpdateResult(uint256 newMedian, uint256 lastUpdateTime);

    constructor (address priceSource_, uint256 deviation) public {
        require(both(deviation > 0, deviation < WAD), "DSM/invalid-deviation");
        authorizedAccounts[msg.sender] = 1;
        priceSource = priceSource_;
        newPriceDeviation = deviation;
        if (priceSource != address(0)) {
          (uint256 priceFeedValue, bool hasValidValue) = getPriceSourceUpdate();
          if (hasValidValue) {
            nextFeed = Feed(uint128(uint(priceFeedValue)), 1);
            currentFeed = nextFeed;
            lastUpdateTime = latestUpdateTime(currentTime());
            emit UpdateResult(uint(currentFeed.value), lastUpdateTime);
          }
        }
        emit AddAuthorization(msg.sender);
        emit ChangePriceSource(priceSource);
        emit ChangeDeviation(deviation);
    }

    // --- Boolean Logic ---
    function both(bool x, bool y) internal pure returns (bool z) {
        assembly{ z := and(x, y)}
    }

    // --- Math ---
    function subtract(uint x, uint y) public pure returns (uint z) {
        z = x - y;
        require(z <= x);
    }
    function multiply(uint x, uint y) public pure returns (uint z) {
        require(y == 0 || (z = x * y) / y == x);
    }
    function wmultiply(uint x, uint y) public pure returns (uint z) {
        z = multiply(x, y) / WAD;
    }

    // --- Administration ---
    function stop() external isAuthorized {
        stopped = 1;
        emit Stop();
    }
    function start() external isAuthorized {
        stopped = 0;
        emit Start();
    }

    function changePriceSource(address priceSource_) external isAuthorized {
        priceSource = priceSource_;
        emit ChangePriceSource(priceSource);
    }

    // --- Utils ---
    function currentTime() internal view returns (uint) {
        return block.timestamp;
    }

    function latestUpdateTime(uint timestamp) internal view returns (uint64) {
        require(updateDelay != 0, "DSM/update-delay-is-zero");
        return uint64(timestamp - (timestamp % updateDelay));
    }

    function changeNextPriceDeviation(uint deviation) external isAuthorized {
        require(both(deviation > 0, deviation < WAD), "DSM/invalid-deviation");
        newPriceDeviation = deviation;
        emit ChangeDeviation(deviation);
    }

    function changeDelay(uint16 delay) external isAuthorized {
        require(delay > 0, "DSM/delay-is-zero");
        updateDelay = delay;
        emit ChangeDelay(updateDelay);
    }

    function restartValue() external isAuthorized {
        currentFeed = nextFeed = Feed(0, 0);
        stopped = 1;
        emit RestartValue();
    }

    function passedDelay() public view returns (bool ok) {
        return currentTime() >= add(lastUpdateTime, updateDelay);
    }

    function updateResult() external stoppable {
        require(passedDelay(), "DSM/not-passed");
        (uint256 priceFeedValue, bool hasValidValue) = getPriceSourceUpdate();
        if (hasValidValue) {
            currentFeed.isValid = nextFeed.isValid;
            currentFeed.value   = getNextBoundedPrice();
            nextFeed            = Feed(uint128(priceFeedValue), 1);
            lastUpdateTime      = latestUpdateTime(currentTime());
            emit UpdateResult(uint(currentFeed.value), lastUpdateTime);
        }
    }

    // --- Getters ---
    function getPriceSourceUpdate() internal view returns (uint256, bool) {
        try DSValueLike(priceSource).getResultWithValidity() returns (uint256 priceFeedValue, bool hasValidValue) {
          return (priceFeedValue, hasValidValue);
        }
        catch(bytes memory) {
          return (0, false);
        }
    }

    function getNextBoundedPrice() public view returns (uint128 boundedPrice) {
        boundedPrice = nextFeed.value;
        if (currentFeed.value == 0) return boundedPrice;

        uint128 lowerBound = uint128(wmultiply(uint(currentFeed.value), newPriceDeviation));
        uint128 upperBound = uint128(wmultiply(uint(currentFeed.value), subtract(multiply(uint(2), WAD), newPriceDeviation)));

        if (nextFeed.value < lowerBound) {
          boundedPrice = lowerBound;
        } else if (nextFeed.value > upperBound) {
          boundedPrice = upperBound;
        }
    }

    function getNextPriceLowerBound() public view returns (uint128) {
        return uint128(wmultiply(uint(currentFeed.value), newPriceDeviation));
    }

    function getNextPriceUpperBound() public view returns (uint128) {
        return uint128(wmultiply(uint(currentFeed.value), subtract(multiply(uint(2), WAD), newPriceDeviation)));
    }

    function getResultWithValidity() external view returns (uint256, bool) {
        return (uint(currentFeed.value), currentFeed.isValid == 1);
    }

    function getNextResultWithValidity() external view returns (uint256, bool) {
        return (nextFeed.value, nextFeed.isValid == 1);
    }

    function read() external view returns (uint256) {
        require(currentFeed.isValid == 1, "DSM/no-current-value");
        return currentFeed.value;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"priceSource_","type":"address"},{"internalType":"uint256","name":"deviation","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"AddAuthorization","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"delay","type":"uint16"}],"name":"ChangeDelay","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"deviation","type":"uint256"}],"name":"ChangeDeviation","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"priceSource","type":"address"}],"name":"ChangePriceSource","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"RemoveAuthorization","type":"event"},{"anonymous":false,"inputs":[],"name":"RestartValue","type":"event"},{"anonymous":false,"inputs":[],"name":"Start","type":"event"},{"anonymous":false,"inputs":[],"name":"Stop","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMedian","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lastUpdateTime","type":"uint256"}],"name":"UpdateResult","type":"event"},{"inputs":[],"name":"WAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addAuthorization","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"authorizedAccounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"delay","type":"uint16"}],"name":"changeDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"deviation","type":"uint256"}],"name":"changeNextPriceDeviation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"priceSource_","type":"address"}],"name":"changePriceSource","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getNextBoundedPrice","outputs":[{"internalType":"uint128","name":"boundedPrice","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNextPriceLowerBound","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNextPriceUpperBound","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNextResultWithValidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getResultWithValidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastUpdateTime","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"multiply","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"newPriceDeviation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"passedDelay","outputs":[{"internalType":"bool","name":"ok","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceSource","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"read","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeAuthorization","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"restartValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"start","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopped","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"subtract","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"updateDelay","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updateResult","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}],"name":"wmultiply","outputs":[{"internalType":"uint256","name":"z","type":"uint256"}],"stateMutability":"pure","type":"function"}]

6080604052610e10600260146101000a81548161ffff021916908361ffff1602179055503480156200003057600080fd5b506040516200242838038062002428833981810160405260408110156200005657600080fd5b8101908080519060200190929190805190602001909291905050506200009060008211670de0b6b3a764000083106200058360201b60201c565b62000103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f44534d2f696e76616c69642d646576696174696f6e000000000000000000000081525060200191505060405180910390fd5b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600381905550600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200045c57600080620001f96200059060201b60201c565b91509150801562000459576040518060400160405280836fffffffffffffffffffffffffffffffff16815260200160016fffffffffffffffffffffffffffffffff16815250600560008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550905050600560046000820160009054906101000a90046fffffffffffffffffffffffffffffffff168160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506000820160109054906101000a90046fffffffffffffffffffffffffffffffff168160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509050506200039e620003926200069260201b60201c565b6200069a60201b60201c565b600260166101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff85e44c6c3597d176b8d59bfbf500dfdb2badfc8cf91e6d960b16583a5807e48600460000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16600260169054906101000a900467ffffffffffffffff16604051808381526020018267ffffffffffffffff1681526020019250505060405180910390a15b50505b7f599a298163e1678bb1c676052a8930bf0b8a1261ed6e01b8a2391e55f700010233604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a17fe64aaa084ff9fb9651f314c5d25888701090b34db4f4809b517e863c62bd8508600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a17fedf6ef8230cfb4994eec8093a965e2c50ff9f18abcc24c33a8f0584525c8d665816040518082815260200191505060405180910390a150506200074f565b6000818316905092915050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634fd0ada86040518163ffffffff1660e01b8152600401604080518083038186803b158015620005fb57600080fd5b505afa9250505080156200063b57506040513d60408110156200061d57600080fd5b81019080805190602001909291908051906020019092919050505060015b62000685573d80600081146200066e576040519150601f19603f3d011682016040523d82523d6000602084013e62000673565b606091505b5060008081915092509250506200068e565b81819350935050505b9091565b600042905090565b600080600260149054906101000a900461ffff1661ffff16141562000727576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f44534d2f7570646174652d64656c61792d69732d7a65726f000000000000000081525060200191505060405180910390fd5b600260149054906101000a900461ffff1661ffff1682816200074557fe5b0682039050919050565b611cc9806200075f6000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063554f94db116100de57806380ebb08e11610097578063c8f33c9111610071578063c8f33c91146105cb578063ceedd63d146105fd578063ddc2ad8f14610607578063ef381cc5146106495761018e565b806380ebb08e1461057357806394f3f81d1461057d578063be9a6555146105c15761018e565b8063554f94db146104b357806357de26a4146104d957806363bfa88b146104f75780636a1460241461051957806375f12b21146105375780637c720555146105555761018e565b80633c8bb3e61161014b5780633fcdfe26116101255780633fcdfe26146103db5780634f0a32de1461041f5780634fd0ada81461044857806351330adc146104715761018e565b80633c8bb3e6146103015780633cff8d0b1461034d5780633ef5e4451461038f5761018e565b806307da68f514610193578063165c4a161461019d57806320531bc9146101e957806324ba5884146102335780632b9c7ee31461028b57806335b28153146102bd575b600080fd5b61019b610677565b005b6101d3600480360360408110156101b357600080fd5b810190808035906020019092919080359060200190929190505050610760565b6040518082815260200191505060405180910390f35b6101f161078c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102756004803603602081101561024957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107b2565b6040518082815260200191505060405180910390f35b6102bb600480360360208110156102a157600080fd5b81019080803561ffff1690602001909291905050506107ca565b005b6102ff600480360360208110156102d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610967565b005b6103376004803603604081101561031757600080fd5b810190808035906020019092919080359060200190929190505050610ac5565b6040518082815260200191505060405180910390f35b610355610aea565b60405180826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103c5600480360360408110156103a557600080fd5b810190808035906020019092919080359060200190929190505050610ca2565b6040518082815260200191505060405180910390f35b61041d600480360360208110156103f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cbc565b005b610427610e39565b60405180838152602001821515151581526020019250505060405180910390f35b610450610eb2565b60405180838152602001821515151581526020019250505060405180910390f35b610479610f28565b60405180826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104bb610f89565b604051808261ffff1661ffff16815260200191505060405180910390f35b6104e1610f9d565b6040518082815260200191505060405180910390f35b6104ff611081565b604051808215151515815260200191505060405180910390f35b6105216110d0565b6040518082815260200191505060405180910390f35b61053f6110dc565b6040518082815260200191505060405180910390f35b61055d6110e2565b6040518082815260200191505060405180910390f35b61057b6110e8565b005b6105bf6004803603602081101561059357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061141b565b005b6105c9611579565b005b6105d3611663565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b61060561167d565b005b61060f6118de565b60405180826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106756004803603602081101561065f57600080fd5b8101908080359060200190929190505050611924565b005b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461072b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f44534d2f6163636f756e742d6e6f742d617574686f72697a656400000000000081525060200191505060405180910390fd5b600180819055507fbedf0f4abfe86d4ffad593d9607fe70e83ea706033d44d24b3b6283cf3fc4f6b60405160405180910390a1565b60008082148061077d575082828385029250828161077a57fe5b04145b61078657600080fd5b92915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006020528060005260406000206000915090505481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461087e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f44534d2f6163636f756e742d6e6f742d617574686f72697a656400000000000081525060200191505060405180910390fd5b60008161ffff16116108f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f44534d2f64656c61792d69732d7a65726f00000000000000000000000000000081525060200191505060405180910390fd5b80600260146101000a81548161ffff021916908361ffff1602179055507fe5e55d7a00a8da3c2d2be2af849b5680612dc299cf26e12a879220d5f42ea231600260149054906101000a900461ffff16604051808261ffff1661ffff16815260200191505060405180910390a150565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610a1b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f44534d2f6163636f756e742d6e6f742d617574686f72697a656400000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f599a298163e1678bb1c676052a8930bf0b8a1261ed6e01b8a2391e55f700010281604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000670de0b6b3a7640000610ada8484610760565b81610ae157fe5b04905092915050565b6000600560000160009054906101000a90046fffffffffffffffffffffffffffffffff1690506000600460000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff161415610b5457809050610c9f565b6000610b95600460000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16600354610ac5565b90506000610bf3600460000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16610bee610be66002670de0b6b3a7640000610760565b600354610ca2565b610ac5565b9050816fffffffffffffffffffffffffffffffff16600560000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff161015610c4a57819250610c9c565b806fffffffffffffffffffffffffffffffff16600560000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff161115610c9b578092505b5b50505b90565b6000818303905082811115610cb657600080fd5b92915050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f44534d2f6163636f756e742d6e6f742d617574686f72697a656400000000000081525060200191505060405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe64aaa084ff9fb9651f314c5d25888701090b34db4f4809b517e863c62bd8508600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600080600560000160009054906101000a90046fffffffffffffffffffffffffffffffff166001600560000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1614816fffffffffffffffffffffffffffffffff169150915091509091565b600080600460000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166001600460000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1614915091509091565b6000610f84600460000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16610f7f610f776002670de0b6b3a7640000610760565b600354610ca2565b610ac5565b905090565b600260149054906101000a900461ffff1681565b60006001600460000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1614611048576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f44534d2f6e6f2d63757272656e742d76616c756500000000000000000000000081525060200191505060405180910390fd5b600460000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16905090565b60006110b7600260169054906101000a900467ffffffffffffffff16600260149054906101000a900461ffff1661ffff16611aa2565b67ffffffffffffffff166110c9611ad0565b1015905090565b670de0b6b3a764000081565b60015481565b60035481565b600060015414611160576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f44534d2f69732d73746f7070656400000000000000000000000000000000000081525060200191505060405180910390fd5b611168611081565b6111da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f44534d2f6e6f742d70617373656400000000000000000000000000000000000081525060200191505060405180910390fd5b6000806111e5611ad8565b91509150801561141757600560000160109054906101000a90046fffffffffffffffffffffffffffffffff16600460000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550611254610aea565b600460000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506040518060400160405280836fffffffffffffffffffffffffffffffff16815260200160016fffffffffffffffffffffffffffffffff16815250600560008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505061135c611357611ad0565b611bd3565b600260166101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff85e44c6c3597d176b8d59bfbf500dfdb2badfc8cf91e6d960b16583a5807e48600460000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16600260169054906101000a900467ffffffffffffffff16604051808381526020018267ffffffffffffffff1681526020019250505060405180910390a15b5050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146114cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f44534d2f6163636f756e742d6e6f742d617574686f72697a656400000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f8834a87e641e9716be4f34527af5d23e11624f1ddeefede6ad75a9acfc31b90381604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461162d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f44534d2f6163636f756e742d6e6f742d617574686f72697a656400000000000081525060200191505060405180910390fd5b60006001819055507f1b55ba3aa851a46be3b365aee5b5c140edd620d578922f3e8466d2cbd96f954b60405160405180910390a1565b600260169054906101000a900467ffffffffffffffff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611731576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f44534d2f6163636f756e742d6e6f742d617574686f72697a656400000000000081525060200191505060405180910390fd5b604051806040016040528060006fffffffffffffffffffffffffffffffff16815260200160006fffffffffffffffffffffffffffffffff16815250600560008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550905060046000820160009054906101000a90046fffffffffffffffffffffffffffffffff168160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506000820160109054906101000a90046fffffffffffffffffffffffffffffffff168160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550905050600180819055507f34cd470f8814066090f532fe3cb8158c5d974d7a01f4ada846dc9869e7e9d59a60405160405180910390a1565b600061191f600460000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16600354610ac5565b905090565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146119d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f44534d2f6163636f756e742d6e6f742d617574686f72697a656400000000000081525060200191505060405180910390fd5b6119ef60008211670de0b6b3a76400008310611c86565b611a61576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f44534d2f696e76616c69642d646576696174696f6e000000000000000000000081525060200191505060405180910390fd5b806003819055507fedf6ef8230cfb4994eec8093a965e2c50ff9f18abcc24c33a8f0584525c8d665816040518082815260200191505060405180910390a150565b600081830190508267ffffffffffffffff168167ffffffffffffffff161015611aca57600080fd5b92915050565b600042905090565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634fd0ada86040518163ffffffff1660e01b8152600401604080518083038186803b158015611b4257600080fd5b505afa925050508015611b8057506040513d6040811015611b6257600080fd5b81019080805190602001909291908051906020019092919050505060015b611bc6573d8060008114611bb0576040519150601f19603f3d011682016040523d82523d6000602084013e611bb5565b606091505b506000808191509250925050611bcf565b81819350935050505b9091565b600080600260149054906101000a900461ffff1661ffff161415611c5f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f44534d2f7570646174652d64656c61792d69732d7a65726f000000000000000081525060200191505060405180910390fd5b600260149054906101000a900461ffff1661ffff168281611c7c57fe5b0682039050919050565b600081831690509291505056fea26469706673582212202b54de550627616b7b046c8b123369ed4e9f7334bffeff5cb998b9acf54a71f164736f6c634300060700330000000000000000000000005daf352ca59fbfd4cc67a53df857bee9b29183bc0000000000000000000000000000000000000000000000000b1a2bc2ec500000

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061018e5760003560e01c8063554f94db116100de57806380ebb08e11610097578063c8f33c9111610071578063c8f33c91146105cb578063ceedd63d146105fd578063ddc2ad8f14610607578063ef381cc5146106495761018e565b806380ebb08e1461057357806394f3f81d1461057d578063be9a6555146105c15761018e565b8063554f94db146104b357806357de26a4146104d957806363bfa88b146104f75780636a1460241461051957806375f12b21146105375780637c720555146105555761018e565b80633c8bb3e61161014b5780633fcdfe26116101255780633fcdfe26146103db5780634f0a32de1461041f5780634fd0ada81461044857806351330adc146104715761018e565b80633c8bb3e6146103015780633cff8d0b1461034d5780633ef5e4451461038f5761018e565b806307da68f514610193578063165c4a161461019d57806320531bc9146101e957806324ba5884146102335780632b9c7ee31461028b57806335b28153146102bd575b600080fd5b61019b610677565b005b6101d3600480360360408110156101b357600080fd5b810190808035906020019092919080359060200190929190505050610760565b6040518082815260200191505060405180910390f35b6101f161078c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102756004803603602081101561024957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107b2565b6040518082815260200191505060405180910390f35b6102bb600480360360208110156102a157600080fd5b81019080803561ffff1690602001909291905050506107ca565b005b6102ff600480360360208110156102d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610967565b005b6103376004803603604081101561031757600080fd5b810190808035906020019092919080359060200190929190505050610ac5565b6040518082815260200191505060405180910390f35b610355610aea565b60405180826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103c5600480360360408110156103a557600080fd5b810190808035906020019092919080359060200190929190505050610ca2565b6040518082815260200191505060405180910390f35b61041d600480360360208110156103f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cbc565b005b610427610e39565b60405180838152602001821515151581526020019250505060405180910390f35b610450610eb2565b60405180838152602001821515151581526020019250505060405180910390f35b610479610f28565b60405180826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104bb610f89565b604051808261ffff1661ffff16815260200191505060405180910390f35b6104e1610f9d565b6040518082815260200191505060405180910390f35b6104ff611081565b604051808215151515815260200191505060405180910390f35b6105216110d0565b6040518082815260200191505060405180910390f35b61053f6110dc565b6040518082815260200191505060405180910390f35b61055d6110e2565b6040518082815260200191505060405180910390f35b61057b6110e8565b005b6105bf6004803603602081101561059357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061141b565b005b6105c9611579565b005b6105d3611663565b604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390f35b61060561167d565b005b61060f6118de565b60405180826fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106756004803603602081101561065f57600080fd5b8101908080359060200190929190505050611924565b005b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461072b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f44534d2f6163636f756e742d6e6f742d617574686f72697a656400000000000081525060200191505060405180910390fd5b600180819055507fbedf0f4abfe86d4ffad593d9607fe70e83ea706033d44d24b3b6283cf3fc4f6b60405160405180910390a1565b60008082148061077d575082828385029250828161077a57fe5b04145b61078657600080fd5b92915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006020528060005260406000206000915090505481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461087e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f44534d2f6163636f756e742d6e6f742d617574686f72697a656400000000000081525060200191505060405180910390fd5b60008161ffff16116108f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f44534d2f64656c61792d69732d7a65726f00000000000000000000000000000081525060200191505060405180910390fd5b80600260146101000a81548161ffff021916908361ffff1602179055507fe5e55d7a00a8da3c2d2be2af849b5680612dc299cf26e12a879220d5f42ea231600260149054906101000a900461ffff16604051808261ffff1661ffff16815260200191505060405180910390a150565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610a1b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f44534d2f6163636f756e742d6e6f742d617574686f72697a656400000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f599a298163e1678bb1c676052a8930bf0b8a1261ed6e01b8a2391e55f700010281604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6000670de0b6b3a7640000610ada8484610760565b81610ae157fe5b04905092915050565b6000600560000160009054906101000a90046fffffffffffffffffffffffffffffffff1690506000600460000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff161415610b5457809050610c9f565b6000610b95600460000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16600354610ac5565b90506000610bf3600460000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16610bee610be66002670de0b6b3a7640000610760565b600354610ca2565b610ac5565b9050816fffffffffffffffffffffffffffffffff16600560000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff161015610c4a57819250610c9c565b806fffffffffffffffffffffffffffffffff16600560000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff161115610c9b578092505b5b50505b90565b6000818303905082811115610cb657600080fd5b92915050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f44534d2f6163636f756e742d6e6f742d617574686f72697a656400000000000081525060200191505060405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe64aaa084ff9fb9651f314c5d25888701090b34db4f4809b517e863c62bd8508600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600080600560000160009054906101000a90046fffffffffffffffffffffffffffffffff166001600560000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1614816fffffffffffffffffffffffffffffffff169150915091509091565b600080600460000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166001600460000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1614915091509091565b6000610f84600460000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16610f7f610f776002670de0b6b3a7640000610760565b600354610ca2565b610ac5565b905090565b600260149054906101000a900461ffff1681565b60006001600460000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1614611048576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f44534d2f6e6f2d63757272656e742d76616c756500000000000000000000000081525060200191505060405180910390fd5b600460000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16905090565b60006110b7600260169054906101000a900467ffffffffffffffff16600260149054906101000a900461ffff1661ffff16611aa2565b67ffffffffffffffff166110c9611ad0565b1015905090565b670de0b6b3a764000081565b60015481565b60035481565b600060015414611160576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f44534d2f69732d73746f7070656400000000000000000000000000000000000081525060200191505060405180910390fd5b611168611081565b6111da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f44534d2f6e6f742d70617373656400000000000000000000000000000000000081525060200191505060405180910390fd5b6000806111e5611ad8565b91509150801561141757600560000160109054906101000a90046fffffffffffffffffffffffffffffffff16600460000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550611254610aea565b600460000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506040518060400160405280836fffffffffffffffffffffffffffffffff16815260200160016fffffffffffffffffffffffffffffffff16815250600560008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505061135c611357611ad0565b611bd3565b600260166101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507ff85e44c6c3597d176b8d59bfbf500dfdb2badfc8cf91e6d960b16583a5807e48600460000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16600260169054906101000a900467ffffffffffffffff16604051808381526020018267ffffffffffffffff1681526020019250505060405180910390a15b5050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146114cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f44534d2f6163636f756e742d6e6f742d617574686f72697a656400000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f8834a87e641e9716be4f34527af5d23e11624f1ddeefede6ad75a9acfc31b90381604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461162d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f44534d2f6163636f756e742d6e6f742d617574686f72697a656400000000000081525060200191505060405180910390fd5b60006001819055507f1b55ba3aa851a46be3b365aee5b5c140edd620d578922f3e8466d2cbd96f954b60405160405180910390a1565b600260169054906101000a900467ffffffffffffffff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611731576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f44534d2f6163636f756e742d6e6f742d617574686f72697a656400000000000081525060200191505060405180910390fd5b604051806040016040528060006fffffffffffffffffffffffffffffffff16815260200160006fffffffffffffffffffffffffffffffff16815250600560008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550905060046000820160009054906101000a90046fffffffffffffffffffffffffffffffff168160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506000820160109054906101000a90046fffffffffffffffffffffffffffffffff168160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550905050600180819055507f34cd470f8814066090f532fe3cb8158c5d974d7a01f4ada846dc9869e7e9d59a60405160405180910390a1565b600061191f600460000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16600354610ac5565b905090565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146119d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f44534d2f6163636f756e742d6e6f742d617574686f72697a656400000000000081525060200191505060405180910390fd5b6119ef60008211670de0b6b3a76400008310611c86565b611a61576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f44534d2f696e76616c69642d646576696174696f6e000000000000000000000081525060200191505060405180910390fd5b806003819055507fedf6ef8230cfb4994eec8093a965e2c50ff9f18abcc24c33a8f0584525c8d665816040518082815260200191505060405180910390a150565b600081830190508267ffffffffffffffff168167ffffffffffffffff161015611aca57600080fd5b92915050565b600042905090565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634fd0ada86040518163ffffffff1660e01b8152600401604080518083038186803b158015611b4257600080fd5b505afa925050508015611b8057506040513d6040811015611b6257600080fd5b81019080805190602001909291908051906020019092919050505060015b611bc6573d8060008114611bb0576040519150601f19603f3d011682016040523d82523d6000602084013e611bb5565b606091505b506000808191509250925050611bcf565b81819350935050505b9091565b600080600260149054906101000a900461ffff1661ffff161415611c5f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f44534d2f7570646174652d64656c61792d69732d7a65726f000000000000000081525060200191505060405180910390fd5b600260149054906101000a900461ffff1661ffff168281611c7c57fe5b0682039050919050565b600081831690509291505056fea26469706673582212202b54de550627616b7b046c8b123369ed4e9f7334bffeff5cb998b9acf54a71f164736f6c63430006070033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000005daf352ca59fbfd4cc67a53df857bee9b29183bc0000000000000000000000000000000000000000000000000b1a2bc2ec500000

-----Decoded View---------------
Arg [0] : priceSource_ (address): 0x5daF352Ca59fbFD4cC67a53Df857BeE9b29183bC
Arg [1] : deviation (uint256): 800000000000000000

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000005daf352ca59fbfd4cc67a53df857bee9b29183bc
Arg [1] : 0000000000000000000000000000000000000000000000000b1a2bc2ec500000


Deployed Bytecode Sourcemap

150:7134:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;150:7134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;3510:90:0;;;:::i;:::-;;3237:121;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3237:121:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1284:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;191:51;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;191:51:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4466:185;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;4466:185:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;349:156;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;349:156:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;3364:107;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3364:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5868:588;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3114:117;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3114:117:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3706:162;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3706:162:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;6974:140;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6818:148;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6624:186;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1317:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7122:159;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4819:128;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1565:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1032:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1443:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4955:544;;;:::i;:::-;;621:162;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;621:162:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;3606:92;;;:::i;:::-;;1379:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4659:152;;;:::i;:::-;;6464;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4215:243;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;4215:243:0;;;;;;;;;;;;;;;;;:::i;:::-;;3510:90;951:1;917:18;:30;936:10;917:30;;;;;;;;;;;;;;;;:35;909:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3569:1:::1;3559:7:::0;:11:::1;;;;3586:6;;;;;;;;;;3510:90::o:0;3237:121::-;3292:6;3324:1;3319;:6;:30;;;;3348:1;3343;3338;3334;:5;3330:9;;;3329:15;;;;;;:20;3319:30;3311:39;;12:1:-1;9;2:12;3311:39:0;3237:121;;;;:::o;1284:26::-;;;;;;;;;;;;;:::o;191:51::-;;;;;;;;;;;;;;;;;:::o;4466:185::-;951:1;917:18;:30;936:10;917:30;;;;;;;;;;;;;;;;:35;909:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4550:1:::1;4542:5;:9;;;4534:39;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;4598:5;4584:11;;:19;;;;;;;;;;;;;;;;;;4619:24;4631:11;;;;;;;;;;;4619:24;;;;;;;;;;;;;;;;;;;;;;4466:185:::0;:::o;349:156::-;951:1;917:18;:30;936:10;917:30;;;;;;;;;;;;;;;;:35;909:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;455:1:::1;425:18;:27:::0;444:7:::1;425:27;;;;;;;;;;;;;;;:31;;;;472:25;489:7;472:25;;;;;;;;;;;;;;;;;;;;;;349:156:::0;:::o;3364:107::-;3420:6;1595:8;3443:14;3452:1;3455;3443:8;:14::i;:::-;:20;;;;;;3439:24;;3364:107;;;;:::o;5868:588::-;5920:20;5968:8;:14;;;;;;;;;;;;5953:29;;6018:1;5997:11;:17;;;;;;;;;;;;:22;;;5993:47;;;6028:12;6021:19;;;;5993:47;6053:18;6082:53;6097:11;:17;;;;;;;;;;;;6092:23;;6117:17;;6082:9;:53::i;:::-;6053:83;;6147:18;6176:87;6191:11;:17;;;;;;;;;;;;6186:23;;6211:51;6220:22;6234:1;1595:8;6220;:22::i;:::-;6244:17;;6211:8;:51::i;:::-;6176:9;:87::i;:::-;6147:117;;6298:10;6281:27;;:8;:14;;;;;;;;;;;;:27;;;6277:172;;;6338:10;6323:25;;6277:172;;;6387:10;6370:27;;:8;:14;;;;;;;;;;;;:27;;;6366:83;;;6427:10;6412:25;;6366:83;6277:172;5868:588;;;;:::o;3114:117::-;3169:6;3196:1;3192;:5;3188:9;;3221:1;3216;:6;;3208:15;;12:1:-1;9;2:12;3208:15:0;3114:117;;;;:::o;3706:162::-;951:1;917:18;:30;936:10;917:30;;;;;;;;;;;;;;;;:35;909:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3802:12:::1;3788:11;;:26;;;;;;;;;;;;;;;;;;3830:30;3848:11;;;;;;;;;;;3830:30;;;;;;;;;;;;;;;;;;;;;;3706:162:::0;:::o;6974:140::-;7034:7;7043:4;7068:8;:14;;;;;;;;;;;;7104:1;7084:8;:16;;;;;;;;;;;;:21;;;7060:46;;;;;;;;;6974:140;;:::o;6818:148::-;6874:7;6883:4;6913:11;:17;;;;;;;;;;;;6908:23;;6956:1;6933:11;:19;;;;;;;;;;;;:24;;;6900:58;;;;6818:148;;:::o;6624:186::-;6679:7;6714:87;6729:11;:17;;;;;;;;;;;;6724:23;;6749:51;6758:22;6772:1;1595:8;6758;:22::i;:::-;6782:17;;6749:8;:51::i;:::-;6714:9;:87::i;:::-;6699:103;;6624:186;:::o;1317:37::-;;;;;;;;;;;;;:::o;7122:159::-;7161:7;7212:1;7189:11;:19;;;;;;;;;;;;:24;;;7181:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7256:11;:17;;;;;;;;;;;;7249:24;;;;7122:159;:::o;4819:128::-;4863:7;4907:32;4911:14;;;;;;;;;;;4927:11;;;;;;;;;;;4907:32;;:3;:32::i;:::-;4890:49;;:13;:11;:13::i;:::-;:49;;4883:56;;4819:128;:::o;1565:38::-;1595:8;1565:38;:::o;1032:22::-;;;;:::o;1443:32::-;;;;:::o;4955:544::-;1101:1;1090:7;;:12;1082:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5017:13:::1;:11;:13::i;:::-;5009:40;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;5061:22;5085:18:::0;5107:22:::1;:20;:22::i;:::-;5060:69;;;;5144:13;5140:352;;;5196:8;:16;;;;;;;;;;;;5174:11;:19;;;:38;;;;;;;;;;;;;;;;;;5249:21;:19;:21::i;:::-;5227:11;:17;;;:43;;;;;;;;;;;;;;;;;;5307:32;;;;;;;;5320:14;5307:32;;;;;;5337:1;5307:32;;;;::::0;5285:8:::1;:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5376:31;5393:13;:11;:13::i;:::-;5376:16;:31::i;:::-;5354:14;;:53;;;;;;;;;;;;;;;;;;5427;5445:11;:17;;;;;;;;;;;;5440:23;;5465:14;;;;;;;;;;;5427:53;;;;;;;;;;;;;;;;;;;;;;;;;;5140:352;1123:1;;4955:544::o:0;621:162::-;951:1;917:18;:30;936:10;917:30;;;;;;;;;;;;;;;;:35;909:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;730:1:::1;700:18:::0;:27:::1;719:7;700:27;;;;;;;;;;;;;;;:31;;;;747:28;767:7;747:28;;;;;;;;;;;;;;;;;;;;;;621:162:::0;:::o;3606:92::-;951:1;917:18;:30;936:10;917:30;;;;;;;;;;;;;;;;:35;909:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3666:1:::1;3656:7;:11;;;;3683:7;;;;;;;;;;3606:92::o:0;1379:29::-;;;;;;;;;;;;;:::o;4659:152::-;951:1;917:18;:30;936:10;917:30;;;;;;;;;;;;;;;;:35;909:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4741:10:::1;;;;;;;;4746:1;4741:10;;;;;;4749:1;4741:10;;;;::::0;4730:8:::1;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4716:11;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4772:1;4762:7:::0;:11:::1;;;;4789:14;;;;;;;;;;4659:152::o:0;6464:::-;6519:7;6554:53;6569:11;:17;;;;;;;;;;;;6564:23;;6589:17;;6554:9;:53::i;:::-;6539:69;;6464:152;:::o;4215:243::-;951:1;917:18;:30;936:10;917:30;;;;;;;;;;;;;;;;:35;909:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4306:36:::1;4323:1;4311:9;:13;1595:8;4326:9;:15;4306:4;:36::i;:::-;4298:70;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;4399:9;4379:17;:29;;;;4424:26;4440:9;4424:26;;;;;;;;;;;;;;;;;;4215:243:::0;:::o;1156:120::-;1212:8;1241:1;1237;:5;1233:9;;1266:1;1261:6;;:1;:6;;;;1253:15;;12:1:-1;9;2:12;1253:15:0;1156:120;;;;:::o;3898:93::-;3944:4;3968:15;3961:22;;3898:93;:::o;5531:329::-;5586:7;5595:4;5628:11;;;;;;;;;;;5616:46;;;:48;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5616:48:0;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;5616:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;5612:241;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;5832:1:0;5835:5;5824:17;;;;;;;;;;5612:241;5739:14;5755:13;5731:38;;;;;;5531:329;;;:::o;3999:208::-;4064:6;4106:1;4091:11;;;;;;;;;;;:16;;;;4083:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4186:11;;;;;;;;;;;4174:23;;:9;:23;;;;;;4161:9;:37;4147:52;;3999:208;;;:::o;2981:104::-;3034:6;3075:1;3072;3068:9;3063:14;;3061:17;;;;:::o

Swarm Source

ipfs://2b54de550627616b7b046c8b123369ed4e9f7334bffeff5cb998b9acf54a71f1

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.