ETH Price: $1,822.75 (-14.98%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Initiate Provide...141466232022-02-05 14:46:541461 days ago1644072414IN
0xC7Ab7FFc...c861330f0
0 ETH0.0009396330
Initiate Provide...141069922022-01-30 11:58:581467 days ago1643543938IN
0xC7Ab7FFc...c861330f0
0 ETH0.0073265166.86724577
Initiate Provide...129238662021-07-30 0:27:241651 days ago1627604844IN
0xC7Ab7FFc...c861330f0
0 ETH0.0046058842
Initiate Provide...128477762021-07-18 1:43:541663 days ago1626572634IN
0xC7Ab7FFc...c861330f0
0 ETH0.00275725.15422454
Initiate Provide...127992422021-07-10 10:59:481671 days ago1625914788IN
0xC7Ab7FFc...c861330f0
0 ETH0.0014237613
Initiate Provide...127981412021-07-10 6:48:471671 days ago1625899727IN
0xC7Ab7FFc...c861330f0
0 ETH0.0012045811
Initiate Provide...126853742021-06-22 17:30:401689 days ago1624383040IN
0xC7Ab7FFc...c861330f0
0 ETH0.0032870430
Initiate Provide...126778812021-06-21 13:25:001690 days ago1624281900IN
0xC7Ab7FFc...c861330f0
0 ETH0.003285630
Initiate Provide...126276402021-06-13 18:01:591698 days ago1623607319IN
0xC7Ab7FFc...c861330f0
0 ETH0.0017517416
Initiate Provide...126276092021-06-13 17:55:361698 days ago1623606936IN
0xC7Ab7FFc...c861330f0
0 ETH0.0016860515.4
Initiate Provide...126216602021-06-12 20:02:041699 days ago1623528124IN
0xC7Ab7FFc...c861330f0
0 ETH0.0009869
Initiate Provide...126206502021-06-12 16:14:261699 days ago1623514466IN
0xC7Ab7FFc...c861330f0
0 ETH0.0024112822
Initiate Provide...126111272021-06-11 4:33:481700 days ago1623386028IN
0xC7Ab7FFc...c861330f0
0 ETH0.0012052411
Initiate Provide...126109962021-06-11 4:03:501700 days ago1623384230IN
0xC7Ab7FFc...c861330f0
0 ETH0.0014242213
Initiate Provide...123452952021-05-01 1:12:351741 days ago1619831555IN
0xC7Ab7FFc...c861330f0
0 ETH0.0032906430
Initiate Provide...123209172021-04-27 7:02:531745 days ago1619506973IN
0xC7Ab7FFc...c861330f0
0 ETH0.004928445
Initiate Provide...122734722021-04-19 23:29:501753 days ago1618874990IN
0xC7Ab7FFc...c861330f0
0 ETH0.02085992190.3
Initiate Provide...122697052021-04-19 9:28:151753 days ago1618824495IN
0xC7Ab7FFc...c861330f0
0 ETH0.01622316148
Initiate Provide...122354712021-04-14 2:15:071758 days ago1618366507IN
0xC7Ab7FFc...c861330f0
0 ETH0.0085481179.00000145
Initiate Provide...122199672021-04-11 17:17:121761 days ago1618161432IN
0xC7Ab7FFc...c861330f0
0 ETH0.0032432430
Initiate Provide...122032852021-04-09 3:36:071763 days ago1617939367IN
0xC7Ab7FFc...c861330f0
0 ETH0.0032443230
Initiate Provide...121884272021-04-06 20:42:321766 days ago1617741752IN
0xC7Ab7FFc...c861330f0
0 ETH0.01373581127
Initiate Provide...121589662021-04-02 8:16:001770 days ago1617351360IN
0xC7Ab7FFc...c861330f0
0 ETH0.01481408137
Initiate Provide...121587542021-04-02 7:29:391770 days ago1617348579IN
0xC7Ab7FFc...c861330f0
0 ETH0.01437836133
Initiate Provide...121587472021-04-02 7:27:301770 days ago1617348450IN
0xC7Ab7FFc...c861330f0
0 ETH0.01471084136
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Registry

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2019-01-09
*/

pragma solidity ^0.4.24;

// File: contracts/lib/ownership/Ownable.sol

contract Ownable {
    address public owner;
    event OwnershipTransferred(address indexed previousOwner,address indexed newOwner);

    /// @dev The Ownable constructor sets the original `owner` of the contract to the sender account.
    constructor() public { owner = msg.sender; }

    /// @dev Throws if called by any contract other than latest designated caller
    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    /// @dev Allows the current owner to transfer control of the contract to a newOwner.
    /// @param newOwner The address to transfer ownership to.
    function transferOwnership(address newOwner) public onlyOwner {
       require(newOwner != address(0));
       emit OwnershipTransferred(owner, newOwner);
       owner = newOwner;
    }
}

// File: contracts/lib/lifecycle/Destructible.sol

contract Destructible is Ownable {
	function selfDestruct() public onlyOwner {
		selfdestruct(owner);
	}
}

// File: contracts/lib/ownership/ZapCoordinatorInterface.sol

contract ZapCoordinatorInterface is Ownable {
	function addImmutableContract(string contractName, address newAddress) external;
	function updateContract(string contractName, address newAddress) external;
	function getContractName(uint index) public view returns (string);
	function getContract(string contractName) public view returns (address);
	function updateAllDependencies() external;
}

// File: contracts/lib/ownership/Upgradable.sol

pragma solidity ^0.4.24;

contract Upgradable {

	address coordinatorAddr;
	ZapCoordinatorInterface coordinator;

	constructor(address c) public{
		coordinatorAddr = c;
		coordinator = ZapCoordinatorInterface(c);
	}

    function updateDependencies() external coordinatorOnly {
       _updateDependencies();
    }

    function _updateDependencies() internal;

    modifier coordinatorOnly() {
    	require(msg.sender == coordinatorAddr, "Error: Coordinator Only Function");
    	_;
    }
}

// File: contracts/platform/database/DatabaseInterface.sol

contract DatabaseInterface is Ownable {
	function setStorageContract(address _storageContract, bool _allowed) public;
	/*** Bytes32 ***/
	function getBytes32(bytes32 key) external view returns(bytes32);
	function setBytes32(bytes32 key, bytes32 value) external;
	/*** Number **/
	function getNumber(bytes32 key) external view returns(uint256);
	function setNumber(bytes32 key, uint256 value) external;
	/*** Bytes ***/
	function getBytes(bytes32 key) external view returns(bytes);
	function setBytes(bytes32 key, bytes value) external;
	/*** String ***/
	function getString(bytes32 key) external view returns(string);
	function setString(bytes32 key, string value) external;
	/*** Bytes Array ***/
	function getBytesArray(bytes32 key) external view returns (bytes32[]);
	function getBytesArrayIndex(bytes32 key, uint256 index) external view returns (bytes32);
	function getBytesArrayLength(bytes32 key) external view returns (uint256);
	function pushBytesArray(bytes32 key, bytes32 value) external;
	function setBytesArrayIndex(bytes32 key, uint256 index, bytes32 value) external;
	function setBytesArray(bytes32 key, bytes32[] value) external;
	/*** Int Array ***/
	function getIntArray(bytes32 key) external view returns (int[]);
	function getIntArrayIndex(bytes32 key, uint256 index) external view returns (int);
	function getIntArrayLength(bytes32 key) external view returns (uint256);
	function pushIntArray(bytes32 key, int value) external;
	function setIntArrayIndex(bytes32 key, uint256 index, int value) external;
	function setIntArray(bytes32 key, int[] value) external;
	/*** Address Array ***/
	function getAddressArray(bytes32 key) external view returns (address[]);
	function getAddressArrayIndex(bytes32 key, uint256 index) external view returns (address);
	function getAddressArrayLength(bytes32 key) external view returns (uint256);
	function pushAddressArray(bytes32 key, address value) external;
	function setAddressArrayIndex(bytes32 key, uint256 index, address value) external;
	function setAddressArray(bytes32 key, address[] value) external;
}

// File: contracts/platform/registry/RegistryInterface.sol

// Technically an abstract contract, not interface (solidity compiler devs are working to fix this right now)

contract RegistryInterface {
    function initiateProvider(uint256, bytes32) public returns (bool);
    function initiateProviderCurve(bytes32, int256[], address) public returns (bool);
    function setEndpointParams(bytes32, bytes32[]) public;
    function getEndpointParams(address, bytes32) public view returns (bytes32[]);
    function getProviderPublicKey(address) public view returns (uint256);
    function getProviderTitle(address) public view returns (bytes32);
    function setProviderParameter(bytes32, bytes) public;
    function setProviderTitle(bytes32) public;
    function clearEndpoint(bytes32) public;
    function getProviderParameter(address, bytes32) public view returns (bytes);
    function getAllProviderParams(address) public view returns (bytes32[]);
    function getProviderCurveLength(address, bytes32) public view returns (uint256);
    function getProviderCurve(address, bytes32) public view returns (int[]);
    function isProviderInitiated(address) public view returns (bool);
    function getAllOracles() external view returns (address[]);
    function getProviderEndpoints(address) public view returns (bytes32[]);
    function getEndpointBroker(address, bytes32) public view returns (address);
}

// File: contracts/platform/registry/Registry.sol

// v1.0





contract Registry is Destructible, RegistryInterface, Upgradable {

    event NewProvider(
        address indexed provider,
        bytes32 indexed title
    );

    event NewCurve(
        address indexed provider,
        bytes32 indexed endpoint,
        int[] curve,
        address indexed broker
    );

    DatabaseInterface public db;

    constructor(address c) Upgradable(c) public {
        _updateDependencies();
    }

    function _updateDependencies() internal {
        address databaseAddress = coordinator.getContract("DATABASE");
        db = DatabaseInterface(databaseAddress);
    }

    /// @dev initiates a provider.
    /// If no address->Oracle mapping exists, Oracle object is created
    /// @param publicKey unique id for provider. used for encyrpted key swap for subscription endpoints
    /// @param title name
    function initiateProvider(
        uint256 publicKey,
        bytes32 title
    )
        public
        returns (bool)
    {
        require(!isProviderInitiated(msg.sender), "Error: Provider is already initiated");
        createOracle(msg.sender, publicKey, title);
        addOracle(msg.sender);
        emit NewProvider(msg.sender, title);
        return true;
    }

    /// @dev initiates an endpoint specific provider curve
    /// If oracle[specfifier] is uninitialized, Curve is mapped to endpoint
    /// @param endpoint specifier of endpoint. currently "smart_contract" or "socket_subscription"
    /// @param curve flattened array of all segments, coefficients across all polynomial terms, [e0,l0,c0,c1,c2,...]
    /// @param broker address for endpoint. if non-zero address, only this address will be able to bond/unbond 
    function initiateProviderCurve(
        bytes32 endpoint,
        int256[] curve,
        address broker
    )
        returns (bool)
    {
        // Provider must be initiated
        require(isProviderInitiated(msg.sender), "Error: Provider is not yet initiated");
        // Can't reset their curve
        require(getCurveUnset(msg.sender, endpoint), "Error: Curve is already set");
        // Can't initiate null endpoint
        require(endpoint != bytes32(0), "Error: Can't initiate null endpoint");

        setCurve(msg.sender, endpoint, curve);        
        db.pushBytesArray(keccak256(abi.encodePacked('oracles', msg.sender, 'endpoints')), endpoint);
        db.setBytes32(keccak256(abi.encodePacked('oracles', msg.sender, endpoint, 'broker')), bytes32(broker));

        emit NewCurve(msg.sender, endpoint, curve, broker);

        return true;
    }

    // Sets provider data
    function setProviderParameter(bytes32 key, bytes value) public {
        // Provider must be initiated
        require(isProviderInitiated(msg.sender), "Error: Provider is not yet initiated");

        if(!isProviderParamInitialized(msg.sender, key)){
            // initialize this provider param
            db.setNumber(keccak256(abi.encodePacked('oracles', msg.sender, 'is_param_set', key)), 1);
            db.pushBytesArray(keccak256(abi.encodePacked('oracles', msg.sender, 'providerParams')), key);
        }
        db.setBytes(keccak256(abi.encodePacked('oracles', msg.sender, 'providerParams', key)), value);
    }

    // Gets provider data
    function getProviderParameter(address provider, bytes32 key) public view returns (bytes){
        // Provider must be initiated
        require(isProviderInitiated(provider), "Error: Provider is not yet initiated");
        require(isProviderParamInitialized(provider, key), "Error: Provider Parameter is not yet initialized");
        return db.getBytes(keccak256(abi.encodePacked('oracles', provider, 'providerParams', key)));
    }

    // Gets keys of all provider params
    function getAllProviderParams(address provider) public view returns (bytes32[]){
        // Provider must be initiated
        require(isProviderInitiated(provider), "Error: Provider is not yet initiated");
        return db.getBytesArray(keccak256(abi.encodePacked('oracles', provider, 'providerParams')));
    }

    // Set endpoint specific parameters for a given endpoint
    function setEndpointParams(bytes32 endpoint, bytes32[] endpointParams) public {
        // Provider must be initiated
        require(isProviderInitiated(msg.sender), "Error: Provider is not yet initialized");
        // Can't set endpoint params on an unset provider
        require(!getCurveUnset(msg.sender, endpoint), "Error: Curve is not yet set");

        db.setBytesArray(keccak256(abi.encodePacked('oracles', msg.sender, 'endpointParams', endpoint)), endpointParams);
    }

    //Set title for registered provider account
    function setProviderTitle(bytes32 title) public {

        require(isProviderInitiated(msg.sender), "Error: Provider is not initiated");
        db.setBytes32(keccak256(abi.encodePacked('oracles', msg.sender, "title")), title);
    }

    //Clear an endpoint with no bonds
    function clearEndpoint(bytes32 endpoint) public {

        require(isProviderInitiated(msg.sender), "Error: Provider is not initiated");

        uint256 bound = db.getNumber(keccak256(abi.encodePacked('totalBound', msg.sender, endpoint)));
        require(bound == 0, "Error: Endpoint must have no bonds");

        int256[] memory nullArray = new int256[](0);
        bytes32[] memory endpoints =  db.getBytesArray(keccak256(abi.encodePacked("oracles", msg.sender, "endpoints")));
        for(uint256 i = 0; i < endpoints.length; i++) {
            if( endpoints[i] == endpoint ) {
               db.setBytesArrayIndex(keccak256(abi.encodePacked("oracles", msg.sender, "endpoints")), i, bytes32(0));
               break; 
            }
        }
        db.pushBytesArray(keccak256(abi.encodePacked('oracles', msg.sender, 'endpoints')), bytes32(0));
        db.setBytes32(keccak256(abi.encodePacked('oracles', msg.sender, endpoint, 'broker')), bytes32(0));
        db.setIntArray(keccak256(abi.encodePacked('oracles', msg.sender, 'curves', endpoint)), nullArray);
    }

    /// @return public key
    function getProviderPublicKey(address provider) public view returns (uint256) {
        return getPublicKey(provider);
    }

    /// @return oracle name
    function getProviderTitle(address provider) public view returns (bytes32) {
        return getTitle(provider);
    }


    /// @dev get curve paramaters from oracle
    function getProviderCurve(
        address provider,
        bytes32 endpoint
    )
        public
        view
        returns (int[])
    {
        require(!getCurveUnset(provider, endpoint), "Error: Curve is not yet set");
        return db.getIntArray(keccak256(abi.encodePacked('oracles', provider, 'curves', endpoint)));
    }

    function getProviderCurveLength(address provider, bytes32 endpoint) public view returns (uint256){
        require(!getCurveUnset(provider, endpoint), "Error: Curve is not yet set");
        return db.getIntArray(keccak256(abi.encodePacked('oracles', provider, 'curves', endpoint))).length;
    }

    /// @dev is provider initiated
    /// @param oracleAddress the provider address
    /// @return Whether or not the provider has initiated in the Registry.
    function isProviderInitiated(address oracleAddress) public view returns (bool) {
        return getProviderTitle(oracleAddress) != 0;
    }

    /*** STORAGE FUNCTIONS ***/
    /// @dev get public key of provider
    function getPublicKey(address provider) public view returns (uint256) {
        return db.getNumber(keccak256(abi.encodePacked("oracles", provider, "publicKey")));
    }

    /// @dev get title of provider
    function getTitle(address provider) public view returns (bytes32) {
        return db.getBytes32(keccak256(abi.encodePacked("oracles", provider, "title")));
    }

    /// @dev get the endpoints of a provider
    function getProviderEndpoints(address provider) public view returns (bytes32[]) {
        return db.getBytesArray(keccak256(abi.encodePacked("oracles", provider, "endpoints")));
    }

    /// @dev get all endpoint params
    function getEndpointParams(address provider, bytes32 endpoint) public view returns (bytes32[]) {
        return db.getBytesArray(keccak256(abi.encodePacked('oracles', provider, 'endpointParams', endpoint)));
    }

    /// @dev get broker address for endpoint
    function getEndpointBroker(address oracleAddress, bytes32 endpoint) public view returns (address) {
        return address(db.getBytes32(keccak256(abi.encodePacked('oracles', oracleAddress, endpoint, 'broker'))));
    }

    function getCurveUnset(address provider, bytes32 endpoint) public view returns (bool) {
        return db.getIntArrayLength(keccak256(abi.encodePacked('oracles', provider, 'curves', endpoint))) == 0;
    }

    /// @dev get provider address by index
    function getOracleAddress(uint256 index) public view returns (address) {
        return db.getAddressArrayIndex(keccak256(abi.encodePacked('oracleIndex')), index);
    }

    /// @dev get all oracle addresses
    function getAllOracles() external view returns (address[]) {
        return db.getAddressArray(keccak256(abi.encodePacked('oracleIndex')));
    }

    ///  @dev add new provider to mapping
    function createOracle(address provider, uint256 publicKey, bytes32 title) private {
        db.setNumber(keccak256(abi.encodePacked('oracles', provider, "publicKey")), uint256(publicKey));
        db.setBytes32(keccak256(abi.encodePacked('oracles', provider, "title")), title);
    }

    /// @dev add new provider address to oracles array
    function addOracle(address provider) private {
        db.pushAddressArray(keccak256(abi.encodePacked('oracleIndex')), provider);
    }

    /// @dev initialize new curve for provider
    /// @param provider address of provider
    /// @param endpoint endpoint specifier
    /// @param curve flattened array of all segments, coefficients across all polynomial terms, [l0,c0,c1,c2,..., ck, e0, ...]
    function setCurve(
        address provider,
        bytes32 endpoint,
        int[] curve
    )
        private
    {
        uint prevEnd = 1;
        uint index = 0;

        // Validate the curve
        while ( index < curve.length ) {
            // Validate the length of the piece
            int len = curve[index];
            require(len > 0, "Error: Invalid Curve");

            // Validate the end index of the piece
            uint endIndex = index + uint(len) + 1;
            require(endIndex < curve.length, "Error: Invalid Curve");

            // Validate that the end is continuous
            int end = curve[endIndex];
            require(uint(end) > prevEnd, "Error: Invalid Curve");

            prevEnd = uint(end);
            index += uint(len) + 2; 
        }

        db.setIntArray(keccak256(abi.encodePacked('oracles', provider, 'curves', endpoint)), curve);
    }

    // Determines whether this parameter has been initialized
    function isProviderParamInitialized(address provider, bytes32 key) private view returns (bool){
        uint256 val = db.getNumber(keccak256(abi.encodePacked('oracles', provider, 'is_param_set', key)));
        return (val == 1) ? true : false;
    }

    /*************************************** STORAGE ****************************************
    * 'oracles', provider, 'endpoints' => {bytes32[]} array of endpoints for this oracle
    * 'oracles', provider, 'endpointParams', endpoint => {bytes32[]} array of params for this endpoint
    * 'oracles', provider, 'curves', endpoint => {uint[]} curve array for this endpoint
    * 'oracles', provider, 'broker', endpoint => {bytes32} broker address for this endpoint
    * 'oracles', provider, 'is_param_set', key => {uint} Is this provider parameter set (0/1)
    * 'oracles', provider, "publicKey" => {uint} public key for this oracle
    * 'oracles', provider, "title" => {bytes32} title of this oracle
    ****************************************************************************************/
}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[{"name":"oracleAddress","type":"address"}],"name":"isProviderInitiated","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"provider","type":"address"},{"name":"endpoint","type":"bytes32"}],"name":"getProviderCurve","outputs":[{"name":"","type":"int256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"endpoint","type":"bytes32"},{"name":"curve","type":"int256[]"},{"name":"broker","type":"address"}],"name":"initiateProviderCurve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"provider","type":"address"}],"name":"getAllProviderParams","outputs":[{"name":"","type":"bytes32[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"db","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"provider","type":"address"},{"name":"key","type":"bytes32"}],"name":"getProviderParameter","outputs":[{"name":"","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"provider","type":"address"}],"name":"getProviderPublicKey","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"provider","type":"address"}],"name":"getProviderTitle","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"provider","type":"address"},{"name":"endpoint","type":"bytes32"}],"name":"getCurveUnset","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"key","type":"bytes32"},{"name":"value","type":"bytes"}],"name":"setProviderParameter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getAllOracles","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"updateDependencies","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"provider","type":"address"}],"name":"getPublicKey","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"provider","type":"address"},{"name":"endpoint","type":"bytes32"}],"name":"getProviderCurveLength","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"endpoint","type":"bytes32"}],"name":"clearEndpoint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getOracleAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"oracleAddress","type":"address"},{"name":"endpoint","type":"bytes32"}],"name":"getEndpointBroker","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"selfDestruct","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"provider","type":"address"}],"name":"getProviderEndpoints","outputs":[{"name":"","type":"bytes32[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"publicKey","type":"uint256"},{"name":"title","type":"bytes32"}],"name":"initiateProvider","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"provider","type":"address"},{"name":"endpoint","type":"bytes32"}],"name":"getEndpointParams","outputs":[{"name":"","type":"bytes32[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"provider","type":"address"}],"name":"getTitle","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"title","type":"bytes32"}],"name":"setProviderTitle","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"endpoint","type":"bytes32"},{"name":"endpointParams","type":"bytes32[]"}],"name":"setEndpointParams","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"c","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"provider","type":"address"},{"indexed":true,"name":"title","type":"bytes32"}],"name":"NewProvider","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"provider","type":"address"},{"indexed":true,"name":"endpoint","type":"bytes32"},{"indexed":false,"name":"curve","type":"int256[]"},{"indexed":true,"name":"broker","type":"address"}],"name":"NewCurve","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

