Address Provider

Addresses register of the protocol for a particular market. This contract is immutable and the address will never change. Whenever a LendingPool contract is needed, we recommended you fetch the correct address from the AddressProvider smart contract.

Methods

getMarketId()

function getMarketId()

Return values

Type
Description

string

A string representation of the market

getLendingPool()

function getLendingPool()

Return values

Type
Description

address

The address of the associated LendingPool​

getConfigurator()

function getConfigurator()

The Configurator is used for configuration methods for each market, e.g.initialising a reserve or updating fTokens.

Return values

Type
Description

address

The address of the associated Configurator

getCollateralManager()

function getCollateralManager()

The CollateralManager is used for management of collateral in the protocol, the main one being for liquidation auctions. The contract should never be called directly, only via the LendingPool.

Return values

Type
Description

address

The address of the associated CollateralManager

getExecutionDelegate()

function getExecutionDelegate()

The ExecutionDelegate is used for managing token transfers across the protocol.

Return values

Type
Description

address

The address of the associated ExecutionDelegate

getExecutionManager()

function getExecutionManager()

The ExecutionManager can be used to optimise calls to the lending pool via multiCall.

Return values

Type
Description

address

The address of the associated ExecutionManager

getObligationReceipt()

function getObligationReceipt()

The ObligationReceipt is used to enable the transfer and sale of NFTs held as collateral, as well as the transfer of rights delegation.

Return values

Type
Description

address

The address of the associated ObligationReceipt

getTreasury()

function getTreasury()

Return values

Type
Description

address

The address of the protocol treasury

getPoolAdmin()

function getPoolAdmin()

Return values

Type
Description

address

The address of the market / pool's admin

getEmergencyAdmin()

function getEmergencyAdmin()

Return values

Type
Description

address

The address of the market / pool's emergency admin

getNFTPriceOralce()

function getNFTPriceOracle()

The NFTPriceOracle is to fetch NFT prices at the collection, trait and token level.

Return values

Type
Description

address

The address of the NFTPriceOracle

getPriceConsumerV3()

function getPriceConsumerV3()

The PriceConsumerV3 is used to fetch asset prices.

Return values

Type
Description

address

The address of the Chainlink price consumer

getLendingRateManager()

function getLendingRateOracle()

The LendingRateManager is used to fetch borrow interest rates and LTVs.

Return values

Type
Description

address

The address of the LendingRateManager

getDelegationRegistry()

function getDelegationRegistry()

The DelegationRegistry is used to enable the persistence and transferability of NFT rights delegation while an NFT is held as collateral, e.g. to claim airdrops or access token-gated events.

Return values

Type
Description

address

The address of the associated DelegationRegistry

getWETH()

function getWETH()

The WETH contract is used to wrap ETH for WETH.

Return values

Type
Description

address

The address of the associated WETH contract

getWETHGateWay()

function getWETHGateway()

The WETHGateway contract is used to enable ETH / native token operations.

Return values

Type
Description

address

The address of the associated WETHGateway

getAddress()

function getAddress(bytes32 id)

Return values

Type
Description

address

The address associated with the bytes32 id used

ABI