60806040523480156200001157600080fd5b5060405160208062005ad88339810180604052810190808051906020019092919050505080336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506200011262000119640100000000026401000000009004565b5062000261565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663358177736040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825260088152602001807f4441544142415345000000000000000000000000000000000000000000000000815250602001915050602060405180830381600087803b158015620001de57600080fd5b505af1158015620001f3573d6000803e3d6000fd5b505050506040513d60208110156200020a57600080fd5b8101908080519060200190929190505050905080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61586780620002716000396000f300608060405260043610610154576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063186b79c9146101595780632316a9ff146101b4578063238b3aed1461025a578063275601f6146103065780634d655aff1461039e5780634d9bcac4146103f55780634ff6e86e146104bf5780635481f43e1461051657806354a365df146105755780635750644a146105de57806365a6bb29146106555780636e5ecdff146106c1578063857cdbb8146106d857806387cd29a41461072f5780638da5cb5b146107945780638dc8d32b146107eb5780639217c4381461081c5780639c39c8ea146108895780639cb8a26a1461091a578063a72460d114610931578063af87c833146109c9578063e95d618214610a1c578063f2fde38b14610ac2578063f51d7d5f14610b05578063f5d1d29914610b64578063fcf0c24814610b95575b600080fd5b34801561016557600080fd5b5061019a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c09565b604051808215151515815260200191505060405180910390f35b3480156101c057600080fd5b50610203600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050610c25565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561024657808201518184015260208101905061022b565b505050509050019250505060405180910390f35b34801561026657600080fd5b506102ec600480360381019080803560001916906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ef4565b604051808215151515815260200191505060405180910390f35b34801561031257600080fd5b50610347600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611545565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561038a57808201518184015260208101905061036f565b505050509050019250505060405180910390f35b3480156103aa57600080fd5b506103b3611827565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561040157600080fd5b50610444600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560001916906020019092919050505061184d565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610484578082015181840152602081019050610469565b50505050905090810190601f1680156104b15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104cb57600080fd5b50610500600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611be4565b6040518082815260200191505060405180910390f35b34801561052257600080fd5b50610557600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bf6565b60405180826000191660001916815260200191505060405180910390f35b34801561058157600080fd5b506105c4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050611c08565b604051808215151515815260200191505060405180910390f35b3480156105ea57600080fd5b506106536004803603810190808035600019169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611e04565b005b34801561066157600080fd5b5061066a612499565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106ad578082015181840152602081019050610692565b505050509050019250505060405180910390f35b3480156106cd57600080fd5b506106d661266b565b005b3480156106e457600080fd5b50610719600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061273a565b6040518082815260200191505060405180910390f35b34801561073b57600080fd5b5061077e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050612923565b6040518082815260200191505060405180910390f35b3480156107a057600080fd5b506107a9612bf3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107f757600080fd5b5061081a6004803603810190808035600019169060200190929190505050612c18565b005b34801561082857600080fd5b506108476004803603810190808035906020019092919050505061395e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561089557600080fd5b506108d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050613ae4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561092657600080fd5b5061092f613ce2565b005b34801561093d57600080fd5b50610972600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613d77565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156109b557808201518184015260208101905061099a565b505050509050019250505060405180910390f35b3480156109d557600080fd5b50610a02600480360381019080803590602001909291908035600019169060200190929190505050613fb6565b604051808215151515815260200191505060405180910390f35b348015610a2857600080fd5b50610a6b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080356000191690602001909291905050506140c2565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610aae578082015181840152602081019050610a93565b505050509050019250505060405180910390f35b348015610ace57600080fd5b50610b03600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614312565b005b348015610b1157600080fd5b50610b46600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614467565b60405180826000191660001916815260200191505060405180910390f35b348015610b7057600080fd5b50610b936004803603810190808035600019169060200190929190505050614650565b005b348015610ba157600080fd5b50610c0760048036038101908080356000191690602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929050505061489d565b005b600080600102610c1883611bf6565b6000191614159050919050565b6060610c318383611c08565b151515610ca6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4572726f723a204375727665206973206e6f742079657420736574000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d2899b6848460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f63757276657300000000000000000000000000000000000000000000000000008152506006018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515610dd45780518252602082019150602081019050602083039250610daf565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050600060405180830381600087803b158015610e5b57600080fd5b505af1158015610e6f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015610e9957600080fd5b810190808051640100000000811115610eb157600080fd5b82810190506020810184811115610ec757600080fd5b8151856020820283011164010000000082111715610ee457600080fd5b5050929190505050905092915050565b6000610eff33610c09565b1515610f99576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4572726f723a2050726f7669646572206973206e6f742079657420696e69746981526020017f617465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b610fa33385611c08565b1515611017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4572726f723a20437572766520697320616c726561647920736574000000000081525060200191505060405180910390fd5b6000600102600019168460001916141515156110c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f4572726f723a2043616e277420696e697469617465206e756c6c20656e64706f81526020017f696e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6110cc338585614bd9565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638d152d783360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f656e64706f696e747300000000000000000000000000000000000000000000008152506009019150506040516020818303038152906040526040518082805190602001908083835b6020831015156111ea57805182526020820191506020810190506020830392506111c5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020866040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050600060405180830381600087803b15801561128157600080fd5b505af1158015611295573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634e91db08338660405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018260001916600019168152602001807f62726f6b65720000000000000000000000000000000000000000000000000000815250600601925050506040516020818303038152906040526040518082805190602001908083835b6020831015156113c757805182526020820191506020810190506020830392506113a2565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390208473ffffffffffffffffffffffffffffffffffffffff166001026040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050600060405180830381600087803b15801561147757600080fd5b505af115801561148b573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1684600019163373ffffffffffffffffffffffffffffffffffffffff167fadd7c8d34ea3b815721e4441e9d375f523912507ae885dfabba0d2e892ca350c866040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561152757808201518184015260208101905061150c565b505050509050019250505060405180910390a4600190509392505050565b606061155082610c09565b15156115ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4572726f723a2050726f7669646572206973206e6f742079657420696e69746981526020017f617465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638db0e83b8360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f70726f7669646572506172616d73000000000000000000000000000000000000815250600e019150506040516020818303038152906040526040518082805190602001908083835b60208310151561170857805182526020820191506020810190506020830392506116e3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050600060405180830381600087803b15801561178f57600080fd5b505af11580156117a3573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156117cd57600080fd5b8101908080516401000000008111156117e557600080fd5b828101905060208101848111156117fb57600080fd5b815185602082028301116401000000008211171561181857600080fd5b50509291905050509050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606061185883610c09565b15156118f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4572726f723a2050726f7669646572206973206e6f742079657420696e69746981526020017f617465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6118fc8383614fc6565b1515611996576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4572726f723a2050726f766964657220506172616d65746572206973206e6f7481526020017f2079657420696e697469616c697a65640000000000000000000000000000000081525060400191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c031a180848460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f70726f7669646572506172616d73000000000000000000000000000000000000815250600e018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515611ac45780518252602082019150602081019050602083039250611a9f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050600060405180830381600087803b158015611b4b57600080fd5b505af1158015611b5f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015611b8957600080fd5b810190808051640100000000811115611ba157600080fd5b82810190506020810184811115611bb757600080fd5b8151856001820283011164010000000082111715611bd457600080fd5b5050929190505050905092915050565b6000611bef8261273a565b9050919050565b6000611c0182614467565b9050919050565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a21a65ae858560405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f63757276657300000000000000000000000000000000000000000000000000008152506006018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515611d395780518252602082019150602081019050602083039250611d14565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015611dc057600080fd5b505af1158015611dd4573d6000803e3d6000fd5b505050506040513d6020811015611dea57600080fd5b810190808051906020019092919050505014905092915050565b611e0d33610c09565b1515611ea7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4572726f723a2050726f7669646572206973206e6f742079657420696e69746981526020017f617465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b611eb13383614fc6565b151561225b57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166354c552db338460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f69735f706172616d5f7365740000000000000000000000000000000000000000815250600c018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515611fe55780518252602082019150602081019050602083039250611fc0565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060016040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b15801561207557600080fd5b505af1158015612089573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638d152d783360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f70726f7669646572506172616d73000000000000000000000000000000000000815250600e019150506040516020818303038152906040526040518082805190602001908083835b6020831015156121ab5780518252602082019150602081019050602083039250612186565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050600060405180830381600087803b15801561224257600080fd5b505af1158015612256573d6000803e3d6000fd5b505050505b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e28d084338460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f70726f7669646572506172616d73000000000000000000000000000000000000815250600e018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831015156123895780518252602082019150602081019050602083039250612364565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020836040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612430578082015181840152602081019050612415565b50505050905090810190601f16801561245d5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561247d57600080fd5b505af1158015612491573d6000803e3d6000fd5b505050505050565b6060600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635948f73360405160200180807f6f7261636c65496e646578000000000000000000000000000000000000000000815250600b0190506040516020818303038152906040526040518082805190602001908083835b60208310151561254e5780518252602082019150602081019050602083039250612529565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050600060405180830381600087803b1580156125d557600080fd5b505af11580156125e9573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561261357600080fd5b81019080805164010000000081111561262b57600080fd5b8281019050602081018481111561264157600080fd5b815185602082028301116401000000008211171561265e57600080fd5b5050929190505050905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612730576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4572726f723a20436f6f7264696e61746f72204f6e6c792046756e6374696f6e81525060200191505060405180910390fd5b6127386151d6565b565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632ecb0d648360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7075626c69634b657900000000000000000000000000000000000000000000008152506009019150506040516020818303038152906040526040518082805190602001908083835b60208310151561285a5780518252602082019150602081019050602083039250612835565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156128e157600080fd5b505af11580156128f5573d6000803e3d6000fd5b505050506040513d602081101561290b57600080fd5b81019080805190602001909291905050509050919050565b600061292f8383611c08565b1515156129a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4572726f723a204375727665206973206e6f742079657420736574000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d2899b6848460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f63757276657300000000000000000000000000000000000000000000000000008152506006018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515612ad25780518252602082019150602081019050602083039250612aad565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050600060405180830381600087803b158015612b5957600080fd5b505af1158015612b6d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015612b9757600080fd5b810190808051640100000000811115612baf57600080fd5b82810190506020810184811115612bc557600080fd5b8151856020820283011164010000000082111715612be257600080fd5b505092919050505051905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006060806000612c2833610c09565b1515612c9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4572726f723a2050726f7669646572206973206e6f7420696e6974696174656481525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632ecb0d64338760405160200180807f746f74616c426f756e6400000000000000000000000000000000000000000000815250600a018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515612da25780518252602082019150602081019050602083039250612d7d565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015612e2957600080fd5b505af1158015612e3d573d6000803e3d6000fd5b505050506040513d6020811015612e5357600080fd5b81019080805190602001909291905050509350600084141515612f04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f4572726f723a20456e64706f696e74206d7573742068617665206e6f20626f6e81526020017f647300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000604051908082528060200260200182016040528015612f345781602001602082028038833980820191505090505b509250600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638db0e83b3360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f656e64706f696e747300000000000000000000000000000000000000000000008152506009019150506040516020818303038152906040526040518082805190602001908083835b6020831015156130555780518252602082019150602081019050602083039250613030565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050600060405180830381600087803b1580156130dc57600080fd5b505af11580156130f0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561311a57600080fd5b81019080805164010000000081111561313257600080fd5b8281019050602081018481111561314857600080fd5b815185602082028301116401000000008211171561316557600080fd5b50509291905050509150600090505b815181101561338f578460001916828281518110151561319057fe5b9060200190602002015160001916141561338257600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a4f63ec83360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f656e64706f696e747300000000000000000000000000000000000000000000008152506009019150506040516020818303038152906040526040518082805190602001908083835b6020831015156132c2578051825260208201915060208101905060208303925061329d565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390208360006001026040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180846000191660001916815260200183815260200182600019166000191681526020019350505050600060405180830381600087803b15801561336557600080fd5b505af1158015613379573d6000803e3d6000fd5b5050505061338f565b8080600101915050613174565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638d152d783360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f656e64706f696e747300000000000000000000000000000000000000000000008152506009019150506040516020818303038152906040526040518082805190602001908083835b6020831015156134ad5780518252602082019150602081019050602083039250613488565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060006001026040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050600060405180830381600087803b15801561354857600080fd5b505af115801561355c573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634e91db08338760405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018260001916600019168152602001807f62726f6b65720000000000000000000000000000000000000000000000000000815250600601925050506040516020818303038152906040526040518082805190602001908083835b60208310151561368e5780518252602082019150602081019050602083039250613669565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060006001026040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050600060405180830381600087803b15801561372957600080fd5b505af115801561373d573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9fcf76b338760405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f63757276657300000000000000000000000000000000000000000000000000008152506006018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b60208310151561386f578051825260208201915060208101905060208303925061384a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020856040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200180602001828103825283818151815260200191508051906020019060200280838360005b838110156139195780820151818401526020810190506138fe565b505050509050019350505050600060405180830381600087803b15801561393f57600080fd5b505af1158015613953573d6000803e3d6000fd5b505050505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e16e934060405160200180807f6f7261636c65496e646578000000000000000000000000000000000000000000815250600b0190506040516020818303038152906040526040518082805190602001908083835b602083101515613a1357805182526020820191506020810190506020830392506139ee565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020846040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050602060405180830381600087803b158015613aa257600080fd5b505af1158015613ab6573d6000803e3d6000fd5b505050506040513d6020811015613acc57600080fd5b81019080805190602001909291905050509050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a6ed563e848460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018260001916600019168152602001807f62726f6b65720000000000000000000000000000000000000000000000000000815250600601925050506040516020818303038152906040526040518082805190602001908083835b602083101515613c145780518252602082019150602081019050602083039250613bef565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015613c9b57600080fd5b505af1158015613caf573d6000803e3d6000fd5b505050506040513d6020811015613cc557600080fd5b810190808051906020019092919050505060019004905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613d3d57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b6060600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638db0e83b8360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f656e64706f696e747300000000000000000000000000000000000000000000008152506009019150506040516020818303038152906040526040518082805190602001908083835b602083101515613e975780518252602082019150602081019050602083039250613e72565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050600060405180830381600087803b158015613f1e57600080fd5b505af1158015613f32573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015613f5c57600080fd5b810190808051640100000000811115613f7457600080fd5b82810190506020810184811115613f8a57600080fd5b8151856020820283011164010000000082111715613fa757600080fd5b50509291905050509050919050565b6000613fc133610c09565b15151561405c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4572726f723a2050726f766964657220697320616c726561647920696e69746981526020017f617465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b61406733848461531b565b614070336156b2565b81600019163373ffffffffffffffffffffffffffffffffffffffff167f96c4fc31a3e383225857c821101daf68248108597da8ddde0ac2b431eb9a16be60405160405180910390a36001905092915050565b6060600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638db0e83b848460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f656e64706f696e74506172616d73000000000000000000000000000000000000815250600e018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831015156141f257805182526020820191506020810190506020830392506141cd565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050600060405180830381600087803b15801561427957600080fd5b505af115801561428d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156142b757600080fd5b8101908080516401000000008111156142cf57600080fd5b828101905060208101848111156142e557600080fd5b815185602082028301116401000000008211171561430257600080fd5b5050929190505050905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561436d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156143a957600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a6ed563e8360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7469746c650000000000000000000000000000000000000000000000000000008152506005019150506040516020818303038152906040526040518082805190602001908083835b6020831015156145875780518252602082019150602081019050602083039250614562565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561460e57600080fd5b505af1158015614622573d6000803e3d6000fd5b505050506040513d602081101561463857600080fd5b81019080805190602001909291905050509050919050565b61465933610c09565b15156146cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4572726f723a2050726f7669646572206973206e6f7420696e6974696174656481525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634e91db083360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7469746c650000000000000000000000000000000000000000000000000000008152506005019150506040516020818303038152906040526040518082805190602001908083835b6020831015156147eb57805182526020820191506020810190506020830392506147c6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050600060405180830381600087803b15801561488257600080fd5b505af1158015614896573d6000803e3d6000fd5b5050505050565b6148a633610c09565b1515614940576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4572726f723a2050726f7669646572206973206e6f742079657420696e69746981526020017f616c697a6564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b61494a3383611c08565b1515156149bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4572726f723a204375727665206973206e6f742079657420736574000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166356e5cf2e338460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f656e64706f696e74506172616d73000000000000000000000000000000000000815250600e018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515614aed5780518252602082019150602081019050602083039250614ac8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020836040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015614b97578082015181840152602081019050614b7c565b505050509050019350505050600060405180830381600087803b158015614bbd57600080fd5b505af1158015614bd1573d6000803e3d6000fd5b505050505050565b600080600080600060019450600093505b8551841015614da6578584815181101515614c0157fe5b906020019060200201519250600083131515614c85576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a20496e76616c696420437572766500000000000000000000000081525060200191505060405180910390fd5b6001838501019150855182101515614d05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a20496e76616c696420437572766500000000000000000000000081525060200191505060405180910390fd5b8582815181101515614d1357fe5b9060200190602002015190508481111515614d96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a20496e76616c696420437572766500000000000000000000000081525060200191505060405180910390fd5b8094506002830184019350614bea565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9fcf76b898960405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f63757276657300000000000000000000000000000000000000000000000000008152506006018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515614ed45780518252602082019150602081019050602083039250614eaf565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020886040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015614f7e578082015181840152602081019050614f63565b505050509050019350505050600060405180830381600087803b158015614fa457600080fd5b505af1158015614fb8573d6000803e3d6000fd5b505050505050505050505050565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632ecb0d64858560405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f69735f706172616d5f7365740000000000000000000000000000000000000000815250600c018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831015156150f757805182526020820191506020810190506020830392506150d2565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561517e57600080fd5b505af1158015615192573d6000803e3d6000fd5b505050506040513d60208110156151a857600080fd5b81019080805190602001909291905050509050600181146151ca5760006151cd565b60015b91505092915050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663358177736040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825260088152602001807f4441544142415345000000000000000000000000000000000000000000000000815250602001915050602060405180830381600087803b15801561529a57600080fd5b505af11580156152ae573d6000803e3d6000fd5b505050506040513d60208110156152c457600080fd5b8101908080519060200190929190505050905080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166354c552db8460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7075626c69634b657900000000000000000000000000000000000000000000008152506009019150506040516020818303038152906040526040518082805190602001908083835b6020831015156154395780518252602082019150602081019050602083039250615414565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020846040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b1580156154c857600080fd5b505af11580156154dc573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634e91db088460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7469746c650000000000000000000000000000000000000000000000000000008152506005019150506040516020818303038152906040526040518082805190602001908083835b6020831015156155fe57805182526020820191506020810190506020830392506155d9565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050600060405180830381600087803b15801561569557600080fd5b505af11580156156a9573d6000803e3d6000fd5b50505050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd151d1e60405160200180807f6f7261636c65496e646578000000000000000000000000000000000000000000815250600b0190506040516020818303038152906040526040518082805190602001908083835b6020831015156157655780518252602082019150602081019050602083039250615740565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561582057600080fd5b505af1158015615834573d6000803e3d6000fd5b50505050505600a165627a7a7230582040e6b900ae9f12e1ac21fe1e31f46c4faf531c524e11e552c642825cbc44759c0029000000000000000000000000b007eca49763f31edff95623ed6c23c8c1924a16