Address Provider ABI
{
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "marketId",
          "type": "string"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "hasProxy",
          "type": "bool"
        }
      ],
      "name": "AddressSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "CollateralManagerUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "ConfiguratorUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "DebtTokenImplUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "DelegationRegistryUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "EmergencyAdminUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "ExecutionDelegateUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "ExecutionManagerUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "FTokenImplUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "FluidTokenUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "LendingPoolUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "LendingRateManagerUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "LendingUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "newMarketId",
          "type": "string"
        }
      ],
      "name": "MarketIdSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "NFTPriceOracleUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "ObligationReceiptBundleUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "ObligationReceiptUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "PeerAdminUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "PeerIncentivesControllerUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "PoolAdminUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "PoolIncentivesControllerUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "PriceConsumerUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "PromissoryNoteBundleUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "PromissoryNoteUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "ProxyCreated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "ReferralManagerUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "TreasuryUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "WETHGatewayUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "WETHUpdated",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "getAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getCollateralManager",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getConfigurator",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getDebtTokenImpl",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getDelegationRegistry",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getEmergencyAdmin",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getExecutionDelegate",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getExecutionManager",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getFTokenImpl",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getFluidToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getLending",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getLendingPool",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getLendingRateManager",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getMarketId",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getNFTPriceOracle",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getObligationReceipt",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getObligationReceiptBundle",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getPeerAdmin",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getPeerIncentivesController",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getPoolAdmin",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getPoolIncentivesController",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getPriceConsumerV3",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getPromissoryNote",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getPromissoryNoteBundle",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getReferralManager",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getTreasury",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getWETH",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getWETHGateway",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "setAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "implementationAddress",
          "type": "address"
        }
      ],
      "name": "setAddressAsProxy",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "manager",
          "type": "address"
        }
      ],
      "name": "setCollateralManager",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "configurator",
          "type": "address"
        }
      ],
      "name": "setConfigurator",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "configurator",
          "type": "address"
        }
      ],
      "name": "setConfiguratorImpl",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "debtTokenImpl",
          "type": "address"
        }
      ],
      "name": "setDebtTokenImpl",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "delegationRegistry",
          "type": "address"
        }
      ],
      "name": "setDelegationRegistry",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "emergencyAdmin",
          "type": "address"
        }
      ],
      "name": "setEmergencyAdmin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "executionDelegate",
          "type": "address"
        }
      ],
      "name": "setExecutionDelegate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "executionManager",
          "type": "address"
        }
      ],
      "name": "setExecutionManager",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "fTokenImpl",
          "type": "address"
        }
      ],
      "name": "setFTokenImpl",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "fluidToken",
          "type": "address"
        }
      ],
      "name": "setFluidToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "lending",
          "type": "address"
        }
      ],
      "name": "setLending",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "pool",
          "type": "address"
        }
      ],
      "name": "setLendingPool",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "lendingRateManager",
          "type": "address"
        }
      ],
      "name": "setLendingRateManager",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "marketId",
          "type": "string"
        }
      ],
      "name": "setMarketId",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "nftPriceOracle",
          "type": "address"
        }
      ],
      "name": "setNFTPriceOracle",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "obligationReceipt",
          "type": "address"
        }
      ],
      "name": "setObligationReceipt",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "obligationReceipt",
          "type": "address"
        }
      ],
      "name": "setObligationReceiptBundle",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "admin",
          "type": "address"
        }
      ],
      "name": "setPeerAdmin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "controller",
          "type": "address"
        }
      ],
      "name": "setPeerIncentivesController",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "admin",
          "type": "address"
        }
      ],
      "name": "setPoolAdmin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "controller",
          "type": "address"
        }
      ],
      "name": "setPoolIncentivesController",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "priceConsumerV3",
          "type": "address"
        }
      ],
      "name": "setPriceConsumerV3",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "promissoryNote",
          "type": "address"
        }
      ],
      "name": "setPromissoryNote",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "promissoryNote",
          "type": "address"
        }
      ],
      "name": "setPromissoryNoteBundle",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "referralManager",
          "type": "address"
        }
      ],
      "name": "setReferralManager",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "treasury",
          "type": "address"
        }
      ],
      "name": "setTreasury",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "weth",
          "type": "address"
        }
      ],
      "name": "setWETH",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "wethGateway",
          "type": "address"
        }
      ],
      "name": "setWETHGateway",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "0x60806040523480156200001157600080fd5b50604051620034e6380380620034e6833981016040819052620000349162000128565b6200003f3362000051565b6200004a81620000a1565b5062000370565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001620000af82826200026f565b507f5e667c32fd847cf8bce48ab3400175cbf107bdc82b2dea62e3364909dfaee79981604051620000e191906200033b565b60405180910390a150565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200011f57818101518382015260200162000105565b50506000910152565b6000602082840312156200013b57600080fd5b81516001600160401b03808211156200015357600080fd5b818401915084601f8301126200016857600080fd5b8151818111156200017d576200017d620000ec565b604051601f8201601f19908116603f01168101908382118183101715620001a857620001a8620000ec565b81604052828152876020848701011115620001c257600080fd5b620001d583602083016020880162000102565b979650505050505050565b600181811c90821680620001f557607f821691505b6020821081036200021657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200026a57600081815260208120601f850160051c81016020861015620002455750805b601f850160051c820191505b81811015620002665782815560010162000251565b5050505b505050565b81516001600160401b038111156200028b576200028b620000ec565b620002a3816200029c8454620001e0565b846200021c565b602080601f831160018114620002db5760008415620002c25750858301515b600019600386901b1c1916600185901b17855562000266565b600085815260208120601f198616915b828110156200030c57888601518255948401946001909101908401620002eb565b50858210156200032b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208152600082518060208401526200035c81604085016020870162000102565b601f01601f19169190910160400192915050565b61316680620003806000396000f3fe60806040523480156200001157600080fd5b5060043610620003fc5760003560e01c806369acea5f116200021d578063a01246e31162000131578063de3c6e0411620000bb578063f0f442601162000086578063f0f4426014620007dd578063f2fde38b14620007f4578063f66e398f146200080b578063f67b1847146200082257600080fd5b8063de3c6e0414620007a8578063dfa441be14620007b2578063e4a2544d14620007bc578063ea34b96114620007c657600080fd5b8063c5f3a4c411620000fc578063c5f3a4c41462000766578063ca446dd9146200077d578063cae5f11e1462000794578063ddcaa9ea146200079e57600080fd5b8063a01246e31462000717578063ad1f9944146200072e578063aecda3781462000745578063c13e754b146200074f57600080fd5b8063842a05d411620001b357806398875827116200017e5780639887582714620006d55780639b7ae5ec14620006ec5780639f5f86ae14620006f65780639fd192b8146200070d57600080fd5b8063842a05d41462000698578063862beee114620006af5780638da5cb5b14620006b957806390313e8e14620006cb57600080fd5b806373aa9e9411620001f457806373aa9e94146200065657806374eb5a62146200066d57806377532ed914620006845780637dd83ac5146200068e57600080fd5b806369acea5f146200062b5780636c6f33a51462000635578063715018a6146200064c57600080fd5b8063283d62ad11620003155780634d82964c11620002ab5780635dcc528c11620002765780635dcc528c14620005e9578063617e0605146200060057806363ede0fc146200060a578063673adf43146200062157600080fd5b80634d82964c1462000598578063568ef47014620005af57806357d600a114620005c85780635b769f3c14620005d257600080fd5b80633b19e84a11620002ec5780633b19e84a14620005705780633fa01431146200057a57806347d2c534146200058457806347f872f1146200058e57600080fd5b8063283d62ad146200052b5780632fedd807146200054257806335da3394146200055957600080fd5b8063146b9ae311620003975780631e34764c11620003625780631e34764c14620004dc57806321da583714620004f357806321f8a721146200050a57806322e35383146200052157600080fd5b8063146b9ae314620004a7578063180fde0714620004b157806319ef926814620004c85780631a8b1fbc14620004d257600080fd5b80630c71b70111620003d85780630c71b701146200044b578063113aa8b11462000462578063135dc14714620004795780631381ba4d146200049057600080fd5b806292604714620004015780630261bf8b1462000428578063037c9be21462000432575b600080fd5b6200040b62000839565b6040516001600160a01b0390911681526020015b60405180910390f35b6200040b6200085f565b620004496200044336600462001f26565b6200087b565b005b620004496200045c36600462001f26565b6200090d565b620004496200047336600462001f26565b62000969565b620004496200048a36600462001f26565b620009f5565b62000449620004a136600462001f26565b62000a84565b6200040b62000b15565b62000449620004c236600462001f26565b62000b2f565b6200040b62000bb6565b6200040b62000be3565b62000449620004ed36600462001f26565b62000bfe565b620004496200050436600462001f26565b62000c8e565b6200040b6200051b36600462001f4b565b62000d1a565b6200040b62000d35565b620004496200053c36600462001f26565b62000d62565b620004496200055336600462001f26565b62000dec565b620004496200056a36600462001f26565b62000e7b565b6200040b62000f0a565b6200040b62000f22565b6200040b62000f44565b6200040b62000f63565b62000449620005a936600462001f26565b62000f85565b620005b962001019565b6040516200041f919062001fad565b6200040b620010b3565b62000449620005e336600462001f26565b620010d6565b62000449620005fa36600462001fc2565b6200115a565b6200040b620011b9565b620004496200061b36600462001f26565b620011dd565b6200040b6200126f565b6200040b6200128f565b620004496200064636600462001f26565b620012a6565b6200044962001343565b620004496200066736600462001f26565b6200135b565b620004496200067e36600462001f26565b620013ee565b6200040b62001479565b6200040b62001495565b62000449620006a936600462001f26565b620014be565b6200040b62001550565b6000546001600160a01b03166200040b565b6200040b62001571565b62000449620006e636600462001f26565b62001590565b6200040b6200161a565b620004496200070736600462001f26565b62001636565b6200040b620016c2565b620004496200072836600462001f26565b620016de565b620004496200073f36600462001f26565b6200176f565b6200040b62001808565b620004496200076036600462001f26565b62001822565b620004496200077736600462001f26565b620018bf565b620004496200078e36600462001fc2565b6200194f565b6200040b620019bb565b6200040b620019cf565b6200040b620019ee565b6200040b62001a0e565b6200040b62001a30565b62000449620007d736600462001f26565b62001a56565b62000449620007ee36600462001f26565b62001aec565b620004496200080536600462001f26565b62001b74565b620004496200081c36600462001f26565b62001bf7565b620004496200083336600462002007565b62001c83565b60006200085a7050524943455f434f4e53554d45525f563360781b62000d1a565b905090565b60006200085a6b13115391125391d7d413d3d360a21b62000d1a565b6200088562001c98565b71455845435554494f4e5f44454c454741544560701b600090815260026020527f20a83204e1bdb5e559f53f33519c56a69bd7bf634f98b1785b0af67f73c0025980546001600160a01b0319166001600160a01b03841690811790915560405190917f27b088f74c2a2d700056533df4dc5e9cd62f37caa25ac8934288444227638e5891a250565b6200091762001c98565b620009326b21a7a72324a3aaa920aa27a960a11b8262001cf4565b6040516001600160a01b038216907fc3236f1070213eaeaa9c639ef4afe370db8d568bff09d4a58cfb99a85e288f1e90600090a250565b6200097362001c98565b6b13115391125391d7d413d3d360a21b600090815260026020527fe5bdb40dea1fe80924bcdf7c070aa283f3cb94408a3870bba2d2fbfbae6b6df780546001600160a01b0319166001600160a01b03841690811790915560405190917fc4e6c6cdf28d0edbd8bcf071d724d33cc2e7a30be7d06443925656e9cb492aa491a250565b620009ff62001c98565b6e1111509517d513d2d15397d2535413608a1b600090815260026020527f6036d855f21afe7dfb8131b849ea29ba72dd2a065449193d6b1d9454ebcb9fa780546001600160a01b0319166001600160a01b03841690811790915560405190917f3cf954087af08d2fe2174f52171dd00643537359806f333023c728b6b443e5c091a250565b62000a8e62001c98565b7022ac22a1aaaa24a7a72fa6a0a720a3a2a960791b600090815260026020527fa33379d18b1e75d1dd776786d0e44221a6db3be8eb65c514d5c38e319119a26880546001600160a01b0319166001600160a01b03841690811790915560405190917f5eae3f21f5abac4a9e5366b214d23ec32700884bea3cfbc7502b49a9677573be91a250565b60006200085a692822a2a92fa0a226a4a760b11b62000d1a565b62000b3962001c98565b664c454e44494e4760c81b600090815260026020527f5feb06125a85fb98b540bee21269c9be1fda767db983db133357f1c77ae3dade80546001600160a01b0319166001600160a01b03841690811790915560405190917f535075f3058ab321c7ef90c69527c8440ff729fe1bf89ab1db1c0c1c3fb06a7c91a250565b60006200085a7f504f4f4c5f494e43454e54495645535f434f4e54524f4c4c455200000000000062000d1a565b60006200085a6a23262aa4a22faa27a5a2a760a91b62000d1a565b62000c0862001c98565b6f4e46545f50524943455f4f5241434c4560801b600090815260026020527fa7f3afca83ac2ad9556e7c271c326c0a0afe124cd9d3f845d316f7c11ae7b3ce80546001600160a01b0319166001600160a01b03841690811790915560405190917f9b25a87beb9b0c944472a974a70f2b8801d148aea9658ccc0b5fb8c11cf9473e91a250565b62000c9862001c98565b6b574554485f4741544557415960a01b600090815260026020527f936557deb1f2e2280930d0cea62c19c7f77ebcef5be3417aa6a4bf3196e8968b80546001600160a01b0319166001600160a01b03841690811790915560405190917f1c04adf41189ea89c3aed4d2b48952e6430bf6aed5df45f9fb5e83e5d8ea284291a250565b6000908152600260205260409020546001600160a01b031690565b60006200085a7f504545525f494e43454e54495645535f434f4e54524f4c4c455200000000000062000d1a565b62000d6c62001c98565b692827a7a62fa0a226a4a760b11b600090815260026020527f8625fbc469bac10fd11de1d783dcd446542784dbcc535ef64a1da61860fda74c80546001600160a01b0319166001600160a01b03841690811790915560405190917f8fdf777cb99daeede7a5dac227611bc42564ad910eb32dc9c0e9c9c81bed049891a250565b62000df662001c98565b6e50524f4d4953534f52595f4e4f544560881b600090815260026020527f441d10c82b253a6cf958c66adfbd60fbb8b35d06d72a10514381807fc19d3e6280546001600160a01b0319166001600160a01b03841690811790915560405190917fe0fa630ae43a2a48ce43d1b4f77f6e6a5410b1cf7caf3fcb1462b434d07f423691a250565b62000e8562001c98565b6e22a6a2a923a2a721acafa0a226a4a760891b600090815260026020527f767aa9c986e1d88108b2558f00fbd21b689a0397581446e2e868cd70421026cc80546001600160a01b0319166001600160a01b03841690811790915560405190917fe19673fc861bfeb894cf2d6b7662505497ef31c0f489b742db24ee331082691691a250565b60006200085a67545245415355525960c01b62000d1a565b60006200085a7113d0931251d0551253d397d49150d152541560721b62000d1a565b60006200085a6e1111509517d513d2d15397d2535413608a1b62000d1a565b60006200085a71455845435554494f4e5f44454c454741544560701b62000d1a565b62000f8f62001c98565b732622a72224a723afa920aa22afa6a0a720a3a2a960611b600090815260026020527f647865363de3647f266c90358eeae238843f9f3e0dd6270fea5aae19b16ebe6b80546001600160a01b0319166001600160a01b03841690811790915560405190917ff4080c1b3e5e445a25830f29277e0839af214d30054cd9d7cf05fd5f64653e6c91a250565b6060600180546200102a90620020c2565b80601f01602080910402602001604051908101604052809291908181526020018280546200105890620020c2565b8015620010a95780601f106200107d57610100808354040283529160200191620010a9565b820191906000526020600020905b8154815290600101906020018083116200108b57829003601f168201915b5050505050905090565b60006200085a7244454c45474154494f4e5f524547495354525960681b62000d1a565b620010e062001c98565b630ae8aa8960e31b600090815260026020527f9d079330cab48a13979924dfd7e87d65711257c575e853d3b075acf5fc8707c780546001600160a01b0319166001600160a01b03841690811790915560405190917f5f85e7e522385144040f94bcb1eeaeb07da5e11d6384c124c09f53986d0ed8bc91a250565b6200116462001c98565b62001170828262001cf4565b60408051838152600160208201526001600160a01b038316917ff2689d5d5cd0c639e137642cae5d40afced201a1a0327e7ac9358461dc9fff3191015b60405180910390a25050565b60006200085a732622a72224a723afa920aa22afa6a0a720a3a2a960611b62000d1a565b620011e762001c98565b7113d0931251d0551253d397d49150d152541560721b600090815260026020527f45ce244d16288f104b86e763e4270ce7b1fea9f31d2bd62b759d6dd2aa9cf00180546001600160a01b0319166001600160a01b03841690811790915560405190917f4630fffeacf5795620d8ce87474e0777773b2554a9f9b63ffd2efa16438c7c2591a250565b60006200085a6f4e46545f50524943455f4f5241434c4560801b62000d1a565b60006200085a664c454e44494e4760c81b62000d1a565b620012b062001c98565b7f504f4f4c5f494e43454e54495645535f434f4e54524f4c4c4552000000000000600090815260026020527f681bd2c3eabba7ef1f50d33af51f68b9f0cc238375aa1fdd54416dad5e3c5e0480546001600160a01b0319166001600160a01b03841690811790915560405190917f9d0aa5b8e4a2abcbfa162b696f9b38f7814029081df049c5f3b0339413636f5b91a250565b6200134d62001c98565b62001359600062001e60565b565b6200136562001c98565b7244454c45474154494f4e5f524547495354525960681b600090815260026020527fc3ab2dc989fcce615b917de19205c7c4905523d3b4cab155938e3f9cce9432ec80546001600160a01b0319166001600160a01b03841690811790915560405190917f836360d1b094a7de3c3eab3d1185f3a5939467c23d4a12709dbdbf8c8d7e2f3b91a250565b620013f862001c98565b6a23262aa4a22faa27a5a2a760a91b600090815260026020527f461c7a93a11c3461073c15abe808ff376806912495f0a37c68839a7ae672217480546001600160a01b0319166001600160a01b03841690811790915560405190917f0945294ba66186875367ce57fc808f1e792363363d0bc22ac2b939be433caa4591a250565b60006200085a6b574554485f4741544557415960a01b62000d1a565b60006200085a784f424c49474154494f4e5f524543454950545f42554e444c4560381b62000d1a565b620014c862001c98565b7121a7a62620aa22a920a62fa6a0a720a3a2a960711b600090815260026020527f65e3f3080e9127c1765503a54b8dbb495249e66169f096dfc87ee63bed17e22c80546001600160a01b0319166001600160a01b03841690811790915560405190917f507e88d0e3541203c8e7dba038a3e807ac9121f0872ed9ed895cd7f3358334eb91a250565b60006200085a7022ac22a1aaaa24a7a72fa6a0a720a3a2a960791b62000d1a565b60006200085a6e50524f4d4953534f52595f4e4f544560881b62000d1a565b6200159a62001c98565b692822a2a92fa0a226a4a760b11b600090815260026020527f761fec31aef551bbe2a4dbed4a5afc93837edb1f6ece59e999f2405cd37bfe2080546001600160a01b0319166001600160a01b03841690811790915560405190917f940c07f3aef7002b63f184f53785de5f70c9ea2a604a398c85a53f86a40831f991a250565b60006200085a6b21a7a72324a3aaa920aa27a960a11b62000d1a565b6200164062001c98565b6b21a7a72324a3aaa920aa27a960a11b600090815260026020527f3fa205ee9910fcb2a7ef96f64c2fc6dd4511448c7127832ef9ce8e435357004280546001600160a01b0319166001600160a01b03841690811790915560405190917fc3236f1070213eaeaa9c639ef4afe370db8d568bff09d4a58cfb99a85e288f1e91a250565b60006200085a6b1197d513d2d15397d253541360a21b62000d1a565b620016e862001c98565b7050524943455f434f4e53554d45525f563360781b600090815260026020527ff2c2dabbccecadca3696e7cc70a368d413205a30f0fed44bc44c4473f192f15080546001600160a01b0319166001600160a01b03841690811790915560405190917fae7da98cf481089371a92501a2fb4ae6214e6601161b9e5fceef423e3693a27791a250565b6200177962001c98565b784f424c49474154494f4e5f524543454950545f42554e444c4560381b600090815260026020527ff283f72577744e5c4dec038fe0b0adff07e8e3f3b3c55c3b795e5665c4cc808880546001600160a01b0319166001600160a01b03841690811790915560405190917ffc803fe618ff3f9bc429edbd26465851bcf005a44ee917e9c202176a538b0db391a250565b60006200085a692827a7a62fa0a226a4a760b11b62000d1a565b6200182c62001c98565b7f504545525f494e43454e54495645535f434f4e54524f4c4c4552000000000000600090815260026020527f08f417d940f24df5fa0ac39234112114f240ae4af3330d6dc7f388a3f98bf1ea80546001600160a01b0319166001600160a01b03841690811790915560405190917f3f6849575a3e5eecf847f1c0a02e060ba837f565b4a596ce5a17e6bba7e3773991a250565b620018c962001c98565b6f2922a322a92920a62fa6a0a720a3a2a960811b600090815260026020527f85f5a61f33a30cc60152b937aae1ed8fa7fb474eec304cf8cc5c3f438f8ccf1d80546001600160a01b0319166001600160a01b03841690811790915560405190917f739851f3389798a82c255c8e3f652456e404fd26f5052589eb31fe53d0a8d44891a250565b6200195962001c98565b600082815260026020908152604080832080546001600160a01b0319166001600160a01b0386169081179091558151868152928301939093527ff2689d5d5cd0c639e137642cae5d40afced201a1a0327e7ac9358461dc9fff319101620011ad565b60006200085a630ae8aa8960e31b62000d1a565b60006200085a6e22a6a2a923a2a721acafa0a226a4a760891b62000d1a565b60006200085a6f2922a322a92920a62fa6a0a720a3a2a960811b62000d1a565b60006200085a7121a7a62620aa22a920a62fa6a0a720a3a2a960711b62000d1a565b60006200085a7550524f4d4953534f52595f4e4f54455f42554e444c4560501b62000d1a565b62001a6062001c98565b7550524f4d4953534f52595f4e4f54455f42554e444c4560501b600090815260026020527fce8eac61e1d43ca1af1837c3921fc57cd7571854338e12b63de044b236391c8e80546001600160a01b0319166001600160a01b03841690811790915560405190917fa5edba971437973a01c462c05f365032801891cff2fd61211c90e8981d887ad491a250565b62001af662001c98565b67545245415355525960c01b600090815260026020527f15646afdb5940053544b11eff1ab1b5439f2fa07023995e39a0986ce3cd8da1d80546001600160a01b0319166001600160a01b03841690811790915560405190917f7dae230f18360d76a040c81f050aa14eb9d6dc7901b20fc5d855e2a20fe814d191a250565b62001b7e62001c98565b6001600160a01b03811662001be95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b62001bf48162001e60565b50565b62001c0162001c98565b6b1197d513d2d15397d253541360a21b600090815260026020527f1a2ef1ab1c0098b15595f9534710a3d371d4bfbca7705fcc085230ad838dca2c80546001600160a01b0319166001600160a01b03841690811790915560405190917fd2ad7e284a866571e2b6e8568b596974a07cb89fa93122eeb5cb02a63e3e90ab91a250565b62001c8d62001c98565b62001bf48162001eb0565b6000546001600160a01b03163314620013595760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162001be0565b6000828152600260205260409020546001600160a01b03168062001df95760405130602482015260009060440160408051601f198184030181529181526020820180516001600160e01b031663189acdbd60e31b1790525190915060009084903090849062001d639062001efb565b62001d7193929190620020fe565b604051809103906000f08015801562001d8e573d6000803e3d6000fd5b5060008681526002602090815260409182902080546001600160a01b0319166001600160a01b038516908117909155915188815292935090917f1eb35cb4b5bbb23d152f3b4016a5a46c37a07ae930ed0956aba951e231142438910160405180910390a25050505050565b604051631b2ce7f360e11b81526001600160a01b038381166004830152829190821690633659cfe690602401600060405180830381600087803b15801562001e4057600080fd5b505af115801562001e55573d6000803e3d6000fd5b50505050505b505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600162001ebe828262002187565b507f5e667c32fd847cf8bce48ab3400175cbf107bdc82b2dea62e3364909dfaee7998160405162001ef0919062001fad565b60405180910390a150565b610edc806200225583390190565b80356001600160a01b038116811462001f2157600080fd5b919050565b60006020828403121562001f3957600080fd5b62001f448262001f09565b9392505050565b60006020828403121562001f5e57600080fd5b5035919050565b6000815180845260005b8181101562001f8d5760208185018101518683018201520162001f6f565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600062001f44602083018462001f65565b6000806040838503121562001fd657600080fd5b8235915062001fe86020840162001f09565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156200201a57600080fd5b813567ffffffffffffffff808211156200203357600080fd5b818401915084601f8301126200204857600080fd5b8135818111156200205d576200205d62001ff1565b604051601f8201601f19908116603f0116810190838211818310171562002088576200208862001ff1565b81604052828152876020848701011115620020a257600080fd5b826020860160208301376000928101602001929092525095945050505050565b600181811c90821680620020d757607f821691505b602082108103620020f857634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b038481168252831660208201526060604082018190526000906200212c9083018462001f65565b95945050505050565b601f82111562001e5b57600081815260208120601f850160051c810160208610156200215e5750805b601f850160051c820191505b818110156200217f578281556001016200216a565b505050505050565b815167ffffffffffffffff811115620021a457620021a462001ff1565b620021bc81620021b58454620020c2565b8462002135565b602080601f831160018114620021f45760008415620021db5750858301515b600019600386901b1c1916600185901b1785556200217f565b600085815260208120601f198616915b82811015620022255788860151825594840194600190910190840162002204565b5085821015620022445787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fe608060405260405162000edc38038062000edc83398101604081905262000026916200049d565b8282828281620000398282600062000053565b506200004790508262000090565b505050505050620005d0565b6200005e83620000eb565b6000825111806200006c5750805b156200008b576200008983836200012d60201b620002b81760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000bb6200015c565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e88162000195565b50565b620000f6816200024a565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606062000155838360405180606001604052806027815260200162000eb560279139620002fe565b9392505050565b60006200018660008051602062000e9583398151915260001b6200037d60201b6200020a1760201c565b546001600160a01b0316919050565b6001600160a01b038116620002005760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022960008051602062000e9583398151915260001b6200037d60201b6200020a1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b62000260816200038060201b620002e41760201c565b620002c45760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f7565b80620002297f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200037d60201b6200020a1760201c565b6060600080856001600160a01b0316856040516200031d91906200057d565b600060405180830381855af49150503d80600081146200035a576040519150601f19603f3d011682016040523d82523d6000602084013e6200035f565b606091505b50909250905062000373868383876200038f565b9695505050505050565b90565b6001600160a01b03163b151590565b6060831562000403578251600003620003fb576001600160a01b0385163b620003fb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001f7565b50816200040f565b6200040f838362000417565b949350505050565b815115620004285781518083602001fd5b8060405162461bcd60e51b8152600401620001f791906200059b565b80516001600160a01b03811681146200045c57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004945781810151838201526020016200047a565b50506000910152565b600080600060608486031215620004b357600080fd5b620004be8462000444565b9250620004ce6020850162000444565b60408501519092506001600160401b0380821115620004ec57600080fd5b818601915086601f8301126200050157600080fd5b81518181111562000516576200051662000461565b604051601f8201601f19908116603f0116810190838211818310171562000541576200054162000461565b816040528281528960208487010111156200055b57600080fd5b6200056e83602083016020880162000477565b80955050505050509250925092565b600082516200059181846020870162000477565b9190910192915050565b6020815260008251806020840152620005bc81604085016020870162000477565b601f01601f19169190910160400192915050565b6108b580620005e06000396000f3fe6080604052600436106100595760003560e01c80633659cfe6146100705780634f1ef286146100905780635c60da1b146100a35780638f283970146100d4578063aaf10f42146100f4578063f851a4401461010957610068565b366100685761006661011e565b005b61006661011e565b34801561007c57600080fd5b5061006661008b366004610747565b610138565b61006661009e366004610762565b610175565b3480156100af57600080fd5b506100b86101dc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100e057600080fd5b506100666100ef366004610747565b61020d565b34801561010057600080fd5b506100b861022d565b34801561011557600080fd5b506100b8610297565b6101266102f3565b610136610131610383565b61038d565b565b6101406103b1565b6001600160a01b0316330361016d5761016a816040518060200160405280600081525060006103e4565b50565b61016a61011e565b61017d6103b1565b6001600160a01b031633036101d4576101cf8383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506103e4915050565b505050565b6101cf61011e565b60006101e66103b1565b6001600160a01b03163303610202576101fd610383565b905090565b61020a61011e565b90565b6102156103b1565b6001600160a01b0316330361016d5761016a8161040f565b60006102376103b1565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203130360ec1b8152509061028e5760405162461bcd60e51b81526004016102859190610809565b60405180910390fd5b506101fd610463565b60006102a16103b1565b6001600160a01b03163303610202576101fd6103b1565b60606102dd83836040518060600160405280602781526020016108596027913961048b565b9392505050565b6001600160a01b03163b151590565b6102fb6103b1565b6001600160a01b031633036101365760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a401610285565b60006101fd610463565b3660008037600080366000845af43d6000803e8080156103ac573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103ed83610503565b6000825111806103fa5750805b156101cf5761040983836102b8565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104386103b1565b604080516001600160a01b03928316815291841660208301520160405180910390a161016a81610543565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6103d5565b6060600080856001600160a01b0316856040516104a8919061083c565b600060405180830381855af49150503d80600081146104e3576040519150601f19603f3d011682016040523d82523d6000602084013e6104e8565b606091505b50915091506104f9868383876105ec565b9695505050505050565b61050c8161066d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105a85760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610285565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060831561065b578251600003610654576001600160a01b0385163b6106545760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610285565b5081610665565b6106658383610701565b949350505050565b6001600160a01b0381163b6106da5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610285565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105cb565b8151156107115781518083602001fd5b8060405162461bcd60e51b81526004016102859190610809565b80356001600160a01b038116811461074257600080fd5b919050565b60006020828403121561075957600080fd5b6102dd8261072b565b60008060006040848603121561077757600080fd5b6107808461072b565b9250602084013567ffffffffffffffff8082111561079d57600080fd5b818601915086601f8301126107b157600080fd5b8135818111156107c057600080fd5b8760208285010111156107d257600080fd5b6020830194508093505050509250925092565b60005b838110156108005781810151838201526020016107e8565b50506000910152565b60208152600082518060208401526108288160408501602087016107e5565b601f01601f19169190910160400192915050565b6000825161084e8184602087016107e5565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220eaa9a4e34e6339207f9f4ee73803a16882cd2365f69bed76331cc1683744028e64736f6c63430008100033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d6de7042bd25751a8072b1fde58ce4223d86347c723b9bfe33e92e9f74861ac964736f6c63430008100033",
    "sourceMap": "670:18286:118:-:0;;;2573:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;936:32:41;719:10:65;936:18:41;:32::i;:::-;2619:22:118;2632:8;2619:12;:22::i;:::-;2573:75;670:18286;;2433:187:41;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:41;;;-1:-1:-1;;;;;;2541:17:41;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;18826:128:118:-;18891:9;:20;18903:8;18891:9;:20;:::i;:::-;;18926:21;18938:8;18926:21;;;;;;:::i;:::-;;;;;;;;18826:128;:::o;14:127:176:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:250;231:1;241:113;255:6;252:1;249:13;241:113;;;331:11;;;325:18;312:11;;;305:39;277:2;270:10;241:113;;;-1:-1:-1;;388:1:176;370:16;;363:27;146:250::o;401:897::-;481:6;534:2;522:9;513:7;509:23;505:32;502:52;;;550:1;547;540:12;502:52;577:16;;-1:-1:-1;;;;;642:14:176;;;639:34;;;669:1;666;659:12;639:34;707:6;696:9;692:22;682:32;;752:7;745:4;741:2;737:13;733:27;723:55;;774:1;771;764:12;723:55;803:2;797:9;825:2;821;818:10;815:36;;;831:18;;:::i;:::-;906:2;900:9;874:2;960:13;;-1:-1:-1;;956:22:176;;;980:2;952:31;948:40;936:53;;;1004:18;;;1024:22;;;1001:46;998:72;;;1050:18;;:::i;:::-;1090:10;1086:2;1079:22;1125:2;1117:6;1110:18;1165:7;1160:2;1155;1151;1147:11;1143:20;1140:33;1137:53;;;1186:1;1183;1176:12;1137:53;1199:68;1264:2;1259;1251:6;1247:15;1242:2;1238;1234:11;1199:68;:::i;:::-;1286:6;401:897;-1:-1:-1;;;;;;;401:897:176:o;1303:380::-;1382:1;1378:12;;;;1425;;;1446:61;;1500:4;1492:6;1488:17;1478:27;;1446:61;1553:2;1545:6;1542:14;1522:18;1519:38;1516:161;;1599:10;1594:3;1590:20;1587:1;1580:31;1634:4;1631:1;1624:15;1662:4;1659:1;1652:15;1516:161;;1303:380;;;:::o;1814:545::-;1916:2;1911:3;1908:11;1905:448;;;1952:1;1977:5;1973:2;1966:17;2022:4;2018:2;2008:19;2092:2;2080:10;2076:19;2073:1;2069:27;2063:4;2059:38;2128:4;2116:10;2113:20;2110:47;;;-1:-1:-1;2151:4:176;2110:47;2206:2;2201:3;2197:12;2194:1;2190:20;2184:4;2180:31;2170:41;;2261:82;2279:2;2272:5;2269:13;2261:82;;;2324:17;;;2305:1;2294:13;2261:82;;;2265:3;;;1905:448;1814:545;;;:::o;2535:1352::-;2655:10;;-1:-1:-1;;;;;2677:30:176;;2674:56;;;2710:18;;:::i;:::-;2739:97;2829:6;2789:38;2821:4;2815:11;2789:38;:::i;:::-;2783:4;2739:97;:::i;:::-;2891:4;;2955:2;2944:14;;2972:1;2967:663;;;;3674:1;3691:6;3688:89;;;-1:-1:-1;3743:19:176;;;3737:26;3688:89;-1:-1:-1;;2492:1:176;2488:11;;;2484:24;2480:29;2470:40;2516:1;2512:11;;;2467:57;3790:81;;2937:944;;2967:663;1761:1;1754:14;;;1798:4;1785:18;;-1:-1:-1;;3003:20:176;;;3121:236;3135:7;3132:1;3129:14;3121:236;;;3224:19;;;3218:26;3203:42;;3316:27;;;;3284:1;3272:14;;;;3151:19;;3121:236;;;3125:3;3385:6;3376:7;3373:19;3370:201;;;3446:19;;;3440:26;-1:-1:-1;;3529:1:176;3525:14;;;3541:3;3521:24;3517:37;3513:42;3498:58;3483:74;;3370:201;-1:-1:-1;;;;;3617:1:176;3601:14;;;3597:22;3584:36;;-1:-1:-1;2535:1352:176:o;3892:396::-;4041:2;4030:9;4023:21;4004:4;4073:6;4067:13;4116:6;4111:2;4100:9;4096:18;4089:34;4132:79;4204:6;4199:2;4188:9;4184:18;4179:2;4171:6;4167:15;4132:79;:::i;:::-;4272:2;4251:15;-1:-1:-1;;4247:29:176;4232:45;;;;4279:2;4228:54;;3892:396;-1:-1:-1;;3892:396:176:o;:::-;670:18286:118;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x60806040523480156200001157600080fd5b5060043610620003fc5760003560e01c806369acea5f116200021d578063a01246e31162000131578063de3c6e0411620000bb578063f0f442601162000086578063f0f4426014620007dd578063f2fde38b14620007f4578063f66e398f146200080b578063f67b1847146200082257600080fd5b8063de3c6e0414620007a8578063dfa441be14620007b2578063e4a2544d14620007bc578063ea34b96114620007c657600080fd5b8063c5f3a4c411620000fc578063c5f3a4c41462000766578063ca446dd9146200077d578063cae5f11e1462000794578063ddcaa9ea146200079e57600080fd5b8063a01246e31462000717578063ad1f9944146200072e578063aecda3781462000745578063c13e754b146200074f57600080fd5b8063842a05d411620001b357806398875827116200017e5780639887582714620006d55780639b7ae5ec14620006ec5780639f5f86ae14620006f65780639fd192b8146200070d57600080fd5b8063842a05d41462000698578063862beee114620006af5780638da5cb5b14620006b957806390313e8e14620006cb57600080fd5b806373aa9e9411620001f457806373aa9e94146200065657806374eb5a62146200066d57806377532ed914620006845780637dd83ac5146200068e57600080fd5b806369acea5f146200062b5780636c6f33a51462000635578063715018a6146200064c57600080fd5b8063283d62ad11620003155780634d82964c11620002ab5780635dcc528c11620002765780635dcc528c14620005e9578063617e0605146200060057806363ede0fc146200060a578063673adf43146200062157600080fd5b80634d82964c1462000598578063568ef47014620005af57806357d600a114620005c85780635b769f3c14620005d257600080fd5b80633b19e84a11620002ec5780633b19e84a14620005705780633fa01431146200057a57806347d2c534146200058457806347f872f1146200058e57600080fd5b8063283d62ad146200052b5780632fedd807146200054257806335da3394146200055957600080fd5b8063146b9ae311620003975780631e34764c11620003625780631e34764c14620004dc57806321da583714620004f357806321f8a721146200050a57806322e35383146200052157600080fd5b8063146b9ae314620004a7578063180fde0714620004b157806319ef926814620004c85780631a8b1fbc14620004d257600080fd5b80630c71b70111620003d85780630c71b701146200044b578063113aa8b11462000462578063135dc14714620004795780631381ba4d146200049057600080fd5b806292604714620004015780630261bf8b1462000428578063037c9be21462000432575b600080fd5b6200040b62000839565b6040516001600160a01b0390911681526020015b60405180910390f35b6200040b6200085f565b620004496200044336600462001f26565b6200087b565b005b620004496200045c36600462001f26565b6200090d565b620004496200047336600462001f26565b62000969565b620004496200048a36600462001f26565b620009f5565b62000449620004a136600462001f26565b62000a84565b6200040b62000b15565b62000449620004c236600462001f26565b62000b2f565b6200040b62000bb6565b6200040b62000be3565b62000449620004ed36600462001f26565b62000bfe565b620004496200050436600462001f26565b62000c8e565b6200040b6200051b36600462001f4b565b62000d1a565b6200040b62000d35565b620004496200053c36600462001f26565b62000d62565b620004496200055336600462001f26565b62000dec565b620004496200056a36600462001f26565b62000e7b565b6200040b62000f0a565b6200040b62000f22565b6200040b62000f44565b6200040b62000f63565b62000449620005a936600462001f26565b62000f85565b620005b962001019565b6040516200041f919062001fad565b6200040b620010b3565b62000449620005e336600462001f26565b620010d6565b62000449620005fa36600462001fc2565b6200115a565b6200040b620011b9565b620004496200061b36600462001f26565b620011dd565b6200040b6200126f565b6200040b6200128f565b620004496200064636600462001f26565b620012a6565b6200044962001343565b620004496200066736600462001f26565b6200135b565b620004496200067e36600462001f26565b620013ee565b6200040b62001479565b6200040b62001495565b62000449620006a936600462001f26565b620014be565b6200040b62001550565b6000546001600160a01b03166200040b565b6200040b62001571565b62000449620006e636600462001f26565b62001590565b6200040b6200161a565b620004496200070736600462001f26565b62001636565b6200040b620016c2565b620004496200072836600462001f26565b620016de565b620004496200073f36600462001f26565b6200176f565b6200040b62001808565b620004496200076036600462001f26565b62001822565b620004496200077736600462001f26565b620018bf565b620004496200078e36600462001fc2565b6200194f565b6200040b620019bb565b6200040b620019cf565b6200040b620019ee565b6200040b62001a0e565b6200040b62001a30565b62000449620007d736600462001f26565b62001a56565b62000449620007ee36600462001f26565b62001aec565b620004496200080536600462001f26565b62001b74565b620004496200081c36600462001f26565b62001bf7565b620004496200083336600462002007565b62001c83565b60006200085a7050524943455f434f4e53554d45525f563360781b62000d1a565b905090565b60006200085a6b13115391125391d7d413d3d360a21b62000d1a565b6200088562001c98565b71455845435554494f4e5f44454c454741544560701b600090815260026020527f20a83204e1bdb5e559f53f33519c56a69bd7bf634f98b1785b0af67f73c0025980546001600160a01b0319166001600160a01b03841690811790915560405190917f27b088f74c2a2d700056533df4dc5e9cd62f37caa25ac8934288444227638e5891a250565b6200091762001c98565b620009326b21a7a72324a3aaa920aa27a960a11b8262001cf4565b6040516001600160a01b038216907fc3236f1070213eaeaa9c639ef4afe370db8d568bff09d4a58cfb99a85e288f1e90600090a250565b6200097362001c98565b6b13115391125391d7d413d3d360a21b600090815260026020527fe5bdb40dea1fe80924bcdf7c070aa283f3cb94408a3870bba2d2fbfbae6b6df780546001600160a01b0319166001600160a01b03841690811790915560405190917fc4e6c6cdf28d0edbd8bcf071d724d33cc2e7a30be7d06443925656e9cb492aa491a250565b620009ff62001c98565b6e1111509517d513d2d15397d2535413608a1b600090815260026020527f6036d855f21afe7dfb8131b849ea29ba72dd2a065449193d6b1d9454ebcb9fa780546001600160a01b0319166001600160a01b03841690811790915560405190917f3cf954087af08d2fe2174f52171dd00643537359806f333023c728b6b443e5c091a250565b62000a8e62001c98565b7022ac22a1aaaa24a7a72fa6a0a720a3a2a960791b600090815260026020527fa33379d18b1e75d1dd776786d0e44221a6db3be8eb65c514d5c38e319119a26880546001600160a01b0319166001600160a01b03841690811790915560405190917f5eae3f21f5abac4a9e5366b214d23ec32700884bea3cfbc7502b49a9677573be91a250565b60006200085a692822a2a92fa0a226a4a760b11b62000d1a565b62000b3962001c98565b664c454e44494e4760c81b600090815260026020527f5feb06125a85fb98b540bee21269c9be1fda767db983db133357f1c77ae3dade80546001600160a01b0319166001600160a01b03841690811790915560405190917f535075f3058ab321c7ef90c69527c8440ff729fe1bf89ab1db1c0c1c3fb06a7c91a250565b60006200085a7f504f4f4c5f494e43454e54495645535f434f4e54524f4c4c455200000000000062000d1a565b60006200085a6a23262aa4a22faa27a5a2a760a91b62000d1a565b62000c0862001c98565b6f4e46545f50524943455f4f5241434c4560801b600090815260026020527fa7f3afca83ac2ad9556e7c271c326c0a0afe124cd9d3f845d316f7c11ae7b3ce80546001600160a01b0319166001600160a01b03841690811790915560405190917f9b25a87beb9b0c944472a974a70f2b8801d148aea9658ccc0b5fb8c11cf9473e91a250565b62000c9862001c98565b6b574554485f4741544557415960a01b600090815260026020527f936557deb1f2e2280930d0cea62c19c7f77ebcef5be3417aa6a4bf3196e8968b80546001600160a01b0319166001600160a01b03841690811790915560405190917f1c04adf41189ea89c3aed4d2b48952e6430bf6aed5df45f9fb5e83e5d8ea284291a250565b6000908152600260205260409020546001600160a01b031690565b60006200085a7f504545525f494e43454e54495645535f434f4e54524f4c4c455200000000000062000d1a565b62000d6c62001c98565b692827a7a62fa0a226a4a760b11b600090815260026020527f8625fbc469bac10fd11de1d783dcd446542784dbcc535ef64a1da61860fda74c80546001600160a01b0319166001600160a01b03841690811790915560405190917f8fdf777cb99daeede7a5dac227611bc42564ad910eb32dc9c0e9c9c81bed049891a250565b62000df662001c98565b6e50524f4d4953534f52595f4e4f544560881b600090815260026020527f441d10c82b253a6cf958c66adfbd60fbb8b35d06d72a10514381807fc19d3e6280546001600160a01b0319166001600160a01b03841690811790915560405190917fe0fa630ae43a2a48ce43d1b4f77f6e6a5410b1cf7caf3fcb1462b434d07f423691a250565b62000e8562001c98565b6e22a6a2a923a2a721acafa0a226a4a760891b600090815260026020527f767aa9c986e1d88108b2558f00fbd21b689a0397581446e2e868cd70421026cc80546001600160a01b0319166001600160a01b03841690811790915560405190917fe19673fc861bfeb894cf2d6b7662505497ef31c0f489b742db24ee331082691691a250565b60006200085a67545245415355525960c01b62000d1a565b60006200085a7113d0931251d0551253d397d49150d152541560721b62000d1a565b60006200085a6e1111509517d513d2d15397d2535413608a1b62000d1a565b60006200085a71455845435554494f4e5f44454c454741544560701b62000d1a565b62000f8f62001c98565b732622a72224a723afa920aa22afa6a0a720a3a2a960611b600090815260026020527f647865363de3647f266c90358eeae238843f9f3e0dd6270fea5aae19b16ebe6b80546001600160a01b0319166001600160a01b03841690811790915560405190917ff4080c1b3e5e445a25830f29277e0839af214d30054cd9d7cf05fd5f64653e6c91a250565b6060600180546200102a90620020c2565b80601f01602080910402602001604051908101604052809291908181526020018280546200105890620020c2565b8015620010a95780601f106200107d57610100808354040283529160200191620010a9565b820191906000526020600020905b8154815290600101906020018083116200108b57829003601f168201915b5050505050905090565b60006200085a7244454c45474154494f4e5f524547495354525960681b62000d1a565b620010e062001c98565b630ae8aa8960e31b600090815260026020527f9d079330cab48a13979924dfd7e87d65711257c575e853d3b075acf5fc8707c780546001600160a01b0319166001600160a01b03841690811790915560405190917f5f85e7e522385144040f94bcb1eeaeb07da5e11d6384c124c09f53986d0ed8bc91a250565b6200116462001c98565b62001170828262001cf4565b60408051838152600160208201526001600160a01b038316917ff2689d5d5cd0c639e137642cae5d40afced201a1a0327e7ac9358461dc9fff3191015b60405180910390a25050565b60006200085a732622a72224a723afa920aa22afa6a0a720a3a2a960611b62000d1a565b620011e762001c98565b7113d0931251d0551253d397d49150d152541560721b600090815260026020527f45ce244d16288f104b86e763e4270ce7b1fea9f31d2bd62b759d6dd2aa9cf00180546001600160a01b0319166001600160a01b03841690811790915560405190917f4630fffeacf5795620d8ce87474e0777773b2554a9f9b63ffd2efa16438c7c2591a250565b60006200085a6f4e46545f50524943455f4f5241434c4560801b62000d1a565b60006200085a664c454e44494e4760c81b62000d1a565b620012b062001c98565b7f504f4f4c5f494e43454e54495645535f434f4e54524f4c4c4552000000000000600090815260026020527f681bd2c3eabba7ef1f50d33af51f68b9f0cc238375aa1fdd54416dad5e3c5e0480546001600160a01b0319166001600160a01b03841690811790915560405190917f9d0aa5b8e4a2abcbfa162b696f9b38f7814029081df049c5f3b0339413636f5b91a250565b6200134d62001c98565b62001359600062001e60565b565b6200136562001c98565b7244454c45474154494f4e5f524547495354525960681b600090815260026020527fc3ab2dc989fcce615b917de19205c7c4905523d3b4cab155938e3f9cce9432ec80546001600160a01b0319166001600160a01b03841690811790915560405190917f836360d1b094a7de3c3eab3d1185f3a5939467c23d4a12709dbdbf8c8d7e2f3b91a250565b620013f862001c98565b6a23262aa4a22faa27a5a2a760a91b600090815260026020527f461c7a93a11c3461073c15abe808ff376806912495f0a37c68839a7ae672217480546001600160a01b0319166001600160a01b03841690811790915560405190917f0945294ba66186875367ce57fc808f1e792363363d0bc22ac2b939be433caa4591a250565b60006200085a6b574554485f4741544557415960a01b62000d1a565b60006200085a784f424c49474154494f4e5f524543454950545f42554e444c4560381b62000d1a565b620014c862001c98565b7121a7a62620aa22a920a62fa6a0a720a3a2a960711b600090815260026020527f65e3f3080e9127c1765503a54b8dbb495249e66169f096dfc87ee63bed17e22c80546001600160a01b0319166001600160a01b03841690811790915560405190917f507e88d0e3541203c8e7dba038a3e807ac9121f0872ed9ed895cd7f3358334eb91a250565b60006200085a7022ac22a1aaaa24a7a72fa6a0a720a3a2a960791b62000d1a565b60006200085a6e50524f4d4953534f52595f4e4f544560881b62000d1a565b6200159a62001c98565b692822a2a92fa0a226a4a760b11b600090815260026020527f761fec31aef551bbe2a4dbed4a5afc93837edb1f6ece59e999f2405cd37bfe2080546001600160a01b0319166001600160a01b03841690811790915560405190917f940c07f3aef7002b63f184f53785de5f70c9ea2a604a398c85a53f86a40831f991a250565b60006200085a6b21a7a72324a3aaa920aa27a960a11b62000d1a565b6200164062001c98565b6b21a7a72324a3aaa920aa27a960a11b600090815260026020527f3fa205ee9910fcb2a7ef96f64c2fc6dd4511448c7127832ef9ce8e435357004280546001600160a01b0319166001600160a01b03841690811790915560405190917fc3236f1070213eaeaa9c639ef4afe370db8d568bff09d4a58cfb99a85e288f1e91a250565b60006200085a6b1197d513d2d15397d253541360a21b62000d1a565b620016e862001c98565b7050524943455f434f4e53554d45525f563360781b600090815260026020527ff2c2dabbccecadca3696e7cc70a368d413205a30f0fed44bc44c4473f192f15080546001600160a01b0319166001600160a01b03841690811790915560405190917fae7da98cf481089371a92501a2fb4ae6214e6601161b9e5fceef423e3693a27791a250565b6200177962001c98565b784f424c49474154494f4e5f524543454950545f42554e444c4560381b600090815260026020527ff283f72577744e5c4dec038fe0b0adff07e8e3f3b3c55c3b795e5665c4cc808880546001600160a01b0319166001600160a01b03841690811790915560405190917ffc803fe618ff3f9bc429edbd26465851bcf005a44ee917e9c202176a538b0db391a250565b60006200085a692827a7a62fa0a226a4a760b11b62000d1a565b6200182c62001c98565b7f504545525f494e43454e54495645535f434f4e54524f4c4c4552000000000000600090815260026020527f08f417d940f24df5fa0ac39234112114f240ae4af3330d6dc7f388a3f98bf1ea80546001600160a01b0319166001600160a01b03841690811790915560405190917f3f6849575a3e5eecf847f1c0a02e060ba837f565b4a596ce5a17e6bba7e3773991a250565b620018c962001c98565b6f2922a322a92920a62fa6a0a720a3a2a960811b600090815260026020527f85f5a61f33a30cc60152b937aae1ed8fa7fb474eec304cf8cc5c3f438f8ccf1d80546001600160a01b0319166001600160a01b03841690811790915560405190917f739851f3389798a82c255c8e3f652456e404fd26f5052589eb31fe53d0a8d44891a250565b6200195962001c98565b600082815260026020908152604080832080546001600160a01b0319166001600160a01b0386169081179091558151868152928301939093527ff2689d5d5cd0c639e137642cae5d40afced201a1a0327e7ac9358461dc9fff319101620011ad565b60006200085a630ae8aa8960e31b62000d1a565b60006200085a6e22a6a2a923a2a721acafa0a226a4a760891b62000d1a565b60006200085a6f2922a322a92920a62fa6a0a720a3a2a960811b62000d1a565b60006200085a7121a7a62620aa22a920a62fa6a0a720a3a2a960711b62000d1a565b60006200085a7550524f4d4953534f52595f4e4f54455f42554e444c4560501b62000d1a565b62001a6062001c98565b7550524f4d4953534f52595f4e4f54455f42554e444c4560501b600090815260026020527fce8eac61e1d43ca1af1837c3921fc57cd7571854338e12b63de044b236391c8e80546001600160a01b0319166001600160a01b03841690811790915560405190917fa5edba971437973a01c462c05f365032801891cff2fd61211c90e8981d887ad491a250565b62001af662001c98565b67545245415355525960c01b600090815260026020527f15646afdb5940053544b11eff1ab1b5439f2fa07023995e39a0986ce3cd8da1d80546001600160a01b0319166001600160a01b03841690811790915560405190917f7dae230f18360d76a040c81f050aa14eb9d6dc7901b20fc5d855e2a20fe814d191a250565b62001b7e62001c98565b6001600160a01b03811662001be95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b62001bf48162001e60565b50565b62001c0162001c98565b6b1197d513d2d15397d253541360a21b600090815260026020527f1a2ef1ab1c0098b15595f9534710a3d371d4bfbca7705fcc085230ad838dca2c80546001600160a01b0319166001600160a01b03841690811790915560405190917fd2ad7e284a866571e2b6e8568b596974a07cb89fa93122eeb5cb02a63e3e90ab91a250565b62001c8d62001c98565b62001bf48162001eb0565b6000546001600160a01b03163314620013595760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162001be0565b6000828152600260205260409020546001600160a01b03168062001df95760405130602482015260009060440160408051601f198184030181529181526020820180516001600160e01b031663189acdbd60e31b1790525190915060009084903090849062001d639062001efb565b62001d7193929190620020fe565b604051809103906000f08015801562001d8e573d6000803e3d6000fd5b5060008681526002602090815260409182902080546001600160a01b0319166001600160a01b038516908117909155915188815292935090917f1eb35cb4b5bbb23d152f3b4016a5a46c37a07ae930ed0956aba951e231142438910160405180910390a25050505050565b604051631b2ce7f360e11b81526001600160a01b038381166004830152829190821690633659cfe690602401600060405180830381600087803b15801562001e4057600080fd5b505af115801562001e55573d6000803e3d6000fd5b50505050505b505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600162001ebe828262002187565b507f5e667c32fd847cf8bce48ab3400175cbf107bdc82b2dea62e3364909dfaee7998160405162001ef0919062001fad565b60405180910390a150565b610edc806200225583390190565b80356001600160a01b038116811462001f2157600080fd5b919050565b60006020828403121562001f3957600080fd5b62001f448262001f09565b9392505050565b60006020828403121562001f5e57600080fd5b5035919050565b6000815180845260005b8181101562001f8d5760208185018101518683018201520162001f6f565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600062001f44602083018462001f65565b6000806040838503121562001fd657600080fd5b8235915062001fe86020840162001f09565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156200201a57600080fd5b813567ffffffffffffffff808211156200203357600080fd5b818401915084601f8301126200204857600080fd5b8135818111156200205d576200205d62001ff1565b604051601f8201601f19908116603f0116810190838211818310171562002088576200208862001ff1565b81604052828152876020848701011115620020a257600080fd5b826020860160208301376000928101602001929092525095945050505050565b600181811c90821680620020d757607f821691505b602082108103620020f857634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b038481168252831660208201526060604082018190526000906200212c9083018462001f65565b95945050505050565b601f82111562001e5b57600081815260208120601f850160051c810160208610156200215e5750805b601f850160051c820191505b818110156200217f578281556001016200216a565b505050505050565b815167ffffffffffffffff811115620021a457620021a462001ff1565b620021bc81620021b58454620020c2565b8462002135565b602080601f831160018114620021f45760008415620021db5750858301515b600019600386901b1c1916600185901b1785556200217f565b600085815260208120601f198616915b82811015620022255788860151825594840194600190910190840162002204565b5085821015620022445787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fe608060405260405162000edc38038062000edc83398101604081905262000026916200049d565b8282828281620000398282600062000053565b506200004790508262000090565b505050505050620005d0565b6200005e83620000eb565b6000825111806200006c5750805b156200008b576200008983836200012d60201b620002b81760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000bb6200015c565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e88162000195565b50565b620000f6816200024a565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606062000155838360405180606001604052806027815260200162000eb560279139620002fe565b9392505050565b60006200018660008051602062000e9583398151915260001b6200037d60201b6200020a1760201c565b546001600160a01b0316919050565b6001600160a01b038116620002005760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022960008051602062000e9583398151915260001b6200037d60201b6200020a1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b62000260816200038060201b620002e41760201c565b620002c45760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f7565b80620002297f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200037d60201b6200020a1760201c565b6060600080856001600160a01b0316856040516200031d91906200057d565b600060405180830381855af49150503d80600081146200035a576040519150601f19603f3d011682016040523d82523d6000602084013e6200035f565b606091505b50909250905062000373868383876200038f565b9695505050505050565b90565b6001600160a01b03163b151590565b6060831562000403578251600003620003fb576001600160a01b0385163b620003fb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001f7565b50816200040f565b6200040f838362000417565b949350505050565b815115620004285781518083602001fd5b8060405162461bcd60e51b8152600401620001f791906200059b565b80516001600160a01b03811681146200045c57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004945781810151838201526020016200047a565b50506000910152565b600080600060608486031215620004b357600080fd5b620004be8462000444565b9250620004ce6020850162000444565b60408501519092506001600160401b0380821115620004ec57600080fd5b818601915086601f8301126200050157600080fd5b81518181111562000516576200051662000461565b604051601f8201601f19908116603f0116810190838211818310171562000541576200054162000461565b816040528281528960208487010111156200055b57600080fd5b6200056e83602083016020880162000477565b80955050505050509250925092565b600082516200059181846020870162000477565b9190910192915050565b6020815260008251806020840152620005bc81604085016020870162000477565b601f01601f19169190910160400192915050565b6108b580620005e06000396000f3fe6080604052600436106100595760003560e01c80633659cfe6146100705780634f1ef286146100905780635c60da1b146100a35780638f283970146100d4578063aaf10f42146100f4578063f851a4401461010957610068565b366100685761006661011e565b005b61006661011e565b34801561007c57600080fd5b5061006661008b366004610747565b610138565b61006661009e366004610762565b610175565b3480156100af57600080fd5b506100b86101dc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100e057600080fd5b506100666100ef366004610747565b61020d565b34801561010057600080fd5b506100b861022d565b34801561011557600080fd5b506100b8610297565b6101266102f3565b610136610131610383565b61038d565b565b6101406103b1565b6001600160a01b0316330361016d5761016a816040518060200160405280600081525060006103e4565b50565b61016a61011e565b61017d6103b1565b6001600160a01b031633036101d4576101cf8383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506103e4915050565b505050565b6101cf61011e565b60006101e66103b1565b6001600160a01b03163303610202576101fd610383565b905090565b61020a61011e565b90565b6102156103b1565b6001600160a01b0316330361016d5761016a8161040f565b60006102376103b1565b6001600160a01b0316336001600160a01b0316146040518060400160405280600381526020016203130360ec1b8152509061028e5760405162461bcd60e51b81526004016102859190610809565b60405180910390fd5b506101fd610463565b60006102a16103b1565b6001600160a01b03163303610202576101fd6103b1565b60606102dd83836040518060600160405280602781526020016108596027913961048b565b9392505050565b6001600160a01b03163b151590565b6102fb6103b1565b6001600160a01b031633036101365760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a401610285565b60006101fd610463565b3660008037600080366000845af43d6000803e8080156103ac573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103ed83610503565b6000825111806103fa5750805b156101cf5761040983836102b8565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104386103b1565b604080516001600160a01b03928316815291841660208301520160405180910390a161016a81610543565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6103d5565b6060600080856001600160a01b0316856040516104a8919061083c565b600060405180830381855af49150503d80600081146104e3576040519150601f19603f3d011682016040523d82523d6000602084013e6104e8565b606091505b50915091506104f9868383876105ec565b9695505050505050565b61050c8161066d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105a85760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610285565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060831561065b578251600003610654576001600160a01b0385163b6106545760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610285565b5081610665565b6106658383610701565b949350505050565b6001600160a01b0381163b6106da5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610285565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105cb565b8151156107115781518083602001fd5b8060405162461bcd60e51b81526004016102859190610809565b80356001600160a01b038116811461074257600080fd5b919050565b60006020828403121561075957600080fd5b6102dd8261072b565b60008060006040848603121561077757600080fd5b6107808461072b565b9250602084013567ffffffffffffffff8082111561079d57600080fd5b818601915086601f8301126107b157600080fd5b8135818111156107c057600080fd5b8760208285010111156107d257600080fd5b6020830194508093505050509250925092565b60005b838110156108005781810151838201526020016107e8565b50506000910152565b60208152600082518060208401526108288160408501602087016107e5565b601f01601f19169190910160400192915050565b6000825161084e8184602087016107e5565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220eaa9a4e34e6339207f9f4ee73803a16882cd2365f69bed76331cc1683744028e64736f6c63430008100033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d6de7042bd25751a8072b1fde58ce4223d86347c723b9bfe33e92e9f74861ac964736f6c63430008100033",
    "sourceMap": "670:18286:118:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14017:124;;;:::i;:::-;;;-1:-1:-1;;;;;178:32:176;;;160:51;;148:2;133:18;14017:124:118;;;;;;;;9723:115;;;:::i;5033:210::-;;;;;;:::i;:::-;;:::i;:::-;;11142:183;;;;;;:::i;:::-;;:::i;10069:153::-;;;;;;:::i;:::-;;:::i;16762:187::-;;;;;;:::i;:::-;;:::i;5772:204::-;;;;;;:::i;:::-;;:::i;12279:111::-;;;:::i;6428:149::-;;;;;;:::i;:::-;;:::i;14646:142::-;;;:::i;14350:113::-;;;:::i;13459:193::-;;;;;;:::i;:::-;;:::i;17319:174::-;;;;;;:::i;:::-;;:::i;3221:109::-;;;;;;:::i;:::-;;:::i;15011:142::-;;;:::i;12850:150::-;;;;;;:::i;:::-;;:::i;7086:192::-;;;;;;:::i;:::-;;:::i;13133:::-;;;;;;:::i;:::-;;:::i;15709:108::-;;;:::i;8182:127::-;;;:::i;16636:120::-;;;:::i;4635:127::-;;;:::i;13794:217::-;;;;;;:::i;:::-;;:::i;2784:103::-;;;:::i;:::-;;;;;;;:::i;15984:129::-;;;:::i;17061:131::-;;;;;;:::i;:::-;;:::i;4257:239::-;;;;;;:::i;:::-;;:::i;13658:130::-;;;:::i;8580:210::-;;;;;;:::i;:::-;;:::i;13331:122::-;;;:::i;6093:106::-;;;:::i;14794:211::-;;;;;;:::i;:::-;;:::i;1831:101:41:-;;;:::i;16119:216:118:-;;;;;;:::i;:::-;;:::i;14469:168::-;;;;;;:::i;:::-;;:::i;17198:115::-;;;:::i;8943:140::-;;;:::i;11912:180::-;;;;;;:::i;:::-;;:::i;5380:125::-;;;:::i;1201:85:41:-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:41;1201:85;;6708:121:118;;;:::i;12396:150::-;;;;;;:::i;:::-;;:::i;10349:116::-;;;:::i;10714:179::-;;;;;;:::i;:::-;;:::i;16341:114::-;;;:::i;14147:197::-;;;;;;:::i;:::-;;:::i;9369:229::-;;;;;;:::i;:::-;;:::i;12733:111::-;;;:::i;15159:211::-;;;;;;:::i;:::-;;:::i;15505:198::-;;;;;;:::i;:::-;;:::i;3587:172::-;;;;;;:::i;:::-;;:::i;16955:100::-;;;:::i;13006:121::-;;;:::i;15376:123::-;;;:::i;11649:127::-;;;:::i;7422:134::-;;;:::i;7832:211::-;;;;;;:::i;:::-;;:::i;15823:155::-;;;;;;:::i;:::-;;:::i;2081:198:41:-;;;;;;:::i;:::-;;:::i;16461:169:118:-;;;;;;:::i;:::-;;:::i;3022:112::-;;;;;;:::i;:::-;;:::i;14017:124::-;14079:7;14105:29;-1:-1:-1;;;14105:10:118;:29::i;:::-;14098:36;;14017:124;:::o;9723:115::-;9781:7;9807:24;-1:-1:-1;;;9807:10:118;:24::i;5033:210::-;1094:13:41;:11;:13::i;:::-;-1:-1:-1;;;5128:30:118::1;::::0;;;:10:::1;:30;::::0;;:50;;-1:-1:-1;;;;;;5128:50:118::1;-1:-1:-1::0;;;;;5128:50:118;::::1;::::0;;::::1;::::0;;;:30;5193:43;5128:50;;5193:43:::1;::::0;::::1;5033:210:::0;:::o;11142:183::-;1094:13:41;:11;:13::i;:::-;11231:39:118::1;-1:-1:-1::0;;;11257:12:118::1;11231:11;:39::i;:::-;11285:33;::::0;-1:-1:-1;;;;;11285:33:118;::::1;::::0;::::1;::::0;;;::::1;11142:183:::0;:::o;10069:153::-;1094:13:41;:11;:13::i;:::-;-1:-1:-1;;;10145:24:118::1;::::0;;;:10:::1;:24;::::0;;:31;;-1:-1:-1;;;;;;10145:31:118::1;-1:-1:-1::0;;;;;10145:31:118;::::1;::::0;;::::1;::::0;;;:24;10191;10145:31;;10191:24:::1;::::0;::::1;10069:153:::0;:::o;16762:187::-;1094:13:41;:11;:13::i;:::-;-1:-1:-1;;;16849:27:118::1;::::0;;;:10:::1;:27;::::0;;:43;;-1:-1:-1;;;;;;16849:43:118::1;-1:-1:-1::0;;;;;16849:43:118;::::1;::::0;;::::1;::::0;;;:27;16907:35;16849:43;;16907:35:::1;::::0;::::1;16762:187:::0;:::o;5772:204::-;1094:13:41;:11;:13::i;:::-;-1:-1:-1;;;5865:29:118::1;::::0;;;:10:::1;:29;::::0;;:48;;-1:-1:-1;;;;;;5865:48:118::1;-1:-1:-1::0;;;;;5865:48:118;::::1;::::0;;::::1;::::0;;;:29;5928:41;5865:48;;5928:41:::1;::::0;::::1;5772:204:::0;:::o;12279:111::-;12335:7;12361:22;-1:-1:-1;;;12361:10:118;:22::i;6428:149::-;1094:13:41;:11;:13::i;:::-;-1:-1:-1;;;6503:19:118::1;::::0;;;:10:::1;:19;::::0;;:29;;-1:-1:-1;;;;;;6503:29:118::1;-1:-1:-1::0;;;;;6503:29:118;::::1;::::0;;::::1;::::0;;;:19;6547:23;6503:29;;6547:23:::1;::::0;::::1;6428:149:::0;:::o;14646:142::-;14717:7;14743:38;14754:26;14743:10;:38::i;14350:113::-;14407:7;14433:23;-1:-1:-1;;;14433:10:118;:23::i;13459:193::-;1094:13:41;:11;:13::i;:::-;-1:-1:-1;;;13548:28:118::1;::::0;;;:10:::1;:28;::::0;;:45;;-1:-1:-1;;;;;;13548:45:118::1;-1:-1:-1::0;;;;;13548:45:118;::::1;::::0;;::::1;::::0;;;:28;13608:37;13548:45;;13608:37:::1;::::0;::::1;13459:193:::0;:::o;17319:174::-;1094:13:41;:11;:13::i;:::-;-1:-1:-1;;;17402:24:118::1;::::0;;;:10:::1;:24;::::0;;:38;;-1:-1:-1;;;;;;17402:38:118::1;-1:-1:-1::0;;;;;17402:38:118;::::1;::::0;;::::1;::::0;;;:24;17455:31;17402:38;;17455:31:::1;::::0;::::1;17319:174:::0;:::o;3221:109::-;3283:7;3309:14;;;:10;:14;;;;;;-1:-1:-1;;;;;3309:14:118;;3221:109::o;15011:142::-;15082:7;15108:38;15119:26;15108:10;:38::i;12850:150::-;1094:13:41;:11;:13::i;:::-;-1:-1:-1;;;12925:22:118::1;::::0;;;:10:::1;:22;::::0;;:30;;-1:-1:-1;;;;;;12925:30:118::1;-1:-1:-1::0;;;;;12925:30:118;::::1;::::0;;::::1;::::0;;;:22;12970:23;12925:30;;12970:23:::1;::::0;::::1;12850:150:::0;:::o;7086:192::-;1094:13:41;:11;:13::i;:::-;-1:-1:-1;;;7175:27:118::1;::::0;;;:10:::1;:27;::::0;;:44;;-1:-1:-1;;;;;;7175:44:118::1;-1:-1:-1::0;;;;;7175:44:118;::::1;::::0;;::::1;::::0;;;:27;7234:37;7175:44;;7234:37:::1;::::0;::::1;7086:192:::0;:::o;13133:::-;1094:13:41;:11;:13::i;:::-;-1:-1:-1;;;13222:27:118::1;::::0;;;:10:::1;:27;::::0;;:44;;-1:-1:-1;;;;;;13222:44:118::1;-1:-1:-1::0;;;;;13222:44:118;::::1;::::0;;::::1;::::0;;;:27;13281:37;13222:44;;13281:37:::1;::::0;::::1;13133:192:::0;:::o;15709:108::-;15764:7;15790:20;-1:-1:-1;;;15790:10:118;:20::i;8182:127::-;8246:7;8272:30;-1:-1:-1;;;8272:10:118;:30::i;16636:120::-;16696:7;16722:27;-1:-1:-1;;;16722:10:118;:27::i;4635:127::-;4699:7;4725:30;-1:-1:-1;;;4725:10:118;:30::i;13794:217::-;1094:13:41;:11;:13::i;:::-;-1:-1:-1;;;13891:32:118::1;::::0;;;:10:::1;:32;::::0;;:53;;-1:-1:-1;;;;;;13891:53:118::1;-1:-1:-1::0;;;;;13891:53:118;::::1;::::0;;::::1;::::0;;;:32;13959:45;13891:53;;13959:45:::1;::::0;::::1;13794:217:::0;:::o;2784:103::-;2839:13;2871:9;2864:16;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2784:103;:::o;15984:129::-;16049:7;16075:31;-1:-1:-1;;;16075:10:118;:31::i;17061:131::-;1094:13:41;:11;:13::i;:::-;-1:-1:-1;;;17130:16:118::1;::::0;;;:10:::1;:16;::::0;;:23;;-1:-1:-1;;;;;;17130:23:118::1;-1:-1:-1::0;;;;;17130:23:118;::::1;::::0;;::::1;::::0;;;:16;17168:17;17130:23;;17168:17:::1;::::0;::::1;17061:131:::0;:::o;4257:239::-;1094:13:41;:11;:13::i;:::-;4393:38:118::1;4405:2;4409:21;4393:11;:38::i;:::-;4446:43;::::0;;3300:25:176;;;4484:4:118::1;3356:2:176::0;3341:18;;3334:50;-1:-1:-1;;;;;4446:43:118;::::1;::::0;::::1;::::0;3273:18:176;4446:43:118::1;;;;;;;;4257:239:::0;;:::o;13658:130::-;13723:7;13749:32;-1:-1:-1;;;13749:10:118;:32::i;8580:210::-;1094:13:41;:11;:13::i;:::-;-1:-1:-1;;;8675:30:118::1;::::0;;;:10:::1;:30;::::0;;:50;;-1:-1:-1;;;;;;8675:50:118::1;-1:-1:-1::0;;;;;8675:50:118;::::1;::::0;;::::1;::::0;;;:30;8740:43;8675:50;;8740:43:::1;::::0;::::1;8580:210:::0;:::o;13331:122::-;13392:7;13418:28;-1:-1:-1;;;13418:10:118;:28::i;6093:106::-;6147:7;6173:19;-1:-1:-1;;;6173:10:118;:19::i;14794:211::-;1094:13:41;:11;:13::i;:::-;14900:26:118::1;14889:38;::::0;;;:10:::1;:38;::::0;;:51;;-1:-1:-1;;;;;;14889:51:118::1;-1:-1:-1::0;;;;;14889:51:118;::::1;::::0;;::::1;::::0;;;:38;14955:43;14889:51;;14955:43:::1;::::0;::::1;14794:211:::0;:::o;1831:101:41:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;16119:216:118:-;1094:13:41;:11;:13::i;:::-;-1:-1:-1;;;16216:31:118::1;::::0;;;:10:::1;:31;::::0;;:52;;-1:-1:-1;;;;;;16216:52:118::1;-1:-1:-1::0;;;;;16216:52:118;::::1;::::0;;::::1;::::0;;;:31;16283:45;16216:52;;16283:45:::1;::::0;::::1;16119:216:::0;:::o;14469:168::-;1094:13:41;:11;:13::i;:::-;-1:-1:-1;;;14550:23:118::1;::::0;;;:10:::1;:23;::::0;;:36;;-1:-1:-1;;;;;;14550:36:118::1;-1:-1:-1::0;;;;;14550:36:118;::::1;::::0;;::::1;::::0;;;:23;14601:29;14550:36;;14601:29:::1;::::0;::::1;14469:168:::0;:::o;17198:115::-;17256:7;17282:24;-1:-1:-1;;;17282:10:118;:24::i;8943:140::-;9013:7;9039:37;-1:-1:-1;;;9039:10:118;:37::i;11912:180::-;1094:13:41;:11;:13::i;:::-;-1:-1:-1;;;11997:30:118::1;::::0;;;:10:::1;:30;::::0;;:40;;-1:-1:-1;;;;;;11997:40:118::1;-1:-1:-1::0;;;;;11997:40:118;::::1;::::0;;::::1;::::0;;;:30;12052:33;11997:40;;12052:33:::1;::::0;::::1;11912:180:::0;:::o;5380:125::-;5443:7;5469:29;-1:-1:-1;;;5469:10:118;:29::i;6708:121::-;6769:7;6795:27;-1:-1:-1;;;6795:10:118;:27::i;12396:150::-;1094:13:41;:11;:13::i;:::-;-1:-1:-1;;;12471:22:118::1;::::0;;;:10:::1;:22;::::0;;:30;;-1:-1:-1;;;;;;12471:30:118::1;-1:-1:-1::0;;;;;12471:30:118;::::1;::::0;;::::1;::::0;;;:22;12516:23;12471:30;;12516:23:::1;::::0;::::1;12396:150:::0;:::o;10349:116::-;10408:7;10434:24;-1:-1:-1;;;10434:10:118;:24::i;10714:179::-;1094:13:41;:11;:13::i;:::-;-1:-1:-1;;;10799:24:118::1;::::0;;;:10:::1;:24;::::0;;:39;;-1:-1:-1;;;;;;10799:39:118::1;-1:-1:-1::0;;;;;10799:39:118;::::1;::::0;;::::1;::::0;;;:24;10853:33;10799:39;;10853:33:::1;::::0;::::1;10714:179:::0;:::o;16341:114::-;16398:7;16424:24;-1:-1:-1;;;16424:10:118;:24::i;14147:197::-;1094:13:41;:11;:13::i;:::-;-1:-1:-1;;;14238:29:118::1;::::0;;;:10:::1;:29;::::0;;:47;;-1:-1:-1;;;;;;14238:47:118::1;-1:-1:-1::0;;;;;14238:47:118;::::1;::::0;;::::1;::::0;;;:29;14300:37;14238:47;;14300:37:::1;::::0;::::1;14147:197:::0;:::o;9369:229::-;1094:13:41;:11;:13::i;:::-;-1:-1:-1;;;9470:37:118::1;::::0;;;:10:::1;:37;::::0;;:57;;-1:-1:-1;;;;;;9470:57:118::1;-1:-1:-1::0;;;;;9470:57:118;::::1;::::0;;::::1;::::0;;;:37;9542:49;9470:57;;9542:49:::1;::::0;::::1;9369:229:::0;:::o;12733:111::-;12789:7;12815:22;-1:-1:-1;;;12815:10:118;:22::i;15159:211::-;1094:13:41;:11;:13::i;:::-;15265:26:118::1;15254:38;::::0;;;:10:::1;:38;::::0;;:51;;-1:-1:-1;;;;;;15254:51:118::1;-1:-1:-1::0;;;;;15254:51:118;::::1;::::0;;::::1;::::0;;;:38;15320:43;15254:51;;15320:43:::1;::::0;::::1;15159:211:::0;:::o;15505:198::-;1094:13:41;:11;:13::i;:::-;-1:-1:-1;;;15596:28:118::1;::::0;;;:10:::1;:28;::::0;;:46;;-1:-1:-1;;;;;;15596:46:118::1;-1:-1:-1::0;;;;;15596:46:118;::::1;::::0;;::::1;::::0;;;:28;15657:39;15596:46;;15657:39:::1;::::0;::::1;15505:198:::0;:::o;3587:172::-;1094:13:41;:11;:13::i;:::-;3677:14:118::1;::::0;;;:10:::1;:14;::::0;;;;;;;:27;;-1:-1:-1;;;;;;3677:27:118::1;-1:-1:-1::0;;;;;3677:27:118;::::1;::::0;;::::1;::::0;;;3719:33;;3300:25:176;;;3341:18;;;3334:50;;;;3719:33:118::1;::::0;3273:18:176;3719:33:118::1;3132:258:176::0;16955:100:118;17006:7;17032:16;-1:-1:-1;;;17032:10:118;:16::i;13006:121::-;13067:7;13093:27;-1:-1:-1;;;13093:10:118;:27::i;15376:123::-;15438:7;15464:28;-1:-1:-1;;;15464:10:118;:28::i;11649:127::-;11713:7;11739:30;-1:-1:-1;;;11739:10:118;:30::i;7422:134::-;7489:7;7515:34;-1:-1:-1;;;7515:10:118;:34::i;7832:211::-;1094:13:41;:11;:13::i;:::-;-1:-1:-1;;;7927:34:118::1;::::0;;;:10:::1;:34;::::0;;:51;;-1:-1:-1;;;;;;7927:51:118::1;-1:-1:-1::0;;;;;7927:51:118;::::1;::::0;;::::1;::::0;;;:34;7993:43;7927:51;;7993:43:::1;::::0;::::1;7832:211:::0;:::o;15823:155::-;1094:13:41;:11;:13::i;:::-;-1:-1:-1;;;15900:20:118::1;::::0;;;:10:::1;:20;::::0;;:31;;-1:-1:-1;;;;;;15900:31:118::1;-1:-1:-1::0;;;;;15900:31:118;::::1;::::0;;::::1;::::0;;;:20;15946:25;15900:31;;15946:25:::1;::::0;::::1;15823:155:::0;:::o;2081:198:41:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:41;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:41;;3597:2:176;2161:73:41::1;::::0;::::1;3579:21:176::0;3636:2;3616:18;;;3609:30;3675:34;3655:18;;;3648:62;-1:-1:-1;;;3726:18:176;;;3719:36;3772:19;;2161:73:41::1;;;;;;;;;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;16461:169:118:-;1094:13:41;:11;:13::i;:::-;-1:-1:-1;;;16542:24:118::1;::::0;;;:10:::1;:24;::::0;;:37;;-1:-1:-1;;;;;;16542:37:118::1;-1:-1:-1::0;;;;;16542:37:118;::::1;::::0;;::::1;::::0;;;:24;16594:29;16542:37;;16594:29:::1;::::0;::::1;16461:169:::0;:::o;3022:112::-;1094:13:41;:11;:13::i;:::-;3105:22:118::1;3118:8;3105:12;:22::i;1359:130:41:-:0;1247:7;1273:6;-1:-1:-1;;;;;1273:6:41;719:10:65;1422:23:41;1414:68;;;;-1:-1:-1;;;1414:68:41;;4004:2:176;1414:68:41;;;3986:21:176;;;4023:18;;;4016:30;4082:34;4062:18;;;4055:62;4134:18;;1414:68:41;3802:356:176;18097:723:118;18169:28;18208:14;;;:10;:14;;;;;;-1:-1:-1;;;;;18208:14:118;;18234:580;;18302:61;;18357:4;18302:61;;;160:51:176;18280:19:118;;133:18:176;;18302:61:118;;;-1:-1:-1;;18302:61:118;;;;;;;;;;;;;;-1:-1:-1;;;;;18302:61:118;-1:-1:-1;;;18302:61:118;;;18470:60;18302:61;;-1:-1:-1;;;18496:10:118;;18516:4;;18302:61;;18470:60;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18545:14:118;;;;:10;:14;;;;;;;;;:31;;-1:-1:-1;;;;;;18545:31:118;-1:-1:-1;;;;;18545:31:118;;;;;;;;18595:32;;4730:25:176;;;18545:31:118;;-1:-1:-1;18545:31:118;;18595:32;;4703:18:176;18595:32:118;;;;;;;18266:372;;18159:661;18097:723;;:::o;18234:580::-;18776:27;;-1:-1:-1;;;18776:27:118;;-1:-1:-1;;;;;178:32:176;;;18776:27:118;;;160:51:176;18748:12:118;;18776:15;;;;;;133:18:176;;18776:27:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18644:170;18234:580;18159:661;18097:723;;:::o;2433:187:41:-;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:41;;;-1:-1:-1;;;;;;2541:17:41;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;18826:128:118:-;18891:9;:20;18903:8;18891:9;:20;:::i;:::-;;18926:21;18938:8;18926:21;;;;;;:::i;:::-;;;;;;;;18826:128;:::o;-1:-1:-1:-;;;;;;;;:::o;222:173:176:-;290:20;;-1:-1:-1;;;;;339:31:176;;329:42;;319:70;;385:1;382;375:12;319:70;222:173;;;:::o;400:186::-;459:6;512:2;500:9;491:7;487:23;483:32;480:52;;;528:1;525;518:12;480:52;551:29;570:9;551:29;:::i;:::-;541:39;400:186;-1:-1:-1;;;400:186:176:o;591:180::-;650:6;703:2;691:9;682:7;678:23;674:32;671:52;;;719:1;716;709:12;671:52;-1:-1:-1;742:23:176;;591:180;-1:-1:-1;591:180:176:o;776:423::-;818:3;856:5;850:12;883:6;878:3;871:19;908:1;918:162;932:6;929:1;926:13;918:162;;;994:4;1050:13;;;1046:22;;1040:29;1022:11;;;1018:20;;1011:59;947:12;918:162;;;922:3;1125:1;1118:4;1109:6;1104:3;1100:16;1096:27;1089:38;1188:4;1181:2;1177:7;1172:2;1164:6;1160:15;1156:29;1151:3;1147:39;1143:50;1136:57;;;776:423;;;;:::o;1204:220::-;1353:2;1342:9;1335:21;1316:4;1373:45;1414:2;1403:9;1399:18;1391:6;1373:45;:::i;1429:254::-;1497:6;1505;1558:2;1546:9;1537:7;1533:23;1529:32;1526:52;;;1574:1;1571;1564:12;1526:52;1610:9;1597:23;1587:33;;1639:38;1673:2;1662:9;1658:18;1639:38;:::i;:::-;1629:48;;1429:254;;;;;:::o;1688:127::-;1749:10;1744:3;1740:20;1737:1;1730:31;1780:4;1777:1;1770:15;1804:4;1801:1;1794:15;1820:922;1889:6;1942:2;1930:9;1921:7;1917:23;1913:32;1910:52;;;1958:1;1955;1948:12;1910:52;1998:9;1985:23;2027:18;2068:2;2060:6;2057:14;2054:34;;;2084:1;2081;2074:12;2054:34;2122:6;2111:9;2107:22;2097:32;;2167:7;2160:4;2156:2;2152:13;2148:27;2138:55;;2189:1;2186;2179:12;2138:55;2225:2;2212:16;2247:2;2243;2240:10;2237:36;;;2253:18;;:::i;:::-;2328:2;2322:9;2296:2;2382:13;;-1:-1:-1;;2378:22:176;;;2402:2;2374:31;2370:40;2358:53;;;2426:18;;;2446:22;;;2423:46;2420:72;;;2472:18;;:::i;:::-;2512:10;2508:2;2501:22;2547:2;2539:6;2532:18;2587:7;2582:2;2577;2573;2569:11;2565:20;2562:33;2559:53;;;2608:1;2605;2598:12;2559:53;2664:2;2659;2655;2651:11;2646:2;2638:6;2634:15;2621:46;2709:1;2687:15;;;2704:2;2683:24;2676:35;;;;-1:-1:-1;2691:6:176;1820:922;-1:-1:-1;;;;;1820:922:176:o;2747:380::-;2826:1;2822:12;;;;2869;;;2890:61;;2944:4;2936:6;2932:17;2922:27;;2890:61;2997:2;2989:6;2986:14;2966:18;2963:38;2960:161;;3043:10;3038:3;3034:20;3031:1;3024:31;3078:4;3075:1;3068:15;3106:4;3103:1;3096:15;2960:161;;2747:380;;;:::o;4163:416::-;-1:-1:-1;;;;;4404:15:176;;;4386:34;;4456:15;;4451:2;4436:18;;4429:43;4508:2;4503;4488:18;;4481:30;;;4329:4;;4528:45;;4554:18;;4546:6;4528:45;:::i;:::-;4520:53;4163:416;-1:-1:-1;;;;;4163:416:176:o;4892:545::-;4994:2;4989:3;4986:11;4983:448;;;5030:1;5055:5;5051:2;5044:17;5100:4;5096:2;5086:19;5170:2;5158:10;5154:19;5151:1;5147:27;5141:4;5137:38;5206:4;5194:10;5191:20;5188:47;;;-1:-1:-1;5229:4:176;5188:47;5284:2;5279:3;5275:12;5272:1;5268:20;5262:4;5258:31;5248:41;;5339:82;5357:2;5350:5;5347:13;5339:82;;;5402:17;;;5383:1;5372:13;5339:82;;;5343:3;;;4892:545;;;:::o;5613:1352::-;5739:3;5733:10;5766:18;5758:6;5755:30;5752:56;;;5788:18;;:::i;:::-;5817:97;5907:6;5867:38;5899:4;5893:11;5867:38;:::i;:::-;5861:4;5817:97;:::i;:::-;5969:4;;6033:2;6022:14;;6050:1;6045:663;;;;6752:1;6769:6;6766:89;;;-1:-1:-1;6821:19:176;;;6815:26;6766:89;-1:-1:-1;;5570:1:176;5566:11;;;5562:24;5558:29;5548:40;5594:1;5590:11;;;5545:57;6868:81;;6015:944;;6045:663;4839:1;4832:14;;;4876:4;4863:18;;-1:-1:-1;;6081:20:176;;;6199:236;6213:7;6210:1;6207:14;6199:236;;;6302:19;;;6296:26;6281:42;;6394:27;;;;6362:1;6350:14;;;;6229:19;;6199:236;;;6203:3;6463:6;6454:7;6451:19;6448:201;;;6524:19;;;6518:26;-1:-1:-1;;6607:1:176;6603:14;;;6619:3;6599:24;6595:37;6591:42;6576:58;6561:74;;6448:201;-1:-1:-1;;;;;6695:1:176;6679:14;;;6675:22;6662:36;;-1:-1:-1;5613:1352:176:o",
    "linkReferences": {}
  },
  "methodIdentifiers": {
    "getAddress(bytes32)": "21f8a721",
    "getCollateralManager()": "dfa441be",
    "getConfigurator()": "9b7ae5ec",
    "getDebtTokenImpl()": "47d2c534",
    "getDelegationRegistry()": "57d600a1",
    "getEmergencyAdmin()": "ddcaa9ea",
    "getExecutionDelegate()": "47f872f1",
    "getExecutionManager()": "862beee1",
    "getFTokenImpl()": "9fd192b8",
    "getFluidToken()": "1a8b1fbc",
    "getLending()": "69acea5f",
    "getLendingPool()": "0261bf8b",
    "getLendingRateManager()": "617e0605",
    "getMarketId()": "568ef470",
    "getNFTPriceOracle()": "673adf43",
    "getObligationReceipt()": "3fa01431",
    "getObligationReceiptBundle()": "7dd83ac5",
    "getPeerAdmin()": "146b9ae3",
    "getPeerIncentivesController()": "22e35383",
    "getPoolAdmin()": "aecda378",
    "getPoolIncentivesController()": "19ef9268",
    "getPriceConsumerV3()": "00926047",
    "getPromissoryNote()": "90313e8e",
    "getPromissoryNoteBundle()": "e4a2544d",
    "getReferralManager()": "de3c6e04",
    "getTreasury()": "3b19e84a",
    "getWETH()": "cae5f11e",
    "getWETHGateway()": "77532ed9",
    "owner()": "8da5cb5b",
    "renounceOwnership()": "715018a6",
    "setAddress(bytes32,address)": "ca446dd9",
    "setAddressAsProxy(bytes32,address)": "5dcc528c",
    "setCollateralManager(address)": "842a05d4",
    "setConfigurator(address)": "9f5f86ae",
    "setConfiguratorImpl(address)": "0c71b701",
    "setDebtTokenImpl(address)": "135dc147",
    "setDelegationRegistry(address)": "73aa9e94",
    "setEmergencyAdmin(address)": "35da3394",
    "setExecutionDelegate(address)": "037c9be2",
    "setExecutionManager(address)": "1381ba4d",
    "setFTokenImpl(address)": "f66e398f",
    "setFluidToken(address)": "74eb5a62",
    "setLending(address)": "180fde07",
    "setLendingPool(address)": "113aa8b1",
    "setLendingRateManager(address)": "4d82964c",
    "setMarketId(string)": "f67b1847",
    "setNFTPriceOracle(address)": "1e34764c",
    "setObligationReceipt(address)": "63ede0fc",
    "setObligationReceiptBundle(address)": "ad1f9944",
    "setPeerAdmin(address)": "98875827",
    "setPeerIncentivesController(address)": "c13e754b",
    "setPoolAdmin(address)": "283d62ad",
    "setPoolIncentivesController(address)": "6c6f33a5",
    "setPriceConsumerV3(address)": "a01246e3",
    "setPromissoryNote(address)": "2fedd807",
    "setPromissoryNoteBundle(address)": "ea34b961",
    "setReferralManager(address)": "c5f3a4c4",
    "setTreasury(address)": "f0f44260",
    "setWETH(address)": "5b769f3c",
    "setWETHGateway(address)": "21da5837",
    "transferOwnership(address)": "f2fde38b"
  },
  "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"marketId\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"hasProxy\",\"type\":\"bool\"}],\"name\":\"AddressSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"CollateralManagerUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"ConfiguratorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"DebtTokenImplUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"DelegationRegistryUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"EmergencyAdminUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"ExecutionDelegateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"ExecutionManagerUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"FTokenImplUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"FluidTokenUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"LendingPoolUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"LendingRateManagerUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"LendingUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"newMarketId\",\"type\":\"string\"}],\"name\":\"MarketIdSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"NFTPriceOracleUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"ObligationReceiptBundleUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"ObligationReceiptUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"PeerAdminUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"PeerIncentivesControllerUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"PoolAdminUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"PoolIncentivesControllerUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"PriceConsumerUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"PromissoryNoteBundleUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"PromissoryNoteUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"ProxyCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"ReferralManagerUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"TreasuryUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"WETHGatewayUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"WETHUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"getAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCollateralManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfigurator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDebtTokenImpl\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDelegationRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEmergencyAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getExecutionDelegate\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getExecutionManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFTokenImpl\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFluidToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLending\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLendingPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLendingRateManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMarketId\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNFTPriceOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getObligationReceipt\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getObligationReceiptBundle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPeerAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPeerIncentivesController\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolIncentivesController\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPriceConsumerV3\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPromissoryNote\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPromissoryNoteBundle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReferralManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTreasury\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWETH\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWETHGateway\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"setAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"implementationAddress\",\"type\":\"address\"}],\"name\":\"setAddressAsProxy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"}],\"name\":\"setCollateralManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"configurator\",\"type\":\"address\"}],\"name\":\"setConfigurator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"configurator\",\"type\":\"address\"}],\"name\":\"setConfiguratorImpl\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"debtTokenImpl\",\"type\":\"address\"}],\"name\":\"setDebtTokenImpl\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegationRegistry\",\"type\":\"address\"}],\"name\":\"setDelegationRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"emergencyAdmin\",\"type\":\"address\"}],\"name\":\"setEmergencyAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"executionDelegate\",\"type\":\"address\"}],\"name\":\"setExecutionDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"executionManager\",\"type\":\"address\"}],\"name\":\"setExecutionManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fTokenImpl\",\"type\":\"address\"}],\"name\":\"setFTokenImpl\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fluidToken\",\"type\":\"address\"}],\"name\":\"setFluidToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"lending\",\"type\":\"address\"}],\"name\":\"setLending\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"setLendingPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"lendingRateManager\",\"type\":\"address\"}],\"name\":\"setLendingRateManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"marketId\",\"type\":\"string\"}],\"name\":\"setMarketId\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nftPriceOracle\",\"type\":\"address\"}],\"name\":\"setNFTPriceOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"obligationReceipt\",\"type\":\"address\"}],\"name\":\"setObligationReceipt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"obligationReceipt\",\"type\":\"address\"}],\"name\":\"setObligationReceiptBundle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"setPeerAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"name\":\"setPeerIncentivesController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"setPoolAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"name\":\"setPoolIncentivesController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"priceConsumerV3\",\"type\":\"address\"}],\"name\":\"setPriceConsumerV3\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"promissoryNote\",\"type\":\"address\"}],\"name\":\"setPromissoryNote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"promissoryNote\",\"type\":\"address\"}],\"name\":\"setPromissoryNoteBundle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"referralManager\",\"type\":\"address\"}],\"name\":\"setReferralManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"treasury\",\"type\":\"address\"}],\"name\":\"setTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"weth\",\"type\":\"address\"}],\"name\":\"setWETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wethGateway\",\"type\":\"address\"}],\"name\":\"setWETHGateway\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"FluidNFT*\",\"details\":\"Main registry of addresses part of or connected to the protocol, including permissioned roles - Acting also as factory of proxies and admin of those, so with right to change its implementations - Owned by the FluidNFT Governance\",\"kind\":\"dev\",\"methods\":{\"getAddress(bytes32)\":{\"details\":\"Returns an address by id\",\"returns\":{\"_0\":\"The address*\"}},\"getCollateralManager()\":{\"details\":\"Returns the address of the CollateralManager. Since the manager is used through delegateCall within the CollateralManager contract, the proxy contract pattern does not work properly hence the addresses are changed directly\",\"returns\":{\"_0\":\"The address of the CollateralManager*\"}},\"getConfigurator()\":{\"details\":\"Returns the address of the Configurator proxy\",\"returns\":{\"_0\":\"The Configurator proxy address*\"}},\"getExecutionDelegate()\":{\"details\":\"Returns the address of the Execution Delegate proxy\",\"returns\":{\"_0\":\"The Execution Delegate proxy address*\"}},\"getExecutionManager()\":{\"details\":\"Returns the address of the Execution Manager proxy\",\"returns\":{\"_0\":\"The Execution Manager proxy address*\"}},\"getLending()\":{\"details\":\"Returns the address of the Lending proxy\",\"returns\":{\"_0\":\"The Lending proxy address*\"}},\"getLendingPool()\":{\"details\":\"Returns the address of the LendingPool proxy\",\"returns\":{\"_0\":\"The LendingPool proxy address*\"}},\"getMarketId()\":{\"details\":\"Returns the id of the FluidNFT market to which this contracts points to\",\"returns\":{\"_0\":\"The market id*\"}},\"getObligationReceipt()\":{\"details\":\"Returns the address of the Obligation Receipt proxy\",\"returns\":{\"_0\":\"The Obligation Receipt proxy address*\"}},\"getObligationReceiptBundle()\":{\"details\":\"Returns the address of the Obligation Receipt Bundle proxy\",\"returns\":{\"_0\":\"The Obligation Receipt Bundle proxy address*\"}},\"getPeerAdmin()\":{\"details\":\"The functions below are getters/setters of addresses that are outside the context of the protocol hence the upgradable proxy pattern is not used*\"},\"getPoolAdmin()\":{\"details\":\"The functions below are getters/setters of addresses that are outside the context of the protocol hence the upgradable proxy pattern is not used*\"},\"getPromissoryNote()\":{\"details\":\"Returns the address of the PromissoryNote proxy\",\"returns\":{\"_0\":\"The PromissoryNote proxy address*\"}},\"getPromissoryNoteBundle()\":{\"details\":\"Returns the address of the PromissoryNoteBundle proxy\",\"returns\":{\"_0\":\"The PromissoryNote Bundle proxy address*\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setAddress(bytes32,address)\":{\"details\":\"Sets an address for an id replacing the address saved in the addresses map IMPORTANT Use this function carefully, as it will do a hard replacement\",\"params\":{\"id\":\"The id\",\"newAddress\":\"The address to set*\"}},\"setAddressAsProxy(bytes32,address)\":{\"details\":\"General function to update the implementation of a proxy registered with certain `id`. If there is no proxy registered, it will instantiate one and set as implementation the `implementationAddress` IMPORTANT Use this function carefully, only for ids that don't have an explicit setter function, in order to avoid unexpected consequences\",\"params\":{\"id\":\"The id\",\"implementationAddress\":\"The address of the new implementation*\"}},\"setCollateralManager(address)\":{\"details\":\"Updates the address of the CollateralManager\",\"params\":{\"manager\":\"The new CollateralManager address*\"}},\"setConfigurator(address)\":{\"details\":\"Updates the implementation of the Configurator, or creates the proxy setting the new `configurator` implementation on the first time calling it\",\"params\":{\"configurator\":\"The new Configurator implementation*\"}},\"setConfiguratorImpl(address)\":{\"details\":\"Updates the implementation of the Configurator, or creates the proxy setting the new `configurator` implementation on the first time calling it\",\"params\":{\"configurator\":\"The new Configurator implementation*\"}},\"setExecutionDelegate(address)\":{\"details\":\"Updates the implementation of the Execution Delegate, or creates the proxy setting the new `executionDelegate` implementation on the first time calling it\",\"params\":{\"executionDelegate\":\"The new Execution Delegate implementation*\"}},\"setExecutionManager(address)\":{\"details\":\"Updates the implementation of the Execution Manager, or creates the proxy setting the new `executionManager` implementation on the first time calling it\",\"params\":{\"executionManager\":\"The new Execution Manager implementation*\"}},\"setLending(address)\":{\"details\":\"Updates the implementation of the Lending, or creates the proxy setting the new `lending` implementation on the first time calling it\",\"params\":{\"lending\":\"The new Lending implementation*\"}},\"setLendingPool(address)\":{\"details\":\"Updates the implementation of the LendingPool, or creates the proxy setting the new `pool` implementation on the first time calling it\",\"params\":{\"pool\":\"The new LendingPool implementation*\"}},\"setMarketId(string)\":{\"details\":\"Allows to set the market which this AddressProvider represents\",\"params\":{\"marketId\":\"The market id*\"}},\"setObligationReceipt(address)\":{\"details\":\"Updates the implementation of the Obligation Receipt, or creates the proxy setting the new `obligationReceipt` implementation on the first time calling it\",\"params\":{\"obligationReceipt\":\"The new Obligation Receipt implementation*\"}},\"setObligationReceiptBundle(address)\":{\"details\":\"Updates the implementation of the Obligation Receipt Bundle, or creates the proxy setting the new `obligationReceiptBundle` implementation on the first time calling it\",\"params\":{\"obligationReceipt\":\"The new PromissoryNoteBundle implementation*\"}},\"setPromissoryNote(address)\":{\"details\":\"Updates the implementation of the PromissoryNote, or creates the proxy setting the new `promissoryNote` implementation on the first time calling it\",\"params\":{\"promissoryNote\":\"The new PromissoryNote implementation*\"}},\"setPromissoryNoteBundle(address)\":{\"details\":\"Updates the implementation of the PromissoryNote Bunlde, or creates the proxy setting the new `promissoryNoteBundle` implementation on the first time calling it\",\"params\":{\"promissoryNote\":\"The new PromissoryNoteBundle implementation*\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"AddressProvider contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/protocol/governance/AddressProvider.sol\":\"AddressProvider\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@chainlink/=lib/chainlink/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688\",\"dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96b6d77a20bebd4eb06b801d3d020c7e82be13bd535cb0d0a6b7181c51dab5d5\",\"dweb:/ipfs/QmPUR9Cv9jNFdQX6PtBfaBW1ZCnKwiu65R2VD5kbdanDyn\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8\",\"dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472\",\"dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354\",\"dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"keccak256\":\"0xa6a787e7a901af6511e19aa53e1a00352db215a011d2c7a438d0582dd5da76f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6c4477d480bac20d681ade0e712b77ad828acf530a1d5c0abc5fb78068a05a1\",\"dweb:/ipfs/QmdBqsK8CcUceTeWzhHwFDEvKMoHimwtV96Lbim7ZBtCb8\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xf96f969e24029d43d0df89e59d365f277021dac62b48e1c1e3ebe0acdd7f1ca1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec772b45a624be516f1c81970caa8a2e144301e9d0921cbc1a2789fef39a1269\",\"dweb:/ipfs/QmNyjwxCrGhQMyzLD93oUobJXVe9ceJvRvfXwbEtuxPiEj\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4\",\"dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B\"]},\"src/interfaces/IAddressProvider.sol\":{\"keccak256\":\"0x6730abfcd8770e3279dad6137bf619ab98ee8b049e6dd85d2fbe87ba6224fde8\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://9b7d1588eab025b049f858ab2f329be7fec220198d956b9b61bf0b9bddc5761a\",\"dweb:/ipfs/QmTaFkYSUfWmbpsyE2TKC1QvP6eTDggZ72ZWodBhydqt5X\"]},\"src/protocol/governance/AddressProvider.sol\":{\"keccak256\":\"0x2c16b7a449e0f4eddbb372788f06abad7608507635dfd51271ef9aa5bfae0736\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://6640ec27704b75c68e8a5932e928ec96b3224aeb3238fc22f8e6b6e3b2adfce0\",\"dweb:/ipfs/Qmd7CmDrPvff7H9CHnj2eH1z67NxVpNsGYs92N9WkoxKxE\"]},\"src/protocol/libraries/helpers/Errors.sol\":{\"keccak256\":\"0x490e76871922e89a13ba0bb88977be18c143fa9d0cd9afb033744a3d81479c52\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://1c409d4d1e1689d8d8f3c3e361198d20f3b6476608c5316d8e2d91f52373e8e3\",\"dweb:/ipfs/QmRZaYpxqjmBpbxb51KqswKYPSeCsU3ejbmk5E3MrMxJaM\"]},\"src/protocol/libraries/proxy/FluidUpgradeableProxy.sol\":{\"keccak256\":\"0xebb381972c1d982d6cc8c2b1a704f9f2fefb75433e0adc84f896186da8ba2599\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://3706756fd653002ba56734f0f699decd7ba38993744a951acf0b259a95549087\",\"dweb:/ipfs/QmdZceFBVbYzBKZaQDfWEKYggJGxJ8G1j9ZWBrWLbozRZz\"]}},\"version\":1}",
  "metadata": {
    "compiler": {
      "version": "0.8.16+commit.07a7930e"
    },
    "language": "Solidity",
    "output": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "marketId",
              "type": "string"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32",
              "indexed": false
            },
            {
              "internalType": "address",
              "name": "newAddress",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "bool",
              "name": "hasProxy",
              "type": "bool",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "AddressSet",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newAddress",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "CollateralManagerUpdated",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newAddress",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "ConfiguratorUpdated",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newAddress",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "DebtTokenImplUpdated",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newAddress",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "DelegationRegistryUpdated",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newAddress",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "EmergencyAdminUpdated",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newAddress",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "ExecutionDelegateUpdated",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newAddress",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "ExecutionManagerUpdated",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newAddress",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "FTokenImplUpdated",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newAddress",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "FluidTokenUpdated",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newAddress",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "LendingPoolUpdated",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newAddress",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "LendingRateManagerUpdated",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newAddress",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "LendingUpdated",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "newMarketId",
              "type": "string",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "MarketIdSet",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newAddress",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "NFTPriceOracleUpdated",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newAddress",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "ObligationReceiptBundleUpdated",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newAddress",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "ObligationReceiptUpdated",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "previousOwner",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "newOwner",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "OwnershipTransferred",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newAddress",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "PeerAdminUpdated",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newAddress",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "PeerIncentivesControllerUpdated",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newAddress",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "PoolAdminUpdated",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newAddress",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "PoolIncentivesControllerUpdated",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newAddress",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "PriceConsumerUpdated",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newAddress",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "PromissoryNoteBundleUpdated",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newAddress",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "PromissoryNoteUpdated",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32",
              "indexed": false
            },
            {
              "internalType": "address",
              "name": "newAddress",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "ProxyCreated",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newAddress",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "ReferralManagerUpdated",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newAddress",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "TreasuryUpdated",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newAddress",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "WETHGatewayUpdated",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newAddress",
              "type": "address",
              "indexed": true
            }
          ],
          "type": "event",
          "name": "WETHUpdated",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "getAddress",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getCollateralManager",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getConfigurator",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getDebtTokenImpl",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getDelegationRegistry",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getEmergencyAdmin",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getExecutionDelegate",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getExecutionManager",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getFTokenImpl",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getFluidToken",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getLending",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getLendingPool",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getLendingRateManager",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getMarketId",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getNFTPriceOracle",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getObligationReceipt",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getObligationReceiptBundle",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getPeerAdmin",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getPeerIncentivesController",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getPoolAdmin",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getPoolIncentivesController",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getPriceConsumerV3",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getPromissoryNote",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getPromissoryNoteBundle",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getReferralManager",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getTreasury",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getWETH",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getWETHGateway",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "renounceOwnership"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "newAddress",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setAddress"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "id",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "implementationAddress",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setAddressAsProxy"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "manager",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setCollateralManager"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "configurator",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setConfigurator"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "configurator",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setConfiguratorImpl"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "debtTokenImpl",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setDebtTokenImpl"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "delegationRegistry",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setDelegationRegistry"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "emergencyAdmin",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setEmergencyAdmin"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "executionDelegate",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setExecutionDelegate"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "executionManager",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setExecutionManager"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "fTokenImpl",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setFTokenImpl"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "fluidToken",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setFluidToken"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "lending",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setLending"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setLendingPool"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "lendingRateManager",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setLendingRateManager"
        },
        {
          "inputs": [
            {
              "internalType": "string",
              "name": "marketId",
              "type": "string"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setMarketId"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "nftPriceOracle",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setNFTPriceOracle"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "obligationReceipt",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setObligationReceipt"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "obligationReceipt",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setObligationReceiptBundle"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "admin",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setPeerAdmin"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "controller",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setPeerIncentivesController"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "admin",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setPoolAdmin"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "controller",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setPoolIncentivesController"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "priceConsumerV3",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setPriceConsumerV3"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "promissoryNote",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setPromissoryNote"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "promissoryNote",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setPromissoryNoteBundle"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "referralManager",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setReferralManager"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "treasury",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setTreasury"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "weth",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setWETH"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "wethGateway",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "setWETHGateway"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "transferOwnership"
        }
      ],
      "devdoc": {
        "kind": "dev",
        "methods": {
          "getAddress(bytes32)": {
            "details": "Returns an address by id",
            "returns": {
              "_0": "The address*"
            }
          },
          "getCollateralManager()": {
            "details": "Returns the address of the CollateralManager. Since the manager is used through delegateCall within the CollateralManager contract, the proxy contract pattern does not work properly hence the addresses are changed directly",
            "returns": {
              "_0": "The address of the CollateralManager*"
            }
          },
          "getConfigurator()": {
            "details": "Returns the address of the Configurator proxy",
            "returns": {
              "_0": "The Configurator proxy address*"
            }
          },
          "getExecutionDelegate()": {
            "details": "Returns the address of the Execution Delegate proxy",
            "returns": {
              "_0": "The Execution Delegate proxy address*"
            }
          },
          "getExecutionManager()": {
            "details": "Returns the address of the Execution Manager proxy",
            "returns": {
              "_0": "The Execution Manager proxy address*"
            }
          },
          "getLending()": {
            "details": "Returns the address of the Lending proxy",
            "returns": {
              "_0": "The Lending proxy address*"
            }
          },
          "getLendingPool()": {
            "details": "Returns the address of the LendingPool proxy",
            "returns": {
              "_0": "The LendingPool proxy address*"
            }
          },
          "getMarketId()": {
            "details": "Returns the id of the FluidNFT market to which this contracts points to",
            "returns": {
              "_0": "The market id*"
            }
          },
          "getObligationReceipt()": {
            "details": "Returns the address of the Obligation Receipt proxy",
            "returns": {
              "_0": "The Obligation Receipt proxy address*"
            }
          },
          "getObligationReceiptBundle()": {
            "details": "Returns the address of the Obligation Receipt Bundle proxy",
            "returns": {
              "_0": "The Obligation Receipt Bundle proxy address*"
            }
          },
          "getPeerAdmin()": {
            "details": "The functions below are getters/setters of addresses that are outside the context of the protocol hence the upgradable proxy pattern is not used*"
          },
          "getPoolAdmin()": {
            "details": "The functions below are getters/setters of addresses that are outside the context of the protocol hence the upgradable proxy pattern is not used*"
          },
          "getPromissoryNote()": {
            "details": "Returns the address of the PromissoryNote proxy",
            "returns": {
              "_0": "The PromissoryNote proxy address*"
            }
          },
          "getPromissoryNoteBundle()": {
            "details": "Returns the address of the PromissoryNoteBundle proxy",
            "returns": {
              "_0": "The PromissoryNote Bundle proxy address*"
            }
          },
          "owner()": {
            "details": "Returns the address of the current owner."
          },
          "renounceOwnership()": {
            "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
          },
          "setAddress(bytes32,address)": {
            "details": "Sets an address for an id replacing the address saved in the addresses map IMPORTANT Use this function carefully, as it will do a hard replacement",
            "params": {
              "id": "The id",
              "newAddress": "The address to set*"
            }
          },
          "setAddressAsProxy(bytes32,address)": {
            "details": "General function to update the implementation of a proxy registered with certain `id`. If there is no proxy registered, it will instantiate one and set as implementation the `implementationAddress` IMPORTANT Use this function carefully, only for ids that don't have an explicit setter function, in order to avoid unexpected consequences",
            "params": {
              "id": "The id",
              "implementationAddress": "The address of the new implementation*"
            }
          },
          "setCollateralManager(address)": {
            "details": "Updates the address of the CollateralManager",
            "params": {
              "manager": "The new CollateralManager address*"
            }
          },
          "setConfigurator(address)": {
            "details": "Updates the implementation of the Configurator, or creates the proxy setting the new `configurator` implementation on the first time calling it",
            "params": {
              "configurator": "The new Configurator implementation*"
            }
          },
          "setConfiguratorImpl(address)": {
            "details": "Updates the implementation of the Configurator, or creates the proxy setting the new `configurator` implementation on the first time calling it",
            "params": {
              "configurator": "The new Configurator implementation*"
            }
          },
          "setExecutionDelegate(address)": {
            "details": "Updates the implementation of the Execution Delegate, or creates the proxy setting the new `executionDelegate` implementation on the first time calling it",
            "params": {
              "executionDelegate": "The new Execution Delegate implementation*"
            }
          },
          "setExecutionManager(address)": {
            "details": "Updates the implementation of the Execution Manager, or creates the proxy setting the new `executionManager` implementation on the first time calling it",
            "params": {
              "executionManager": "The new Execution Manager implementation*"
            }
          },
          "setLending(address)": {
            "details": "Updates the implementation of the Lending, or creates the proxy setting the new `lending` implementation on the first time calling it",
            "params": {
              "lending": "The new Lending implementation*"
            }
          },
          "setLendingPool(address)": {
            "details": "Updates the implementation of the LendingPool, or creates the proxy setting the new `pool` implementation on the first time calling it",
            "params": {
              "pool": "The new LendingPool implementation*"
            }
          },
          "setMarketId(string)": {
            "details": "Allows to set the market which this AddressProvider represents",
            "params": {
              "marketId": "The market id*"
            }
          },
          "setObligationReceipt(address)": {
            "details": "Updates the implementation of the Obligation Receipt, or creates the proxy setting the new `obligationReceipt` implementation on the first time calling it",
            "params": {
              "obligationReceipt": "The new Obligation Receipt implementation*"
            }
          },
          "setObligationReceiptBundle(address)": {
            "details": "Updates the implementation of the Obligation Receipt Bundle, or creates the proxy setting the new `obligationReceiptBundle` implementation on the first time calling it",
            "params": {
              "obligationReceipt": "The new PromissoryNoteBundle implementation*"
            }
          },
          "setPromissoryNote(address)": {
            "details": "Updates the implementation of the PromissoryNote, or creates the proxy setting the new `promissoryNote` implementation on the first time calling it",
            "params": {
              "promissoryNote": "The new PromissoryNote implementation*"
            }
          },
          "setPromissoryNoteBundle(address)": {
            "details": "Updates the implementation of the PromissoryNote Bunlde, or creates the proxy setting the new `promissoryNoteBundle` implementation on the first time calling it",
            "params": {
              "promissoryNote": "The new PromissoryNoteBundle implementation*"
            }
          },
          "transferOwnership(address)": {
            "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
          }
        },
        "version": 1
      },
      "userdoc": {
        "kind": "user",
        "methods": {},
        "version": 1
      }
    },
    "settings": {
      "remappings": [
        ":@chainlink/=lib/chainlink/",
        ":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
        ":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
        ":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/",
        ":ds-test/=lib/forge-std/lib/ds-test/src/",
        ":forge-std/=lib/forge-std/src/"
      ],
      "optimizer": {
        "enabled": true,
        "runs": 200
      },
      "metadata": {
        "bytecodeHash": "ipfs"
      },
      "compilationTarget": {
        "src/protocol/governance/AddressProvider.sol": "AddressProvider"
      },
      "libraries": {}
    },
    "sources": {
      "lib/openzeppelin-contracts/contracts/access/Ownable.sol": {
        "keccak256": "0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673",
        "urls": [
          "bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2",
          "dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol": {
        "keccak256": "0x1d4afe6cb24200cc4545eed814ecf5847277dfe5d613a1707aad5fceecebcfff",
        "urls": [
          "bzz-raw://383fb7b8181016ac5ccf07bc9cdb7c1b5045ea36e2cc4df52bcbf20396fc7688",
          "dweb:/ipfs/QmYJ7Cg4WmE3rR8KGQxjUCXFfTH6TcwZ2Z1f6tPrq7jHFr"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol": {
        "keccak256": "0xa2b22da3032e50b55f95ec1d13336102d675f341167aa76db571ef7f8bb7975d",
        "urls": [
          "bzz-raw://96b6d77a20bebd4eb06b801d3d020c7e82be13bd535cb0d0a6b7181c51dab5d5",
          "dweb:/ipfs/QmPUR9Cv9jNFdQX6PtBfaBW1ZCnKwiu65R2VD5kbdanDyn"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol": {
        "keccak256": "0xabf3f59bc0e5423eae45e459dbe92e7052c6983628d39008590edc852a62f94a",
        "urls": [
          "bzz-raw://89c2a0f70157c13845be5cb49b078a6374fee3a78fa950052a3af26190255da8",
          "dweb:/ipfs/QmUcvMEQH1oMM2pUyMuDiBUKdvvnTz1NRB8bmPHrVq8725"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/proxy/Proxy.sol": {
        "keccak256": "0xc130fe33f1b2132158531a87734153293f6d07bc263ff4ac90e85da9c82c0e27",
        "urls": [
          "bzz-raw://8831721b6f4cc26534d190f9f1631c3f59c9ff38efdd911f85e0882b8e360472",
          "dweb:/ipfs/QmQZnLErZNStirSQ13ZNWQgvEYUtGE5tXYwn4QUPaVUfPN"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol": {
        "keccak256": "0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61",
        "urls": [
          "bzz-raw://ada1e030c0231db8d143b44ce92b4d1158eedb087880cad6d8cc7bd7ebe7b354",
          "dweb:/ipfs/QmWZ2NHZweRpz1U9GF6R1h65ri76dnX7fNxLBeM2t5N5Ce"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol": {
        "keccak256": "0xa6a787e7a901af6511e19aa53e1a00352db215a011d2c7a438d0582dd5da76f9",
        "urls": [
          "bzz-raw://a6c4477d480bac20d681ade0e712b77ad828acf530a1d5c0abc5fb78068a05a1",
          "dweb:/ipfs/QmdBqsK8CcUceTeWzhHwFDEvKMoHimwtV96Lbim7ZBtCb8"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/utils/Address.sol": {
        "keccak256": "0xf96f969e24029d43d0df89e59d365f277021dac62b48e1c1e3ebe0acdd7f1ca1",
        "urls": [
          "bzz-raw://ec772b45a624be516f1c81970caa8a2e144301e9d0921cbc1a2789fef39a1269",
          "dweb:/ipfs/QmNyjwxCrGhQMyzLD93oUobJXVe9ceJvRvfXwbEtuxPiEj"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/utils/Context.sol": {
        "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7",
        "urls": [
          "bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92",
          "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol": {
        "keccak256": "0xd5c50c54bf02740ebd122ff06832546cb5fa84486d52695a9ccfd11666e0c81d",
        "urls": [
          "bzz-raw://39e096c60a6eb1c6a257122d515496bd92d0c6a693a8f07acb6aa4b1263e95d4",
          "dweb:/ipfs/QmPs5trJBacCiSkezP6tpevapuRYWNY6mqSFzsMCJj7e6B"
        ],
        "license": "MIT"
      },
      "src/interfaces/IAddressProvider.sol": {
        "keccak256": "0x6730abfcd8770e3279dad6137bf619ab98ee8b049e6dd85d2fbe87ba6224fde8",
        "urls": [
          "bzz-raw://9b7d1588eab025b049f858ab2f329be7fec220198d956b9b61bf0b9bddc5761a",
          "dweb:/ipfs/QmTaFkYSUfWmbpsyE2TKC1QvP6eTDggZ72ZWodBhydqt5X"
        ],
        "license": "AGPL-3.0"
      },
      "src/protocol/governance/AddressProvider.sol": {
        "keccak256": "0x2c16b7a449e0f4eddbb372788f06abad7608507635dfd51271ef9aa5bfae0736",
        "urls": [
          "bzz-raw://6640ec27704b75c68e8a5932e928ec96b3224aeb3238fc22f8e6b6e3b2adfce0",
          "dweb:/ipfs/Qmd7CmDrPvff7H9CHnj2eH1z67NxVpNsGYs92N9WkoxKxE"
        ],
        "license": "AGPL-3.0"
      },
      "src/protocol/libraries/helpers/Errors.sol": {
        "keccak256": "0x490e76871922e89a13ba0bb88977be18c143fa9d0cd9afb033744a3d81479c52",
        "urls": [
          "bzz-raw://1c409d4d1e1689d8d8f3c3e361198d20f3b6476608c5316d8e2d91f52373e8e3",
          "dweb:/ipfs/QmRZaYpxqjmBpbxb51KqswKYPSeCsU3ejbmk5E3MrMxJaM"
        ],
        "license": "AGPL-3.0"
      },
      "src/protocol/libraries/proxy/FluidUpgradeableProxy.sol": {
        "keccak256": "0xebb381972c1d982d6cc8c2b1a704f9f2fefb75433e0adc84f896186da8ba2599",
        "urls": [
          "bzz-raw://3706756fd653002ba56734f0f699decd7ba38993744a951acf0b259a95549087",
          "dweb:/ipfs/QmdZceFBVbYzBKZaQDfWEKYggJGxJ8G1j9ZWBrWLbozRZz"
        ],
        "license": "AGPL-3.0"
      }
    },
    "version": 1
  },
  "ast": {
    "absolutePath": "src/protocol/governance/AddressProvider.sol",
    "id": 52141,
    "exportedSymbols": {
      "AddressProvider": [
        52140
      ],
      "FluidUpgradeableProxy": [
        63013
      ],
      "IAddressProvider": [
        45718
      ],
      "Ownable": [
        30660
      ]
    },
    "nodeType": "SourceUnit",
    "src": "37:18920:118",
    "nodes": [
      {
        "id": 51032,
        "nodeType": "PragmaDirective",
        "src": "37:23:118",
        "nodes": [],
        "literals": [
          "solidity",
          "0.8",
          ".16"
        ]
      },
      {
        "id": 51034,
        "nodeType": "ImportDirective",
        "src": "131:73:118",
        "nodes": [],
        "absolutePath": "src/interfaces/IAddressProvider.sol",
        "file": "../../interfaces/IAddressProvider.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 52141,
        "sourceUnit": 45719,
        "symbolAliases": [
          {
            "foreign": {
              "id": 51033,
              "name": "IAddressProvider",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 45718,
              "src": "140:16:118",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 51036,
        "nodeType": "ImportDirective",
        "src": "205:85:118",
        "nodes": [],
        "absolutePath": "src/protocol/libraries/proxy/FluidUpgradeableProxy.sol",
        "file": "../libraries/proxy/FluidUpgradeableProxy.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 52141,
        "sourceUnit": 63014,
        "symbolAliases": [
          {
            "foreign": {
              "id": 51035,
              "name": "FluidUpgradeableProxy",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 63013,
              "src": "214:21:118",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 51038,
        "nodeType": "ImportDirective",
        "src": "292:69:118",
        "nodes": [],
        "absolutePath": "lib/openzeppelin-contracts/contracts/access/Ownable.sol",
        "file": "@openzeppelin/contracts/access/Ownable.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 52141,
        "sourceUnit": 30661,
        "symbolAliases": [
          {
            "foreign": {
              "id": 51037,
              "name": "Ownable",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 30660,
              "src": "301:7:118",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 52140,
        "nodeType": "ContractDefinition",
        "src": "670:18286:118",
        "nodes": [
          {
            "id": 51045,
            "nodeType": "VariableDeclaration",
            "src": "730:24:118",
            "nodes": [],
            "constant": false,
            "mutability": "mutable",
            "name": "_marketId",
            "nameLocation": "745:9:118",
            "scope": 52140,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 51044,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "730:6:118",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "visibility": "private"
          },
          {
            "id": 51049,
            "nodeType": "VariableDeclaration",
            "src": "760:46:118",
            "nodes": [],
            "constant": false,
            "mutability": "mutable",
            "name": "_addresses",
            "nameLocation": "796:10:118",
            "scope": 52140,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
              "typeString": "mapping(bytes32 => address)"
            },
            "typeName": {
              "id": 51048,
              "keyType": {
                "id": 51046,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "768:7:118",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "760:27:118",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                "typeString": "mapping(bytes32 => address)"
              },
              "valueType": {
                "id": 51047,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "779:7:118",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "visibility": "private"
          },
          {
            "id": 51052,
            "nodeType": "VariableDeclaration",
            "src": "813:50:118",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "PEER_ADMIN",
            "nameLocation": "838:10:118",
            "scope": 52140,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 51050,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "813:7:118",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "hexValue": "504545525f41444d494e",
              "id": 51051,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "851:12:118",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_3c28470b461a44f85600916f46cd850e1e12719822d5fdd44039d17444835628",
                "typeString": "literal_string \"PEER_ADMIN\""
              },
              "value": "PEER_ADMIN"
            },
            "visibility": "private"
          },
          {
            "id": 51055,
            "nodeType": "VariableDeclaration",
            "src": "869:50:118",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "POOL_ADMIN",
            "nameLocation": "894:10:118",
            "scope": 52140,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 51053,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "869:7:118",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "hexValue": "504f4f4c5f41444d494e",
              "id": 51054,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "907:12:118",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_12ad05bde78c5ab75238ce885307f96ecd482bb402ef831f99e7018a0f169b7b",
                "typeString": "literal_string \"POOL_ADMIN\""
              },
              "value": "POOL_ADMIN"
            },
            "visibility": "private"
          },
          {
            "id": 51058,
            "nodeType": "VariableDeclaration",
            "src": "925:60:118",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "EMERGENCY_ADMIN",
            "nameLocation": "950:15:118",
            "scope": 52140,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 51056,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "925:7:118",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "hexValue": "454d455247454e43595f41444d494e",
              "id": 51057,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "968:17:118",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_5c91514091af31f62f596a314af7d5be40146b2f2355969392f055e12e0982fb",
                "typeString": "literal_string \"EMERGENCY_ADMIN\""
              },
              "value": "EMERGENCY_ADMIN"
            },
            "visibility": "private"
          },
          {
            "id": 51061,
            "nodeType": "VariableDeclaration",
            "src": "991:66:118",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "EXECUTION_DELEGATE",
            "nameLocation": "1016:18:118",
            "scope": 52140,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 51059,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "991:7:118",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "hexValue": "455845435554494f4e5f44454c4547415445",
              "id": 51060,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1037:20:118",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_5bb70ca978ce0aa8e96fb43c448643b5eea2ea390d4e05a18b848890a90e2736",
                "typeString": "literal_string \"EXECUTION_DELEGATE\""
              },
              "value": "EXECUTION_DELEGATE"
            },
            "visibility": "private"
          },
          {
            "id": 51064,
            "nodeType": "VariableDeclaration",
            "src": "1063:64:118",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "EXECUTION_MANAGER",
            "nameLocation": "1088:17:118",
            "scope": 52140,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 51062,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1063:7:118",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "hexValue": "455845435554494f4e5f4d414e41474552",
              "id": 51063,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1108:19:118",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_438ceac5aa40a8d5f0a449ae6a6efeb8004589243e39f9aa71f0aed56dcac5af",
                "typeString": "literal_string \"EXECUTION_MANAGER\""
              },
              "value": "EXECUTION_MANAGER"
            },
            "visibility": "private"
          },
          {
            "id": 51067,
            "nodeType": "VariableDeclaration",
            "src": "1133:44:118",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "LENDING",
            "nameLocation": "1158:7:118",
            "scope": 52140,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 51065,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1133:7:118",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "hexValue": "4c454e44494e47",
              "id": 51066,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1168:9:118",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_5bb6a25286bb8715dc575866da01fccb9319d7c050dc4a550830f9fd153b997c",
                "typeString": "literal_string \"LENDING\""
              },
              "value": "LENDING"
            },
            "visibility": "private"
          },
          {
            "id": 51070,
            "nodeType": "VariableDeclaration",
            "src": "1183:60:118",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "PROMISSORY_NOTE",
            "nameLocation": "1208:15:118",
            "scope": 52140,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 51068,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1183:7:118",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "hexValue": "50524f4d4953534f52595f4e4f5445",
              "id": 51069,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1226:17:118",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_25e3460d91f05e72ee29313b164a9ce6e5c5bfe9d0280979471e5d4a217e0715",
                "typeString": "literal_string \"PROMISSORY_NOTE\""
              },
              "value": "PROMISSORY_NOTE"
            },
            "visibility": "private"
          },
          {
            "id": 51073,
            "nodeType": "VariableDeclaration",
            "src": "1249:74:118",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "PROMISSORY_NOTE_BUNDLE",
            "nameLocation": "1274:22:118",
            "scope": 52140,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 51071,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1249:7:118",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "hexValue": "50524f4d4953534f52595f4e4f54455f42554e444c45",
              "id": 51072,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1299:24:118",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_86a98f98e05449ae0d2456558e934ec646f300999c56bc14f21e10ac7173eba1",
                "typeString": "literal_string \"PROMISSORY_NOTE_BUNDLE\""
              },
              "value": "PROMISSORY_NOTE_BUNDLE"
            },
            "visibility": "private"
          },
          {
            "id": 51076,
            "nodeType": "VariableDeclaration",
            "src": "1329:66:118",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "OBLIGATION_RECEIPT",
            "nameLocation": "1354:18:118",
            "scope": 52140,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 51074,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1329:7:118",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "hexValue": "4f424c49474154494f4e5f52454345495054",
              "id": 51075,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1375:20:118",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_745ce3c52ea5ace358e9eaf912ef72e092ce1dcc5e3054b806267d5ddf212d4d",
                "typeString": "literal_string \"OBLIGATION_RECEIPT\""
              },
              "value": "OBLIGATION_RECEIPT"
            },
            "visibility": "private"
          },
          {
            "id": 51079,
            "nodeType": "VariableDeclaration",
            "src": "1401:80:118",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "OBLIGATION_RECEIPT_BUNDLE",
            "nameLocation": "1426:25:118",
            "scope": 52140,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 51077,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1401:7:118",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "hexValue": "4f424c49474154494f4e5f524543454950545f42554e444c45",
              "id": 51078,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1454:27:118",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_28661120ffa3c963403a1ede901a4bc7e4489f68983bb0e83651ec7fc1254109",
                "typeString": "literal_string \"OBLIGATION_RECEIPT_BUNDLE\""
              },
              "value": "OBLIGATION_RECEIPT_BUNDLE"
            },
            "visibility": "private"
          },
          {
            "id": 51082,
            "nodeType": "VariableDeclaration",
            "src": "1487:54:118",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "LENDING_POOL",
            "nameLocation": "1512:12:118",
            "scope": 52140,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 51080,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1487:7:118",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "hexValue": "4c454e44494e475f504f4f4c",
              "id": 51081,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1527:14:118",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_b0a02d474211257da1bdb72ce7e91b05cbdc99ae0876cb0a61bbc7ad100c58a7",
                "typeString": "literal_string \"LENDING_POOL\""
              },
              "value": "LENDING_POOL"
            },
            "visibility": "private"
          },
          {
            "id": 51085,
            "nodeType": "VariableDeclaration",
            "src": "1547:54:118",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "CONFIGURATOR",
            "nameLocation": "1572:12:118",
            "scope": 52140,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 51083,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1547:7:118",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "hexValue": "434f4e464947555241544f52",
              "id": 51084,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1587:14:118",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_530008d2b058137d9c475b1b7d83984f1fcf1dd0e607659d029fc1517ab89268",
                "typeString": "literal_string \"CONFIGURATOR\""
              },
              "value": "CONFIGURATOR"
            },
            "visibility": "private"
          },
          {
            "id": 51088,
            "nodeType": "VariableDeclaration",
            "src": "1607:66:118",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "COLLATERAL_MANAGER",
            "nameLocation": "1632:18:118",
            "scope": 52140,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 51086,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1607:7:118",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "hexValue": "434f4c4c41544552414c5f4d414e41474552",
              "id": 51087,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1653:20:118",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_413cc8bb35fe129dacd3dfaae80d6d4c5d313f64cee9dd6712e7ca52e38573a9",
                "typeString": "literal_string \"COLLATERAL_MANAGER\""
              },
              "value": "COLLATERAL_MANAGER"
            },
            "visibility": "private"
          },
          {
            "id": 51091,
            "nodeType": "VariableDeclaration",
            "src": "1679:62:118",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "NFT_PRICE_ORACLE",
            "nameLocation": "1704:16:118",
            "scope": 52140,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 51089,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1679:7:118",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "hexValue": "4e46545f50524943455f4f5241434c45",
              "id": 51090,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1723:18:118",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_851585d39aba9444ce7c47f525bef99fb3e9fb094f8f701ae10eba8aed066493",
                "typeString": "literal_string \"NFT_PRICE_ORACLE\""
              },
              "value": "NFT_PRICE_ORACLE"
            },
            "visibility": "private"
          },
          {
            "id": 51094,
            "nodeType": "VariableDeclaration",
            "src": "1747:70:118",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "LENDING_RATE_MANAGER",
            "nameLocation": "1772:20:118",
            "scope": 52140,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 51092,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1747:7:118",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "hexValue": "4c454e44494e475f524154455f4d414e41474552",
              "id": 51093,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1795:22:118",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_7d27246d18da5ffc51018fe9cc66d9f7324cf1934c1f3273df473db4f0486b94",
                "typeString": "literal_string \"LENDING_RATE_MANAGER\""
              },
              "value": "LENDING_RATE_MANAGER"
            },
            "visibility": "private"
          },
          {
            "id": 51097,
            "nodeType": "VariableDeclaration",
            "src": "1823:64:118",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "PRICE_CONSUMER_V3",
            "nameLocation": "1848:17:118",
            "scope": 52140,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 51095,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1823:7:118",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "hexValue": "50524943455f434f4e53554d45525f5633",
              "id": 51096,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1868:19:118",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_dac594f34d5285042ecff3c140006df09cc5294261f17a467513837af45af841",
                "typeString": "literal_string \"PRICE_CONSUMER_V3\""
              },
              "value": "PRICE_CONSUMER_V3"
            },
            "visibility": "private"
          },
          {
            "id": 51100,
            "nodeType": "VariableDeclaration",
            "src": "1893:52:118",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "FLUID_TOKEN",
            "nameLocation": "1918:11:118",
            "scope": 52140,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 51098,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1893:7:118",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "hexValue": "464c5549445f544f4b454e",
              "id": 51099,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1932:13:118",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_b2f1c4ed2940527a833a7095535c36b09647f5f42b5173b724da799f21b143ae",
                "typeString": "literal_string \"FLUID_TOKEN\""
              },
              "value": "FLUID_TOKEN"
            },
            "visibility": "private"
          },
          {
            "id": 51103,
            "nodeType": "VariableDeclaration",
            "src": "1951:82:118",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "POOL_INCENTIVES_CONTROLLER",
            "nameLocation": "1976:26:118",
            "scope": 52140,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 51101,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1951:7:118",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "hexValue": "504f4f4c5f494e43454e54495645535f434f4e54524f4c4c4552",
              "id": 51102,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2005:28:118",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_70e2298ce4c93fc20376e630449796a60c7df9e5ada4c418c79934b3e8d8e66c",
                "typeString": "literal_string \"POOL_INCENTIVES_CONTROLLER\""
              },
              "value": "POOL_INCENTIVES_CONTROLLER"
            },
            "visibility": "private"
          },
          {
            "id": 51106,
            "nodeType": "VariableDeclaration",
            "src": "2039:82:118",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "PEER_INCENTIVES_CONTROLLER",
            "nameLocation": "2064:26:118",
            "scope": 52140,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 51104,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "2039:7:118",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "hexValue": "504545525f494e43454e54495645535f434f4e54524f4c4c4552",
              "id": 51105,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2093:28:118",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_417597a82fd79675b56b1fa84f0c660cdffb0b9868b1d3d08d33e1a08e4c6f31",
                "typeString": "literal_string \"PEER_INCENTIVES_CONTROLLER\""
              },
              "value": "PEER_INCENTIVES_CONTROLLER"
            },
            "visibility": "private"
          },
          {
            "id": 51109,
            "nodeType": "VariableDeclaration",
            "src": "2127:62:118",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "REFERRAL_MANAGER",
            "nameLocation": "2152:16:118",
            "scope": 52140,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 51107,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "2127:7:118",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "hexValue": "524546455252414c5f4d414e41474552",
              "id": 51108,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2171:18:118",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_ceb656422d2e5768b364a6526533f6832c483c8cfbd416512fbbd6fa6413f96a",
                "typeString": "literal_string \"REFERRAL_MANAGER\""
              },
              "value": "REFERRAL_MANAGER"
            },
            "visibility": "private"
          },
          {
            "id": 51112,
            "nodeType": "VariableDeclaration",
            "src": "2195:46:118",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "TREASURY",
            "nameLocation": "2220:8:118",
            "scope": 52140,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 51110,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "2195:7:118",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "hexValue": "5452454153555259",
              "id": 51111,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2231:10:118",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_06aa03964db1f7257357ef09714a5f0ca3633723df419e97015e0c7a3e83edb7",
                "typeString": "literal_string \"TREASURY\""
              },
              "value": "TREASURY"
            },
            "visibility": "private"
          },
          {
            "id": 51115,
            "nodeType": "VariableDeclaration",
            "src": "2247:54:118",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "F_TOKEN_IMPL",
            "nameLocation": "2272:12:118",
            "scope": 52140,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 51113,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "2247:7:118",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "hexValue": "465f544f4b454e5f494d504c",
              "id": 51114,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2287:14:118",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_424fe61346868fc363615853d5d06d270e953dc2ffeb930550c15b324ab8b40f",
                "typeString": "literal_string \"F_TOKEN_IMPL\""
              },
              "value": "F_TOKEN_IMPL"
            },
            "visibility": "private"
          },
          {
            "id": 51118,
            "nodeType": "VariableDeclaration",
            "src": "2307:60:118",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "DEBT_TOKEN_IMPL",
            "nameLocation": "2332:15:118",
            "scope": 52140,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 51116,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "2307:7:118",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "hexValue": "444542545f544f4b454e5f494d504c",
              "id": 51117,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2350:17:118",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_653663d2e219f4fc39dc8dad121ddf458bd9655f5f7bf1e1814a0bc6dfee0684",
                "typeString": "literal_string \"DEBT_TOKEN_IMPL\""
              },
              "value": "DEBT_TOKEN_IMPL"
            },
            "visibility": "private"
          },
          {
            "id": 51121,
            "nodeType": "VariableDeclaration",
            "src": "2373:38:118",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "WETH",
            "nameLocation": "2398:4:118",
            "scope": 52140,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 51119,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "2373:7:118",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "hexValue": "57455448",
              "id": 51120,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2405:6:118",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_0f8a193ff464434486c0daf7db2a895884365d2bc84ba47a68fcf89c1b14b5b8",
                "typeString": "literal_string \"WETH\""
              },
              "value": "WETH"
            },
            "visibility": "private"
          },
          {
            "id": 51124,
            "nodeType": "VariableDeclaration",
            "src": "2417:54:118",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "WETH_GATEWAY",
            "nameLocation": "2442:12:118",
            "scope": 52140,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 51122,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "2417:7:118",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "hexValue": "574554485f47415445574159",
              "id": 51123,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2457:14:118",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_8c6c451a3c78b1a61d300b75cea4e998723915c4ab1ff7888c30dbbfcaf39efb",
                "typeString": "literal_string \"WETH_GATEWAY\""
              },
              "value": "WETH_GATEWAY"
            },
            "visibility": "private"
          },
          {
            "id": 51127,
            "nodeType": "VariableDeclaration",
            "src": "2498:68:118",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "DELEGATION_REGISTRY",
            "nameLocation": "2523:19:118",
            "scope": 52140,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 51125,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "2498:7:118",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "hexValue": "44454c45474154494f4e5f5245474953545259",
              "id": 51126,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2545:21:118",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_1868cd9e1222a849fcc51d7ab8830dbf8227ee5424c0d98e2d2e668d9c5debb1",
                "typeString": "literal_string \"DELEGATION_REGISTRY\""
              },
              "value": "DELEGATION_REGISTRY"
            },
            "visibility": "private"
          },
          {
            "id": 51137,
            "nodeType": "FunctionDefinition",
            "src": "2573:75:118",
            "nodes": [],
            "body": {
              "id": 51136,
              "nodeType": "Block",
              "src": "2609:39:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51133,
                        "name": "marketId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51129,
                        "src": "2632:8:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 51132,
                      "name": "_setMarketId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 52139,
                      "src": "2619:12:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory)"
                      }
                    },
                    "id": 51134,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2619:22:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51135,
                  "nodeType": "ExpressionStatement",
                  "src": "2619:22:118"
                }
              ]
            },
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "parameters": {
              "id": 51130,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51129,
                  "mutability": "mutable",
                  "name": "marketId",
                  "nameLocation": "2599:8:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 51137,
                  "src": "2585:22:118",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 51128,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2585:6:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2584:24:118"
            },
            "returnParameters": {
              "id": 51131,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2609:0:118"
            },
            "scope": 52140,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 51147,
            "nodeType": "FunctionDefinition",
            "src": "2784:103:118",
            "nodes": [],
            "body": {
              "id": 51146,
              "nodeType": "Block",
              "src": "2854:33:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 51144,
                    "name": "_marketId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 51045,
                    "src": "2871:9:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "functionReturnParameters": 51143,
                  "id": 51145,
                  "nodeType": "Return",
                  "src": "2864:16:118"
                }
              ]
            },
            "baseFunctions": [
              45426
            ],
            "documentation": {
              "id": 51138,
              "nodeType": "StructuredDocumentation",
              "src": "2654:125:118",
              "text": " @dev Returns the id of the FluidNFT market to which this contracts points to\n @return The market id*"
            },
            "functionSelector": "568ef470",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getMarketId",
            "nameLocation": "2793:11:118",
            "overrides": {
              "id": 51140,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2821:8:118"
            },
            "parameters": {
              "id": 51139,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2804:2:118"
            },
            "returnParameters": {
              "id": 51143,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51142,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 51147,
                  "src": "2839:13:118",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 51141,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2839:6:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2838:15:118"
            },
            "scope": 52140,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51161,
            "nodeType": "FunctionDefinition",
            "src": "3022:112:118",
            "nodes": [],
            "body": {
              "id": 51160,
              "nodeType": "Block",
              "src": "3095:39:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51157,
                        "name": "marketId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51150,
                        "src": "3118:8:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 51156,
                      "name": "_setMarketId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 52139,
                      "src": "3105:12:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory)"
                      }
                    },
                    "id": 51158,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3105:22:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51159,
                  "nodeType": "ExpressionStatement",
                  "src": "3105:22:118"
                }
              ]
            },
            "baseFunctions": [
              45431
            ],
            "documentation": {
              "id": 51148,
              "nodeType": "StructuredDocumentation",
              "src": "2893:124:118",
              "text": " @dev Allows to set the market which this AddressProvider represents\n @param marketId The market id*"
            },
            "functionSelector": "f67b1847",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 51154,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 51153,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "3085:9:118"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 30579,
                  "src": "3085:9:118"
                },
                "nodeType": "ModifierInvocation",
                "src": "3085:9:118"
              }
            ],
            "name": "setMarketId",
            "nameLocation": "3031:11:118",
            "overrides": {
              "id": 51152,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3076:8:118"
            },
            "parameters": {
              "id": 51151,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51150,
                  "mutability": "mutable",
                  "name": "marketId",
                  "nameLocation": "3057:8:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 51161,
                  "src": "3043:22:118",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 51149,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3043:6:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3042:24:118"
            },
            "returnParameters": {
              "id": 51155,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3095:0:118"
            },
            "scope": 52140,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51175,
            "nodeType": "FunctionDefinition",
            "src": "3221:109:118",
            "nodes": [],
            "body": {
              "id": 51174,
              "nodeType": "Block",
              "src": "3292:38:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "id": 51170,
                      "name": "_addresses",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51049,
                      "src": "3309:10:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                        "typeString": "mapping(bytes32 => address)"
                      }
                    },
                    "id": 51172,
                    "indexExpression": {
                      "id": 51171,
                      "name": "id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51164,
                      "src": "3320:2:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3309:14:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 51169,
                  "id": 51173,
                  "nodeType": "Return",
                  "src": "3302:21:118"
                }
              ]
            },
            "baseFunctions": [
              45438
            ],
            "documentation": {
              "id": 51162,
              "nodeType": "StructuredDocumentation",
              "src": "3140:76:118",
              "text": " @dev Returns an address by id\n @return The address*"
            },
            "functionSelector": "21f8a721",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAddress",
            "nameLocation": "3230:10:118",
            "overrides": {
              "id": 51166,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3265:8:118"
            },
            "parameters": {
              "id": 51165,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51164,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "3249:2:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 51175,
                  "src": "3241:10:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 51163,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3241:7:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3240:12:118"
            },
            "returnParameters": {
              "id": 51169,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51168,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 51175,
                  "src": "3283:7:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51167,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3283:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3282:9:118"
            },
            "scope": 52140,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 51199,
            "nodeType": "FunctionDefinition",
            "src": "3587:172:118",
            "nodes": [],
            "body": {
              "id": 51198,
              "nodeType": "Block",
              "src": "3667:92:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 51190,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 51186,
                        "name": "_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51049,
                        "src": "3677:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 51188,
                      "indexExpression": {
                        "id": 51187,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51178,
                        "src": "3688:2:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3677:14:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 51189,
                      "name": "newAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51180,
                      "src": "3694:10:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "3677:27:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 51191,
                  "nodeType": "ExpressionStatement",
                  "src": "3677:27:118"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 51193,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51178,
                        "src": "3730:2:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 51194,
                        "name": "newAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51180,
                        "src": "3734:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "hexValue": "66616c7365",
                        "id": 51195,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3746:5:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 51192,
                      "name": "AddressSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45311,
                      "src": "3719:10:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bool_$returns$__$",
                        "typeString": "function (bytes32,address,bool)"
                      }
                    },
                    "id": 51196,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3719:33:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51197,
                  "nodeType": "EmitStatement",
                  "src": "3714:38:118"
                }
              ]
            },
            "baseFunctions": [
              45445
            ],
            "documentation": {
              "id": 51176,
              "nodeType": "StructuredDocumentation",
              "src": "3336:246:118",
              "text": " @dev Sets an address for an id replacing the address saved in the addresses map\n IMPORTANT Use this function carefully, as it will do a hard replacement\n @param id The id\n @param newAddress The address to set*"
            },
            "functionSelector": "ca446dd9",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 51184,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 51183,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "3657:9:118"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 30579,
                  "src": "3657:9:118"
                },
                "nodeType": "ModifierInvocation",
                "src": "3657:9:118"
              }
            ],
            "name": "setAddress",
            "nameLocation": "3596:10:118",
            "overrides": {
              "id": 51182,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3648:8:118"
            },
            "parameters": {
              "id": 51181,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51178,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "3615:2:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 51199,
                  "src": "3607:10:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 51177,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3607:7:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 51180,
                  "mutability": "mutable",
                  "name": "newAddress",
                  "nameLocation": "3627:10:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 51199,
                  "src": "3619:18:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51179,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3619:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3606:32:118"
            },
            "returnParameters": {
              "id": 51185,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3667:0:118"
            },
            "scope": 52140,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51222,
            "nodeType": "FunctionDefinition",
            "src": "4257:239:118",
            "nodes": [],
            "body": {
              "id": 51221,
              "nodeType": "Block",
              "src": "4383:113:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51211,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51202,
                        "src": "4405:2:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 51212,
                        "name": "implementationAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51204,
                        "src": "4409:21:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 51210,
                      "name": "_updateImpl",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 52125,
                      "src": "4393:11:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 51213,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4393:38:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51214,
                  "nodeType": "ExpressionStatement",
                  "src": "4393:38:118"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 51216,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51202,
                        "src": "4457:2:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 51217,
                        "name": "implementationAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51204,
                        "src": "4461:21:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "hexValue": "74727565",
                        "id": 51218,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4484:4:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 51215,
                      "name": "AddressSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45311,
                      "src": "4446:10:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bool_$returns$__$",
                        "typeString": "function (bytes32,address,bool)"
                      }
                    },
                    "id": 51219,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4446:43:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51220,
                  "nodeType": "EmitStatement",
                  "src": "4441:48:118"
                }
              ]
            },
            "baseFunctions": [
              45452
            ],
            "documentation": {
              "id": 51200,
              "nodeType": "StructuredDocumentation",
              "src": "3765:487:118",
              "text": " @dev General function to update the implementation of a proxy registered with\n certain `id`. If there is no proxy registered, it will instantiate one and\n set as implementation the `implementationAddress`\n IMPORTANT Use this function carefully, only for ids that don't have an explicit\n setter function, in order to avoid unexpected consequences\n @param id The id\n @param implementationAddress The address of the new implementation*"
            },
            "functionSelector": "5dcc528c",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 51208,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 51207,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "4369:9:118"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 30579,
                  "src": "4369:9:118"
                },
                "nodeType": "ModifierInvocation",
                "src": "4369:9:118"
              }
            ],
            "name": "setAddressAsProxy",
            "nameLocation": "4266:17:118",
            "overrides": {
              "id": 51206,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4352:8:118"
            },
            "parameters": {
              "id": 51205,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51202,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "4292:2:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 51222,
                  "src": "4284:10:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 51201,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4284:7:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 51204,
                  "mutability": "mutable",
                  "name": "implementationAddress",
                  "nameLocation": "4304:21:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 51222,
                  "src": "4296:29:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51203,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4296:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4283:43:118"
            },
            "returnParameters": {
              "id": 51209,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4383:0:118"
            },
            "scope": 52140,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51234,
            "nodeType": "FunctionDefinition",
            "src": "4635:127:118",
            "nodes": [],
            "body": {
              "id": 51233,
              "nodeType": "Block",
              "src": "4708:54:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51230,
                        "name": "EXECUTION_DELEGATE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51061,
                        "src": "4736:18:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 51229,
                      "name": "getAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51175,
                      "src": "4725:10:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view returns (address)"
                      }
                    },
                    "id": 51231,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4725:30:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 51228,
                  "id": 51232,
                  "nodeType": "Return",
                  "src": "4718:37:118"
                }
              ]
            },
            "baseFunctions": [
              45457
            ],
            "documentation": {
              "id": 51223,
              "nodeType": "StructuredDocumentation",
              "src": "4502:128:118",
              "text": " @dev Returns the address of the Execution Delegate proxy\n @return The Execution Delegate proxy address*"
            },
            "functionSelector": "47f872f1",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getExecutionDelegate",
            "nameLocation": "4644:20:118",
            "overrides": {
              "id": 51225,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4681:8:118"
            },
            "parameters": {
              "id": 51224,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4664:2:118"
            },
            "returnParameters": {
              "id": 51228,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51227,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 51234,
                  "src": "4699:7:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51226,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4699:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4698:9:118"
            },
            "scope": 52140,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51254,
            "nodeType": "FunctionDefinition",
            "src": "5033:210:118",
            "nodes": [],
            "body": {
              "id": 51253,
              "nodeType": "Block",
              "src": "5118:125:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 51247,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 51243,
                        "name": "_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51049,
                        "src": "5128:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 51245,
                      "indexExpression": {
                        "id": 51244,
                        "name": "EXECUTION_DELEGATE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51061,
                        "src": "5139:18:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5128:30:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 51246,
                      "name": "executionDelegate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51237,
                      "src": "5161:17:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "5128:50:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 51248,
                  "nodeType": "ExpressionStatement",
                  "src": "5128:50:118"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 51250,
                        "name": "executionDelegate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51237,
                        "src": "5218:17:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 51249,
                      "name": "ExecutionDelegateUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45315,
                      "src": "5193:24:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 51251,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5193:43:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51252,
                  "nodeType": "EmitStatement",
                  "src": "5188:48:118"
                }
              ]
            },
            "baseFunctions": [
              45462
            ],
            "documentation": {
              "id": 51235,
              "nodeType": "StructuredDocumentation",
              "src": "4768:260:118",
              "text": " @dev Updates the implementation of the Execution Delegate, or creates the proxy\n setting the new `executionDelegate` implementation on the first time calling it\n @param executionDelegate The new Execution Delegate implementation*"
            },
            "functionSelector": "037c9be2",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 51241,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 51240,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "5108:9:118"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 30579,
                  "src": "5108:9:118"
                },
                "nodeType": "ModifierInvocation",
                "src": "5108:9:118"
              }
            ],
            "name": "setExecutionDelegate",
            "nameLocation": "5042:20:118",
            "overrides": {
              "id": 51239,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "5099:8:118"
            },
            "parameters": {
              "id": 51238,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51237,
                  "mutability": "mutable",
                  "name": "executionDelegate",
                  "nameLocation": "5071:17:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 51254,
                  "src": "5063:25:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51236,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5063:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5062:27:118"
            },
            "returnParameters": {
              "id": 51242,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5118:0:118"
            },
            "scope": 52140,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51266,
            "nodeType": "FunctionDefinition",
            "src": "5380:125:118",
            "nodes": [],
            "body": {
              "id": 51265,
              "nodeType": "Block",
              "src": "5452:53:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51262,
                        "name": "EXECUTION_MANAGER",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51064,
                        "src": "5480:17:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 51261,
                      "name": "getAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51175,
                      "src": "5469:10:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view returns (address)"
                      }
                    },
                    "id": 51263,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5469:29:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 51260,
                  "id": 51264,
                  "nodeType": "Return",
                  "src": "5462:36:118"
                }
              ]
            },
            "baseFunctions": [
              45467
            ],
            "documentation": {
              "id": 51255,
              "nodeType": "StructuredDocumentation",
              "src": "5249:126:118",
              "text": " @dev Returns the address of the Execution Manager proxy\n @return The Execution Manager proxy address*"
            },
            "functionSelector": "862beee1",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getExecutionManager",
            "nameLocation": "5389:19:118",
            "overrides": {
              "id": 51257,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "5425:8:118"
            },
            "parameters": {
              "id": 51256,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5408:2:118"
            },
            "returnParameters": {
              "id": 51260,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51259,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 51266,
                  "src": "5443:7:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51258,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5443:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5442:9:118"
            },
            "scope": 52140,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51286,
            "nodeType": "FunctionDefinition",
            "src": "5772:204:118",
            "nodes": [],
            "body": {
              "id": 51285,
              "nodeType": "Block",
              "src": "5855:121:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 51279,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 51275,
                        "name": "_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51049,
                        "src": "5865:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 51277,
                      "indexExpression": {
                        "id": 51276,
                        "name": "EXECUTION_MANAGER",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51064,
                        "src": "5876:17:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5865:29:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 51278,
                      "name": "executionManager",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51269,
                      "src": "5897:16:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "5865:48:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 51280,
                  "nodeType": "ExpressionStatement",
                  "src": "5865:48:118"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 51282,
                        "name": "executionManager",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51269,
                        "src": "5952:16:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 51281,
                      "name": "ExecutionManagerUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45319,
                      "src": "5928:23:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 51283,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5928:41:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51284,
                  "nodeType": "EmitStatement",
                  "src": "5923:46:118"
                }
              ]
            },
            "baseFunctions": [
              45472
            ],
            "documentation": {
              "id": 51267,
              "nodeType": "StructuredDocumentation",
              "src": "5511:256:118",
              "text": " @dev Updates the implementation of the Execution Manager, or creates the proxy\n setting the new `executionManager` implementation on the first time calling it\n @param executionManager The new Execution Manager implementation*"
            },
            "functionSelector": "1381ba4d",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 51273,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 51272,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "5845:9:118"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 30579,
                  "src": "5845:9:118"
                },
                "nodeType": "ModifierInvocation",
                "src": "5845:9:118"
              }
            ],
            "name": "setExecutionManager",
            "nameLocation": "5781:19:118",
            "overrides": {
              "id": 51271,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "5836:8:118"
            },
            "parameters": {
              "id": 51270,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51269,
                  "mutability": "mutable",
                  "name": "executionManager",
                  "nameLocation": "5809:16:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 51286,
                  "src": "5801:24:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51268,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5801:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5800:26:118"
            },
            "returnParameters": {
              "id": 51274,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5855:0:118"
            },
            "scope": 52140,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51298,
            "nodeType": "FunctionDefinition",
            "src": "6093:106:118",
            "nodes": [],
            "body": {
              "id": 51297,
              "nodeType": "Block",
              "src": "6156:43:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51294,
                        "name": "LENDING",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51067,
                        "src": "6184:7:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 51293,
                      "name": "getAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51175,
                      "src": "6173:10:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view returns (address)"
                      }
                    },
                    "id": 51295,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6173:19:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 51292,
                  "id": 51296,
                  "nodeType": "Return",
                  "src": "6166:26:118"
                }
              ]
            },
            "baseFunctions": [
              45477
            ],
            "documentation": {
              "id": 51287,
              "nodeType": "StructuredDocumentation",
              "src": "5982:106:118",
              "text": " @dev Returns the address of the Lending proxy\n @return The Lending proxy address*"
            },
            "functionSelector": "69acea5f",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getLending",
            "nameLocation": "6102:10:118",
            "overrides": {
              "id": 51289,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "6129:8:118"
            },
            "parameters": {
              "id": 51288,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6112:2:118"
            },
            "returnParameters": {
              "id": 51292,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51291,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 51298,
                  "src": "6147:7:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51290,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6147:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6146:9:118"
            },
            "scope": 52140,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51318,
            "nodeType": "FunctionDefinition",
            "src": "6428:149:118",
            "nodes": [],
            "body": {
              "id": 51317,
              "nodeType": "Block",
              "src": "6493:84:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 51311,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 51307,
                        "name": "_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51049,
                        "src": "6503:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 51309,
                      "indexExpression": {
                        "id": 51308,
                        "name": "LENDING",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51067,
                        "src": "6514:7:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "6503:19:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 51310,
                      "name": "lending",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51301,
                      "src": "6525:7:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "6503:29:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 51312,
                  "nodeType": "ExpressionStatement",
                  "src": "6503:29:118"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 51314,
                        "name": "lending",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51301,
                        "src": "6562:7:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 51313,
                      "name": "LendingUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45323,
                      "src": "6547:14:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 51315,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6547:23:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51316,
                  "nodeType": "EmitStatement",
                  "src": "6542:28:118"
                }
              ]
            },
            "baseFunctions": [
              45482
            ],
            "documentation": {
              "id": 51299,
              "nodeType": "StructuredDocumentation",
              "src": "6205:218:118",
              "text": " @dev Updates the implementation of the Lending, or creates the proxy\n setting the new `lending` implementation on the first time calling it\n @param lending The new Lending implementation*"
            },
            "functionSelector": "180fde07",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 51305,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 51304,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "6483:9:118"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 30579,
                  "src": "6483:9:118"
                },
                "nodeType": "ModifierInvocation",
                "src": "6483:9:118"
              }
            ],
            "name": "setLending",
            "nameLocation": "6437:10:118",
            "overrides": {
              "id": 51303,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "6474:8:118"
            },
            "parameters": {
              "id": 51302,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51301,
                  "mutability": "mutable",
                  "name": "lending",
                  "nameLocation": "6456:7:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 51318,
                  "src": "6448:15:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51300,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6448:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6447:17:118"
            },
            "returnParameters": {
              "id": 51306,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6493:0:118"
            },
            "scope": 52140,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51330,
            "nodeType": "FunctionDefinition",
            "src": "6708:121:118",
            "nodes": [],
            "body": {
              "id": 51329,
              "nodeType": "Block",
              "src": "6778:51:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51326,
                        "name": "PROMISSORY_NOTE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51070,
                        "src": "6806:15:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 51325,
                      "name": "getAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51175,
                      "src": "6795:10:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view returns (address)"
                      }
                    },
                    "id": 51327,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6795:27:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 51324,
                  "id": 51328,
                  "nodeType": "Return",
                  "src": "6788:34:118"
                }
              ]
            },
            "baseFunctions": [
              45487
            ],
            "documentation": {
              "id": 51319,
              "nodeType": "StructuredDocumentation",
              "src": "6583:120:118",
              "text": " @dev Returns the address of the PromissoryNote proxy\n @return The PromissoryNote proxy address*"
            },
            "functionSelector": "90313e8e",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPromissoryNote",
            "nameLocation": "6717:17:118",
            "overrides": {
              "id": 51321,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "6751:8:118"
            },
            "parameters": {
              "id": 51320,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6734:2:118"
            },
            "returnParameters": {
              "id": 51324,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51323,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 51330,
                  "src": "6769:7:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51322,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6769:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6768:9:118"
            },
            "scope": 52140,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51350,
            "nodeType": "FunctionDefinition",
            "src": "7086:192:118",
            "nodes": [],
            "body": {
              "id": 51349,
              "nodeType": "Block",
              "src": "7165:113:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 51343,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 51339,
                        "name": "_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51049,
                        "src": "7175:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 51341,
                      "indexExpression": {
                        "id": 51340,
                        "name": "PROMISSORY_NOTE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51070,
                        "src": "7186:15:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "7175:27:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 51342,
                      "name": "promissoryNote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51333,
                      "src": "7205:14:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "7175:44:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 51344,
                  "nodeType": "ExpressionStatement",
                  "src": "7175:44:118"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 51346,
                        "name": "promissoryNote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51333,
                        "src": "7256:14:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 51345,
                      "name": "PromissoryNoteUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45327,
                      "src": "7234:21:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 51347,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7234:37:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51348,
                  "nodeType": "EmitStatement",
                  "src": "7229:42:118"
                }
              ]
            },
            "baseFunctions": [
              45492
            ],
            "documentation": {
              "id": 51331,
              "nodeType": "StructuredDocumentation",
              "src": "6835:246:118",
              "text": " @dev Updates the implementation of the PromissoryNote, or creates the proxy\n setting the new `promissoryNote` implementation on the first time calling it\n @param promissoryNote The new PromissoryNote implementation*"
            },
            "functionSelector": "2fedd807",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 51337,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 51336,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "7155:9:118"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 30579,
                  "src": "7155:9:118"
                },
                "nodeType": "ModifierInvocation",
                "src": "7155:9:118"
              }
            ],
            "name": "setPromissoryNote",
            "nameLocation": "7095:17:118",
            "overrides": {
              "id": 51335,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "7146:8:118"
            },
            "parameters": {
              "id": 51334,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51333,
                  "mutability": "mutable",
                  "name": "promissoryNote",
                  "nameLocation": "7121:14:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 51350,
                  "src": "7113:22:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51332,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7113:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7112:24:118"
            },
            "returnParameters": {
              "id": 51338,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7165:0:118"
            },
            "scope": 52140,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51362,
            "nodeType": "FunctionDefinition",
            "src": "7422:134:118",
            "nodes": [],
            "body": {
              "id": 51361,
              "nodeType": "Block",
              "src": "7498:58:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51358,
                        "name": "PROMISSORY_NOTE_BUNDLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51073,
                        "src": "7526:22:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 51357,
                      "name": "getAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51175,
                      "src": "7515:10:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view returns (address)"
                      }
                    },
                    "id": 51359,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7515:34:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 51356,
                  "id": 51360,
                  "nodeType": "Return",
                  "src": "7508:41:118"
                }
              ]
            },
            "baseFunctions": [
              45497
            ],
            "documentation": {
              "id": 51351,
              "nodeType": "StructuredDocumentation",
              "src": "7284:133:118",
              "text": " @dev Returns the address of the PromissoryNoteBundle proxy\n @return The PromissoryNote Bundle proxy address*"
            },
            "functionSelector": "e4a2544d",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPromissoryNoteBundle",
            "nameLocation": "7431:23:118",
            "overrides": {
              "id": 51353,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "7471:8:118"
            },
            "parameters": {
              "id": 51352,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7454:2:118"
            },
            "returnParameters": {
              "id": 51356,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51355,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 51362,
                  "src": "7489:7:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51354,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7489:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7488:9:118"
            },
            "scope": 52140,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51382,
            "nodeType": "FunctionDefinition",
            "src": "7832:211:118",
            "nodes": [],
            "body": {
              "id": 51381,
              "nodeType": "Block",
              "src": "7917:126:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 51375,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 51371,
                        "name": "_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51049,
                        "src": "7927:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 51373,
                      "indexExpression": {
                        "id": 51372,
                        "name": "PROMISSORY_NOTE_BUNDLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51073,
                        "src": "7938:22:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "7927:34:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 51374,
                      "name": "promissoryNote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51365,
                      "src": "7964:14:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "7927:51:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 51376,
                  "nodeType": "ExpressionStatement",
                  "src": "7927:51:118"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 51378,
                        "name": "promissoryNote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51365,
                        "src": "8021:14:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 51377,
                      "name": "PromissoryNoteBundleUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45331,
                      "src": "7993:27:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 51379,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7993:43:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51380,
                  "nodeType": "EmitStatement",
                  "src": "7988:48:118"
                }
              ]
            },
            "baseFunctions": [
              45502
            ],
            "documentation": {
              "id": 51363,
              "nodeType": "StructuredDocumentation",
              "src": "7562:265:118",
              "text": " @dev Updates the implementation of the PromissoryNote Bunlde, or creates the proxy\n setting the new `promissoryNoteBundle` implementation on the first time calling it\n @param promissoryNote The new PromissoryNoteBundle implementation*"
            },
            "functionSelector": "ea34b961",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 51369,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 51368,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "7907:9:118"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 30579,
                  "src": "7907:9:118"
                },
                "nodeType": "ModifierInvocation",
                "src": "7907:9:118"
              }
            ],
            "name": "setPromissoryNoteBundle",
            "nameLocation": "7841:23:118",
            "overrides": {
              "id": 51367,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "7898:8:118"
            },
            "parameters": {
              "id": 51366,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51365,
                  "mutability": "mutable",
                  "name": "promissoryNote",
                  "nameLocation": "7873:14:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 51382,
                  "src": "7865:22:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51364,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7865:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7864:24:118"
            },
            "returnParameters": {
              "id": 51370,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7917:0:118"
            },
            "scope": 52140,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51394,
            "nodeType": "FunctionDefinition",
            "src": "8182:127:118",
            "nodes": [],
            "body": {
              "id": 51393,
              "nodeType": "Block",
              "src": "8255:54:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51390,
                        "name": "OBLIGATION_RECEIPT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51076,
                        "src": "8283:18:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 51389,
                      "name": "getAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51175,
                      "src": "8272:10:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view returns (address)"
                      }
                    },
                    "id": 51391,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8272:30:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 51388,
                  "id": 51392,
                  "nodeType": "Return",
                  "src": "8265:37:118"
                }
              ]
            },
            "baseFunctions": [
              45507
            ],
            "documentation": {
              "id": 51383,
              "nodeType": "StructuredDocumentation",
              "src": "8049:128:118",
              "text": " @dev Returns the address of the Obligation Receipt proxy\n @return The Obligation Receipt proxy address*"
            },
            "functionSelector": "3fa01431",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getObligationReceipt",
            "nameLocation": "8191:20:118",
            "overrides": {
              "id": 51385,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "8228:8:118"
            },
            "parameters": {
              "id": 51384,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8211:2:118"
            },
            "returnParameters": {
              "id": 51388,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51387,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 51394,
                  "src": "8246:7:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51386,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8246:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8245:9:118"
            },
            "scope": 52140,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51414,
            "nodeType": "FunctionDefinition",
            "src": "8580:210:118",
            "nodes": [],
            "body": {
              "id": 51413,
              "nodeType": "Block",
              "src": "8665:125:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 51407,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 51403,
                        "name": "_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51049,
                        "src": "8675:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 51405,
                      "indexExpression": {
                        "id": 51404,
                        "name": "OBLIGATION_RECEIPT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51076,
                        "src": "8686:18:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8675:30:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 51406,
                      "name": "obligationReceipt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51397,
                      "src": "8708:17:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "8675:50:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 51408,
                  "nodeType": "ExpressionStatement",
                  "src": "8675:50:118"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 51410,
                        "name": "obligationReceipt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51397,
                        "src": "8765:17:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 51409,
                      "name": "ObligationReceiptUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45335,
                      "src": "8740:24:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 51411,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8740:43:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51412,
                  "nodeType": "EmitStatement",
                  "src": "8735:48:118"
                }
              ]
            },
            "baseFunctions": [
              45512
            ],
            "documentation": {
              "id": 51395,
              "nodeType": "StructuredDocumentation",
              "src": "8315:260:118",
              "text": " @dev Updates the implementation of the Obligation Receipt, or creates the proxy\n setting the new `obligationReceipt` implementation on the first time calling it\n @param obligationReceipt The new Obligation Receipt implementation*"
            },
            "functionSelector": "63ede0fc",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 51401,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 51400,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "8655:9:118"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 30579,
                  "src": "8655:9:118"
                },
                "nodeType": "ModifierInvocation",
                "src": "8655:9:118"
              }
            ],
            "name": "setObligationReceipt",
            "nameLocation": "8589:20:118",
            "overrides": {
              "id": 51399,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "8646:8:118"
            },
            "parameters": {
              "id": 51398,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51397,
                  "mutability": "mutable",
                  "name": "obligationReceipt",
                  "nameLocation": "8618:17:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 51414,
                  "src": "8610:25:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51396,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8610:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8609:27:118"
            },
            "returnParameters": {
              "id": 51402,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8665:0:118"
            },
            "scope": 52140,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51426,
            "nodeType": "FunctionDefinition",
            "src": "8943:140:118",
            "nodes": [],
            "body": {
              "id": 51425,
              "nodeType": "Block",
              "src": "9022:61:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51422,
                        "name": "OBLIGATION_RECEIPT_BUNDLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51079,
                        "src": "9050:25:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 51421,
                      "name": "getAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51175,
                      "src": "9039:10:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view returns (address)"
                      }
                    },
                    "id": 51423,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9039:37:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 51420,
                  "id": 51424,
                  "nodeType": "Return",
                  "src": "9032:44:118"
                }
              ]
            },
            "baseFunctions": [
              45517
            ],
            "documentation": {
              "id": 51415,
              "nodeType": "StructuredDocumentation",
              "src": "8796:142:118",
              "text": " @dev Returns the address of the Obligation Receipt Bundle proxy\n @return The Obligation Receipt Bundle proxy address*"
            },
            "functionSelector": "7dd83ac5",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getObligationReceiptBundle",
            "nameLocation": "8952:26:118",
            "overrides": {
              "id": 51417,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "8995:8:118"
            },
            "parameters": {
              "id": 51416,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8978:2:118"
            },
            "returnParameters": {
              "id": 51420,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51419,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 51426,
                  "src": "9013:7:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51418,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9013:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9012:9:118"
            },
            "scope": 52140,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51446,
            "nodeType": "FunctionDefinition",
            "src": "9369:229:118",
            "nodes": [],
            "body": {
              "id": 51445,
              "nodeType": "Block",
              "src": "9460:138:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 51439,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 51435,
                        "name": "_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51049,
                        "src": "9470:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 51437,
                      "indexExpression": {
                        "id": 51436,
                        "name": "OBLIGATION_RECEIPT_BUNDLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51079,
                        "src": "9481:25:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "9470:37:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 51438,
                      "name": "obligationReceipt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51429,
                      "src": "9510:17:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "9470:57:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 51440,
                  "nodeType": "ExpressionStatement",
                  "src": "9470:57:118"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 51442,
                        "name": "obligationReceipt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51429,
                        "src": "9573:17:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 51441,
                      "name": "ObligationReceiptBundleUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45339,
                      "src": "9542:30:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 51443,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9542:49:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51444,
                  "nodeType": "EmitStatement",
                  "src": "9537:54:118"
                }
              ]
            },
            "baseFunctions": [
              45522
            ],
            "documentation": {
              "id": 51427,
              "nodeType": "StructuredDocumentation",
              "src": "9089:275:118",
              "text": " @dev Updates the implementation of the Obligation Receipt Bundle, or creates the proxy\n setting the new `obligationReceiptBundle` implementation on the first time calling it\n @param obligationReceipt The new PromissoryNoteBundle implementation*"
            },
            "functionSelector": "ad1f9944",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 51433,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 51432,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "9450:9:118"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 30579,
                  "src": "9450:9:118"
                },
                "nodeType": "ModifierInvocation",
                "src": "9450:9:118"
              }
            ],
            "name": "setObligationReceiptBundle",
            "nameLocation": "9378:26:118",
            "overrides": {
              "id": 51431,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "9441:8:118"
            },
            "parameters": {
              "id": 51430,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51429,
                  "mutability": "mutable",
                  "name": "obligationReceipt",
                  "nameLocation": "9413:17:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 51446,
                  "src": "9405:25:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51428,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9405:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9404:27:118"
            },
            "returnParameters": {
              "id": 51434,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9460:0:118"
            },
            "scope": 52140,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51458,
            "nodeType": "FunctionDefinition",
            "src": "9723:115:118",
            "nodes": [],
            "body": {
              "id": 51457,
              "nodeType": "Block",
              "src": "9790:48:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51454,
                        "name": "LENDING_POOL",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51082,
                        "src": "9818:12:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 51453,
                      "name": "getAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51175,
                      "src": "9807:10:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view returns (address)"
                      }
                    },
                    "id": 51455,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9807:24:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 51452,
                  "id": 51456,
                  "nodeType": "Return",
                  "src": "9800:31:118"
                }
              ]
            },
            "baseFunctions": [
              45527
            ],
            "documentation": {
              "id": 51447,
              "nodeType": "StructuredDocumentation",
              "src": "9604:114:118",
              "text": " @dev Returns the address of the LendingPool proxy\n @return The LendingPool proxy address*"
            },
            "functionSelector": "0261bf8b",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getLendingPool",
            "nameLocation": "9732:14:118",
            "overrides": {
              "id": 51449,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "9763:8:118"
            },
            "parameters": {
              "id": 51448,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9746:2:118"
            },
            "returnParameters": {
              "id": 51452,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51451,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 51458,
                  "src": "9781:7:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51450,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9781:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9780:9:118"
            },
            "scope": 52140,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51478,
            "nodeType": "FunctionDefinition",
            "src": "10069:153:118",
            "nodes": [],
            "body": {
              "id": 51477,
              "nodeType": "Block",
              "src": "10135:87:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 51471,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 51467,
                        "name": "_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51049,
                        "src": "10145:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 51469,
                      "indexExpression": {
                        "id": 51468,
                        "name": "LENDING_POOL",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51082,
                        "src": "10156:12:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "10145:24:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 51470,
                      "name": "pool",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51461,
                      "src": "10172:4:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "10145:31:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 51472,
                  "nodeType": "ExpressionStatement",
                  "src": "10145:31:118"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 51474,
                        "name": "pool",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51461,
                        "src": "10210:4:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 51473,
                      "name": "LendingPoolUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45343,
                      "src": "10191:18:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 51475,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10191:24:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51476,
                  "nodeType": "EmitStatement",
                  "src": "10186:29:118"
                }
              ]
            },
            "baseFunctions": [
              45532
            ],
            "documentation": {
              "id": 51459,
              "nodeType": "StructuredDocumentation",
              "src": "9844:220:118",
              "text": " @dev Updates the implementation of the LendingPool, or creates the proxy\n setting the new `pool` implementation on the first time calling it\n @param pool The new LendingPool implementation*"
            },
            "functionSelector": "113aa8b1",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 51465,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 51464,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "10125:9:118"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 30579,
                  "src": "10125:9:118"
                },
                "nodeType": "ModifierInvocation",
                "src": "10125:9:118"
              }
            ],
            "name": "setLendingPool",
            "nameLocation": "10078:14:118",
            "overrides": {
              "id": 51463,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "10116:8:118"
            },
            "parameters": {
              "id": 51462,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51461,
                  "mutability": "mutable",
                  "name": "pool",
                  "nameLocation": "10101:4:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 51478,
                  "src": "10093:12:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51460,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10093:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10092:14:118"
            },
            "returnParameters": {
              "id": 51466,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10135:0:118"
            },
            "scope": 52140,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51490,
            "nodeType": "FunctionDefinition",
            "src": "10349:116:118",
            "nodes": [],
            "body": {
              "id": 51489,
              "nodeType": "Block",
              "src": "10417:48:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51486,
                        "name": "CONFIGURATOR",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51085,
                        "src": "10445:12:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 51485,
                      "name": "getAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51175,
                      "src": "10434:10:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view returns (address)"
                      }
                    },
                    "id": 51487,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10434:24:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 51484,
                  "id": 51488,
                  "nodeType": "Return",
                  "src": "10427:31:118"
                }
              ]
            },
            "baseFunctions": [
              45537
            ],
            "documentation": {
              "id": 51479,
              "nodeType": "StructuredDocumentation",
              "src": "10228:116:118",
              "text": " @dev Returns the address of the Configurator proxy\n @return The Configurator proxy address*"
            },
            "functionSelector": "9b7ae5ec",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getConfigurator",
            "nameLocation": "10358:15:118",
            "overrides": {
              "id": 51481,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "10390:8:118"
            },
            "parameters": {
              "id": 51480,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10373:2:118"
            },
            "returnParameters": {
              "id": 51484,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51483,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 51490,
                  "src": "10408:7:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51482,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10408:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10407:9:118"
            },
            "scope": 52140,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51510,
            "nodeType": "FunctionDefinition",
            "src": "10714:179:118",
            "nodes": [],
            "body": {
              "id": 51509,
              "nodeType": "Block",
              "src": "10789:104:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 51503,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 51499,
                        "name": "_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51049,
                        "src": "10799:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 51501,
                      "indexExpression": {
                        "id": 51500,
                        "name": "CONFIGURATOR",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51085,
                        "src": "10810:12:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "10799:24:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 51502,
                      "name": "configurator",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51493,
                      "src": "10826:12:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "10799:39:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 51504,
                  "nodeType": "ExpressionStatement",
                  "src": "10799:39:118"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 51506,
                        "name": "configurator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51493,
                        "src": "10873:12:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 51505,
                      "name": "ConfiguratorUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45347,
                      "src": "10853:19:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 51507,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10853:33:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51508,
                  "nodeType": "EmitStatement",
                  "src": "10848:38:118"
                }
              ]
            },
            "baseFunctions": [
              45542
            ],
            "documentation": {
              "id": 51491,
              "nodeType": "StructuredDocumentation",
              "src": "10471:238:118",
              "text": " @dev Updates the implementation of the Configurator, or creates the proxy\n setting the new `configurator` implementation on the first time calling it\n @param configurator The new Configurator implementation*"
            },
            "functionSelector": "9f5f86ae",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 51497,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 51496,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "10779:9:118"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 30579,
                  "src": "10779:9:118"
                },
                "nodeType": "ModifierInvocation",
                "src": "10779:9:118"
              }
            ],
            "name": "setConfigurator",
            "nameLocation": "10723:15:118",
            "overrides": {
              "id": 51495,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "10770:8:118"
            },
            "parameters": {
              "id": 51494,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51493,
                  "mutability": "mutable",
                  "name": "configurator",
                  "nameLocation": "10747:12:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 51510,
                  "src": "10739:20:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51492,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10739:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10738:22:118"
            },
            "returnParameters": {
              "id": 51498,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10789:0:118"
            },
            "scope": 52140,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51529,
            "nodeType": "FunctionDefinition",
            "src": "11142:183:118",
            "nodes": [],
            "body": {
              "id": 51528,
              "nodeType": "Block",
              "src": "11221:104:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51520,
                        "name": "CONFIGURATOR",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51085,
                        "src": "11243:12:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 51521,
                        "name": "configurator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51513,
                        "src": "11257:12:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 51519,
                      "name": "_updateImpl",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 52125,
                      "src": "11231:11:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 51522,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11231:39:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51523,
                  "nodeType": "ExpressionStatement",
                  "src": "11231:39:118"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 51525,
                        "name": "configurator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51513,
                        "src": "11305:12:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 51524,
                      "name": "ConfiguratorUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45347,
                      "src": "11285:19:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 51526,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11285:33:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51527,
                  "nodeType": "EmitStatement",
                  "src": "11280:38:118"
                }
              ]
            },
            "baseFunctions": [
              45547
            ],
            "documentation": {
              "id": 51511,
              "nodeType": "StructuredDocumentation",
              "src": "10899:238:118",
              "text": " @dev Updates the implementation of the Configurator, or creates the proxy\n setting the new `configurator` implementation on the first time calling it\n @param configurator The new Configurator implementation*"
            },
            "functionSelector": "0c71b701",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 51517,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 51516,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "11211:9:118"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 30579,
                  "src": "11211:9:118"
                },
                "nodeType": "ModifierInvocation",
                "src": "11211:9:118"
              }
            ],
            "name": "setConfiguratorImpl",
            "nameLocation": "11151:19:118",
            "overrides": {
              "id": 51515,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "11202:8:118"
            },
            "parameters": {
              "id": 51514,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51513,
                  "mutability": "mutable",
                  "name": "configurator",
                  "nameLocation": "11179:12:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 51529,
                  "src": "11171:20:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51512,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11171:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11170:22:118"
            },
            "returnParameters": {
              "id": 51518,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11221:0:118"
            },
            "scope": 52140,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51541,
            "nodeType": "FunctionDefinition",
            "src": "11649:127:118",
            "nodes": [],
            "body": {
              "id": 51540,
              "nodeType": "Block",
              "src": "11722:54:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51537,
                        "name": "COLLATERAL_MANAGER",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51088,
                        "src": "11750:18:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 51536,
                      "name": "getAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51175,
                      "src": "11739:10:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view returns (address)"
                      }
                    },
                    "id": 51538,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11739:30:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 51535,
                  "id": 51539,
                  "nodeType": "Return",
                  "src": "11732:37:118"
                }
              ]
            },
            "baseFunctions": [
              45552
            ],
            "documentation": {
              "id": 51530,
              "nodeType": "StructuredDocumentation",
              "src": "11331:313:118",
              "text": " @dev Returns the address of the CollateralManager. Since the manager is used\n through delegateCall within the CollateralManager contract, the proxy contract pattern does not work properly hence\n the addresses are changed directly\n @return The address of the CollateralManager*"
            },
            "functionSelector": "dfa441be",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getCollateralManager",
            "nameLocation": "11658:20:118",
            "overrides": {
              "id": 51532,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "11695:8:118"
            },
            "parameters": {
              "id": 51531,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11678:2:118"
            },
            "returnParameters": {
              "id": 51535,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51534,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 51541,
                  "src": "11713:7:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51533,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11713:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11712:9:118"
            },
            "scope": 52140,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51561,
            "nodeType": "FunctionDefinition",
            "src": "11912:180:118",
            "nodes": [],
            "body": {
              "id": 51560,
              "nodeType": "Block",
              "src": "11987:105:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 51554,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 51550,
                        "name": "_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51049,
                        "src": "11997:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 51552,
                      "indexExpression": {
                        "id": 51551,
                        "name": "COLLATERAL_MANAGER",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51088,
                        "src": "12008:18:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "11997:30:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 51553,
                      "name": "manager",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51544,
                      "src": "12030:7:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "11997:40:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 51555,
                  "nodeType": "ExpressionStatement",
                  "src": "11997:40:118"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 51557,
                        "name": "manager",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51544,
                        "src": "12077:7:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 51556,
                      "name": "CollateralManagerUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45351,
                      "src": "12052:24:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 51558,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12052:33:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51559,
                  "nodeType": "EmitStatement",
                  "src": "12047:38:118"
                }
              ]
            },
            "baseFunctions": [
              45557
            ],
            "documentation": {
              "id": 51542,
              "nodeType": "StructuredDocumentation",
              "src": "11782:125:118",
              "text": " @dev Updates the address of the CollateralManager\n @param manager The new CollateralManager address*"
            },
            "functionSelector": "842a05d4",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 51548,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 51547,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "11977:9:118"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 30579,
                  "src": "11977:9:118"
                },
                "nodeType": "ModifierInvocation",
                "src": "11977:9:118"
              }
            ],
            "name": "setCollateralManager",
            "nameLocation": "11921:20:118",
            "overrides": {
              "id": 51546,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "11968:8:118"
            },
            "parameters": {
              "id": 51545,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51544,
                  "mutability": "mutable",
                  "name": "manager",
                  "nameLocation": "11950:7:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 51561,
                  "src": "11942:15:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51543,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11942:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11941:17:118"
            },
            "returnParameters": {
              "id": 51549,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11987:0:118"
            },
            "scope": 52140,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51573,
            "nodeType": "FunctionDefinition",
            "src": "12279:111:118",
            "nodes": [],
            "body": {
              "id": 51572,
              "nodeType": "Block",
              "src": "12344:46:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51569,
                        "name": "PEER_ADMIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51052,
                        "src": "12372:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 51568,
                      "name": "getAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51175,
                      "src": "12361:10:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view returns (address)"
                      }
                    },
                    "id": 51570,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12361:22:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 51567,
                  "id": 51571,
                  "nodeType": "Return",
                  "src": "12354:29:118"
                }
              ]
            },
            "baseFunctions": [
              45562
            ],
            "documentation": {
              "id": 51562,
              "nodeType": "StructuredDocumentation",
              "src": "12098:176:118",
              "text": " @dev The functions below are getters/setters of addresses that are outside the context\n of the protocol hence the upgradable proxy pattern is not used*"
            },
            "functionSelector": "146b9ae3",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPeerAdmin",
            "nameLocation": "12288:12:118",
            "overrides": {
              "id": 51564,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "12317:8:118"
            },
            "parameters": {
              "id": 51563,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12300:2:118"
            },
            "returnParameters": {
              "id": 51567,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51566,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 51573,
                  "src": "12335:7:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51565,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12335:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12334:9:118"
            },
            "scope": 52140,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51592,
            "nodeType": "FunctionDefinition",
            "src": "12396:150:118",
            "nodes": [],
            "body": {
              "id": 51591,
              "nodeType": "Block",
              "src": "12461:85:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 51585,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 51581,
                        "name": "_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51049,
                        "src": "12471:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 51583,
                      "indexExpression": {
                        "id": 51582,
                        "name": "PEER_ADMIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51052,
                        "src": "12482:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "12471:22:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 51584,
                      "name": "admin",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51575,
                      "src": "12496:5:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "12471:30:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 51586,
                  "nodeType": "ExpressionStatement",
                  "src": "12471:30:118"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 51588,
                        "name": "admin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51575,
                        "src": "12533:5:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 51587,
                      "name": "PeerAdminUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45355,
                      "src": "12516:16:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 51589,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12516:23:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51590,
                  "nodeType": "EmitStatement",
                  "src": "12511:28:118"
                }
              ]
            },
            "baseFunctions": [
              45567
            ],
            "functionSelector": "98875827",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 51579,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 51578,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "12451:9:118"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 30579,
                  "src": "12451:9:118"
                },
                "nodeType": "ModifierInvocation",
                "src": "12451:9:118"
              }
            ],
            "name": "setPeerAdmin",
            "nameLocation": "12405:12:118",
            "overrides": {
              "id": 51577,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "12442:8:118"
            },
            "parameters": {
              "id": 51576,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51575,
                  "mutability": "mutable",
                  "name": "admin",
                  "nameLocation": "12426:5:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 51592,
                  "src": "12418:13:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51574,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12418:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12417:15:118"
            },
            "returnParameters": {
              "id": 51580,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12461:0:118"
            },
            "scope": 52140,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51604,
            "nodeType": "FunctionDefinition",
            "src": "12733:111:118",
            "nodes": [],
            "body": {
              "id": 51603,
              "nodeType": "Block",
              "src": "12798:46:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51600,
                        "name": "POOL_ADMIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51055,
                        "src": "12826:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 51599,
                      "name": "getAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51175,
                      "src": "12815:10:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view returns (address)"
                      }
                    },
                    "id": 51601,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12815:22:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 51598,
                  "id": 51602,
                  "nodeType": "Return",
                  "src": "12808:29:118"
                }
              ]
            },
            "baseFunctions": [
              45572
            ],
            "documentation": {
              "id": 51593,
              "nodeType": "StructuredDocumentation",
              "src": "12552:176:118",
              "text": " @dev The functions below are getters/setters of addresses that are outside the context\n of the protocol hence the upgradable proxy pattern is not used*"
            },
            "functionSelector": "aecda378",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPoolAdmin",
            "nameLocation": "12742:12:118",
            "overrides": {
              "id": 51595,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "12771:8:118"
            },
            "parameters": {
              "id": 51594,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12754:2:118"
            },
            "returnParameters": {
              "id": 51598,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51597,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 51604,
                  "src": "12789:7:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51596,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12789:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12788:9:118"
            },
            "scope": 52140,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51623,
            "nodeType": "FunctionDefinition",
            "src": "12850:150:118",
            "nodes": [],
            "body": {
              "id": 51622,
              "nodeType": "Block",
              "src": "12915:85:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 51616,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 51612,
                        "name": "_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51049,
                        "src": "12925:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 51614,
                      "indexExpression": {
                        "id": 51613,
                        "name": "POOL_ADMIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51055,
                        "src": "12936:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "12925:22:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 51615,
                      "name": "admin",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51606,
                      "src": "12950:5:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "12925:30:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 51617,
                  "nodeType": "ExpressionStatement",
                  "src": "12925:30:118"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 51619,
                        "name": "admin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51606,
                        "src": "12987:5:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 51618,
                      "name": "PoolAdminUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45359,
                      "src": "12970:16:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 51620,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12970:23:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51621,
                  "nodeType": "EmitStatement",
                  "src": "12965:28:118"
                }
              ]
            },
            "baseFunctions": [
              45577
            ],
            "functionSelector": "283d62ad",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 51610,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 51609,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "12905:9:118"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 30579,
                  "src": "12905:9:118"
                },
                "nodeType": "ModifierInvocation",
                "src": "12905:9:118"
              }
            ],
            "name": "setPoolAdmin",
            "nameLocation": "12859:12:118",
            "overrides": {
              "id": 51608,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "12896:8:118"
            },
            "parameters": {
              "id": 51607,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51606,
                  "mutability": "mutable",
                  "name": "admin",
                  "nameLocation": "12880:5:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 51623,
                  "src": "12872:13:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51605,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12872:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12871:15:118"
            },
            "returnParameters": {
              "id": 51611,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12915:0:118"
            },
            "scope": 52140,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51634,
            "nodeType": "FunctionDefinition",
            "src": "13006:121:118",
            "nodes": [],
            "body": {
              "id": 51633,
              "nodeType": "Block",
              "src": "13076:51:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51630,
                        "name": "EMERGENCY_ADMIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51058,
                        "src": "13104:15:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 51629,
                      "name": "getAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51175,
                      "src": "13093:10:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view returns (address)"
                      }
                    },
                    "id": 51631,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13093:27:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 51628,
                  "id": 51632,
                  "nodeType": "Return",
                  "src": "13086:34:118"
                }
              ]
            },
            "baseFunctions": [
              45582
            ],
            "functionSelector": "ddcaa9ea",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getEmergencyAdmin",
            "nameLocation": "13015:17:118",
            "overrides": {
              "id": 51625,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "13049:8:118"
            },
            "parameters": {
              "id": 51624,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13032:2:118"
            },
            "returnParameters": {
              "id": 51628,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51627,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 51634,
                  "src": "13067:7:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51626,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13067:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13066:9:118"
            },
            "scope": 52140,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51653,
            "nodeType": "FunctionDefinition",
            "src": "13133:192:118",
            "nodes": [],
            "body": {
              "id": 51652,
              "nodeType": "Block",
              "src": "13212:113:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 51646,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 51642,
                        "name": "_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51049,
                        "src": "13222:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 51644,
                      "indexExpression": {
                        "id": 51643,
                        "name": "EMERGENCY_ADMIN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51058,
                        "src": "13233:15:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "13222:27:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 51645,
                      "name": "emergencyAdmin",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51636,
                      "src": "13252:14:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "13222:44:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 51647,
                  "nodeType": "ExpressionStatement",
                  "src": "13222:44:118"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 51649,
                        "name": "emergencyAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51636,
                        "src": "13303:14:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 51648,
                      "name": "EmergencyAdminUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45363,
                      "src": "13281:21:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 51650,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13281:37:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51651,
                  "nodeType": "EmitStatement",
                  "src": "13276:42:118"
                }
              ]
            },
            "baseFunctions": [
              45587
            ],
            "functionSelector": "35da3394",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 51640,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 51639,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "13202:9:118"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 30579,
                  "src": "13202:9:118"
                },
                "nodeType": "ModifierInvocation",
                "src": "13202:9:118"
              }
            ],
            "name": "setEmergencyAdmin",
            "nameLocation": "13142:17:118",
            "overrides": {
              "id": 51638,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "13193:8:118"
            },
            "parameters": {
              "id": 51637,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51636,
                  "mutability": "mutable",
                  "name": "emergencyAdmin",
                  "nameLocation": "13168:14:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 51653,
                  "src": "13160:22:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51635,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13160:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13159:24:118"
            },
            "returnParameters": {
              "id": 51641,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13212:0:118"
            },
            "scope": 52140,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51664,
            "nodeType": "FunctionDefinition",
            "src": "13331:122:118",
            "nodes": [],
            "body": {
              "id": 51663,
              "nodeType": "Block",
              "src": "13401:52:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51660,
                        "name": "NFT_PRICE_ORACLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51091,
                        "src": "13429:16:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 51659,
                      "name": "getAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51175,
                      "src": "13418:10:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view returns (address)"
                      }
                    },
                    "id": 51661,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13418:28:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 51658,
                  "id": 51662,
                  "nodeType": "Return",
                  "src": "13411:35:118"
                }
              ]
            },
            "baseFunctions": [
              45592
            ],
            "functionSelector": "673adf43",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getNFTPriceOracle",
            "nameLocation": "13340:17:118",
            "overrides": {
              "id": 51655,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "13374:8:118"
            },
            "parameters": {
              "id": 51654,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13357:2:118"
            },
            "returnParameters": {
              "id": 51658,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51657,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 51664,
                  "src": "13392:7:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51656,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13392:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13391:9:118"
            },
            "scope": 52140,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51683,
            "nodeType": "FunctionDefinition",
            "src": "13459:193:118",
            "nodes": [],
            "body": {
              "id": 51682,
              "nodeType": "Block",
              "src": "13538:114:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 51676,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 51672,
                        "name": "_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51049,
                        "src": "13548:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 51674,
                      "indexExpression": {
                        "id": 51673,
                        "name": "NFT_PRICE_ORACLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51091,
                        "src": "13559:16:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "13548:28:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 51675,
                      "name": "nftPriceOracle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51666,
                      "src": "13579:14:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "13548:45:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 51677,
                  "nodeType": "ExpressionStatement",
                  "src": "13548:45:118"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 51679,
                        "name": "nftPriceOracle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51666,
                        "src": "13630:14:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 51678,
                      "name": "NFTPriceOracleUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45409,
                      "src": "13608:21:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 51680,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13608:37:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51681,
                  "nodeType": "EmitStatement",
                  "src": "13603:42:118"
                }
              ]
            },
            "baseFunctions": [
              45597
            ],
            "functionSelector": "1e34764c",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 51670,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 51669,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "13528:9:118"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 30579,
                  "src": "13528:9:118"
                },
                "nodeType": "ModifierInvocation",
                "src": "13528:9:118"
              }
            ],
            "name": "setNFTPriceOracle",
            "nameLocation": "13468:17:118",
            "overrides": {
              "id": 51668,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "13519:8:118"
            },
            "parameters": {
              "id": 51667,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51666,
                  "mutability": "mutable",
                  "name": "nftPriceOracle",
                  "nameLocation": "13494:14:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 51683,
                  "src": "13486:22:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51665,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13486:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13485:24:118"
            },
            "returnParameters": {
              "id": 51671,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13538:0:118"
            },
            "scope": 52140,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51694,
            "nodeType": "FunctionDefinition",
            "src": "13658:130:118",
            "nodes": [],
            "body": {
              "id": 51693,
              "nodeType": "Block",
              "src": "13732:56:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51690,
                        "name": "LENDING_RATE_MANAGER",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51094,
                        "src": "13760:20:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 51689,
                      "name": "getAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51175,
                      "src": "13749:10:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view returns (address)"
                      }
                    },
                    "id": 51691,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13749:32:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 51688,
                  "id": 51692,
                  "nodeType": "Return",
                  "src": "13742:39:118"
                }
              ]
            },
            "baseFunctions": [
              45602
            ],
            "functionSelector": "617e0605",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getLendingRateManager",
            "nameLocation": "13667:21:118",
            "overrides": {
              "id": 51685,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "13705:8:118"
            },
            "parameters": {
              "id": 51684,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13688:2:118"
            },
            "returnParameters": {
              "id": 51688,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51687,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 51694,
                  "src": "13723:7:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51686,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13723:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13722:9:118"
            },
            "scope": 52140,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51713,
            "nodeType": "FunctionDefinition",
            "src": "13794:217:118",
            "nodes": [],
            "body": {
              "id": 51712,
              "nodeType": "Block",
              "src": "13881:130:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 51706,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 51702,
                        "name": "_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51049,
                        "src": "13891:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 51704,
                      "indexExpression": {
                        "id": 51703,
                        "name": "LENDING_RATE_MANAGER",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51094,
                        "src": "13902:20:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "13891:32:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 51705,
                      "name": "lendingRateManager",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51696,
                      "src": "13926:18:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "13891:53:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 51707,
                  "nodeType": "ExpressionStatement",
                  "src": "13891:53:118"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 51709,
                        "name": "lendingRateManager",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51696,
                        "src": "13985:18:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 51708,
                      "name": "LendingRateManagerUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45413,
                      "src": "13959:25:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 51710,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13959:45:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51711,
                  "nodeType": "EmitStatement",
                  "src": "13954:50:118"
                }
              ]
            },
            "baseFunctions": [
              45607
            ],
            "functionSelector": "4d82964c",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 51700,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 51699,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "13871:9:118"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 30579,
                  "src": "13871:9:118"
                },
                "nodeType": "ModifierInvocation",
                "src": "13871:9:118"
              }
            ],
            "name": "setLendingRateManager",
            "nameLocation": "13803:21:118",
            "overrides": {
              "id": 51698,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "13862:8:118"
            },
            "parameters": {
              "id": 51697,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51696,
                  "mutability": "mutable",
                  "name": "lendingRateManager",
                  "nameLocation": "13833:18:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 51713,
                  "src": "13825:26:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51695,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13825:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13824:28:118"
            },
            "returnParameters": {
              "id": 51701,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13881:0:118"
            },
            "scope": 52140,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51724,
            "nodeType": "FunctionDefinition",
            "src": "14017:124:118",
            "nodes": [],
            "body": {
              "id": 51723,
              "nodeType": "Block",
              "src": "14088:53:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51720,
                        "name": "PRICE_CONSUMER_V3",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51097,
                        "src": "14116:17:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 51719,
                      "name": "getAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51175,
                      "src": "14105:10:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view returns (address)"
                      }
                    },
                    "id": 51721,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14105:29:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 51718,
                  "id": 51722,
                  "nodeType": "Return",
                  "src": "14098:36:118"
                }
              ]
            },
            "baseFunctions": [
              45612
            ],
            "functionSelector": "00926047",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPriceConsumerV3",
            "nameLocation": "14026:18:118",
            "overrides": {
              "id": 51715,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "14061:8:118"
            },
            "parameters": {
              "id": 51714,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14044:2:118"
            },
            "returnParameters": {
              "id": 51718,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51717,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 51724,
                  "src": "14079:7:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51716,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14079:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14078:9:118"
            },
            "scope": 52140,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51743,
            "nodeType": "FunctionDefinition",
            "src": "14147:197:118",
            "nodes": [],
            "body": {
              "id": 51742,
              "nodeType": "Block",
              "src": "14228:116:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 51736,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 51732,
                        "name": "_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51049,
                        "src": "14238:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 51734,
                      "indexExpression": {
                        "id": 51733,
                        "name": "PRICE_CONSUMER_V3",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51097,
                        "src": "14249:17:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "14238:29:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 51735,
                      "name": "priceConsumerV3",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51726,
                      "src": "14270:15:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "14238:47:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 51737,
                  "nodeType": "ExpressionStatement",
                  "src": "14238:47:118"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 51739,
                        "name": "priceConsumerV3",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51726,
                        "src": "14321:15:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 51738,
                      "name": "PriceConsumerUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45367,
                      "src": "14300:20:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 51740,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14300:37:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51741,
                  "nodeType": "EmitStatement",
                  "src": "14295:42:118"
                }
              ]
            },
            "baseFunctions": [
              45617
            ],
            "functionSelector": "a01246e3",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 51730,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 51729,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "14218:9:118"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 30579,
                  "src": "14218:9:118"
                },
                "nodeType": "ModifierInvocation",
                "src": "14218:9:118"
              }
            ],
            "name": "setPriceConsumerV3",
            "nameLocation": "14156:18:118",
            "overrides": {
              "id": 51728,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "14209:8:118"
            },
            "parameters": {
              "id": 51727,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51726,
                  "mutability": "mutable",
                  "name": "priceConsumerV3",
                  "nameLocation": "14183:15:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 51743,
                  "src": "14175:23:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51725,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14175:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14174:25:118"
            },
            "returnParameters": {
              "id": 51731,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14228:0:118"
            },
            "scope": 52140,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51754,
            "nodeType": "FunctionDefinition",
            "src": "14350:113:118",
            "nodes": [],
            "body": {
              "id": 51753,
              "nodeType": "Block",
              "src": "14416:47:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51750,
                        "name": "FLUID_TOKEN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51100,
                        "src": "14444:11:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 51749,
                      "name": "getAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51175,
                      "src": "14433:10:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view returns (address)"
                      }
                    },
                    "id": 51751,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14433:23:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 51748,
                  "id": 51752,
                  "nodeType": "Return",
                  "src": "14426:30:118"
                }
              ]
            },
            "baseFunctions": [
              45622
            ],
            "functionSelector": "1a8b1fbc",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getFluidToken",
            "nameLocation": "14359:13:118",
            "overrides": {
              "id": 51745,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "14389:8:118"
            },
            "parameters": {
              "id": 51744,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14372:2:118"
            },
            "returnParameters": {
              "id": 51748,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51747,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 51754,
                  "src": "14407:7:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51746,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14407:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14406:9:118"
            },
            "scope": 52140,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51773,
            "nodeType": "FunctionDefinition",
            "src": "14469:168:118",
            "nodes": [],
            "body": {
              "id": 51772,
              "nodeType": "Block",
              "src": "14540:97:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 51766,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 51762,
                        "name": "_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51049,
                        "src": "14550:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 51764,
                      "indexExpression": {
                        "id": 51763,
                        "name": "FLUID_TOKEN",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51100,
                        "src": "14561:11:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "14550:23:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 51765,
                      "name": "fluidToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51756,
                      "src": "14576:10:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "14550:36:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 51767,
                  "nodeType": "ExpressionStatement",
                  "src": "14550:36:118"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 51769,
                        "name": "fluidToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51756,
                        "src": "14619:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 51768,
                      "name": "FluidTokenUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45371,
                      "src": "14601:17:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 51770,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14601:29:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51771,
                  "nodeType": "EmitStatement",
                  "src": "14596:34:118"
                }
              ]
            },
            "baseFunctions": [
              45627
            ],
            "functionSelector": "74eb5a62",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 51760,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 51759,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "14530:9:118"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 30579,
                  "src": "14530:9:118"
                },
                "nodeType": "ModifierInvocation",
                "src": "14530:9:118"
              }
            ],
            "name": "setFluidToken",
            "nameLocation": "14478:13:118",
            "overrides": {
              "id": 51758,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "14521:8:118"
            },
            "parameters": {
              "id": 51757,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51756,
                  "mutability": "mutable",
                  "name": "fluidToken",
                  "nameLocation": "14500:10:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 51773,
                  "src": "14492:18:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51755,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14492:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14491:20:118"
            },
            "returnParameters": {
              "id": 51761,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14540:0:118"
            },
            "scope": 52140,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51784,
            "nodeType": "FunctionDefinition",
            "src": "14646:142:118",
            "nodes": [],
            "body": {
              "id": 51783,
              "nodeType": "Block",
              "src": "14726:62:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51780,
                        "name": "POOL_INCENTIVES_CONTROLLER",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51103,
                        "src": "14754:26:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 51779,
                      "name": "getAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51175,
                      "src": "14743:10:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view returns (address)"
                      }
                    },
                    "id": 51781,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14743:38:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 51778,
                  "id": 51782,
                  "nodeType": "Return",
                  "src": "14736:45:118"
                }
              ]
            },
            "baseFunctions": [
              45632
            ],
            "functionSelector": "19ef9268",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPoolIncentivesController",
            "nameLocation": "14655:27:118",
            "overrides": {
              "id": 51775,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "14699:8:118"
            },
            "parameters": {
              "id": 51774,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14682:2:118"
            },
            "returnParameters": {
              "id": 51778,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51777,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 51784,
                  "src": "14717:7:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51776,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14717:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14716:9:118"
            },
            "scope": 52140,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51803,
            "nodeType": "FunctionDefinition",
            "src": "14794:211:118",
            "nodes": [],
            "body": {
              "id": 51802,
              "nodeType": "Block",
              "src": "14879:126:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 51796,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 51792,
                        "name": "_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51049,
                        "src": "14889:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 51794,
                      "indexExpression": {
                        "id": 51793,
                        "name": "POOL_INCENTIVES_CONTROLLER",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51103,
                        "src": "14900:26:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "14889:38:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 51795,
                      "name": "controller",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51786,
                      "src": "14930:10:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "14889:51:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 51797,
                  "nodeType": "ExpressionStatement",
                  "src": "14889:51:118"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 51799,
                        "name": "controller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51786,
                        "src": "14987:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 51798,
                      "name": "PoolIncentivesControllerUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45375,
                      "src": "14955:31:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 51800,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14955:43:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51801,
                  "nodeType": "EmitStatement",
                  "src": "14950:48:118"
                }
              ]
            },
            "baseFunctions": [
              45637
            ],
            "functionSelector": "6c6f33a5",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 51790,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 51789,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "14869:9:118"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 30579,
                  "src": "14869:9:118"
                },
                "nodeType": "ModifierInvocation",
                "src": "14869:9:118"
              }
            ],
            "name": "setPoolIncentivesController",
            "nameLocation": "14803:27:118",
            "overrides": {
              "id": 51788,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "14860:8:118"
            },
            "parameters": {
              "id": 51787,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51786,
                  "mutability": "mutable",
                  "name": "controller",
                  "nameLocation": "14839:10:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 51803,
                  "src": "14831:18:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51785,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14831:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14830:20:118"
            },
            "returnParameters": {
              "id": 51791,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14879:0:118"
            },
            "scope": 52140,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51814,
            "nodeType": "FunctionDefinition",
            "src": "15011:142:118",
            "nodes": [],
            "body": {
              "id": 51813,
              "nodeType": "Block",
              "src": "15091:62:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51810,
                        "name": "PEER_INCENTIVES_CONTROLLER",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51106,
                        "src": "15119:26:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 51809,
                      "name": "getAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51175,
                      "src": "15108:10:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view returns (address)"
                      }
                    },
                    "id": 51811,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15108:38:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 51808,
                  "id": 51812,
                  "nodeType": "Return",
                  "src": "15101:45:118"
                }
              ]
            },
            "baseFunctions": [
              45642
            ],
            "functionSelector": "22e35383",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPeerIncentivesController",
            "nameLocation": "15020:27:118",
            "overrides": {
              "id": 51805,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "15064:8:118"
            },
            "parameters": {
              "id": 51804,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15047:2:118"
            },
            "returnParameters": {
              "id": 51808,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51807,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 51814,
                  "src": "15082:7:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51806,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15082:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15081:9:118"
            },
            "scope": 52140,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51833,
            "nodeType": "FunctionDefinition",
            "src": "15159:211:118",
            "nodes": [],
            "body": {
              "id": 51832,
              "nodeType": "Block",
              "src": "15244:126:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 51826,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 51822,
                        "name": "_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51049,
                        "src": "15254:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 51824,
                      "indexExpression": {
                        "id": 51823,
                        "name": "PEER_INCENTIVES_CONTROLLER",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51106,
                        "src": "15265:26:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "15254:38:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 51825,
                      "name": "controller",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51816,
                      "src": "15295:10:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "15254:51:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 51827,
                  "nodeType": "ExpressionStatement",
                  "src": "15254:51:118"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 51829,
                        "name": "controller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51816,
                        "src": "15352:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 51828,
                      "name": "PeerIncentivesControllerUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45379,
                      "src": "15320:31:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 51830,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15320:43:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51831,
                  "nodeType": "EmitStatement",
                  "src": "15315:48:118"
                }
              ]
            },
            "baseFunctions": [
              45647
            ],
            "functionSelector": "c13e754b",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 51820,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 51819,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "15234:9:118"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 30579,
                  "src": "15234:9:118"
                },
                "nodeType": "ModifierInvocation",
                "src": "15234:9:118"
              }
            ],
            "name": "setPeerIncentivesController",
            "nameLocation": "15168:27:118",
            "overrides": {
              "id": 51818,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "15225:8:118"
            },
            "parameters": {
              "id": 51817,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51816,
                  "mutability": "mutable",
                  "name": "controller",
                  "nameLocation": "15204:10:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 51833,
                  "src": "15196:18:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51815,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15196:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15195:20:118"
            },
            "returnParameters": {
              "id": 51821,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15244:0:118"
            },
            "scope": 52140,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51844,
            "nodeType": "FunctionDefinition",
            "src": "15376:123:118",
            "nodes": [],
            "body": {
              "id": 51843,
              "nodeType": "Block",
              "src": "15447:52:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51840,
                        "name": "REFERRAL_MANAGER",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51109,
                        "src": "15475:16:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 51839,
                      "name": "getAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51175,
                      "src": "15464:10:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view returns (address)"
                      }
                    },
                    "id": 51841,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15464:28:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 51838,
                  "id": 51842,
                  "nodeType": "Return",
                  "src": "15457:35:118"
                }
              ]
            },
            "baseFunctions": [
              45652
            ],
            "functionSelector": "de3c6e04",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getReferralManager",
            "nameLocation": "15385:18:118",
            "overrides": {
              "id": 51835,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "15420:8:118"
            },
            "parameters": {
              "id": 51834,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15403:2:118"
            },
            "returnParameters": {
              "id": 51838,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51837,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 51844,
                  "src": "15438:7:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51836,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15438:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15437:9:118"
            },
            "scope": 52140,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51863,
            "nodeType": "FunctionDefinition",
            "src": "15505:198:118",
            "nodes": [],
            "body": {
              "id": 51862,
              "nodeType": "Block",
              "src": "15586:117:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 51856,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 51852,
                        "name": "_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51049,
                        "src": "15596:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 51854,
                      "indexExpression": {
                        "id": 51853,
                        "name": "REFERRAL_MANAGER",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51109,
                        "src": "15607:16:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "15596:28:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 51855,
                      "name": "referralManager",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51846,
                      "src": "15627:15:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "15596:46:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 51857,
                  "nodeType": "ExpressionStatement",
                  "src": "15596:46:118"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 51859,
                        "name": "referralManager",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51846,
                        "src": "15680:15:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 51858,
                      "name": "ReferralManagerUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45383,
                      "src": "15657:22:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 51860,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15657:39:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51861,
                  "nodeType": "EmitStatement",
                  "src": "15652:44:118"
                }
              ]
            },
            "baseFunctions": [
              45657
            ],
            "functionSelector": "c5f3a4c4",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 51850,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 51849,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "15576:9:118"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 30579,
                  "src": "15576:9:118"
                },
                "nodeType": "ModifierInvocation",
                "src": "15576:9:118"
              }
            ],
            "name": "setReferralManager",
            "nameLocation": "15514:18:118",
            "overrides": {
              "id": 51848,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "15567:8:118"
            },
            "parameters": {
              "id": 51847,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51846,
                  "mutability": "mutable",
                  "name": "referralManager",
                  "nameLocation": "15541:15:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 51863,
                  "src": "15533:23:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51845,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15533:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15532:25:118"
            },
            "returnParameters": {
              "id": 51851,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15586:0:118"
            },
            "scope": 52140,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51874,
            "nodeType": "FunctionDefinition",
            "src": "15709:108:118",
            "nodes": [],
            "body": {
              "id": 51873,
              "nodeType": "Block",
              "src": "15773:44:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51870,
                        "name": "TREASURY",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51112,
                        "src": "15801:8:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 51869,
                      "name": "getAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51175,
                      "src": "15790:10:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view returns (address)"
                      }
                    },
                    "id": 51871,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15790:20:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 51868,
                  "id": 51872,
                  "nodeType": "Return",
                  "src": "15783:27:118"
                }
              ]
            },
            "baseFunctions": [
              45662
            ],
            "functionSelector": "3b19e84a",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getTreasury",
            "nameLocation": "15718:11:118",
            "overrides": {
              "id": 51865,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "15746:8:118"
            },
            "parameters": {
              "id": 51864,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15729:2:118"
            },
            "returnParameters": {
              "id": 51868,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51867,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 51874,
                  "src": "15764:7:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51866,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15764:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15763:9:118"
            },
            "scope": 52140,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51893,
            "nodeType": "FunctionDefinition",
            "src": "15823:155:118",
            "nodes": [],
            "body": {
              "id": 51892,
              "nodeType": "Block",
              "src": "15890:88:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 51886,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 51882,
                        "name": "_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51049,
                        "src": "15900:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 51884,
                      "indexExpression": {
                        "id": 51883,
                        "name": "TREASURY",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51112,
                        "src": "15911:8:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "15900:20:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 51885,
                      "name": "treasury",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51876,
                      "src": "15923:8:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "15900:31:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 51887,
                  "nodeType": "ExpressionStatement",
                  "src": "15900:31:118"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 51889,
                        "name": "treasury",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51876,
                        "src": "15962:8:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 51888,
                      "name": "TreasuryUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45387,
                      "src": "15946:15:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 51890,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15946:25:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51891,
                  "nodeType": "EmitStatement",
                  "src": "15941:30:118"
                }
              ]
            },
            "baseFunctions": [
              45667
            ],
            "functionSelector": "f0f44260",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 51880,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 51879,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "15880:9:118"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 30579,
                  "src": "15880:9:118"
                },
                "nodeType": "ModifierInvocation",
                "src": "15880:9:118"
              }
            ],
            "name": "setTreasury",
            "nameLocation": "15832:11:118",
            "overrides": {
              "id": 51878,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "15871:8:118"
            },
            "parameters": {
              "id": 51877,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51876,
                  "mutability": "mutable",
                  "name": "treasury",
                  "nameLocation": "15852:8:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 51893,
                  "src": "15844:16:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51875,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15844:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15843:18:118"
            },
            "returnParameters": {
              "id": 51881,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15890:0:118"
            },
            "scope": 52140,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51904,
            "nodeType": "FunctionDefinition",
            "src": "15984:129:118",
            "nodes": [],
            "body": {
              "id": 51903,
              "nodeType": "Block",
              "src": "16058:55:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51900,
                        "name": "DELEGATION_REGISTRY",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51127,
                        "src": "16086:19:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 51899,
                      "name": "getAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51175,
                      "src": "16075:10:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view returns (address)"
                      }
                    },
                    "id": 51901,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16075:31:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 51898,
                  "id": 51902,
                  "nodeType": "Return",
                  "src": "16068:38:118"
                }
              ]
            },
            "baseFunctions": [
              45672
            ],
            "functionSelector": "57d600a1",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getDelegationRegistry",
            "nameLocation": "15993:21:118",
            "overrides": {
              "id": 51895,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "16031:8:118"
            },
            "parameters": {
              "id": 51894,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16014:2:118"
            },
            "returnParameters": {
              "id": 51898,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51897,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 51904,
                  "src": "16049:7:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51896,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "16049:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16048:9:118"
            },
            "scope": 52140,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51923,
            "nodeType": "FunctionDefinition",
            "src": "16119:216:118",
            "nodes": [],
            "body": {
              "id": 51922,
              "nodeType": "Block",
              "src": "16206:129:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 51916,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 51912,
                        "name": "_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51049,
                        "src": "16216:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 51914,
                      "indexExpression": {
                        "id": 51913,
                        "name": "DELEGATION_REGISTRY",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51127,
                        "src": "16227:19:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "16216:31:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 51915,
                      "name": "delegationRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51906,
                      "src": "16250:18:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "16216:52:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 51917,
                  "nodeType": "ExpressionStatement",
                  "src": "16216:52:118"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 51919,
                        "name": "delegationRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51906,
                        "src": "16309:18:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 51918,
                      "name": "DelegationRegistryUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45391,
                      "src": "16283:25:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 51920,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16283:45:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51921,
                  "nodeType": "EmitStatement",
                  "src": "16278:50:118"
                }
              ]
            },
            "baseFunctions": [
              45677
            ],
            "functionSelector": "73aa9e94",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 51910,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 51909,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "16196:9:118"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 30579,
                  "src": "16196:9:118"
                },
                "nodeType": "ModifierInvocation",
                "src": "16196:9:118"
              }
            ],
            "name": "setDelegationRegistry",
            "nameLocation": "16128:21:118",
            "overrides": {
              "id": 51908,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "16187:8:118"
            },
            "parameters": {
              "id": 51907,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51906,
                  "mutability": "mutable",
                  "name": "delegationRegistry",
                  "nameLocation": "16158:18:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 51923,
                  "src": "16150:26:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51905,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "16150:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16149:28:118"
            },
            "returnParameters": {
              "id": 51911,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16206:0:118"
            },
            "scope": 52140,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51934,
            "nodeType": "FunctionDefinition",
            "src": "16341:114:118",
            "nodes": [],
            "body": {
              "id": 51933,
              "nodeType": "Block",
              "src": "16407:48:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51930,
                        "name": "F_TOKEN_IMPL",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51115,
                        "src": "16435:12:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 51929,
                      "name": "getAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51175,
                      "src": "16424:10:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view returns (address)"
                      }
                    },
                    "id": 51931,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16424:24:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 51928,
                  "id": 51932,
                  "nodeType": "Return",
                  "src": "16417:31:118"
                }
              ]
            },
            "baseFunctions": [
              45682
            ],
            "functionSelector": "9fd192b8",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getFTokenImpl",
            "nameLocation": "16350:13:118",
            "overrides": {
              "id": 51925,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "16380:8:118"
            },
            "parameters": {
              "id": 51924,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16363:2:118"
            },
            "returnParameters": {
              "id": 51928,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51927,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 51934,
                  "src": "16398:7:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51926,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "16398:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16397:9:118"
            },
            "scope": 52140,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51953,
            "nodeType": "FunctionDefinition",
            "src": "16461:169:118",
            "nodes": [],
            "body": {
              "id": 51952,
              "nodeType": "Block",
              "src": "16532:98:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 51946,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 51942,
                        "name": "_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51049,
                        "src": "16542:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 51944,
                      "indexExpression": {
                        "id": 51943,
                        "name": "F_TOKEN_IMPL",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51115,
                        "src": "16553:12:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "16542:24:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 51945,
                      "name": "fTokenImpl",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51936,
                      "src": "16569:10:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "16542:37:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 51947,
                  "nodeType": "ExpressionStatement",
                  "src": "16542:37:118"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 51949,
                        "name": "fTokenImpl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51936,
                        "src": "16612:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 51948,
                      "name": "FTokenImplUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45401,
                      "src": "16594:17:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 51950,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16594:29:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51951,
                  "nodeType": "EmitStatement",
                  "src": "16589:34:118"
                }
              ]
            },
            "baseFunctions": [
              45687
            ],
            "functionSelector": "f66e398f",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 51940,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 51939,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "16522:9:118"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 30579,
                  "src": "16522:9:118"
                },
                "nodeType": "ModifierInvocation",
                "src": "16522:9:118"
              }
            ],
            "name": "setFTokenImpl",
            "nameLocation": "16470:13:118",
            "overrides": {
              "id": 51938,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "16513:8:118"
            },
            "parameters": {
              "id": 51937,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51936,
                  "mutability": "mutable",
                  "name": "fTokenImpl",
                  "nameLocation": "16492:10:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 51953,
                  "src": "16484:18:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51935,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "16484:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16483:20:118"
            },
            "returnParameters": {
              "id": 51941,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16532:0:118"
            },
            "scope": 52140,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51964,
            "nodeType": "FunctionDefinition",
            "src": "16636:120:118",
            "nodes": [],
            "body": {
              "id": 51963,
              "nodeType": "Block",
              "src": "16705:51:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51960,
                        "name": "DEBT_TOKEN_IMPL",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51118,
                        "src": "16733:15:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 51959,
                      "name": "getAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51175,
                      "src": "16722:10:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view returns (address)"
                      }
                    },
                    "id": 51961,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16722:27:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 51958,
                  "id": 51962,
                  "nodeType": "Return",
                  "src": "16715:34:118"
                }
              ]
            },
            "baseFunctions": [
              45692
            ],
            "functionSelector": "47d2c534",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getDebtTokenImpl",
            "nameLocation": "16645:16:118",
            "overrides": {
              "id": 51955,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "16678:8:118"
            },
            "parameters": {
              "id": 51954,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16661:2:118"
            },
            "returnParameters": {
              "id": 51958,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51957,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 51964,
                  "src": "16696:7:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51956,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "16696:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16695:9:118"
            },
            "scope": 52140,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51983,
            "nodeType": "FunctionDefinition",
            "src": "16762:187:118",
            "nodes": [],
            "body": {
              "id": 51982,
              "nodeType": "Block",
              "src": "16839:110:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 51976,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 51972,
                        "name": "_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51049,
                        "src": "16849:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 51974,
                      "indexExpression": {
                        "id": 51973,
                        "name": "DEBT_TOKEN_IMPL",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51118,
                        "src": "16860:15:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "16849:27:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 51975,
                      "name": "debtTokenImpl",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51966,
                      "src": "16879:13:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "16849:43:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 51977,
                  "nodeType": "ExpressionStatement",
                  "src": "16849:43:118"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 51979,
                        "name": "debtTokenImpl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51966,
                        "src": "16928:13:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 51978,
                      "name": "DebtTokenImplUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45405,
                      "src": "16907:20:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 51980,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16907:35:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 51981,
                  "nodeType": "EmitStatement",
                  "src": "16902:40:118"
                }
              ]
            },
            "baseFunctions": [
              45697
            ],
            "functionSelector": "135dc147",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 51970,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 51969,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "16829:9:118"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 30579,
                  "src": "16829:9:118"
                },
                "nodeType": "ModifierInvocation",
                "src": "16829:9:118"
              }
            ],
            "name": "setDebtTokenImpl",
            "nameLocation": "16771:16:118",
            "overrides": {
              "id": 51968,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "16820:8:118"
            },
            "parameters": {
              "id": 51967,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51966,
                  "mutability": "mutable",
                  "name": "debtTokenImpl",
                  "nameLocation": "16796:13:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 51983,
                  "src": "16788:21:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51965,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "16788:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16787:23:118"
            },
            "returnParameters": {
              "id": 51971,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16839:0:118"
            },
            "scope": 52140,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 51994,
            "nodeType": "FunctionDefinition",
            "src": "16955:100:118",
            "nodes": [],
            "body": {
              "id": 51993,
              "nodeType": "Block",
              "src": "17015:40:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 51990,
                        "name": "WETH",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51121,
                        "src": "17043:4:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 51989,
                      "name": "getAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51175,
                      "src": "17032:10:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view returns (address)"
                      }
                    },
                    "id": 51991,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17032:16:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 51988,
                  "id": 51992,
                  "nodeType": "Return",
                  "src": "17025:23:118"
                }
              ]
            },
            "baseFunctions": [
              45702
            ],
            "functionSelector": "cae5f11e",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getWETH",
            "nameLocation": "16964:7:118",
            "overrides": {
              "id": 51985,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "16988:8:118"
            },
            "parameters": {
              "id": 51984,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16971:2:118"
            },
            "returnParameters": {
              "id": 51988,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51987,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 51994,
                  "src": "17006:7:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51986,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "17006:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17005:9:118"
            },
            "scope": 52140,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 52013,
            "nodeType": "FunctionDefinition",
            "src": "17061:131:118",
            "nodes": [],
            "body": {
              "id": 52012,
              "nodeType": "Block",
              "src": "17120:72:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 52006,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 52002,
                        "name": "_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51049,
                        "src": "17130:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 52004,
                      "indexExpression": {
                        "id": 52003,
                        "name": "WETH",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51121,
                        "src": "17141:4:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "17130:16:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 52005,
                      "name": "weth",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51996,
                      "src": "17149:4:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "17130:23:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 52007,
                  "nodeType": "ExpressionStatement",
                  "src": "17130:23:118"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 52009,
                        "name": "weth",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51996,
                        "src": "17180:4:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 52008,
                      "name": "WETHUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45417,
                      "src": "17168:11:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 52010,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17168:17:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 52011,
                  "nodeType": "EmitStatement",
                  "src": "17163:22:118"
                }
              ]
            },
            "baseFunctions": [
              45707
            ],
            "functionSelector": "5b769f3c",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 52000,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 51999,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "17110:9:118"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 30579,
                  "src": "17110:9:118"
                },
                "nodeType": "ModifierInvocation",
                "src": "17110:9:118"
              }
            ],
            "name": "setWETH",
            "nameLocation": "17070:7:118",
            "overrides": {
              "id": 51998,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "17101:8:118"
            },
            "parameters": {
              "id": 51997,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 51996,
                  "mutability": "mutable",
                  "name": "weth",
                  "nameLocation": "17086:4:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 52013,
                  "src": "17078:12:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 51995,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "17078:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17077:14:118"
            },
            "returnParameters": {
              "id": 52001,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17120:0:118"
            },
            "scope": 52140,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 52024,
            "nodeType": "FunctionDefinition",
            "src": "17198:115:118",
            "nodes": [],
            "body": {
              "id": 52023,
              "nodeType": "Block",
              "src": "17265:48:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 52020,
                        "name": "WETH_GATEWAY",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51124,
                        "src": "17293:12:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 52019,
                      "name": "getAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51175,
                      "src": "17282:10:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view returns (address)"
                      }
                    },
                    "id": 52021,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17282:24:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 52018,
                  "id": 52022,
                  "nodeType": "Return",
                  "src": "17275:31:118"
                }
              ]
            },
            "baseFunctions": [
              45712
            ],
            "functionSelector": "77532ed9",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getWETHGateway",
            "nameLocation": "17207:14:118",
            "overrides": {
              "id": 52015,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "17238:8:118"
            },
            "parameters": {
              "id": 52014,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17221:2:118"
            },
            "returnParameters": {
              "id": 52018,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 52017,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 52024,
                  "src": "17256:7:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 52016,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "17256:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17255:9:118"
            },
            "scope": 52140,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 52043,
            "nodeType": "FunctionDefinition",
            "src": "17319:174:118",
            "nodes": [],
            "body": {
              "id": 52042,
              "nodeType": "Block",
              "src": "17392:101:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 52036,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 52032,
                        "name": "_addresses",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51049,
                        "src": "17402:10:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 52034,
                      "indexExpression": {
                        "id": 52033,
                        "name": "WETH_GATEWAY",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 51124,
                        "src": "17413:12:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "17402:24:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 52035,
                      "name": "wethGateway",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 52026,
                      "src": "17429:11:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "17402:38:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 52037,
                  "nodeType": "ExpressionStatement",
                  "src": "17402:38:118"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 52039,
                        "name": "wethGateway",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 52026,
                        "src": "17474:11:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 52038,
                      "name": "WETHGatewayUpdated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45421,
                      "src": "17455:18:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 52040,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17455:31:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 52041,
                  "nodeType": "EmitStatement",
                  "src": "17450:36:118"
                }
              ]
            },
            "baseFunctions": [
              45717
            ],
            "functionSelector": "21da5837",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 52030,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 52029,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "17382:9:118"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 30579,
                  "src": "17382:9:118"
                },
                "nodeType": "ModifierInvocation",
                "src": "17382:9:118"
              }
            ],
            "name": "setWETHGateway",
            "nameLocation": "17328:14:118",
            "overrides": {
              "id": 52028,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "17373:8:118"
            },
            "parameters": {
              "id": 52027,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 52026,
                  "mutability": "mutable",
                  "name": "wethGateway",
                  "nameLocation": "17351:11:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 52043,
                  "src": "17343:19:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 52025,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "17343:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17342:21:118"
            },
            "returnParameters": {
              "id": 52031,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17392:0:118"
            },
            "scope": 52140,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 52125,
            "nodeType": "FunctionDefinition",
            "src": "18097:723:118",
            "nodes": [],
            "body": {
              "id": 52124,
              "nodeType": "Block",
              "src": "18159:661:118",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    52052
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 52052,
                      "mutability": "mutable",
                      "name": "proxyAddress",
                      "nameLocation": "18185:12:118",
                      "nodeType": "VariableDeclaration",
                      "scope": 52124,
                      "src": "18169:28:118",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      },
                      "typeName": {
                        "id": 52051,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "18169:15:118",
                        "stateMutability": "payable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 52059,
                  "initialValue": {
                    "arguments": [
                      {
                        "baseExpression": {
                          "id": 52055,
                          "name": "_addresses",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 51049,
                          "src": "18208:10:118",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                            "typeString": "mapping(bytes32 => address)"
                          }
                        },
                        "id": 52057,
                        "indexExpression": {
                          "id": 52056,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 52046,
                          "src": "18219:2:118",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "18208:14:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 52054,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "18200:8:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_payable_$",
                        "typeString": "type(address payable)"
                      },
                      "typeName": {
                        "id": 52053,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "18200:8:118",
                        "stateMutability": "payable",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 52058,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18200:23:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18169:54:118"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 52065,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 52060,
                      "name": "proxyAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 52052,
                      "src": "18238:12:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "arguments": [
                        {
                          "hexValue": "30",
                          "id": 52063,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "18262:1:118",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 52062,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "18254:7:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 52061,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "18254:7:118",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 52064,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "18254:10:118",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "18238:26:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 52122,
                    "nodeType": "Block",
                    "src": "18644:170:118",
                    "statements": [
                      {
                        "assignments": [
                          52111
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 52111,
                            "mutability": "mutable",
                            "name": "proxy",
                            "nameLocation": "18718:5:118",
                            "nodeType": "VariableDeclaration",
                            "scope": 52122,
                            "src": "18696:27:118",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_FluidUpgradeableProxy_$63013",
                              "typeString": "contract FluidUpgradeableProxy"
                            },
                            "typeName": {
                              "id": 52110,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 52109,
                                "name": "FluidUpgradeableProxy",
                                "nameLocations": [
                                  "18696:21:118"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 63013,
                                "src": "18696:21:118"
                              },
                              "referencedDeclaration": 63013,
                              "src": "18696:21:118",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_FluidUpgradeableProxy_$63013",
                                "typeString": "contract FluidUpgradeableProxy"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 52115,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 52113,
                              "name": "proxyAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 52052,
                              "src": "18748:12:118",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 52112,
                            "name": "FluidUpgradeableProxy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 63013,
                            "src": "18726:21:118",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_FluidUpgradeableProxy_$63013_$",
                              "typeString": "type(contract FluidUpgradeableProxy)"
                            }
                          },
                          "id": 52114,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18726:35:118",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_FluidUpgradeableProxy_$63013",
                            "typeString": "contract FluidUpgradeableProxy"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18696:65:118"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 52119,
                              "name": "newAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 52048,
                              "src": "18792:10:118",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 52116,
                              "name": "proxy",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 52111,
                              "src": "18776:5:118",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_FluidUpgradeableProxy_$63013",
                                "typeString": "contract FluidUpgradeableProxy"
                              }
                            },
                            "id": 52118,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "18782:9:118",
                            "memberName": "upgradeTo",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 31326,
                            "src": "18776:15:118",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address) external"
                            }
                          },
                          "id": 52120,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18776:27:118",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 52121,
                        "nodeType": "ExpressionStatement",
                        "src": "18776:27:118"
                      }
                    ]
                  },
                  "id": 52123,
                  "nodeType": "IfStatement",
                  "src": "18234:580:118",
                  "trueBody": {
                    "id": 52108,
                    "nodeType": "Block",
                    "src": "18266:372:118",
                    "statements": [
                      {
                        "assignments": [
                          52067
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 52067,
                            "mutability": "mutable",
                            "name": "params",
                            "nameLocation": "18293:6:118",
                            "nodeType": "VariableDeclaration",
                            "scope": 52108,
                            "src": "18280:19:118",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 52066,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "18280:5:118",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 52076,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "696e697469616c697a65286164647265737329",
                              "id": 52070,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18326:21:118",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c4d66de8473e8f74cb05df264ee8262da16b56717ef1f05d73bfdcea3adc85e5",
                                "typeString": "literal_string \"initialize(address)\""
                              },
                              "value": "initialize(address)"
                            },
                            {
                              "arguments": [
                                {
                                  "id": 52073,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "18357:4:118",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_AddressProvider_$52140",
                                    "typeString": "contract AddressProvider"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_AddressProvider_$52140",
                                    "typeString": "contract AddressProvider"
                                  }
                                ],
                                "id": 52072,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "18349:7:118",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 52071,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "18349:7:118",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 52074,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18349:13:118",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_c4d66de8473e8f74cb05df264ee8262da16b56717ef1f05d73bfdcea3adc85e5",
                                "typeString": "literal_string \"initialize(address)\""
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 52068,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "18302:3:118",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 52069,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "18306:19:118",
                            "memberName": "encodeWithSignature",
                            "nodeType": "MemberAccess",
                            "src": "18302:23:118",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (string memory) pure returns (bytes memory)"
                            }
                          },
                          "id": 52075,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18302:61:118",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18280:83:118"
                      },
                      {
                        "assignments": [
                          52079
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 52079,
                            "mutability": "mutable",
                            "name": "proxy",
                            "nameLocation": "18462:5:118",
                            "nodeType": "VariableDeclaration",
                            "scope": 52108,
                            "src": "18440:27:118",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_FluidUpgradeableProxy_$63013",
                              "typeString": "contract FluidUpgradeableProxy"
                            },
                            "typeName": {
                              "id": 52078,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 52077,
                                "name": "FluidUpgradeableProxy",
                                "nameLocations": [
                                  "18440:21:118"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 63013,
                                "src": "18440:21:118"
                              },
                              "referencedDeclaration": 63013,
                              "src": "18440:21:118",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_FluidUpgradeableProxy_$63013",
                                "typeString": "contract FluidUpgradeableProxy"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 52090,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 52083,
                              "name": "newAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 52048,
                              "src": "18496:10:118",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 52086,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "18516:4:118",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_AddressProvider_$52140",
                                    "typeString": "contract AddressProvider"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_AddressProvider_$52140",
                                    "typeString": "contract AddressProvider"
                                  }
                                ],
                                "id": 52085,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "18508:7:118",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 52084,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "18508:7:118",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 52087,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18508:13:118",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 52088,
                              "name": "params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 52067,
                              "src": "18523:6:118",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 52082,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "18470:25:118",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_creation_payable$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_FluidUpgradeableProxy_$63013_$",
                              "typeString": "function (address,address,bytes memory) payable returns (contract FluidUpgradeableProxy)"
                            },
                            "typeName": {
                              "id": 52081,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 52080,
                                "name": "FluidUpgradeableProxy",
                                "nameLocations": [
                                  "18474:21:118"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 63013,
                                "src": "18474:21:118"
                              },
                              "referencedDeclaration": 63013,
                              "src": "18474:21:118",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_FluidUpgradeableProxy_$63013",
                                "typeString": "contract FluidUpgradeableProxy"
                              }
                            }
                          },
                          "id": 52089,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18470:60:118",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_FluidUpgradeableProxy_$63013",
                            "typeString": "contract FluidUpgradeableProxy"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18440:90:118"
                      },
                      {
                        "expression": {
                          "id": 52098,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 52091,
                              "name": "_addresses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 51049,
                              "src": "18545:10:118",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                "typeString": "mapping(bytes32 => address)"
                              }
                            },
                            "id": 52093,
                            "indexExpression": {
                              "id": 52092,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 52046,
                              "src": "18556:2:118",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "18545:14:118",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 52096,
                                "name": "proxy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 52079,
                                "src": "18570:5:118",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_FluidUpgradeableProxy_$63013",
                                  "typeString": "contract FluidUpgradeableProxy"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_FluidUpgradeableProxy_$63013",
                                  "typeString": "contract FluidUpgradeableProxy"
                                }
                              ],
                              "id": 52095,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "18562:7:118",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 52094,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "18562:7:118",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 52097,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18562:14:118",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "18545:31:118",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 52099,
                        "nodeType": "ExpressionStatement",
                        "src": "18545:31:118"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 52101,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 52046,
                              "src": "18608:2:118",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 52104,
                                  "name": "proxy",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 52079,
                                  "src": "18620:5:118",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_FluidUpgradeableProxy_$63013",
                                    "typeString": "contract FluidUpgradeableProxy"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_FluidUpgradeableProxy_$63013",
                                    "typeString": "contract FluidUpgradeableProxy"
                                  }
                                ],
                                "id": 52103,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "18612:7:118",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 52102,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "18612:7:118",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 52105,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18612:14:118",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 52100,
                            "name": "ProxyCreated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45397,
                            "src": "18595:12:118",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 52106,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18595:32:118",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 52107,
                        "nodeType": "EmitStatement",
                        "src": "18590:37:118"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 52044,
              "nodeType": "StructuredDocumentation",
              "src": "17499:593:118",
              "text": " @dev Internal function to update the implementation of a specific proxied component of the protocol\n - If there is no proxy registered in the given `id`, it creates the proxy setting `newAdress`\n   as implementation and calls the initialize() function on the proxy\n - If there is already a proxy registered, it just updates the implementation to `newAddress` and\n   calls the encoded method function via upgradeToAndCall() in the proxy\n @param id The id of the proxy to be updated\n @param newAddress The address of the new implementation*"
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_updateImpl",
            "nameLocation": "18106:11:118",
            "parameters": {
              "id": 52049,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 52046,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "18126:2:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 52125,
                  "src": "18118:10:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 52045,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "18118:7:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 52048,
                  "mutability": "mutable",
                  "name": "newAddress",
                  "nameLocation": "18138:10:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 52125,
                  "src": "18130:18:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 52047,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18130:7:118",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18117:32:118"
            },
            "returnParameters": {
              "id": 52050,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18159:0:118"
            },
            "scope": 52140,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 52139,
            "nodeType": "FunctionDefinition",
            "src": "18826:128:118",
            "nodes": [],
            "body": {
              "id": 52138,
              "nodeType": "Block",
              "src": "18881:73:118",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 52132,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 52130,
                      "name": "_marketId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51045,
                      "src": "18891:9:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 52131,
                      "name": "marketId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 52127,
                      "src": "18903:8:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "18891:20:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 52133,
                  "nodeType": "ExpressionStatement",
                  "src": "18891:20:118"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 52135,
                        "name": "marketId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 52127,
                        "src": "18938:8:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 52134,
                      "name": "MarketIdSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45303,
                      "src": "18926:11:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory)"
                      }
                    },
                    "id": 52136,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18926:21:118",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 52137,
                  "nodeType": "EmitStatement",
                  "src": "18921:26:118"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_setMarketId",
            "nameLocation": "18835:12:118",
            "parameters": {
              "id": 52128,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 52127,
                  "mutability": "mutable",
                  "name": "marketId",
                  "nameLocation": "18862:8:118",
                  "nodeType": "VariableDeclaration",
                  "scope": 52139,
                  "src": "18848:22:118",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 52126,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "18848:6:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18847:24:118"
            },
            "returnParameters": {
              "id": 52129,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18881:0:118"
            },
            "scope": 52140,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 51040,
              "name": "Ownable",
              "nameLocations": [
                "698:7:118"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 30660,
              "src": "698:7:118"
            },
            "id": 51041,
            "nodeType": "InheritanceSpecifier",
            "src": "698:7:118"
          },
          {
            "baseName": {
              "id": 51042,
              "name": "IAddressProvider",
              "nameLocations": [
                "707:16:118"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 45718,
              "src": "707:16:118"
            },
            "id": 51043,
            "nodeType": "InheritanceSpecifier",
            "src": "707:16:118"
          }
        ],
        "canonicalName": "AddressProvider",
        "contractDependencies": [
          63013
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 51039,
          "nodeType": "StructuredDocumentation",
          "src": "363:306:118",
          "text": " @title AddressProvider contract\n @dev Main registry of addresses part of or connected to the protocol, including permissioned roles\n - Acting also as factory of proxies and admin of those, so with right to change its implementations\n - Owned by the FluidNFT Governance\n @author FluidNFT*"
        },
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          52140,
          45718,
          30660,
          35271
        ],
        "name": "AddressProvider",
        "nameLocation": "679:15:118",
        "scope": 52141,
        "usedErrors": []
      }
    ],
    "license": "AGPL-3.0"
  },
  "id": 118
}

Last updated