Deployed Bytecode

0x608060405260043610610154576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063186b79c9146101595780632316a9ff146101b4578063238b3aed1461025a578063275601f6146103065780634d655aff1461039e5780634d9bcac4146103f55780634ff6e86e146104bf5780635481f43e1461051657806354a365df146105755780635750644a146105de57806365a6bb29146106555780636e5ecdff146106c1578063857cdbb8146106d857806387cd29a41461072f5780638da5cb5b146107945780638dc8d32b146107eb5780639217c4381461081c5780639c39c8ea146108895780639cb8a26a1461091a578063a72460d114610931578063af87c833146109c9578063e95d618214610a1c578063f2fde38b14610ac2578063f51d7d5f14610b05578063f5d1d29914610b64578063fcf0c24814610b95575b600080fd5b34801561016557600080fd5b5061019a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c09565b604051808215151515815260200191505060405180910390f35b3480156101c057600080fd5b50610203600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050610c25565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561024657808201518184015260208101905061022b565b505050509050019250505060405180910390f35b34801561026657600080fd5b506102ec600480360381019080803560001916906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ef4565b604051808215151515815260200191505060405180910390f35b34801561031257600080fd5b50610347600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611545565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561038a57808201518184015260208101905061036f565b505050509050019250505060405180910390f35b3480156103aa57600080fd5b506103b3611827565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561040157600080fd5b50610444600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560001916906020019092919050505061184d565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610484578082015181840152602081019050610469565b50505050905090810190601f1680156104b15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104cb57600080fd5b50610500600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611be4565b6040518082815260200191505060405180910390f35b34801561052257600080fd5b50610557600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bf6565b60405180826000191660001916815260200191505060405180910390f35b34801561058157600080fd5b506105c4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050611c08565b604051808215151515815260200191505060405180910390f35b3480156105ea57600080fd5b506106536004803603810190808035600019169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611e04565b005b34801561066157600080fd5b5061066a612499565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106ad578082015181840152602081019050610692565b505050509050019250505060405180910390f35b3480156106cd57600080fd5b506106d661266b565b005b3480156106e457600080fd5b50610719600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061273a565b6040518082815260200191505060405180910390f35b34801561073b57600080fd5b5061077e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050612923565b6040518082815260200191505060405180910390f35b3480156107a057600080fd5b506107a9612bf3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107f757600080fd5b5061081a6004803603810190808035600019169060200190929190505050612c18565b005b34801561082857600080fd5b506108476004803603810190808035906020019092919050505061395e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561089557600080fd5b506108d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190505050613ae4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561092657600080fd5b5061092f613ce2565b005b34801561093d57600080fd5b50610972600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613d77565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156109b557808201518184015260208101905061099a565b505050509050019250505060405180910390f35b3480156109d557600080fd5b50610a02600480360381019080803590602001909291908035600019169060200190929190505050613fb6565b604051808215151515815260200191505060405180910390f35b348015610a2857600080fd5b50610a6b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080356000191690602001909291905050506140c2565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610aae578082015181840152602081019050610a93565b505050509050019250505060405180910390f35b348015610ace57600080fd5b50610b03600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614312565b005b348015610b1157600080fd5b50610b46600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614467565b60405180826000191660001916815260200191505060405180910390f35b348015610b7057600080fd5b50610b936004803603810190808035600019169060200190929190505050614650565b005b348015610ba157600080fd5b50610c0760048036038101908080356000191690602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929050505061489d565b005b600080600102610c1883611bf6565b6000191614159050919050565b6060610c318383611c08565b151515610ca6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4572726f723a204375727665206973206e6f742079657420736574000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d2899b6848460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f63757276657300000000000000000000000000000000000000000000000000008152506006018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515610dd45780518252602082019150602081019050602083039250610daf565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050600060405180830381600087803b158015610e5b57600080fd5b505af1158015610e6f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015610e9957600080fd5b810190808051640100000000811115610eb157600080fd5b82810190506020810184811115610ec757600080fd5b8151856020820283011164010000000082111715610ee457600080fd5b5050929190505050905092915050565b6000610eff33610c09565b1515610f99576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4572726f723a2050726f7669646572206973206e6f742079657420696e69746981526020017f617465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b610fa33385611c08565b1515611017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4572726f723a20437572766520697320616c726561647920736574000000000081525060200191505060405180910390fd5b6000600102600019168460001916141515156110c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f4572726f723a2043616e277420696e697469617465206e756c6c20656e64706f81526020017f696e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6110cc338585614bd9565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638d152d783360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f656e64706f696e747300000000000000000000000000000000000000000000008152506009019150506040516020818303038152906040526040518082805190602001908083835b6020831015156111ea57805182526020820191506020810190506020830392506111c5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020866040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050600060405180830381600087803b15801561128157600080fd5b505af1158015611295573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634e91db08338660405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018260001916600019168152602001807f62726f6b65720000000000000000000000000000000000000000000000000000815250600601925050506040516020818303038152906040526040518082805190602001908083835b6020831015156113c757805182526020820191506020810190506020830392506113a2565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390208473ffffffffffffffffffffffffffffffffffffffff166001026040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050600060405180830381600087803b15801561147757600080fd5b505af115801561148b573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1684600019163373ffffffffffffffffffffffffffffffffffffffff167fadd7c8d34ea3b815721e4441e9d375f523912507ae885dfabba0d2e892ca350c866040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561152757808201518184015260208101905061150c565b505050509050019250505060405180910390a4600190509392505050565b606061155082610c09565b15156115ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4572726f723a2050726f7669646572206973206e6f742079657420696e69746981526020017f617465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638db0e83b8360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f70726f7669646572506172616d73000000000000000000000000000000000000815250600e019150506040516020818303038152906040526040518082805190602001908083835b60208310151561170857805182526020820191506020810190506020830392506116e3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050600060405180830381600087803b15801561178f57600080fd5b505af11580156117a3573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156117cd57600080fd5b8101908080516401000000008111156117e557600080fd5b828101905060208101848111156117fb57600080fd5b815185602082028301116401000000008211171561181857600080fd5b50509291905050509050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606061185883610c09565b15156118f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4572726f723a2050726f7669646572206973206e6f742079657420696e69746981526020017f617465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6118fc8383614fc6565b1515611996576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4572726f723a2050726f766964657220506172616d65746572206973206e6f7481526020017f2079657420696e697469616c697a65640000000000000000000000000000000081525060400191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c031a180848460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f70726f7669646572506172616d73000000000000000000000000000000000000815250600e018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515611ac45780518252602082019150602081019050602083039250611a9f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050600060405180830381600087803b158015611b4b57600080fd5b505af1158015611b5f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015611b8957600080fd5b810190808051640100000000811115611ba157600080fd5b82810190506020810184811115611bb757600080fd5b8151856001820283011164010000000082111715611bd457600080fd5b5050929190505050905092915050565b6000611bef8261273a565b9050919050565b6000611c0182614467565b9050919050565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a21a65ae858560405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f63757276657300000000000000000000000000000000000000000000000000008152506006018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515611d395780518252602082019150602081019050602083039250611d14565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015611dc057600080fd5b505af1158015611dd4573d6000803e3d6000fd5b505050506040513d6020811015611dea57600080fd5b810190808051906020019092919050505014905092915050565b611e0d33610c09565b1515611ea7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4572726f723a2050726f7669646572206973206e6f742079657420696e69746981526020017f617465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b611eb13383614fc6565b151561225b57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166354c552db338460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f69735f706172616d5f7365740000000000000000000000000000000000000000815250600c018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515611fe55780518252602082019150602081019050602083039250611fc0565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060016040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b15801561207557600080fd5b505af1158015612089573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638d152d783360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f70726f7669646572506172616d73000000000000000000000000000000000000815250600e019150506040516020818303038152906040526040518082805190602001908083835b6020831015156121ab5780518252602082019150602081019050602083039250612186565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050600060405180830381600087803b15801561224257600080fd5b505af1158015612256573d6000803e3d6000fd5b505050505b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e28d084338460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f70726f7669646572506172616d73000000000000000000000000000000000000815250600e018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831015156123895780518252602082019150602081019050602083039250612364565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020836040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612430578082015181840152602081019050612415565b50505050905090810190601f16801561245d5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561247d57600080fd5b505af1158015612491573d6000803e3d6000fd5b505050505050565b6060600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635948f73360405160200180807f6f7261636c65496e646578000000000000000000000000000000000000000000815250600b0190506040516020818303038152906040526040518082805190602001908083835b60208310151561254e5780518252602082019150602081019050602083039250612529565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050600060405180830381600087803b1580156125d557600080fd5b505af11580156125e9573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561261357600080fd5b81019080805164010000000081111561262b57600080fd5b8281019050602081018481111561264157600080fd5b815185602082028301116401000000008211171561265e57600080fd5b5050929190505050905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612730576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4572726f723a20436f6f7264696e61746f72204f6e6c792046756e6374696f6e81525060200191505060405180910390fd5b6127386151d6565b565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632ecb0d648360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7075626c69634b657900000000000000000000000000000000000000000000008152506009019150506040516020818303038152906040526040518082805190602001908083835b60208310151561285a5780518252602082019150602081019050602083039250612835565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156128e157600080fd5b505af11580156128f5573d6000803e3d6000fd5b505050506040513d602081101561290b57600080fd5b81019080805190602001909291905050509050919050565b600061292f8383611c08565b1515156129a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4572726f723a204375727665206973206e6f742079657420736574000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d2899b6848460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f63757276657300000000000000000000000000000000000000000000000000008152506006018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515612ad25780518252602082019150602081019050602083039250612aad565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050600060405180830381600087803b158015612b5957600080fd5b505af1158015612b6d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015612b9757600080fd5b810190808051640100000000811115612baf57600080fd5b82810190506020810184811115612bc557600080fd5b8151856020820283011164010000000082111715612be257600080fd5b505092919050505051905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006060806000612c2833610c09565b1515612c9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4572726f723a2050726f7669646572206973206e6f7420696e6974696174656481525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632ecb0d64338760405160200180807f746f74616c426f756e6400000000000000000000000000000000000000000000815250600a018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515612da25780518252602082019150602081019050602083039250612d7d565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015612e2957600080fd5b505af1158015612e3d573d6000803e3d6000fd5b505050506040513d6020811015612e5357600080fd5b81019080805190602001909291905050509350600084141515612f04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f4572726f723a20456e64706f696e74206d7573742068617665206e6f20626f6e81526020017f647300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000604051908082528060200260200182016040528015612f345781602001602082028038833980820191505090505b509250600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638db0e83b3360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f656e64706f696e747300000000000000000000000000000000000000000000008152506009019150506040516020818303038152906040526040518082805190602001908083835b6020831015156130555780518252602082019150602081019050602083039250613030565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050600060405180830381600087803b1580156130dc57600080fd5b505af11580156130f0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561311a57600080fd5b81019080805164010000000081111561313257600080fd5b8281019050602081018481111561314857600080fd5b815185602082028301116401000000008211171561316557600080fd5b50509291905050509150600090505b815181101561338f578460001916828281518110151561319057fe5b9060200190602002015160001916141561338257600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a4f63ec83360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f656e64706f696e747300000000000000000000000000000000000000000000008152506009019150506040516020818303038152906040526040518082805190602001908083835b6020831015156132c2578051825260208201915060208101905060208303925061329d565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390208360006001026040518463ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180846000191660001916815260200183815260200182600019166000191681526020019350505050600060405180830381600087803b15801561336557600080fd5b505af1158015613379573d6000803e3d6000fd5b5050505061338f565b8080600101915050613174565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638d152d783360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f656e64706f696e747300000000000000000000000000000000000000000000008152506009019150506040516020818303038152906040526040518082805190602001908083835b6020831015156134ad5780518252602082019150602081019050602083039250613488565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060006001026040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050600060405180830381600087803b15801561354857600080fd5b505af115801561355c573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634e91db08338760405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018260001916600019168152602001807f62726f6b65720000000000000000000000000000000000000000000000000000815250600601925050506040516020818303038152906040526040518082805190602001908083835b60208310151561368e5780518252602082019150602081019050602083039250613669565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060006001026040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050600060405180830381600087803b15801561372957600080fd5b505af115801561373d573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9fcf76b338760405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f63757276657300000000000000000000000000000000000000000000000000008152506006018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b60208310151561386f578051825260208201915060208101905060208303925061384a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020856040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200180602001828103825283818151815260200191508051906020019060200280838360005b838110156139195780820151818401526020810190506138fe565b505050509050019350505050600060405180830381600087803b15801561393f57600080fd5b505af1158015613953573d6000803e3d6000fd5b505050505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e16e934060405160200180807f6f7261636c65496e646578000000000000000000000000000000000000000000815250600b0190506040516020818303038152906040526040518082805190602001908083835b602083101515613a1357805182526020820191506020810190506020830392506139ee565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020846040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050602060405180830381600087803b158015613aa257600080fd5b505af1158015613ab6573d6000803e3d6000fd5b505050506040513d6020811015613acc57600080fd5b81019080805190602001909291905050509050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a6ed563e848460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018260001916600019168152602001807f62726f6b65720000000000000000000000000000000000000000000000000000815250600601925050506040516020818303038152906040526040518082805190602001908083835b602083101515613c145780518252602082019150602081019050602083039250613bef565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015613c9b57600080fd5b505af1158015613caf573d6000803e3d6000fd5b505050506040513d6020811015613cc557600080fd5b810190808051906020019092919050505060019004905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613d3d57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b6060600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638db0e83b8360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f656e64706f696e747300000000000000000000000000000000000000000000008152506009019150506040516020818303038152906040526040518082805190602001908083835b602083101515613e975780518252602082019150602081019050602083039250613e72565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050600060405180830381600087803b158015613f1e57600080fd5b505af1158015613f32573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015613f5c57600080fd5b810190808051640100000000811115613f7457600080fd5b82810190506020810184811115613f8a57600080fd5b8151856020820283011164010000000082111715613fa757600080fd5b50509291905050509050919050565b6000613fc133610c09565b15151561405c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4572726f723a2050726f766964657220697320616c726561647920696e69746981526020017f617465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b61406733848461531b565b614070336156b2565b81600019163373ffffffffffffffffffffffffffffffffffffffff167f96c4fc31a3e383225857c821101daf68248108597da8ddde0ac2b431eb9a16be60405160405180910390a36001905092915050565b6060600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638db0e83b848460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f656e64706f696e74506172616d73000000000000000000000000000000000000815250600e018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831015156141f257805182526020820191506020810190506020830392506141cd565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050600060405180830381600087803b15801561427957600080fd5b505af115801561428d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156142b757600080fd5b8101908080516401000000008111156142cf57600080fd5b828101905060208101848111156142e557600080fd5b815185602082028301116401000000008211171561430257600080fd5b5050929190505050905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561436d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156143a957600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a6ed563e8360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7469746c650000000000000000000000000000000000000000000000000000008152506005019150506040516020818303038152906040526040518082805190602001908083835b6020831015156145875780518252602082019150602081019050602083039250614562565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561460e57600080fd5b505af1158015614622573d6000803e3d6000fd5b505050506040513d602081101561463857600080fd5b81019080805190602001909291905050509050919050565b61465933610c09565b15156146cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4572726f723a2050726f7669646572206973206e6f7420696e6974696174656481525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634e91db083360405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7469746c650000000000000000000000000000000000000000000000000000008152506005019150506040516020818303038152906040526040518082805190602001908083835b6020831015156147eb57805182526020820191506020810190506020830392506147c6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050600060405180830381600087803b15801561488257600080fd5b505af1158015614896573d6000803e3d6000fd5b5050505050565b6148a633610c09565b1515614940576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4572726f723a2050726f7669646572206973206e6f742079657420696e69746981526020017f616c697a6564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b61494a3383611c08565b1515156149bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4572726f723a204375727665206973206e6f742079657420736574000000000081525060200191505060405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166356e5cf2e338460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f656e64706f696e74506172616d73000000000000000000000000000000000000815250600e018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515614aed5780518252602082019150602081019050602083039250614ac8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020836040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015614b97578082015181840152602081019050614b7c565b505050509050019350505050600060405180830381600087803b158015614bbd57600080fd5b505af1158015614bd1573d6000803e3d6000fd5b505050505050565b600080600080600060019450600093505b8551841015614da6578584815181101515614c0157fe5b906020019060200201519250600083131515614c85576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a20496e76616c696420437572766500000000000000000000000081525060200191505060405180910390fd5b6001838501019150855182101515614d05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a20496e76616c696420437572766500000000000000000000000081525060200191505060405180910390fd5b8582815181101515614d1357fe5b9060200190602002015190508481111515614d96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a20496e76616c696420437572766500000000000000000000000081525060200191505060405180910390fd5b8094506002830184019350614bea565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9fcf76b898960405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f63757276657300000000000000000000000000000000000000000000000000008152506006018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515614ed45780518252602082019150602081019050602083039250614eaf565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020886040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015614f7e578082015181840152602081019050614f63565b505050509050019350505050600060405180830381600087803b158015614fa457600080fd5b505af1158015614fb8573d6000803e3d6000fd5b505050505050505050505050565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632ecb0d64858560405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f69735f706172616d5f7365740000000000000000000000000000000000000000815250600c018260001916600019168152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831015156150f757805182526020820191506020810190506020830392506150d2565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561517e57600080fd5b505af1158015615192573d6000803e3d6000fd5b505050506040513d60208110156151a857600080fd5b81019080805190602001909291905050509050600181146151ca5760006151cd565b60015b91505092915050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663358177736040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825260088152602001807f4441544142415345000000000000000000000000000000000000000000000000815250602001915050602060405180830381600087803b15801561529a57600080fd5b505af11580156152ae573d6000803e3d6000fd5b505050506040513d60208110156152c457600080fd5b8101908080519060200190929190505050905080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166354c552db8460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7075626c69634b657900000000000000000000000000000000000000000000008152506009019150506040516020818303038152906040526040518082805190602001908083835b6020831015156154395780518252602082019150602081019050602083039250615414565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020846040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b1580156154c857600080fd5b505af11580156154dc573d6000803e3d6000fd5b50505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634e91db088460405160200180807f6f7261636c6573000000000000000000000000000000000000000000000000008152506007018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7469746c650000000000000000000000000000000000000000000000000000008152506005019150506040516020818303038152906040526040518082805190602001908083835b6020831015156155fe57805182526020820191506020810190506020830392506155d9565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050600060405180830381600087803b15801561569557600080fd5b505af11580156156a9573d6000803e3d6000fd5b50505050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd151d1e60405160200180807f6f7261636c65496e646578000000000000000000000000000000000000000000815250600b0190506040516020818303038152906040526040518082805190602001908083835b6020831015156157655780518252602082019150602081019050602083039250615740565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561582057600080fd5b505af1158015615834573d6000803e3d6000fd5b50505050505600a165627a7a7230582040e6b900ae9f12e1ac21fe1e31f46c4faf531c524e11e552c642825cbc44759c0029

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

000000000000000000000000b007eca49763f31edff95623ed6c23c8c1924a16

-----Decoded View---------------
Arg [0] : c (address): 0xb007eca49763f31EDfF95623Ed6C23C8C1924a16

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000b007eca49763f31edff95623ed6c23c8c1924a16


Swarm Source

bzzr://40e6b900ae9f12e1ac21fe1e31f46c4faf531c524e11e552c642825cbc44759c

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
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.