{
    "contracts/AddressResolver.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/interfaces/IAddressResolver.sol",
            "contracts/interfaces/IIssuer.sol",
            "contracts/MixinResolver.sol"
        ],
        "contracts": {
            "AddressResolver": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 16
                    },
                    {
                        "name": "importAddresses",
                        "signature": "importAddresses(bytes32[] names, address[] destinations)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 21,
                                "name": "require(..., Input lengths must match)"
                            }
                        ],
                        "lineNumber": 20
                    },
                    {
                        "name": "rebuildCaches",
                        "signature": "rebuildCaches(contract MixinResolver[] destinations)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 33
                    },
                    {
                        "name": "areAddressesImported",
                        "signature": "areAddressesImported(bytes32[] names, address[] destinations)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 41
                    },
                    {
                        "name": "getAddress",
                        "signature": "getAddress(bytes32 name)",
                        "returns": "(address)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 50
                    },
                    {
                        "name": "requireAndGetAddress",
                        "signature": "requireAndGetAddress(bytes32 name, string reason)",
                        "returns": "(address)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 56,
                                "name": "require(..., calldata)"
                            }
                        ],
                        "lineNumber": 54
                    },
                    {
                        "name": "getSynth",
                        "signature": "getSynth(bytes32 key)",
                        "returns": "(address)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 62,
                                "name": "require(..., Cannot find Issuer address)"
                            }
                        ],
                        "lineNumber": 60
                    }
                ],
                "events": [
                    {
                        "name": "AddressImported",
                        "parameters": "(bytes32 name, address destination)",
                        "lineNumber": 68
                    }
                ],
                "variables": [
                    {
                        "name": "repository",
                        "constant": false,
                        "type": "mapping(bytes32 => address)",
                        "lineNumber": 14,
                        "visibility": "public"
                    }
                ],
                "modifiers": [],
                "structs": [],
                "inherits": [
                    "Owned",
                    "IAddressResolver"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/Owned.sol": {
        "imports": [],
        "contracts": {
            "Owned": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner)",
                        "returns": "()",
                        "events": [
                            "OwnerChanged"
                        ],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 10,
                                "name": "require(..., Owner address cannot be 0)"
                            }
                        ],
                        "lineNumber": 9
                    },
                    {
                        "name": "nominateNewOwner",
                        "signature": "nominateNewOwner(address _owner)",
                        "returns": "()",
                        "events": [
                            "OwnerNominated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 15
                    },
                    {
                        "name": "acceptOwnership",
                        "signature": "acceptOwnership()",
                        "returns": "()",
                        "events": [
                            "OwnerChanged"
                        ],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 21,
                                "name": "require(..., You must be nominated before you can accept ownership)"
                            }
                        ],
                        "lineNumber": 20
                    },
                    {
                        "name": "_onlyOwner",
                        "signature": "_onlyOwner()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "private",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 33,
                                "name": "require(..., Only the contract owner may perform this action)"
                            }
                        ],
                        "lineNumber": 32
                    }
                ],
                "events": [
                    {
                        "name": "OwnerNominated",
                        "parameters": "(address newOwner)",
                        "lineNumber": 36
                    },
                    {
                        "name": "OwnerChanged",
                        "parameters": "(address oldOwner, address newOwner)",
                        "lineNumber": 37
                    }
                ],
                "variables": [
                    {
                        "name": "owner",
                        "constant": false,
                        "type": "address",
                        "lineNumber": 6,
                        "visibility": "public"
                    },
                    {
                        "name": "nominatedOwner",
                        "constant": false,
                        "type": "address",
                        "lineNumber": 7,
                        "visibility": "public"
                    }
                ],
                "modifiers": [
                    {
                        "name": "onlyOwner",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 27
                    }
                ],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/interfaces/IAddressResolver.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {
            "IAddressResolver": {
                "functions": [
                    {
                        "name": "getAddress",
                        "signature": "getAddress(bytes32 name)",
                        "returns": "(address)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 6
                    },
                    {
                        "name": "getSynth",
                        "signature": "getSynth(bytes32 key)",
                        "returns": "(address)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 8
                    },
                    {
                        "name": "requireAndGetAddress",
                        "signature": "requireAndGetAddress(bytes32 name, string reason)",
                        "returns": "(address)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 10
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/interfaces/IIssuer.sol": {
        "imports": [
            "contracts/interfaces/ISynth.sol"
        ],
        "contracts": {},
        "interfaces": {
            "IIssuer": {
                "functions": [
                    {
                        "name": "anySynthOrSNXRateIsInvalid",
                        "signature": "anySynthOrSNXRateIsInvalid()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 9
                    },
                    {
                        "name": "availableCurrencyKeys",
                        "signature": "availableCurrencyKeys()",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 11
                    },
                    {
                        "name": "availableSynthCount",
                        "signature": "availableSynthCount()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 13
                    },
                    {
                        "name": "availableSynths",
                        "signature": "availableSynths(uint256 index)",
                        "returns": "(contract ISynth)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 15
                    },
                    {
                        "name": "canBurnSynths",
                        "signature": "canBurnSynths(address account)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 17
                    },
                    {
                        "name": "collateral",
                        "signature": "collateral(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 19
                    },
                    {
                        "name": "collateralisationRatio",
                        "signature": "collateralisationRatio(address issuer)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 21
                    },
                    {
                        "name": "collateralisationRatioAndAnyRatesInvalid",
                        "signature": "collateralisationRatioAndAnyRatesInvalid(address _issuer)",
                        "returns": "(uint256, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 23
                    },
                    {
                        "name": "debtBalanceOf",
                        "signature": "debtBalanceOf(address issuer, bytes32 currencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 28
                    },
                    {
                        "name": "issuanceRatio",
                        "signature": "issuanceRatio()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 30
                    },
                    {
                        "name": "lastIssueEvent",
                        "signature": "lastIssueEvent(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 32
                    },
                    {
                        "name": "maxIssuableSynths",
                        "signature": "maxIssuableSynths(address issuer)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 34
                    },
                    {
                        "name": "minimumStakeTime",
                        "signature": "minimumStakeTime()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 36
                    },
                    {
                        "name": "remainingIssuableSynths",
                        "signature": "remainingIssuableSynths(address issuer)",
                        "returns": "(uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 38
                    },
                    {
                        "name": "synths",
                        "signature": "synths(bytes32 currencyKey)",
                        "returns": "(contract ISynth)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 47
                    },
                    {
                        "name": "getSynths",
                        "signature": "getSynths(bytes32[] currencyKeys)",
                        "returns": "(contract ISynth[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 49
                    },
                    {
                        "name": "synthsByAddress",
                        "signature": "synthsByAddress(address synthAddress)",
                        "returns": "(bytes32)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 51
                    },
                    {
                        "name": "totalIssuedSynths",
                        "signature": "totalIssuedSynths(bytes32 currencyKey, bool excludeEtherCollateral)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 53
                    },
                    {
                        "name": "transferableSynthetixAndAnyRateIsInvalid",
                        "signature": "transferableSynthetixAndAnyRateIsInvalid(address account, uint256 balance)",
                        "returns": "(uint256, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 55
                    },
                    {
                        "name": "issueSynths",
                        "signature": "issueSynths(address from, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 61
                    },
                    {
                        "name": "issueSynthsOnBehalf",
                        "signature": "issueSynthsOnBehalf(address issueFor, address from, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 63
                    },
                    {
                        "name": "issueMaxSynths",
                        "signature": "issueMaxSynths(address from)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 69
                    },
                    {
                        "name": "issueMaxSynthsOnBehalf",
                        "signature": "issueMaxSynthsOnBehalf(address issueFor, address from)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 71
                    },
                    {
                        "name": "burnSynths",
                        "signature": "burnSynths(address from, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 73
                    },
                    {
                        "name": "burnSynthsOnBehalf",
                        "signature": "burnSynthsOnBehalf(address burnForAddress, address from, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 75
                    },
                    {
                        "name": "burnSynthsToTarget",
                        "signature": "burnSynthsToTarget(address from)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 81
                    },
                    {
                        "name": "burnSynthsToTargetOnBehalf",
                        "signature": "burnSynthsToTargetOnBehalf(address burnForAddress, address from)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 83
                    },
                    {
                        "name": "liquidateDelinquentAccount",
                        "signature": "liquidateDelinquentAccount(address account, uint256 susdAmount, address liquidator)",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 85
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/interfaces/ISynth.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {
            "ISynth": {
                "functions": [
                    {
                        "name": "currencyKey",
                        "signature": "currencyKey()",
                        "returns": "(bytes32)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 7
                    },
                    {
                        "name": "transferableSynths",
                        "signature": "transferableSynths(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 9
                    },
                    {
                        "name": "transferAndSettle",
                        "signature": "transferAndSettle(address to, uint256 value)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 12
                    },
                    {
                        "name": "transferFromAndSettle",
                        "signature": "transferFromAndSettle(address from, address to, uint256 value)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 14
                    },
                    {
                        "name": "burn",
                        "signature": "burn(address account, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 21
                    },
                    {
                        "name": "issue",
                        "signature": "issue(address account, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 23
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/MixinResolver.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/AddressResolver.sol",
            "contracts/ReadProxy.sol"
        ],
        "contracts": {
            "MixinResolver": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _resolver)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 17
                    },
                    {
                        "name": "combineArrays",
                        "signature": "combineArrays(bytes32[] first, bytes32[] second)",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "pure",
                        "requires": [],
                        "lineNumber": 23
                    },
                    {
                        "name": "resolverAddressesRequired",
                        "signature": "resolverAddressesRequired()",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 42
                    },
                    {
                        "name": "rebuildCache",
                        "signature": "rebuildCache()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 44
                    },
                    {
                        "name": "isResolverCached",
                        "signature": "isResolverCached()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 61
                    },
                    {
                        "name": "requireAndGetAddress",
                        "signature": "requireAndGetAddress(bytes32 name)",
                        "returns": "(address)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 78,
                                "name": "require(..., memory)"
                            }
                        ],
                        "lineNumber": 76
                    }
                ],
                "events": [
                    {
                        "name": "CacheUpdated",
                        "parameters": "(bytes32 name, address destination)",
                        "lineNumber": 84
                    }
                ],
                "variables": [
                    {
                        "name": "resolver",
                        "constant": false,
                        "type": "contract AddressResolver",
                        "lineNumber": 13,
                        "visibility": "public"
                    },
                    {
                        "name": "addressCache",
                        "constant": false,
                        "type": "mapping(bytes32 => address)",
                        "lineNumber": 15,
                        "visibility": "private"
                    }
                ],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/ReadProxy.sol": {
        "imports": [
            "contracts/Owned.sol"
        ],
        "contracts": {
            "ReadProxy": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 12
                    },
                    {
                        "name": "setTarget",
                        "signature": "setTarget(address _target)",
                        "returns": "()",
                        "events": [
                            "TargetUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 14
                    },
                    {
                        "name": "fallback",
                        "signature": "()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 19
                    }
                ],
                "events": [
                    {
                        "name": "TargetUpdated",
                        "parameters": "(address newTarget)",
                        "lineNumber": 36
                    }
                ],
                "variables": [
                    {
                        "name": "target",
                        "constant": false,
                        "type": "address",
                        "lineNumber": 10,
                        "visibility": "public"
                    }
                ],
                "modifiers": [],
                "structs": [],
                "inherits": [
                    "Owned"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/AddressSetLib.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {},
        "libraries": {
            "AddressSetLib": {
                "functions": [
                    {
                        "name": "contains",
                        "signature": "contains(struct AddressSetLib.AddressSet set, address candidate)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 11
                    },
                    {
                        "name": "getPage",
                        "signature": "getPage(struct AddressSetLib.AddressSet set, uint256 index, uint256 pageSize)",
                        "returns": "(address[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 19
                    },
                    {
                        "name": "add",
                        "signature": "add(struct AddressSetLib.AddressSet set, address element)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 43
                    },
                    {
                        "name": "remove",
                        "signature": "remove(struct AddressSetLib.AddressSet set, address element)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 52,
                                "name": "require(..., Element not in set.)"
                            }
                        ],
                        "lineNumber": 51
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [
                    {
                        "name": "AddressSet",
                        "members": [
                            {
                                "name": "elements",
                                "type": "address[]"
                            },
                            {
                                "name": "indices",
                                "type": "mapping(address => uint256)"
                            }
                        ],
                        "lineNumber": 6
                    }
                ],
                "inherits": [],
                "libraries": []
            }
        }
    },
    "contracts/BaseRewardEscrowV2.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/MixinResolver.sol",
            "contracts/LimitedSetup.sol",
            "contracts/interfaces/IRewardEscrowV2.sol",
            "contracts/SafeDecimalMath.sol",
            "contracts/interfaces/IERC20.sol",
            "contracts/interfaces/IFeePool.sol",
            "contracts/interfaces/ISynthetix.sol",
            "contracts/interfaces/IIssuer.sol"
        ],
        "contracts": {
            "BaseRewardEscrowV2": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, address _resolver)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned",
                            "MixinResolver"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 64
                    },
                    {
                        "name": "feePool",
                        "signature": "feePool()",
                        "returns": "(contract IFeePool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 70
                    },
                    {
                        "name": "synthetix",
                        "signature": "synthetix()",
                        "returns": "(contract ISynthetix)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 74
                    },
                    {
                        "name": "issuer",
                        "signature": "issuer()",
                        "returns": "(contract IIssuer)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 78
                    },
                    {
                        "name": "_notImplemented",
                        "signature": "_notImplemented()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "pure",
                        "requires": [],
                        "lineNumber": 82
                    },
                    {
                        "name": "resolverAddressesRequired",
                        "signature": "resolverAddressesRequired()",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 89
                    },
                    {
                        "name": "balanceOf",
                        "signature": "balanceOf(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 99
                    },
                    {
                        "name": "numVestingEntries",
                        "signature": "numVestingEntries(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 106
                    },
                    {
                        "name": "getVestingEntry",
                        "signature": "getVestingEntry(address account, uint256 entryID)",
                        "returns": "(uint64, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 114
                    },
                    {
                        "name": "getVestingSchedules",
                        "signature": "getVestingSchedules(address account, uint256 index, uint256 pageSize)",
                        "returns": "(struct VestingEntries.VestingEntryWithID[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 119
                    },
                    {
                        "name": "getAccountVestingEntryIDs",
                        "signature": "getAccountVestingEntryIDs(address account, uint256 index, uint256 pageSize)",
                        "returns": "(uint256[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 152
                    },
                    {
                        "name": "getVestingQuantity",
                        "signature": "getVestingQuantity(address account, uint256[] entryIDs)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 175
                    },
                    {
                        "name": "getVestingEntryClaimable",
                        "signature": "getVestingEntryClaimable(address account, uint256 entryID)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 189
                    },
                    {
                        "name": "_claimableAmount",
                        "signature": "_claimableAmount(struct VestingEntries.VestingEntry _entry)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 194
                    },
                    {
                        "name": "vest",
                        "signature": "vest(uint256[] entryIDs)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 210
                    },
                    {
                        "name": "createEscrowEntry",
                        "signature": "createEscrowEntry(address beneficiary, uint256 deposit, uint256 duration)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 245,
                                "name": "require(..., Cannot create escrow with address(0))"
                            },
                            {
                                "lineNumber": 248,
                                "name": "require(..., token transfer failed)"
                            }
                        ],
                        "lineNumber": 240
                    },
                    {
                        "name": "appendVestingEntry",
                        "signature": "appendVestingEntry(address account, uint256 quantity, uint256 duration)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyFeePool"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 262
                    },
                    {
                        "name": "_transferVestedTokens",
                        "signature": "_transferVestedTokens(address _account, uint256 _amount)",
                        "returns": "()",
                        "events": [
                            "Vested"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 271
                    },
                    {
                        "name": "_reduceAccountEscrowBalances",
                        "signature": "_reduceAccountEscrowBalances(address _account, uint256 _amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 278
                    },
                    {
                        "name": "accountMergingIsOpen",
                        "signature": "accountMergingIsOpen()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 286
                    },
                    {
                        "name": "startMergingWindow",
                        "signature": "startMergingWindow()",
                        "returns": "()",
                        "events": [
                            "AccountMergingStarted"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 290
                    },
                    {
                        "name": "setAccountMergingDuration",
                        "signature": "setAccountMergingDuration(uint256 duration)",
                        "returns": "()",
                        "events": [
                            "AccountMergingDurationUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 296,
                                "name": "require(..., exceeds max merging duration)"
                            }
                        ],
                        "lineNumber": 295
                    },
                    {
                        "name": "setMaxAccountMergingWindow",
                        "signature": "setMaxAccountMergingWindow(uint256 duration)",
                        "returns": "()",
                        "events": [
                            "MaxAccountMergingDurationUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 301
                    },
                    {
                        "name": "setMaxEscrowDuration",
                        "signature": "setMaxEscrowDuration(uint256 duration)",
                        "returns": "()",
                        "events": [
                            "MaxEscrowDurationUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 306
                    },
                    {
                        "name": "nominateAccountToMerge",
                        "signature": "nominateAccountToMerge(address account)",
                        "returns": "()",
                        "events": [
                            "NominateAccountToMerge"
                        ],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 313,
                                "name": "require(..., Cannot nominate own account to merge)"
                            },
                            {
                                "lineNumber": 314,
                                "name": "require(..., Account merging has ended)"
                            },
                            {
                                "lineNumber": 315,
                                "name": "require(..., Cannot merge accounts with debt)"
                            }
                        ],
                        "lineNumber": 312
                    },
                    {
                        "name": "mergeAccount",
                        "signature": "mergeAccount(address accountToMerge, uint256[] entryIDs)",
                        "returns": "()",
                        "events": [
                            "AccountMerged"
                        ],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 321,
                                "name": "require(..., Account merging has ended)"
                            },
                            {
                                "lineNumber": 322,
                                "name": "require(..., Cannot merge accounts with debt)"
                            },
                            {
                                "lineNumber": 323,
                                "name": "require(..., Address is not nominated to merge)"
                            }
                        ],
                        "lineNumber": 320
                    },
                    {
                        "name": "_addVestingEntry",
                        "signature": "_addVestingEntry(address account, struct VestingEntries.VestingEntry entry)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 356
                    },
                    {
                        "name": "migrateVestingSchedule",
                        "signature": "migrateVestingSchedule(address )",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 371
                    },
                    {
                        "name": "migrateAccountEscrowBalances",
                        "signature": "migrateAccountEscrowBalances(address[] , uint256[] , uint256[] )",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 375
                    },
                    {
                        "name": "burnForMigration",
                        "signature": "burnForMigration(address , uint256[] )",
                        "returns": "(uint256, struct VestingEntries.VestingEntry[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 385
                    },
                    {
                        "name": "importVestingEntries",
                        "signature": "importVestingEntries(address , uint256 , struct VestingEntries.VestingEntry[] )",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 389
                    },
                    {
                        "name": "_appendVestingEntry",
                        "signature": "_appendVestingEntry(address account, uint256 quantity, uint256 duration)",
                        "returns": "()",
                        "events": [
                            "VestingEntryCreated"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 405,
                                "name": "require(..., Quantity cannot be zero)"
                            },
                            {
                                "lineNumber": 406,
                                "name": "require(..., Cannot escrow with 0 duration OR above max_duration)"
                            },
                            {
                                "lineNumber": 411,
                                "name": "require(..., Must be enough balance in the contract to provide for the vesting entry)"
                            }
                        ],
                        "lineNumber": 399
                    }
                ],
                "events": [
                    {
                        "name": "Vested",
                        "parameters": "(address beneficiary, uint256 time, uint256 value)",
                        "lineNumber": 440
                    },
                    {
                        "name": "VestingEntryCreated",
                        "parameters": "(address beneficiary, uint256 time, uint256 value, uint256 duration, uint256 entryID)",
                        "lineNumber": 441
                    },
                    {
                        "name": "MaxEscrowDurationUpdated",
                        "parameters": "(uint256 newDuration)",
                        "lineNumber": 442
                    },
                    {
                        "name": "MaxAccountMergingDurationUpdated",
                        "parameters": "(uint256 newDuration)",
                        "lineNumber": 443
                    },
                    {
                        "name": "AccountMergingDurationUpdated",
                        "parameters": "(uint256 newDuration)",
                        "lineNumber": 444
                    },
                    {
                        "name": "AccountMergingStarted",
                        "parameters": "(uint256 time, uint256 endTime)",
                        "lineNumber": 445
                    },
                    {
                        "name": "AccountMerged",
                        "parameters": "(address accountToMerge, address destinationAddress, uint256 escrowAmountMerged, uint256[] entryIDs, uint256 time)",
                        "lineNumber": 446
                    },
                    {
                        "name": "NominateAccountToMerge",
                        "parameters": "(address account, address destination)",
                        "lineNumber": 453
                    }
                ],
                "variables": [
                    {
                        "name": "vestingSchedules",
                        "constant": false,
                        "type": "mapping(address => mapping(uint256 => struct VestingEntries.VestingEntry))",
                        "lineNumber": 25,
                        "visibility": "public"
                    },
                    {
                        "name": "accountVestingEntryIDs",
                        "constant": false,
                        "type": "mapping(address => uint256[])",
                        "lineNumber": 27,
                        "visibility": "public"
                    },
                    {
                        "name": "nextEntryId",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 30,
                        "visibility": "public"
                    },
                    {
                        "name": "totalEscrowedAccountBalance",
                        "constant": false,
                        "type": "mapping(address => uint256)",
                        "lineNumber": 33,
                        "visibility": "public"
                    },
                    {
                        "name": "totalVestedAccountBalance",
                        "constant": false,
                        "type": "mapping(address => uint256)",
                        "lineNumber": 36,
                        "visibility": "public"
                    },
                    {
                        "name": "nominatedReceiver",
                        "constant": false,
                        "type": "mapping(address => address)",
                        "lineNumber": 39,
                        "visibility": "public"
                    },
                    {
                        "name": "totalEscrowedBalance",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 42,
                        "visibility": "public"
                    },
                    {
                        "name": "max_duration",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 45,
                        "visibility": "public"
                    },
                    {
                        "name": "maxAccountMergingDuration",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 48,
                        "visibility": "public"
                    },
                    {
                        "name": "accountMergingDuration",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 52,
                        "visibility": "public"
                    },
                    {
                        "name": "accountMergingStartTime",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 54,
                        "visibility": "public"
                    },
                    {
                        "name": "CONTRACT_SYNTHETIX",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 58,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_ISSUER",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 59,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_FEEPOOL",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 60,
                        "visibility": "private"
                    }
                ],
                "modifiers": [
                    {
                        "name": "onlyFeePool",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 434
                    }
                ],
                "structs": [],
                "inherits": [
                    "Owned",
                    "IRewardEscrowV2",
                    "LimitedSetup",
                    "MixinResolver"
                ],
                "libraries": [
                    {
                        "name": "SafeMath",
                        "type": "uint"
                    },
                    {
                        "name": "SafeDecimalMath",
                        "type": "uint"
                    }
                ]
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/LimitedSetup.sol": {
        "imports": [],
        "contracts": {
            "LimitedSetup": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(uint256 setupDuration)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 12
                    }
                ],
                "events": [],
                "variables": [
                    {
                        "name": "setupExpiryTime",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 6,
                        "visibility": "public"
                    }
                ],
                "modifiers": [
                    {
                        "name": "onlyDuringSetup",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 16
                    }
                ],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/interfaces/IRewardEscrowV2.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {
            "IRewardEscrowV2": {
                "functions": [
                    {
                        "name": "balanceOf",
                        "signature": "balanceOf(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 20
                    },
                    {
                        "name": "numVestingEntries",
                        "signature": "numVestingEntries(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 22
                    },
                    {
                        "name": "totalEscrowedAccountBalance",
                        "signature": "totalEscrowedAccountBalance(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 24
                    },
                    {
                        "name": "totalVestedAccountBalance",
                        "signature": "totalVestedAccountBalance(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 26
                    },
                    {
                        "name": "getVestingQuantity",
                        "signature": "getVestingQuantity(address account, uint256[] entryIDs)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 28
                    },
                    {
                        "name": "getVestingSchedules",
                        "signature": "getVestingSchedules(address account, uint256 index, uint256 pageSize)",
                        "returns": "(struct VestingEntries.VestingEntryWithID[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 30
                    },
                    {
                        "name": "getAccountVestingEntryIDs",
                        "signature": "getAccountVestingEntryIDs(address account, uint256 index, uint256 pageSize)",
                        "returns": "(uint256[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 36
                    },
                    {
                        "name": "getVestingEntryClaimable",
                        "signature": "getVestingEntryClaimable(address account, uint256 entryID)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 42
                    },
                    {
                        "name": "getVestingEntry",
                        "signature": "getVestingEntry(address account, uint256 entryID)",
                        "returns": "(uint64, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 44
                    },
                    {
                        "name": "vest",
                        "signature": "vest(uint256[] entryIDs)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 47
                    },
                    {
                        "name": "createEscrowEntry",
                        "signature": "createEscrowEntry(address beneficiary, uint256 deposit, uint256 duration)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 49
                    },
                    {
                        "name": "appendVestingEntry",
                        "signature": "appendVestingEntry(address account, uint256 quantity, uint256 duration)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 55
                    },
                    {
                        "name": "migrateVestingSchedule",
                        "signature": "migrateVestingSchedule(address _addressToMigrate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 61
                    },
                    {
                        "name": "migrateAccountEscrowBalances",
                        "signature": "migrateAccountEscrowBalances(address[] accounts, uint256[] escrowBalances, uint256[] vestedBalances)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 63
                    },
                    {
                        "name": "startMergingWindow",
                        "signature": "startMergingWindow()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 70
                    },
                    {
                        "name": "mergeAccount",
                        "signature": "mergeAccount(address accountToMerge, uint256[] entryIDs)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 72
                    },
                    {
                        "name": "nominateAccountToMerge",
                        "signature": "nominateAccountToMerge(address account)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 74
                    },
                    {
                        "name": "accountMergingIsOpen",
                        "signature": "accountMergingIsOpen()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 76
                    },
                    {
                        "name": "importVestingEntries",
                        "signature": "importVestingEntries(address account, uint256 escrowedAmount, struct VestingEntries.VestingEntry[] vestingEntries)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 79
                    },
                    {
                        "name": "burnForMigration",
                        "signature": "burnForMigration(address account, uint256[] entryIDs)",
                        "returns": "(uint256, struct VestingEntries.VestingEntry[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 86
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {
            "VestingEntries": {
                "functions": [],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [
                    {
                        "name": "VestingEntry",
                        "members": [
                            {
                                "name": "endTime",
                                "type": "uint64"
                            },
                            {
                                "name": "escrowAmount",
                                "type": "uint256"
                            }
                        ],
                        "lineNumber": 6
                    },
                    {
                        "name": "VestingEntryWithID",
                        "members": [
                            {
                                "name": "endTime",
                                "type": "uint64"
                            },
                            {
                                "name": "escrowAmount",
                                "type": "uint256"
                            },
                            {
                                "name": "entryID",
                                "type": "uint256"
                            }
                        ],
                        "lineNumber": 10
                    }
                ],
                "inherits": [],
                "libraries": []
            }
        }
    },
    "contracts/SafeDecimalMath.sol": {
        "imports": [
            "openzeppelin-solidity-2.3.0/contracts/math/SafeMath.sol"
        ],
        "contracts": {},
        "interfaces": {},
        "libraries": {
            "SafeDecimalMath": {
                "functions": [
                    {
                        "name": "unit",
                        "signature": "unit()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "pure",
                        "requires": [],
                        "lineNumber": 25
                    },
                    {
                        "name": "preciseUnit",
                        "signature": "preciseUnit()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "pure",
                        "requires": [],
                        "lineNumber": 32
                    },
                    {
                        "name": "multiplyDecimal",
                        "signature": "multiplyDecimal(uint256 x, uint256 y)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "pure",
                        "requires": [],
                        "lineNumber": 45
                    },
                    {
                        "name": "_multiplyDecimalRound",
                        "signature": "_multiplyDecimalRound(uint256 x, uint256 y, uint256 precisionUnit)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "private",
                        "stateMutability": "pure",
                        "requires": [],
                        "lineNumber": 62
                    },
                    {
                        "name": "multiplyDecimalRoundPrecise",
                        "signature": "multiplyDecimalRoundPrecise(uint256 x, uint256 y)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "pure",
                        "requires": [],
                        "lineNumber": 89
                    },
                    {
                        "name": "multiplyDecimalRound",
                        "signature": "multiplyDecimalRound(uint256 x, uint256 y)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "pure",
                        "requires": [],
                        "lineNumber": 105
                    },
                    {
                        "name": "divideDecimal",
                        "signature": "divideDecimal(uint256 x, uint256 y)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "pure",
                        "requires": [],
                        "lineNumber": 118
                    },
                    {
                        "name": "_divideDecimalRound",
                        "signature": "_divideDecimalRound(uint256 x, uint256 y, uint256 precisionUnit)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "private",
                        "stateMutability": "pure",
                        "requires": [],
                        "lineNumber": 131
                    },
                    {
                        "name": "divideDecimalRound",
                        "signature": "divideDecimalRound(uint256 x, uint256 y)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "pure",
                        "requires": [],
                        "lineNumber": 153
                    },
                    {
                        "name": "divideDecimalRoundPrecise",
                        "signature": "divideDecimalRoundPrecise(uint256 x, uint256 y)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "pure",
                        "requires": [],
                        "lineNumber": 165
                    },
                    {
                        "name": "decimalToPreciseDecimal",
                        "signature": "decimalToPreciseDecimal(uint256 i)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "pure",
                        "requires": [],
                        "lineNumber": 172
                    },
                    {
                        "name": "preciseDecimalToDecimal",
                        "signature": "preciseDecimalToDecimal(uint256 i)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "pure",
                        "requires": [],
                        "lineNumber": 179
                    }
                ],
                "events": [],
                "variables": [
                    {
                        "name": "decimals",
                        "constant": true,
                        "type": "uint8",
                        "lineNumber": 12,
                        "visibility": "public"
                    },
                    {
                        "name": "highPrecisionDecimals",
                        "constant": true,
                        "type": "uint8",
                        "lineNumber": 13,
                        "visibility": "public"
                    },
                    {
                        "name": "UNIT",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 16,
                        "visibility": "public"
                    },
                    {
                        "name": "PRECISE_UNIT",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 19,
                        "visibility": "public"
                    },
                    {
                        "name": "UNIT_TO_HIGH_PRECISION_CONVERSION_FACTOR",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 20,
                        "visibility": "private"
                    }
                ],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": [
                    {
                        "name": "SafeMath",
                        "type": "uint"
                    }
                ]
            }
        }
    },
    "openzeppelin-solidity-2.3.0/contracts/math/SafeMath.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {},
        "libraries": {
            "SafeMath": {
                "functions": [
                    {
                        "name": "add",
                        "signature": "add(uint256 a, uint256 b)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "pure",
                        "requires": [
                            {
                                "lineNumber": 28,
                                "name": "require(..., SafeMath: addition overflow)"
                            }
                        ],
                        "lineNumber": 26
                    },
                    {
                        "name": "sub",
                        "signature": "sub(uint256 a, uint256 b)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "pure",
                        "requires": [
                            {
                                "lineNumber": 43,
                                "name": "require(..., SafeMath: subtraction overflow)"
                            }
                        ],
                        "lineNumber": 42
                    },
                    {
                        "name": "mul",
                        "signature": "mul(uint256 a, uint256 b)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "pure",
                        "requires": [
                            {
                                "lineNumber": 67,
                                "name": "require(..., SafeMath: multiplication overflow)"
                            }
                        ],
                        "lineNumber": 58
                    },
                    {
                        "name": "div",
                        "signature": "div(uint256 a, uint256 b)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "pure",
                        "requires": [
                            {
                                "lineNumber": 85,
                                "name": "require(..., SafeMath: division by zero)"
                            }
                        ],
                        "lineNumber": 83
                    },
                    {
                        "name": "mod",
                        "signature": "mod(uint256 a, uint256 b)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "pure",
                        "requires": [
                            {
                                "lineNumber": 104,
                                "name": "require(..., SafeMath: modulo by zero)"
                            }
                        ],
                        "lineNumber": 103
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        }
    },
    "contracts/interfaces/IERC20.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {
            "IERC20": {
                "functions": [
                    {
                        "name": "name",
                        "signature": "name()",
                        "returns": "(string)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 7
                    },
                    {
                        "name": "symbol",
                        "signature": "symbol()",
                        "returns": "(string)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 9
                    },
                    {
                        "name": "decimals",
                        "signature": "decimals()",
                        "returns": "(uint8)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 11
                    },
                    {
                        "name": "totalSupply",
                        "signature": "totalSupply()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 14
                    },
                    {
                        "name": "balanceOf",
                        "signature": "balanceOf(address owner)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 16
                    },
                    {
                        "name": "allowance",
                        "signature": "allowance(address owner, address spender)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 18
                    },
                    {
                        "name": "transfer",
                        "signature": "transfer(address to, uint256 value)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 21
                    },
                    {
                        "name": "approve",
                        "signature": "approve(address spender, uint256 value)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 23
                    },
                    {
                        "name": "transferFrom",
                        "signature": "transferFrom(address from, address to, uint256 value)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 25
                    }
                ],
                "events": [
                    {
                        "name": "Transfer",
                        "parameters": "(address from, address to, uint256 value)",
                        "lineNumber": 32
                    },
                    {
                        "name": "Approval",
                        "parameters": "(address owner, address spender, uint256 value)",
                        "lineNumber": 34
                    }
                ],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/interfaces/IFeePool.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {
            "IFeePool": {
                "functions": [
                    {
                        "name": "FEE_ADDRESS",
                        "signature": "FEE_ADDRESS()",
                        "returns": "(address)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 9
                    },
                    {
                        "name": "feesAvailable",
                        "signature": "feesAvailable(address account)",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 11
                    },
                    {
                        "name": "feePeriodDuration",
                        "signature": "feePeriodDuration()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 13
                    },
                    {
                        "name": "isFeesClaimable",
                        "signature": "isFeesClaimable(address account)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 15
                    },
                    {
                        "name": "targetThreshold",
                        "signature": "targetThreshold()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 17
                    },
                    {
                        "name": "totalFeesAvailable",
                        "signature": "totalFeesAvailable()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 19
                    },
                    {
                        "name": "totalRewardsAvailable",
                        "signature": "totalRewardsAvailable()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 21
                    },
                    {
                        "name": "claimFees",
                        "signature": "claimFees()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 24
                    },
                    {
                        "name": "claimOnBehalf",
                        "signature": "claimOnBehalf(address claimingForAddress)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 26
                    },
                    {
                        "name": "closeCurrentFeePeriod",
                        "signature": "closeCurrentFeePeriod()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 28
                    },
                    {
                        "name": "appendAccountIssuanceRecord",
                        "signature": "appendAccountIssuanceRecord(address account, uint256 lockedAmount, uint256 debtEntryIndex)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 31
                    },
                    {
                        "name": "recordFeePaid",
                        "signature": "recordFeePaid(uint256 sUSDAmount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 37
                    },
                    {
                        "name": "setRewardsToDistribute",
                        "signature": "setRewardsToDistribute(uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 39
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/interfaces/ISynthetix.sol": {
        "imports": [
            "contracts/interfaces/ISynth.sol",
            "contracts/interfaces/IVirtualSynth.sol"
        ],
        "contracts": {},
        "interfaces": {
            "ISynthetix": {
                "functions": [
                    {
                        "name": "anySynthOrSNXRateIsInvalid",
                        "signature": "anySynthOrSNXRateIsInvalid()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 10
                    },
                    {
                        "name": "availableCurrencyKeys",
                        "signature": "availableCurrencyKeys()",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 12
                    },
                    {
                        "name": "availableSynthCount",
                        "signature": "availableSynthCount()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 14
                    },
                    {
                        "name": "availableSynths",
                        "signature": "availableSynths(uint256 index)",
                        "returns": "(contract ISynth)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 16
                    },
                    {
                        "name": "collateral",
                        "signature": "collateral(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 18
                    },
                    {
                        "name": "collateralisationRatio",
                        "signature": "collateralisationRatio(address issuer)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 20
                    },
                    {
                        "name": "debtBalanceOf",
                        "signature": "debtBalanceOf(address issuer, bytes32 currencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 22
                    },
                    {
                        "name": "isWaitingPeriod",
                        "signature": "isWaitingPeriod(bytes32 currencyKey)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 24
                    },
                    {
                        "name": "maxIssuableSynths",
                        "signature": "maxIssuableSynths(address issuer)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 26
                    },
                    {
                        "name": "remainingIssuableSynths",
                        "signature": "remainingIssuableSynths(address issuer)",
                        "returns": "(uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 28
                    },
                    {
                        "name": "synths",
                        "signature": "synths(bytes32 currencyKey)",
                        "returns": "(contract ISynth)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 37
                    },
                    {
                        "name": "synthsByAddress",
                        "signature": "synthsByAddress(address synthAddress)",
                        "returns": "(bytes32)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 39
                    },
                    {
                        "name": "totalIssuedSynths",
                        "signature": "totalIssuedSynths(bytes32 currencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 41
                    },
                    {
                        "name": "totalIssuedSynthsExcludeEtherCollateral",
                        "signature": "totalIssuedSynthsExcludeEtherCollateral(bytes32 currencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 43
                    },
                    {
                        "name": "transferableSynthetix",
                        "signature": "transferableSynthetix(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 45
                    },
                    {
                        "name": "burnSynths",
                        "signature": "burnSynths(uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 48
                    },
                    {
                        "name": "burnSynthsOnBehalf",
                        "signature": "burnSynthsOnBehalf(address burnForAddress, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 50
                    },
                    {
                        "name": "burnSynthsToTarget",
                        "signature": "burnSynthsToTarget()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 52
                    },
                    {
                        "name": "burnSynthsToTargetOnBehalf",
                        "signature": "burnSynthsToTargetOnBehalf(address burnForAddress)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 54
                    },
                    {
                        "name": "exchange",
                        "signature": "exchange(bytes32 sourceCurrencyKey, uint256 sourceAmount, bytes32 destinationCurrencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 56
                    },
                    {
                        "name": "exchangeOnBehalf",
                        "signature": "exchangeOnBehalf(address exchangeForAddress, bytes32 sourceCurrencyKey, uint256 sourceAmount, bytes32 destinationCurrencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 62
                    },
                    {
                        "name": "exchangeWithTracking",
                        "signature": "exchangeWithTracking(bytes32 sourceCurrencyKey, uint256 sourceAmount, bytes32 destinationCurrencyKey, address originator, bytes32 trackingCode)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 69
                    },
                    {
                        "name": "exchangeOnBehalfWithTracking",
                        "signature": "exchangeOnBehalfWithTracking(address exchangeForAddress, bytes32 sourceCurrencyKey, uint256 sourceAmount, bytes32 destinationCurrencyKey, address originator, bytes32 trackingCode)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 77
                    },
                    {
                        "name": "exchangeWithVirtual",
                        "signature": "exchangeWithVirtual(bytes32 sourceCurrencyKey, uint256 sourceAmount, bytes32 destinationCurrencyKey, bytes32 trackingCode)",
                        "returns": "(uint256, contract IVirtualSynth)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 86
                    },
                    {
                        "name": "issueMaxSynths",
                        "signature": "issueMaxSynths()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 93
                    },
                    {
                        "name": "issueMaxSynthsOnBehalf",
                        "signature": "issueMaxSynthsOnBehalf(address issueForAddress)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 95
                    },
                    {
                        "name": "issueSynths",
                        "signature": "issueSynths(uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 97
                    },
                    {
                        "name": "issueSynthsOnBehalf",
                        "signature": "issueSynthsOnBehalf(address issueForAddress, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 99
                    },
                    {
                        "name": "mint",
                        "signature": "mint()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 101
                    },
                    {
                        "name": "settle",
                        "signature": "settle(bytes32 currencyKey)",
                        "returns": "(uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 103
                    },
                    {
                        "name": "liquidateDelinquentAccount",
                        "signature": "liquidateDelinquentAccount(address account, uint256 susdAmount)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 112
                    },
                    {
                        "name": "mintSecondary",
                        "signature": "mintSecondary(address account, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 116
                    },
                    {
                        "name": "mintSecondaryRewards",
                        "signature": "mintSecondaryRewards(uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 118
                    },
                    {
                        "name": "burnSecondary",
                        "signature": "burnSecondary(address account, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 120
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/interfaces/IVirtualSynth.sol": {
        "imports": [
            "contracts/interfaces/ISynth.sol"
        ],
        "contracts": {},
        "interfaces": {
            "IVirtualSynth": {
                "functions": [
                    {
                        "name": "balanceOfUnderlying",
                        "signature": "balanceOfUnderlying(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 8
                    },
                    {
                        "name": "rate",
                        "signature": "rate()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 10
                    },
                    {
                        "name": "readyToSettle",
                        "signature": "readyToSettle()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 12
                    },
                    {
                        "name": "secsLeftInWaitingPeriod",
                        "signature": "secsLeftInWaitingPeriod()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 14
                    },
                    {
                        "name": "settled",
                        "signature": "settled()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 16
                    },
                    {
                        "name": "synth",
                        "signature": "synth()",
                        "returns": "(contract ISynth)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 18
                    },
                    {
                        "name": "settle",
                        "signature": "settle(address account)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 21
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/BaseSynthetix.sol": {
        "imports": [
            "contracts/interfaces/IERC20.sol",
            "contracts/ExternStateToken.sol",
            "contracts/MixinResolver.sol",
            "contracts/interfaces/ISynthetix.sol",
            "contracts/interfaces/ISynth.sol",
            "contracts/TokenState.sol",
            "contracts/interfaces/ISynthetixState.sol",
            "contracts/interfaces/ISystemStatus.sol",
            "contracts/interfaces/IExchanger.sol",
            "contracts/interfaces/IIssuer.sol",
            "contracts/interfaces/IRewardsDistribution.sol",
            "contracts/interfaces/IVirtualSynth.sol"
        ],
        "contracts": {
            "BaseSynthetix": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address payable _proxy, contract TokenState _tokenState, address _owner, uint256 _totalSupply, address _resolver)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "ExternStateToken",
                            "MixinResolver"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 38
                    },
                    {
                        "name": "resolverAddressesRequired",
                        "signature": "resolverAddressesRequired()",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 53
                    },
                    {
                        "name": "synthetixState",
                        "signature": "synthetixState()",
                        "returns": "(contract ISynthetixState)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 62
                    },
                    {
                        "name": "systemStatus",
                        "signature": "systemStatus()",
                        "returns": "(contract ISystemStatus)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 66
                    },
                    {
                        "name": "exchanger",
                        "signature": "exchanger()",
                        "returns": "(contract IExchanger)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 70
                    },
                    {
                        "name": "issuer",
                        "signature": "issuer()",
                        "returns": "(contract IIssuer)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 74
                    },
                    {
                        "name": "rewardsDistribution",
                        "signature": "rewardsDistribution()",
                        "returns": "(contract IRewardsDistribution)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 78
                    },
                    {
                        "name": "debtBalanceOf",
                        "signature": "debtBalanceOf(address account, bytes32 currencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 82
                    },
                    {
                        "name": "totalIssuedSynths",
                        "signature": "totalIssuedSynths(bytes32 currencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 86
                    },
                    {
                        "name": "totalIssuedSynthsExcludeEtherCollateral",
                        "signature": "totalIssuedSynthsExcludeEtherCollateral(bytes32 currencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 90
                    },
                    {
                        "name": "availableCurrencyKeys",
                        "signature": "availableCurrencyKeys()",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 94
                    },
                    {
                        "name": "availableSynthCount",
                        "signature": "availableSynthCount()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 98
                    },
                    {
                        "name": "availableSynths",
                        "signature": "availableSynths(uint256 index)",
                        "returns": "(contract ISynth)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 102
                    },
                    {
                        "name": "synths",
                        "signature": "synths(bytes32 currencyKey)",
                        "returns": "(contract ISynth)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 106
                    },
                    {
                        "name": "synthsByAddress",
                        "signature": "synthsByAddress(address synthAddress)",
                        "returns": "(bytes32)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 110
                    },
                    {
                        "name": "isWaitingPeriod",
                        "signature": "isWaitingPeriod(bytes32 currencyKey)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 114
                    },
                    {
                        "name": "anySynthOrSNXRateIsInvalid",
                        "signature": "anySynthOrSNXRateIsInvalid()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 118
                    },
                    {
                        "name": "maxIssuableSynths",
                        "signature": "maxIssuableSynths(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 122
                    },
                    {
                        "name": "remainingIssuableSynths",
                        "signature": "remainingIssuableSynths(address account)",
                        "returns": "(uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 126
                    },
                    {
                        "name": "collateralisationRatio",
                        "signature": "collateralisationRatio(address _issuer)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 138
                    },
                    {
                        "name": "collateral",
                        "signature": "collateral(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 142
                    },
                    {
                        "name": "transferableSynthetix",
                        "signature": "transferableSynthetix(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 146
                    },
                    {
                        "name": "_canTransfer",
                        "signature": "_canTransfer(address account, uint256 value)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 150
                    },
                    {
                        "name": "transfer",
                        "signature": "transfer(address to, uint256 value)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [
                            "optionalProxy",
                            "systemActive"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 166
                    },
                    {
                        "name": "transferFrom",
                        "signature": "transferFrom(address from, address to, uint256 value)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [
                            "optionalProxy",
                            "systemActive"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 176
                    },
                    {
                        "name": "issueSynths",
                        "signature": "issueSynths(uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "issuanceActive",
                            "optionalProxy"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 189
                    },
                    {
                        "name": "issueSynthsOnBehalf",
                        "signature": "issueSynthsOnBehalf(address issueForAddress, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "issuanceActive",
                            "optionalProxy"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 193
                    },
                    {
                        "name": "issueMaxSynths",
                        "signature": "issueMaxSynths()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "issuanceActive",
                            "optionalProxy"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 197
                    },
                    {
                        "name": "issueMaxSynthsOnBehalf",
                        "signature": "issueMaxSynthsOnBehalf(address issueForAddress)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "issuanceActive",
                            "optionalProxy"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 201
                    },
                    {
                        "name": "burnSynths",
                        "signature": "burnSynths(uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "issuanceActive",
                            "optionalProxy"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 205
                    },
                    {
                        "name": "burnSynthsOnBehalf",
                        "signature": "burnSynthsOnBehalf(address burnForAddress, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "issuanceActive",
                            "optionalProxy"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 209
                    },
                    {
                        "name": "burnSynthsToTarget",
                        "signature": "burnSynthsToTarget()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "issuanceActive",
                            "optionalProxy"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 213
                    },
                    {
                        "name": "burnSynthsToTargetOnBehalf",
                        "signature": "burnSynthsToTargetOnBehalf(address burnForAddress)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "issuanceActive",
                            "optionalProxy"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 217
                    },
                    {
                        "name": "exchange",
                        "signature": "exchange(bytes32 , uint256 , bytes32 )",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 221
                    },
                    {
                        "name": "exchangeOnBehalf",
                        "signature": "exchangeOnBehalf(address , bytes32 , uint256 , bytes32 )",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 229
                    },
                    {
                        "name": "exchangeWithTracking",
                        "signature": "exchangeWithTracking(bytes32 , uint256 , bytes32 , address , bytes32 )",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 238
                    },
                    {
                        "name": "exchangeOnBehalfWithTracking",
                        "signature": "exchangeOnBehalfWithTracking(address , bytes32 , uint256 , bytes32 , address , bytes32 )",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 248
                    },
                    {
                        "name": "exchangeWithVirtual",
                        "signature": "exchangeWithVirtual(bytes32 , uint256 , bytes32 , bytes32 )",
                        "returns": "(uint256, contract IVirtualSynth)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 259
                    },
                    {
                        "name": "settle",
                        "signature": "settle(bytes32 )",
                        "returns": "(uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 268
                    },
                    {
                        "name": "mint",
                        "signature": "mint()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 279
                    },
                    {
                        "name": "liquidateDelinquentAccount",
                        "signature": "liquidateDelinquentAccount(address , uint256 )",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 283
                    },
                    {
                        "name": "mintSecondary",
                        "signature": "mintSecondary(address , uint256 )",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 287
                    },
                    {
                        "name": "mintSecondaryRewards",
                        "signature": "mintSecondaryRewards(uint256 )",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 291
                    },
                    {
                        "name": "burnSecondary",
                        "signature": "burnSecondary(address , uint256 )",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 295
                    },
                    {
                        "name": "_notImplemented",
                        "signature": "_notImplemented()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "pure",
                        "requires": [],
                        "lineNumber": 299
                    },
                    {
                        "name": "_systemActive",
                        "signature": "_systemActive()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "private",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 310
                    },
                    {
                        "name": "_issuanceActive",
                        "signature": "_issuanceActive()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "private",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 319
                    }
                ],
                "events": [],
                "variables": [
                    {
                        "name": "TOKEN_NAME",
                        "constant": true,
                        "type": "string",
                        "lineNumber": 24,
                        "visibility": "public"
                    },
                    {
                        "name": "TOKEN_SYMBOL",
                        "constant": true,
                        "type": "string",
                        "lineNumber": 25,
                        "visibility": "public"
                    },
                    {
                        "name": "DECIMALS",
                        "constant": true,
                        "type": "uint8",
                        "lineNumber": 26,
                        "visibility": "public"
                    },
                    {
                        "name": "sUSD",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 27,
                        "visibility": "public"
                    },
                    {
                        "name": "CONTRACT_SYNTHETIXSTATE",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 30,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_SYSTEMSTATUS",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 31,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_EXCHANGER",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 32,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_ISSUER",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 33,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_REWARDSDISTRIBUTION",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 34,
                        "visibility": "private"
                    }
                ],
                "modifiers": [
                    {
                        "name": "systemActive",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 305
                    },
                    {
                        "name": "issuanceActive",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 314
                    }
                ],
                "structs": [],
                "inherits": [
                    "IERC20",
                    "ExternStateToken",
                    "MixinResolver",
                    "ISynthetix"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/ExternStateToken.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/Proxyable.sol",
            "contracts/SafeDecimalMath.sol",
            "contracts/TokenState.sol"
        ],
        "contracts": {
            "ExternStateToken": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address payable _proxy, contract TokenState _tokenState, string _name, string _symbol, uint256 _totalSupply, uint8 _decimals, address _owner)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned",
                            "Proxyable"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 30
                    },
                    {
                        "name": "allowance",
                        "signature": "allowance(address owner, address spender)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 54
                    },
                    {
                        "name": "balanceOf",
                        "signature": "balanceOf(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 61
                    },
                    {
                        "name": "setTokenState",
                        "signature": "setTokenState(contract TokenState _tokenState)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "optionalProxy_onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 72
                    },
                    {
                        "name": "_internalTransfer",
                        "signature": "_internalTransfer(address from, address to, uint256 value)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 83,
                                "name": "require(..., Cannot transfer to this address)"
                            }
                        ],
                        "lineNumber": 77
                    },
                    {
                        "name": "_transferByProxy",
                        "signature": "_transferByProxy(address from, address to, uint256 value)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 99
                    },
                    {
                        "name": "_transferFromByProxy",
                        "signature": "_transferFromByProxy(address sender, address from, address to, uint256 value)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 111
                    },
                    {
                        "name": "approve",
                        "signature": "approve(address spender, uint256 value)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [
                            "optionalProxy"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 125
                    },
                    {
                        "name": "addressToBytes32",
                        "signature": "addressToBytes32(address input)",
                        "returns": "(bytes32)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "pure",
                        "requires": [],
                        "lineNumber": 134
                    },
                    {
                        "name": "emitTransfer",
                        "signature": "emitTransfer(address from, address to, uint256 value)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 141
                    },
                    {
                        "name": "emitApproval",
                        "signature": "emitApproval(address owner, address spender, uint256 value)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 152
                    },
                    {
                        "name": "emitTokenStateUpdated",
                        "signature": "emitTokenStateUpdated(address newTokenState)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 163
                    }
                ],
                "events": [
                    {
                        "name": "Transfer",
                        "parameters": "(address from, address to, uint256 value)",
                        "lineNumber": 138
                    },
                    {
                        "name": "Approval",
                        "parameters": "(address owner, address spender, uint256 value)",
                        "lineNumber": 149
                    },
                    {
                        "name": "TokenStateUpdated",
                        "parameters": "(address newTokenState)",
                        "lineNumber": 160
                    }
                ],
                "variables": [
                    {
                        "name": "tokenState",
                        "constant": false,
                        "type": "contract TokenState",
                        "lineNumber": 22,
                        "visibility": "public"
                    },
                    {
                        "name": "name",
                        "constant": false,
                        "type": "string",
                        "lineNumber": 25,
                        "visibility": "public"
                    },
                    {
                        "name": "symbol",
                        "constant": false,
                        "type": "string",
                        "lineNumber": 26,
                        "visibility": "public"
                    },
                    {
                        "name": "totalSupply",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 27,
                        "visibility": "public"
                    },
                    {
                        "name": "decimals",
                        "constant": false,
                        "type": "uint8",
                        "lineNumber": 28,
                        "visibility": "public"
                    },
                    {
                        "name": "TRANSFER_SIG",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 139,
                        "visibility": "internal"
                    },
                    {
                        "name": "APPROVAL_SIG",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 150,
                        "visibility": "internal"
                    },
                    {
                        "name": "TOKENSTATEUPDATED_SIG",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 161,
                        "visibility": "internal"
                    }
                ],
                "modifiers": [],
                "structs": [],
                "inherits": [
                    "Owned",
                    "Proxyable"
                ],
                "libraries": [
                    {
                        "name": "SafeMath",
                        "type": "uint"
                    },
                    {
                        "name": "SafeDecimalMath",
                        "type": "uint"
                    }
                ]
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/Proxyable.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/Proxy.sol"
        ],
        "contracts": {
            "Proxyable": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address payable _proxy)",
                        "returns": "()",
                        "events": [
                            "ProxyUpdated"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 25,
                                "name": "require(..., Owner must be set)"
                            }
                        ],
                        "lineNumber": 23
                    },
                    {
                        "name": "setProxy",
                        "signature": "setProxy(address payable _proxy)",
                        "returns": "()",
                        "events": [
                            "ProxyUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 31
                    },
                    {
                        "name": "setIntegrationProxy",
                        "signature": "setIntegrationProxy(address payable _integrationProxy)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 36
                    },
                    {
                        "name": "setMessageSender",
                        "signature": "setMessageSender(address sender)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyProxy"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 40
                    },
                    {
                        "name": "_onlyProxy",
                        "signature": "_onlyProxy()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "private",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 50,
                                "name": "require(..., Only the proxy can call)"
                            }
                        ],
                        "lineNumber": 49
                    },
                    {
                        "name": "_optionalProxy",
                        "signature": "_optionalProxy()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "private",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 58
                    },
                    {
                        "name": "_optionalProxy_onlyOwner",
                        "signature": "_optionalProxy_onlyOwner()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "private",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 74,
                                "name": "require(..., Owner only function)"
                            }
                        ],
                        "lineNumber": 70
                    }
                ],
                "events": [
                    {
                        "name": "ProxyUpdated",
                        "parameters": "(address proxyAddress)",
                        "lineNumber": 77
                    }
                ],
                "variables": [
                    {
                        "name": "proxy",
                        "constant": false,
                        "type": "contract Proxy",
                        "lineNumber": 15,
                        "visibility": "public"
                    },
                    {
                        "name": "integrationProxy",
                        "constant": false,
                        "type": "contract Proxy",
                        "lineNumber": 16,
                        "visibility": "public"
                    },
                    {
                        "name": "messageSender",
                        "constant": false,
                        "type": "address",
                        "lineNumber": 21,
                        "visibility": "public"
                    }
                ],
                "modifiers": [
                    {
                        "name": "onlyProxy",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 44
                    },
                    {
                        "name": "optionalProxy",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 53
                    },
                    {
                        "name": "optionalProxy_onlyOwner",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 64
                    }
                ],
                "structs": [],
                "inherits": [
                    "Owned"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/Proxy.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/Proxyable.sol"
        ],
        "contracts": {
            "Proxy": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 14
                    },
                    {
                        "name": "setTarget",
                        "signature": "setTarget(contract Proxyable _target)",
                        "returns": "()",
                        "events": [
                            "TargetUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 16
                    },
                    {
                        "name": "_emit",
                        "signature": "_emit(bytes callData, uint256 numTopics, bytes32 topic1, bytes32 topic2, bytes32 topic3, bytes32 topic4)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyTarget"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 21
                    },
                    {
                        "name": "fallback",
                        "signature": "()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "payable",
                        "requires": [],
                        "lineNumber": 58
                    }
                ],
                "events": [
                    {
                        "name": "TargetUpdated",
                        "parameters": "(contract Proxyable newTarget)",
                        "lineNumber": 82
                    }
                ],
                "variables": [
                    {
                        "name": "target",
                        "constant": false,
                        "type": "contract Proxyable",
                        "lineNumber": 12,
                        "visibility": "public"
                    }
                ],
                "modifiers": [
                    {
                        "name": "onlyTarget",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 77
                    }
                ],
                "structs": [],
                "inherits": [
                    "Owned"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/TokenState.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/State.sol"
        ],
        "contracts": {
            "TokenState": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, address _associatedContract)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned",
                            "State"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 14
                    },
                    {
                        "name": "setAllowance",
                        "signature": "setAllowance(address tokenOwner, address spender, uint256 value)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 26
                    },
                    {
                        "name": "setBalanceOf",
                        "signature": "setBalanceOf(address account, uint256 value)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 40
                    }
                ],
                "events": [],
                "variables": [
                    {
                        "name": "balanceOf",
                        "constant": false,
                        "type": "mapping(address => uint256)",
                        "lineNumber": 11,
                        "visibility": "public"
                    },
                    {
                        "name": "allowance",
                        "constant": false,
                        "type": "mapping(address => mapping(address => uint256))",
                        "lineNumber": 12,
                        "visibility": "public"
                    }
                ],
                "modifiers": [],
                "structs": [],
                "inherits": [
                    "Owned",
                    "State"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/State.sol": {
        "imports": [
            "contracts/Owned.sol"
        ],
        "contracts": {
            "State": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _associatedContract)",
                        "returns": "()",
                        "events": [
                            "AssociatedContractUpdated"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 15,
                                "name": "require(..., Owner must be set)"
                            }
                        ],
                        "lineNumber": 13
                    },
                    {
                        "name": "setAssociatedContract",
                        "signature": "setAssociatedContract(address _associatedContract)",
                        "returns": "()",
                        "events": [
                            "AssociatedContractUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 24
                    }
                ],
                "events": [
                    {
                        "name": "AssociatedContractUpdated",
                        "parameters": "(address associatedContract)",
                        "lineNumber": 38
                    }
                ],
                "variables": [
                    {
                        "name": "associatedContract",
                        "constant": false,
                        "type": "address",
                        "lineNumber": 11,
                        "visibility": "public"
                    }
                ],
                "modifiers": [
                    {
                        "name": "onlyAssociatedContract",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 31
                    }
                ],
                "structs": [],
                "inherits": [
                    "Owned"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/interfaces/ISynthetixState.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {
            "ISynthetixState": {
                "functions": [
                    {
                        "name": "debtLedger",
                        "signature": "debtLedger(uint256 index)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 7
                    },
                    {
                        "name": "issuanceData",
                        "signature": "issuanceData(address account)",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 9
                    },
                    {
                        "name": "debtLedgerLength",
                        "signature": "debtLedgerLength()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 11
                    },
                    {
                        "name": "hasIssued",
                        "signature": "hasIssued(address account)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 13
                    },
                    {
                        "name": "lastDebtLedgerEntry",
                        "signature": "lastDebtLedgerEntry()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 15
                    },
                    {
                        "name": "incrementTotalIssuerCount",
                        "signature": "incrementTotalIssuerCount()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 18
                    },
                    {
                        "name": "decrementTotalIssuerCount",
                        "signature": "decrementTotalIssuerCount()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 20
                    },
                    {
                        "name": "setCurrentIssuanceData",
                        "signature": "setCurrentIssuanceData(address account, uint256 initialDebtOwnership)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 22
                    },
                    {
                        "name": "appendDebtLedgerValue",
                        "signature": "appendDebtLedgerValue(uint256 value)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 24
                    },
                    {
                        "name": "clearIssuanceData",
                        "signature": "clearIssuanceData(address account)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 26
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/interfaces/ISystemStatus.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {
            "ISystemStatus": {
                "functions": [
                    {
                        "name": "accessControl",
                        "signature": "accessControl(bytes32 section, address account)",
                        "returns": "(bool, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 19
                    },
                    {
                        "name": "requireSystemActive",
                        "signature": "requireSystemActive()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 21
                    },
                    {
                        "name": "requireIssuanceActive",
                        "signature": "requireIssuanceActive()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 23
                    },
                    {
                        "name": "requireExchangeActive",
                        "signature": "requireExchangeActive()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 25
                    },
                    {
                        "name": "requireSynthActive",
                        "signature": "requireSynthActive(bytes32 currencyKey)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 27
                    },
                    {
                        "name": "requireSynthsActive",
                        "signature": "requireSynthsActive(bytes32 sourceCurrencyKey, bytes32 destinationCurrencyKey)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 29
                    },
                    {
                        "name": "synthSuspension",
                        "signature": "synthSuspension(bytes32 currencyKey)",
                        "returns": "(bool, uint248)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 31
                    },
                    {
                        "name": "suspendSynth",
                        "signature": "suspendSynth(bytes32 currencyKey, uint256 reason)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 34
                    },
                    {
                        "name": "updateAccessControl",
                        "signature": "updateAccessControl(bytes32 section, address account, bool canSuspend, bool canResume)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 36
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [
                    {
                        "name": "Status",
                        "members": [
                            {
                                "name": "canSuspend",
                                "type": "bool"
                            },
                            {
                                "name": "canResume",
                                "type": "bool"
                            }
                        ],
                        "lineNumber": 6
                    },
                    {
                        "name": "Suspension",
                        "members": [
                            {
                                "name": "suspended",
                                "type": "bool"
                            },
                            {
                                "name": "reason",
                                "type": "uint248"
                            }
                        ],
                        "lineNumber": 11
                    }
                ],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/interfaces/IExchanger.sol": {
        "imports": [
            "contracts/interfaces/IVirtualSynth.sol"
        ],
        "contracts": {},
        "interfaces": {
            "IExchanger": {
                "functions": [
                    {
                        "name": "calculateAmountAfterSettlement",
                        "signature": "calculateAmountAfterSettlement(address from, bytes32 currencyKey, uint256 amount, uint256 refunded)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 9
                    },
                    {
                        "name": "isSynthRateInvalid",
                        "signature": "isSynthRateInvalid(bytes32 currencyKey)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 16
                    },
                    {
                        "name": "maxSecsLeftInWaitingPeriod",
                        "signature": "maxSecsLeftInWaitingPeriod(address account, bytes32 currencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 18
                    },
                    {
                        "name": "settlementOwing",
                        "signature": "settlementOwing(address account, bytes32 currencyKey)",
                        "returns": "(uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 20
                    },
                    {
                        "name": "hasWaitingPeriodOrSettlementOwing",
                        "signature": "hasWaitingPeriodOrSettlementOwing(address account, bytes32 currencyKey)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 29
                    },
                    {
                        "name": "feeRateForExchange",
                        "signature": "feeRateForExchange(bytes32 sourceCurrencyKey, bytes32 destinationCurrencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 31
                    },
                    {
                        "name": "getAmountsForExchange",
                        "signature": "getAmountsForExchange(uint256 sourceAmount, bytes32 sourceCurrencyKey, bytes32 destinationCurrencyKey)",
                        "returns": "(uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 36
                    },
                    {
                        "name": "priceDeviationThresholdFactor",
                        "signature": "priceDeviationThresholdFactor()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 49
                    },
                    {
                        "name": "waitingPeriodSecs",
                        "signature": "waitingPeriodSecs()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 51
                    },
                    {
                        "name": "exchange",
                        "signature": "exchange(address from, bytes32 sourceCurrencyKey, uint256 sourceAmount, bytes32 destinationCurrencyKey, address destinationAddress)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 54
                    },
                    {
                        "name": "exchangeOnBehalf",
                        "signature": "exchangeOnBehalf(address exchangeForAddress, address from, bytes32 sourceCurrencyKey, uint256 sourceAmount, bytes32 destinationCurrencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 62
                    },
                    {
                        "name": "exchangeWithTracking",
                        "signature": "exchangeWithTracking(address from, bytes32 sourceCurrencyKey, uint256 sourceAmount, bytes32 destinationCurrencyKey, address destinationAddress, address originator, bytes32 trackingCode)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 70
                    },
                    {
                        "name": "exchangeOnBehalfWithTracking",
                        "signature": "exchangeOnBehalfWithTracking(address exchangeForAddress, address from, bytes32 sourceCurrencyKey, uint256 sourceAmount, bytes32 destinationCurrencyKey, address originator, bytes32 trackingCode)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 80
                    },
                    {
                        "name": "exchangeWithVirtual",
                        "signature": "exchangeWithVirtual(address from, bytes32 sourceCurrencyKey, uint256 sourceAmount, bytes32 destinationCurrencyKey, address destinationAddress, bytes32 trackingCode)",
                        "returns": "(uint256, contract IVirtualSynth)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 90
                    },
                    {
                        "name": "settle",
                        "signature": "settle(address from, bytes32 currencyKey)",
                        "returns": "(uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 99
                    },
                    {
                        "name": "setLastExchangeRateForSynth",
                        "signature": "setLastExchangeRateForSynth(bytes32 currencyKey, uint256 rate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 107
                    },
                    {
                        "name": "suspendSynthWithInvalidRate",
                        "signature": "suspendSynthWithInvalidRate(bytes32 currencyKey)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 109
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/interfaces/IRewardsDistribution.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {
            "IRewardsDistribution": {
                "functions": [
                    {
                        "name": "authority",
                        "signature": "authority()",
                        "returns": "(address)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 13
                    },
                    {
                        "name": "distributions",
                        "signature": "distributions(uint256 index)",
                        "returns": "(address, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 15
                    },
                    {
                        "name": "distributionsLength",
                        "signature": "distributionsLength()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 17
                    },
                    {
                        "name": "distributeRewards",
                        "signature": "distributeRewards(uint256 amount)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 20
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [
                    {
                        "name": "DistributionData",
                        "members": [
                            {
                                "name": "destination",
                                "type": "address"
                            },
                            {
                                "name": "amount",
                                "type": "uint256"
                            }
                        ],
                        "lineNumber": 7
                    }
                ],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/BinaryOption.sol": {
        "imports": [
            "contracts/interfaces/IERC20.sol",
            "contracts/interfaces/IBinaryOption.sol",
            "contracts/SafeDecimalMath.sol",
            "contracts/BinaryOptionMarket.sol"
        ],
        "contracts": {
            "BinaryOption": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address initialBidder, uint256 initialBid)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 43
                    },
                    {
                        "name": "_claimableBalanceOf",
                        "signature": "_claimableBalanceOf(uint256 _bid, uint256 price, uint256 exercisableDeposits)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 75,
                                "name": "require(..., supply < claimable)"
                            }
                        ],
                        "lineNumber": 51
                    },
                    {
                        "name": "claimableBalanceOf",
                        "signature": "claimableBalanceOf(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 79
                    },
                    {
                        "name": "_totalClaimableSupply",
                        "signature": "_totalClaimableSupply(uint256 exercisableDeposits)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 84
                    },
                    {
                        "name": "totalClaimableSupply",
                        "signature": "totalClaimableSupply()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 94
                    },
                    {
                        "name": "_requireMinimumBid",
                        "signature": "_requireMinimumBid(uint256 bid)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "pure",
                        "requires": [
                            {
                                "lineNumber": 102,
                                "name": "require(..., Balance < $0.01)"
                            }
                        ],
                        "lineNumber": 101
                    },
                    {
                        "name": "bid",
                        "signature": "bid(address bidder, uint256 newBid)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyMarket"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 107
                    },
                    {
                        "name": "refund",
                        "signature": "refund(address bidder, uint256 newRefund)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyMarket"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 113
                    },
                    {
                        "name": "claim",
                        "signature": "claim(address claimant, uint256 price, uint256 depositsRemaining)",
                        "returns": "(uint256)",
                        "events": [
                            "Transfer",
                            "Issued"
                        ],
                        "modifiers": [
                            "onlyMarket"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 120
                    },
                    {
                        "name": "exercise",
                        "signature": "exercise(address claimant)",
                        "returns": "()",
                        "events": [
                            "Transfer",
                            "Burned"
                        ],
                        "modifiers": [
                            "onlyMarket"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 145
                    },
                    {
                        "name": "expire",
                        "signature": "expire(address payable beneficiary)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyMarket"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 161
                    },
                    {
                        "name": "_transfer",
                        "signature": "_transfer(address _from, address _to, uint256 _value)",
                        "returns": "(bool)",
                        "events": [
                            "Transfer"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 176,
                                "name": "require(..., Invalid address)"
                            },
                            {
                                "lineNumber": 179,
                                "name": "require(..., Insufficient balance)"
                            }
                        ],
                        "lineNumber": 170
                    },
                    {
                        "name": "transfer",
                        "signature": "transfer(address _to, uint256 _value)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 188
                    },
                    {
                        "name": "transferFrom",
                        "signature": "transferFrom(address _from, address _to, uint256 _value)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 198,
                                "name": "require(..., Insufficient allowance)"
                            }
                        ],
                        "lineNumber": 192
                    },
                    {
                        "name": "approve",
                        "signature": "approve(address _spender, uint256 _value)",
                        "returns": "(bool)",
                        "events": [
                            "Approval"
                        ],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 205,
                                "name": "require(..., )"
                            }
                        ],
                        "lineNumber": 204
                    }
                ],
                "events": [
                    {
                        "name": "Issued",
                        "parameters": "(address account, uint256 value)",
                        "lineNumber": 220
                    },
                    {
                        "name": "Burned",
                        "parameters": "(address account, uint256 value)",
                        "lineNumber": 221
                    },
                    {
                        "name": "Transfer",
                        "parameters": "(address from, address to, uint256 value)",
                        "lineNumber": 222
                    },
                    {
                        "name": "Approval",
                        "parameters": "(address owner, address spender, uint256 value)",
                        "lineNumber": 223
                    }
                ],
                "variables": [
                    {
                        "name": "name",
                        "constant": true,
                        "type": "string",
                        "lineNumber": 23,
                        "visibility": "public"
                    },
                    {
                        "name": "symbol",
                        "constant": true,
                        "type": "string",
                        "lineNumber": 24,
                        "visibility": "public"
                    },
                    {
                        "name": "decimals",
                        "constant": true,
                        "type": "uint8",
                        "lineNumber": 25,
                        "visibility": "public"
                    },
                    {
                        "name": "market",
                        "constant": false,
                        "type": "contract BinaryOptionMarket",
                        "lineNumber": 27,
                        "visibility": "public"
                    },
                    {
                        "name": "bidOf",
                        "constant": false,
                        "type": "mapping(address => uint256)",
                        "lineNumber": 29,
                        "visibility": "public"
                    },
                    {
                        "name": "totalBids",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 30,
                        "visibility": "public"
                    },
                    {
                        "name": "balanceOf",
                        "constant": false,
                        "type": "mapping(address => uint256)",
                        "lineNumber": 32,
                        "visibility": "public"
                    },
                    {
                        "name": "totalSupply",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 33,
                        "visibility": "public"
                    },
                    {
                        "name": "allowance",
                        "constant": false,
                        "type": "mapping(address => mapping(address => uint256))",
                        "lineNumber": 36,
                        "visibility": "public"
                    },
                    {
                        "name": "_MINIMUM_BID",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 39,
                        "visibility": "internal"
                    }
                ],
                "modifiers": [
                    {
                        "name": "onlyMarket",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 213
                    }
                ],
                "structs": [],
                "inherits": [
                    "IERC20",
                    "IBinaryOption"
                ],
                "libraries": [
                    {
                        "name": "SafeMath",
                        "type": "uint"
                    },
                    {
                        "name": "SafeDecimalMath",
                        "type": "uint"
                    }
                ]
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/interfaces/IBinaryOption.sol": {
        "imports": [
            "contracts/interfaces/IBinaryOptionMarket.sol",
            "contracts/interfaces/IERC20.sol"
        ],
        "contracts": {},
        "interfaces": {
            "IBinaryOption": {
                "functions": [
                    {
                        "name": "market",
                        "signature": "market()",
                        "returns": "(contract IBinaryOptionMarket)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 11
                    },
                    {
                        "name": "bidOf",
                        "signature": "bidOf(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 13
                    },
                    {
                        "name": "totalBids",
                        "signature": "totalBids()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 15
                    },
                    {
                        "name": "balanceOf",
                        "signature": "balanceOf(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 17
                    },
                    {
                        "name": "totalSupply",
                        "signature": "totalSupply()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 19
                    },
                    {
                        "name": "claimableBalanceOf",
                        "signature": "claimableBalanceOf(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 21
                    },
                    {
                        "name": "totalClaimableSupply",
                        "signature": "totalClaimableSupply()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 23
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/interfaces/IBinaryOptionMarket.sol": {
        "imports": [
            "contracts/interfaces/IBinaryOptionMarketManager.sol",
            "contracts/interfaces/IBinaryOption.sol"
        ],
        "contracts": {},
        "interfaces": {
            "IBinaryOptionMarket": {
                "functions": [
                    {
                        "name": "options",
                        "signature": "options()",
                        "returns": "(contract IBinaryOption, contract IBinaryOption)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 16
                    },
                    {
                        "name": "prices",
                        "signature": "prices()",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 18
                    },
                    {
                        "name": "times",
                        "signature": "times()",
                        "returns": "(uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 20
                    },
                    {
                        "name": "oracleDetails",
                        "signature": "oracleDetails()",
                        "returns": "(bytes32, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 29
                    },
                    {
                        "name": "fees",
                        "signature": "fees()",
                        "returns": "(uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 38
                    },
                    {
                        "name": "creatorLimits",
                        "signature": "creatorLimits()",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 47
                    },
                    {
                        "name": "deposited",
                        "signature": "deposited()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 49
                    },
                    {
                        "name": "creator",
                        "signature": "creator()",
                        "returns": "(address)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 51
                    },
                    {
                        "name": "resolved",
                        "signature": "resolved()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 53
                    },
                    {
                        "name": "refundsEnabled",
                        "signature": "refundsEnabled()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 55
                    },
                    {
                        "name": "phase",
                        "signature": "phase()",
                        "returns": "(enum IBinaryOptionMarket.Phase)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 57
                    },
                    {
                        "name": "oraclePriceAndTimestamp",
                        "signature": "oraclePriceAndTimestamp()",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 59
                    },
                    {
                        "name": "canResolve",
                        "signature": "canResolve()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 61
                    },
                    {
                        "name": "result",
                        "signature": "result()",
                        "returns": "(enum IBinaryOptionMarket.Side)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 63
                    },
                    {
                        "name": "pricesAfterBidOrRefund",
                        "signature": "pricesAfterBidOrRefund(enum IBinaryOptionMarket.Side side, uint256 value, bool refund)",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 65
                    },
                    {
                        "name": "bidOrRefundForPrice",
                        "signature": "bidOrRefundForPrice(enum IBinaryOptionMarket.Side bidSide, enum IBinaryOptionMarket.Side priceSide, uint256 price, bool refund)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 71
                    },
                    {
                        "name": "bidsOf",
                        "signature": "bidsOf(address account)",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 78
                    },
                    {
                        "name": "totalBids",
                        "signature": "totalBids()",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 80
                    },
                    {
                        "name": "claimableBalancesOf",
                        "signature": "claimableBalancesOf(address account)",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 82
                    },
                    {
                        "name": "totalClaimableSupplies",
                        "signature": "totalClaimableSupplies()",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 84
                    },
                    {
                        "name": "balancesOf",
                        "signature": "balancesOf(address account)",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 86
                    },
                    {
                        "name": "totalSupplies",
                        "signature": "totalSupplies()",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 88
                    },
                    {
                        "name": "exercisableDeposits",
                        "signature": "exercisableDeposits()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 90
                    },
                    {
                        "name": "bid",
                        "signature": "bid(enum IBinaryOptionMarket.Side side, uint256 value)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 94
                    },
                    {
                        "name": "refund",
                        "signature": "refund(enum IBinaryOptionMarket.Side side, uint256 value)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 96
                    },
                    {
                        "name": "claimOptions",
                        "signature": "claimOptions()",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 98
                    },
                    {
                        "name": "exerciseOptions",
                        "signature": "exerciseOptions()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 100
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/interfaces/IBinaryOptionMarketManager.sol": {
        "imports": [
            "contracts/interfaces/IBinaryOptionMarket.sol"
        ],
        "contracts": {},
        "interfaces": {
            "IBinaryOptionMarketManager": {
                "functions": [
                    {
                        "name": "fees",
                        "signature": "fees()",
                        "returns": "(uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 10
                    },
                    {
                        "name": "durations",
                        "signature": "durations()",
                        "returns": "(uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 19
                    },
                    {
                        "name": "creatorLimits",
                        "signature": "creatorLimits()",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 28
                    },
                    {
                        "name": "marketCreationEnabled",
                        "signature": "marketCreationEnabled()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 30
                    },
                    {
                        "name": "totalDeposited",
                        "signature": "totalDeposited()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 32
                    },
                    {
                        "name": "numActiveMarkets",
                        "signature": "numActiveMarkets()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 34
                    },
                    {
                        "name": "activeMarkets",
                        "signature": "activeMarkets(uint256 index, uint256 pageSize)",
                        "returns": "(address[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 36
                    },
                    {
                        "name": "numMaturedMarkets",
                        "signature": "numMaturedMarkets()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 38
                    },
                    {
                        "name": "maturedMarkets",
                        "signature": "maturedMarkets(uint256 index, uint256 pageSize)",
                        "returns": "(address[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 40
                    },
                    {
                        "name": "createMarket",
                        "signature": "createMarket(bytes32 oracleKey, uint256 strikePrice, bool refundsEnabled, uint256[2] times, uint256[2] bids)",
                        "returns": "(contract IBinaryOptionMarket)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 44
                    },
                    {
                        "name": "resolveMarket",
                        "signature": "resolveMarket(address market)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 52
                    },
                    {
                        "name": "cancelMarket",
                        "signature": "cancelMarket(address market)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 54
                    },
                    {
                        "name": "expireMarkets",
                        "signature": "expireMarkets(address[] market)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 56
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/BinaryOptionMarket.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/MixinResolver.sol",
            "contracts/interfaces/IBinaryOptionMarket.sol",
            "contracts/SafeDecimalMath.sol",
            "contracts/BinaryOptionMarketManager.sol",
            "contracts/BinaryOption.sol",
            "contracts/interfaces/IExchangeRates.sol",
            "contracts/interfaces/IERC20.sol",
            "contracts/interfaces/IFeePool.sol"
        ],
        "contracts": {
            "BinaryOptionMarket": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, address _creator, address _resolver, uint256[2] _creatorLimits, bytes32 _oracleKey, uint256 _strikePrice, bool _refundsEnabled, uint256[3] _times, uint256[2] _bids, uint256[3] _fees)",
                        "returns": "()",
                        "events": [
                            "Bid",
                            "Bid"
                        ],
                        "modifiers": [
                            "Owned",
                            "MixinResolver"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 77
                    },
                    {
                        "name": "resolverAddressesRequired",
                        "signature": "resolverAddressesRequired()",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 122
                    },
                    {
                        "name": "_systemStatus",
                        "signature": "_systemStatus()",
                        "returns": "(contract ISystemStatus)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 132
                    },
                    {
                        "name": "_exchangeRates",
                        "signature": "_exchangeRates()",
                        "returns": "(contract IExchangeRates)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 136
                    },
                    {
                        "name": "_sUSD",
                        "signature": "_sUSD()",
                        "returns": "(contract IERC20)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 140
                    },
                    {
                        "name": "_feePool",
                        "signature": "_feePool()",
                        "returns": "(contract IFeePool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 144
                    },
                    {
                        "name": "_manager",
                        "signature": "_manager()",
                        "returns": "(contract BinaryOptionMarketManager)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 148
                    },
                    {
                        "name": "_biddingEnded",
                        "signature": "_biddingEnded()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 154
                    },
                    {
                        "name": "_matured",
                        "signature": "_matured()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 158
                    },
                    {
                        "name": "_expired",
                        "signature": "_expired()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 162
                    },
                    {
                        "name": "phase",
                        "signature": "phase()",
                        "returns": "(enum IBinaryOptionMarket.Phase)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 166
                    },
                    {
                        "name": "_oraclePriceAndTimestamp",
                        "signature": "_oraclePriceAndTimestamp()",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 181
                    },
                    {
                        "name": "oraclePriceAndTimestamp",
                        "signature": "oraclePriceAndTimestamp()",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 185
                    },
                    {
                        "name": "_isFreshPriceUpdateTime",
                        "signature": "_isFreshPriceUpdateTime(uint256 timestamp)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 189
                    },
                    {
                        "name": "canResolve",
                        "signature": "canResolve()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 194
                    },
                    {
                        "name": "_result",
                        "signature": "_result()",
                        "returns": "(enum IBinaryOptionMarket.Side)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 199
                    },
                    {
                        "name": "result",
                        "signature": "result()",
                        "returns": "(enum IBinaryOptionMarket.Side)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 210
                    },
                    {
                        "name": "_computePrices",
                        "signature": "_computePrices(uint256 longBids, uint256 shortBids, uint256 _deposited)",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 221,
                                "name": "require(..., Bids must be nonzero)"
                            }
                        ],
                        "lineNumber": 216
                    },
                    {
                        "name": "senderPriceAndExercisableDeposits",
                        "signature": "senderPriceAndExercisableDeposits()",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 229
                    },
                    {
                        "name": "pricesAfterBidOrRefund",
                        "signature": "pricesAfterBidOrRefund(enum IBinaryOptionMarket.Side side, uint256 value, bool refund)",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 247
                    },
                    {
                        "name": "bidOrRefundForPrice",
                        "signature": "bidOrRefundForPrice(enum IBinaryOptionMarket.Side bidSide, enum IBinaryOptionMarket.Side priceSide, uint256 price, bool refund)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 269
                    },
                    {
                        "name": "_bidsOf",
                        "signature": "_bidsOf(address account)",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 308
                    },
                    {
                        "name": "bidsOf",
                        "signature": "bidsOf(address account)",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 312
                    },
                    {
                        "name": "_totalBids",
                        "signature": "_totalBids()",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 316
                    },
                    {
                        "name": "totalBids",
                        "signature": "totalBids()",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 320
                    },
                    {
                        "name": "_claimableBalancesOf",
                        "signature": "_claimableBalancesOf(address account)",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 324
                    },
                    {
                        "name": "claimableBalancesOf",
                        "signature": "claimableBalancesOf(address account)",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 328
                    },
                    {
                        "name": "totalClaimableSupplies",
                        "signature": "totalClaimableSupplies()",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 332
                    },
                    {
                        "name": "_balancesOf",
                        "signature": "_balancesOf(address account)",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 336
                    },
                    {
                        "name": "balancesOf",
                        "signature": "balancesOf(address account)",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 340
                    },
                    {
                        "name": "totalSupplies",
                        "signature": "totalSupplies()",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 344
                    },
                    {
                        "name": "_exercisableDeposits",
                        "signature": "_exercisableDeposits(uint256 _deposited)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 348
                    },
                    {
                        "name": "exercisableDeposits",
                        "signature": "exercisableDeposits()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 353
                    },
                    {
                        "name": "_chooseSide",
                        "signature": "_chooseSide(enum IBinaryOptionMarket.Side side, uint256 longValue, uint256 shortValue)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "pure",
                        "requires": [],
                        "lineNumber": 359
                    },
                    {
                        "name": "_option",
                        "signature": "_option(enum IBinaryOptionMarket.Side side)",
                        "returns": "(contract BinaryOption)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 370
                    },
                    {
                        "name": "_subToZero",
                        "signature": "_subToZero(uint256 a, uint256 b)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "pure",
                        "requires": [],
                        "lineNumber": 378
                    },
                    {
                        "name": "_checkCreatorLimits",
                        "signature": "_checkCreatorLimits(uint256 longBid, uint256 shortBid)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 384,
                                "name": "require(..., Insufficient capital)"
                            },
                            {
                                "lineNumber": 386,
                                "name": "require(..., Bids too skewed)"
                            }
                        ],
                        "lineNumber": 382
                    },
                    {
                        "name": "_incrementDeposited",
                        "signature": "_incrementDeposited(uint256 value)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 392
                    },
                    {
                        "name": "_decrementDeposited",
                        "signature": "_decrementDeposited(uint256 value)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 398
                    },
                    {
                        "name": "_requireManagerNotPaused",
                        "signature": "_requireManagerNotPaused()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 405,
                                "name": "require(..., This action cannot be performed while the contract is paused)"
                            }
                        ],
                        "lineNumber": 404
                    },
                    {
                        "name": "requireActiveAndUnpaused",
                        "signature": "requireActiveAndUnpaused()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 410,
                                "name": "_requireManagerNotPaused"
                            }
                        ],
                        "lineNumber": 408
                    },
                    {
                        "name": "_updatePrices",
                        "signature": "_updatePrices(uint256 longBids, uint256 shortBids, uint256 _deposited)",
                        "returns": "()",
                        "events": [
                            "PricesUpdated"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 417
                    },
                    {
                        "name": "bid",
                        "signature": "bid(enum IBinaryOptionMarket.Side side, uint256 value)",
                        "returns": "()",
                        "events": [
                            "Bid"
                        ],
                        "modifiers": [
                            "duringBidding"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 427
                    },
                    {
                        "name": "refund",
                        "signature": "refund(enum IBinaryOptionMarket.Side side, uint256 value)",
                        "returns": "(uint256)",
                        "events": [
                            "Refund"
                        ],
                        "modifiers": [
                            "duringBidding"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 443,
                                "name": "require(..., Refunds disabled)"
                            }
                        ],
                        "lineNumber": 442
                    },
                    {
                        "name": "resolve",
                        "signature": "resolve()",
                        "returns": "()",
                        "events": [
                            "MarketResolved"
                        ],
                        "modifiers": [
                            "onlyOwner",
                            "afterMaturity",
                            "systemActive",
                            "managerNotPaused"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 474,
                                "name": "require(..., Market already resolved)"
                            },
                            {
                                "lineNumber": 479,
                                "name": "require(..., Price is stale)"
                            }
                        ],
                        "lineNumber": 473
                    },
                    {
                        "name": "_claimOptions",
                        "signature": "_claimOptions()",
                        "returns": "(uint256, uint256)",
                        "events": [
                            "OptionsClaimed"
                        ],
                        "modifiers": [
                            "systemActive",
                            "managerNotPaused",
                            "afterBidding"
                        ],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 522,
                                "name": "require(..., Nothing to claim)"
                            }
                        ],
                        "lineNumber": 501
                    },
                    {
                        "name": "claimOptions",
                        "signature": "claimOptions()",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 527
                    },
                    {
                        "name": "exerciseOptions",
                        "signature": "exerciseOptions()",
                        "returns": "(uint256)",
                        "events": [
                            "OptionsExercised"
                        ],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 545,
                                "name": "require(..., Nothing to exercise)"
                            }
                        ],
                        "lineNumber": 531
                    },
                    {
                        "name": "_selfDestruct",
                        "signature": "_selfDestruct(address payable beneficiary)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 567
                    },
                    {
                        "name": "cancel",
                        "signature": "cancel(address payable beneficiary)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner",
                            "duringBidding"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 591,
                                "name": "require(..., Not cancellable)"
                            }
                        ],
                        "lineNumber": 587
                    },
                    {
                        "name": "expire",
                        "signature": "expire(address payable beneficiary)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 596,
                                "name": "require(..., Unexpired options remaining)"
                            }
                        ],
                        "lineNumber": 595
                    }
                ],
                "events": [
                    {
                        "name": "Bid",
                        "parameters": "(enum IBinaryOptionMarket.Side side, address account, uint256 value)",
                        "lineNumber": 629
                    },
                    {
                        "name": "Refund",
                        "parameters": "(enum IBinaryOptionMarket.Side side, address account, uint256 value, uint256 fee)",
                        "lineNumber": 630
                    },
                    {
                        "name": "PricesUpdated",
                        "parameters": "(uint256 longPrice, uint256 shortPrice)",
                        "lineNumber": 631
                    },
                    {
                        "name": "MarketResolved",
                        "parameters": "(enum IBinaryOptionMarket.Side result, uint256 oraclePrice, uint256 oracleTimestamp, uint256 deposited, uint256 poolFees, uint256 creatorFees)",
                        "lineNumber": 632
                    },
                    {
                        "name": "OptionsClaimed",
                        "parameters": "(address account, uint256 longOptions, uint256 shortOptions)",
                        "lineNumber": 640
                    },
                    {
                        "name": "OptionsExercised",
                        "parameters": "(address account, uint256 value)",
                        "lineNumber": 641
                    }
                ],
                "variables": [
                    {
                        "name": "options",
                        "constant": false,
                        "type": "struct BinaryOptionMarket.Options",
                        "lineNumber": 52,
                        "visibility": "public"
                    },
                    {
                        "name": "prices",
                        "constant": false,
                        "type": "struct BinaryOptionMarket.Prices",
                        "lineNumber": 53,
                        "visibility": "public"
                    },
                    {
                        "name": "times",
                        "constant": false,
                        "type": "struct BinaryOptionMarket.Times",
                        "lineNumber": 54,
                        "visibility": "public"
                    },
                    {
                        "name": "oracleDetails",
                        "constant": false,
                        "type": "struct BinaryOptionMarket.OracleDetails",
                        "lineNumber": 55,
                        "visibility": "public"
                    },
                    {
                        "name": "fees",
                        "constant": false,
                        "type": "struct BinaryOptionMarketManager.Fees",
                        "lineNumber": 56,
                        "visibility": "public"
                    },
                    {
                        "name": "creatorLimits",
                        "constant": false,
                        "type": "struct BinaryOptionMarketManager.CreatorLimits",
                        "lineNumber": 57,
                        "visibility": "public"
                    },
                    {
                        "name": "deposited",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 61,
                        "visibility": "public"
                    },
                    {
                        "name": "creator",
                        "constant": false,
                        "type": "address",
                        "lineNumber": 62,
                        "visibility": "public"
                    },
                    {
                        "name": "resolved",
                        "constant": false,
                        "type": "bool",
                        "lineNumber": 63,
                        "visibility": "public"
                    },
                    {
                        "name": "refundsEnabled",
                        "constant": false,
                        "type": "bool",
                        "lineNumber": 64,
                        "visibility": "public"
                    },
                    {
                        "name": "_feeMultiplier",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 66,
                        "visibility": "internal"
                    },
                    {
                        "name": "CONTRACT_SYSTEMSTATUS",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 70,
                        "visibility": "internal"
                    },
                    {
                        "name": "CONTRACT_EXRATES",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 71,
                        "visibility": "internal"
                    },
                    {
                        "name": "CONTRACT_SYNTHSUSD",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 72,
                        "visibility": "internal"
                    },
                    {
                        "name": "CONTRACT_FEEPOOL",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 73,
                        "visibility": "internal"
                    }
                ],
                "modifiers": [
                    {
                        "name": "duringBidding",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 602
                    },
                    {
                        "name": "afterBidding",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 607
                    },
                    {
                        "name": "afterMaturity",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 612
                    },
                    {
                        "name": "systemActive",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 617
                    },
                    {
                        "name": "managerNotPaused",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 622
                    }
                ],
                "structs": [
                    {
                        "name": "Options",
                        "members": [
                            {
                                "name": "long",
                                "type": "contract BinaryOption"
                            },
                            {
                                "name": "short",
                                "type": "contract BinaryOption"
                            }
                        ],
                        "lineNumber": 28
                    },
                    {
                        "name": "Prices",
                        "members": [
                            {
                                "name": "long",
                                "type": "uint256"
                            },
                            {
                                "name": "short",
                                "type": "uint256"
                            }
                        ],
                        "lineNumber": 33
                    },
                    {
                        "name": "Times",
                        "members": [
                            {
                                "name": "biddingEnd",
                                "type": "uint256"
                            },
                            {
                                "name": "maturity",
                                "type": "uint256"
                            },
                            {
                                "name": "expiry",
                                "type": "uint256"
                            }
                        ],
                        "lineNumber": 38
                    },
                    {
                        "name": "OracleDetails",
                        "members": [
                            {
                                "name": "key",
                                "type": "bytes32"
                            },
                            {
                                "name": "strikePrice",
                                "type": "uint256"
                            },
                            {
                                "name": "finalPrice",
                                "type": "uint256"
                            }
                        ],
                        "lineNumber": 44
                    }
                ],
                "inherits": [
                    "Owned",
                    "MixinResolver",
                    "IBinaryOptionMarket"
                ],
                "libraries": [
                    {
                        "name": "SafeMath",
                        "type": "uint"
                    },
                    {
                        "name": "SafeDecimalMath",
                        "type": "uint"
                    }
                ]
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/BinaryOptionMarketManager.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/Pausable.sol",
            "contracts/MixinResolver.sol",
            "contracts/interfaces/IBinaryOptionMarketManager.sol",
            "contracts/AddressSetLib.sol",
            "contracts/SafeDecimalMath.sol",
            "contracts/BinaryOptionMarketFactory.sol",
            "contracts/BinaryOptionMarket.sol",
            "contracts/interfaces/IBinaryOptionMarket.sol",
            "contracts/interfaces/IExchangeRates.sol",
            "contracts/interfaces/ISystemStatus.sol",
            "contracts/interfaces/IERC20.sol"
        ],
        "contracts": {
            "BinaryOptionMarketManager": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, address _resolver, uint256 _maxOraclePriceAge, uint256 _expiryDuration, uint256 _maxTimeToMaturity, uint256 _creatorCapitalRequirement, uint256 _creatorSkewLimit, uint256 _poolFee, uint256 _creatorFee, uint256 _refundFee)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned",
                            "Pausable",
                            "MixinResolver"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 88,
                                "name": "setCreatorCapitalRequirement"
                            }
                        ],
                        "lineNumber": 71
                    },
                    {
                        "name": "resolverAddressesRequired",
                        "signature": "resolverAddressesRequired()",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 98
                    },
                    {
                        "name": "_systemStatus",
                        "signature": "_systemStatus()",
                        "returns": "(contract ISystemStatus)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 108
                    },
                    {
                        "name": "_sUSD",
                        "signature": "_sUSD()",
                        "returns": "(contract IERC20)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 112
                    },
                    {
                        "name": "_exchangeRates",
                        "signature": "_exchangeRates()",
                        "returns": "(contract IExchangeRates)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 116
                    },
                    {
                        "name": "_factory",
                        "signature": "_factory()",
                        "returns": "(contract BinaryOptionMarketFactory)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 120
                    },
                    {
                        "name": "_isKnownMarket",
                        "signature": "_isKnownMarket(address candidate)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 126
                    },
                    {
                        "name": "numActiveMarkets",
                        "signature": "numActiveMarkets()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 130
                    },
                    {
                        "name": "activeMarkets",
                        "signature": "activeMarkets(uint256 index, uint256 pageSize)",
                        "returns": "(address[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 134
                    },
                    {
                        "name": "numMaturedMarkets",
                        "signature": "numMaturedMarkets()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 138
                    },
                    {
                        "name": "maturedMarkets",
                        "signature": "maturedMarkets(uint256 index, uint256 pageSize)",
                        "returns": "(address[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 142
                    },
                    {
                        "name": "_isValidKey",
                        "signature": "_isValidKey(bytes32 oracleKey)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 146
                    },
                    {
                        "name": "setMaxOraclePriceAge",
                        "signature": "setMaxOraclePriceAge(uint256 _maxOraclePriceAge)",
                        "returns": "()",
                        "events": [
                            "MaxOraclePriceAgeUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 172
                    },
                    {
                        "name": "setExpiryDuration",
                        "signature": "setExpiryDuration(uint256 _expiryDuration)",
                        "returns": "()",
                        "events": [
                            "ExpiryDurationUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 177
                    },
                    {
                        "name": "setMaxTimeToMaturity",
                        "signature": "setMaxTimeToMaturity(uint256 _maxTimeToMaturity)",
                        "returns": "()",
                        "events": [
                            "MaxTimeToMaturityUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 182
                    },
                    {
                        "name": "setPoolFee",
                        "signature": "setPoolFee(uint256 _poolFee)",
                        "returns": "()",
                        "events": [
                            "PoolFeeUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 189,
                                "name": "require(..., Total fee must be less than 100%.)"
                            },
                            {
                                "lineNumber": 190,
                                "name": "require(..., Total fee must be nonzero.)"
                            }
                        ],
                        "lineNumber": 187
                    },
                    {
                        "name": "setCreatorFee",
                        "signature": "setCreatorFee(uint256 _creatorFee)",
                        "returns": "()",
                        "events": [
                            "CreatorFeeUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 197,
                                "name": "require(..., Total fee must be less than 100%.)"
                            },
                            {
                                "lineNumber": 198,
                                "name": "require(..., Total fee must be nonzero.)"
                            }
                        ],
                        "lineNumber": 195
                    },
                    {
                        "name": "setRefundFee",
                        "signature": "setRefundFee(uint256 _refundFee)",
                        "returns": "()",
                        "events": [
                            "RefundFeeUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 204,
                                "name": "require(..., Refund fee must be no greater than 100%.)"
                            }
                        ],
                        "lineNumber": 203
                    },
                    {
                        "name": "setCreatorCapitalRequirement",
                        "signature": "setCreatorCapitalRequirement(uint256 _creatorCapitalRequirement)",
                        "returns": "()",
                        "events": [
                            "CreatorCapitalRequirementUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 209
                    },
                    {
                        "name": "setCreatorSkewLimit",
                        "signature": "setCreatorSkewLimit(uint256 _creatorSkewLimit)",
                        "returns": "()",
                        "events": [
                            "CreatorSkewLimitUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 215,
                                "name": "require(..., Creator skew limit must be no greater than 1.)"
                            }
                        ],
                        "lineNumber": 214
                    },
                    {
                        "name": "incrementTotalDeposited",
                        "signature": "incrementTotalDeposited(uint256 delta)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyActiveMarkets",
                            "notPaused"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 222
                    },
                    {
                        "name": "decrementTotalDeposited",
                        "signature": "decrementTotalDeposited(uint256 delta)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyKnownMarkets",
                            "notPaused"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 227
                    },
                    {
                        "name": "createMarket",
                        "signature": "createMarket(bytes32 oracleKey, uint256 strikePrice, bool refundsEnabled, uint256[2] times, uint256[2] bids)",
                        "returns": "(contract IBinaryOptionMarket)",
                        "events": [
                            "MarketCreated"
                        ],
                        "modifiers": [
                            "notPaused"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 251,
                                "name": "require(..., Market creation is disabled)"
                            },
                            {
                                "lineNumber": 252,
                                "name": "require(..., Invalid key)"
                            },
                            {
                                "lineNumber": 255,
                                "name": "require(..., Maturity too far in the future)"
                            },
                            {
                                "lineNumber": 259,
                                "name": "require(..., End of bidding has passed)"
                            },
                            {
                                "lineNumber": 260,
                                "name": "require(..., Maturity predates end of bidding)"
                            }
                        ],
                        "lineNumber": 237
                    },
                    {
                        "name": "resolveMarket",
                        "signature": "resolveMarket(address market)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 288,
                                "name": "require(..., Not an active market)"
                            }
                        ],
                        "lineNumber": 287
                    },
                    {
                        "name": "cancelMarket",
                        "signature": "cancelMarket(address market)",
                        "returns": "()",
                        "events": [
                            "MarketCancelled"
                        ],
                        "modifiers": [
                            "notPaused"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 295,
                                "name": "require(..., Not an active market)"
                            },
                            {
                                "lineNumber": 297,
                                "name": "require(..., Sender not market creator)"
                            }
                        ],
                        "lineNumber": 294
                    },
                    {
                        "name": "expireMarkets",
                        "signature": "expireMarkets(address[] markets)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "notPaused"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 303
                    },
                    {
                        "name": "rebuildMarketCaches",
                        "signature": "rebuildMarketCaches(contract BinaryOptionMarket[] marketsToSync)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 318
                    },
                    {
                        "name": "setMarketCreationEnabled",
                        "signature": "setMarketCreationEnabled(bool enabled)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 340
                    },
                    {
                        "name": "setMigratingManager",
                        "signature": "setMigratingManager(contract BinaryOptionMarketManager manager)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 347
                    },
                    {
                        "name": "migrateMarkets",
                        "signature": "migrateMarkets(contract BinaryOptionMarketManager receivingManager, bool active, contract BinaryOptionMarket[] marketsToMigrate)",
                        "returns": "()",
                        "events": [
                            "MarketsMigrated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 351
                    },
                    {
                        "name": "receiveMarkets",
                        "signature": "receiveMarkets(bool active, contract BinaryOptionMarket[] marketsToReceive)",
                        "returns": "()",
                        "events": [
                            "MarketsReceived"
                        ],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 383,
                                "name": "require(..., Only permitted for migrating manager.)"
                            }
                        ],
                        "lineNumber": 382
                    }
                ],
                "events": [
                    {
                        "name": "MarketCreated",
                        "parameters": "(address market, address creator, bytes32 oracleKey, uint256 strikePrice, uint256 biddingEndDate, uint256 maturityDate, uint256 expiryDate)",
                        "lineNumber": 419
                    },
                    {
                        "name": "MarketExpired",
                        "parameters": "(address market)",
                        "lineNumber": 428
                    },
                    {
                        "name": "MarketCancelled",
                        "parameters": "(address market)",
                        "lineNumber": 429
                    },
                    {
                        "name": "MarketsMigrated",
                        "parameters": "(contract BinaryOptionMarketManager receivingManager, contract BinaryOptionMarket[] markets)",
                        "lineNumber": 430
                    },
                    {
                        "name": "MarketsReceived",
                        "parameters": "(contract BinaryOptionMarketManager migratingManager, contract BinaryOptionMarket[] markets)",
                        "lineNumber": 431
                    },
                    {
                        "name": "MarketCreationEnabledUpdated",
                        "parameters": "(bool enabled)",
                        "lineNumber": 432
                    },
                    {
                        "name": "MaxOraclePriceAgeUpdated",
                        "parameters": "(uint256 duration)",
                        "lineNumber": 433
                    },
                    {
                        "name": "ExerciseDurationUpdated",
                        "parameters": "(uint256 duration)",
                        "lineNumber": 434
                    },
                    {
                        "name": "ExpiryDurationUpdated",
                        "parameters": "(uint256 duration)",
                        "lineNumber": 435
                    },
                    {
                        "name": "MaxTimeToMaturityUpdated",
                        "parameters": "(uint256 duration)",
                        "lineNumber": 436
                    },
                    {
                        "name": "CreatorCapitalRequirementUpdated",
                        "parameters": "(uint256 value)",
                        "lineNumber": 437
                    },
                    {
                        "name": "CreatorSkewLimitUpdated",
                        "parameters": "(uint256 value)",
                        "lineNumber": 438
                    },
                    {
                        "name": "PoolFeeUpdated",
                        "parameters": "(uint256 fee)",
                        "lineNumber": 439
                    },
                    {
                        "name": "CreatorFeeUpdated",
                        "parameters": "(uint256 fee)",
                        "lineNumber": 440
                    },
                    {
                        "name": "RefundFeeUpdated",
                        "parameters": "(uint256 fee)",
                        "lineNumber": 441
                    }
                ],
                "variables": [
                    {
                        "name": "fees",
                        "constant": false,
                        "type": "struct BinaryOptionMarketManager.Fees",
                        "lineNumber": 50,
                        "visibility": "public"
                    },
                    {
                        "name": "durations",
                        "constant": false,
                        "type": "struct BinaryOptionMarketManager.Durations",
                        "lineNumber": 51,
                        "visibility": "public"
                    },
                    {
                        "name": "creatorLimits",
                        "constant": false,
                        "type": "struct BinaryOptionMarketManager.CreatorLimits",
                        "lineNumber": 52,
                        "visibility": "public"
                    },
                    {
                        "name": "marketCreationEnabled",
                        "constant": false,
                        "type": "bool",
                        "lineNumber": 54,
                        "visibility": "public"
                    },
                    {
                        "name": "totalDeposited",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 55,
                        "visibility": "public"
                    },
                    {
                        "name": "_activeMarkets",
                        "constant": false,
                        "type": "struct AddressSetLib.AddressSet",
                        "lineNumber": 57,
                        "visibility": "internal"
                    },
                    {
                        "name": "_maturedMarkets",
                        "constant": false,
                        "type": "struct AddressSetLib.AddressSet",
                        "lineNumber": 58,
                        "visibility": "internal"
                    },
                    {
                        "name": "_migratingManager",
                        "constant": false,
                        "type": "contract BinaryOptionMarketManager",
                        "lineNumber": 60,
                        "visibility": "internal"
                    },
                    {
                        "name": "CONTRACT_SYSTEMSTATUS",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 64,
                        "visibility": "internal"
                    },
                    {
                        "name": "CONTRACT_SYNTHSUSD",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 65,
                        "visibility": "internal"
                    },
                    {
                        "name": "CONTRACT_EXRATES",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 66,
                        "visibility": "internal"
                    },
                    {
                        "name": "CONTRACT_BINARYOPTIONMARKETFACTORY",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 67,
                        "visibility": "internal"
                    }
                ],
                "modifiers": [
                    {
                        "name": "onlyActiveMarkets",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 407
                    },
                    {
                        "name": "onlyKnownMarkets",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 412
                    }
                ],
                "structs": [
                    {
                        "name": "Fees",
                        "members": [
                            {
                                "name": "poolFee",
                                "type": "uint256"
                            },
                            {
                                "name": "creatorFee",
                                "type": "uint256"
                            },
                            {
                                "name": "refundFee",
                                "type": "uint256"
                            }
                        ],
                        "lineNumber": 31
                    },
                    {
                        "name": "Durations",
                        "members": [
                            {
                                "name": "maxOraclePriceAge",
                                "type": "uint256"
                            },
                            {
                                "name": "expiryDuration",
                                "type": "uint256"
                            },
                            {
                                "name": "maxTimeToMaturity",
                                "type": "uint256"
                            }
                        ],
                        "lineNumber": 37
                    },
                    {
                        "name": "CreatorLimits",
                        "members": [
                            {
                                "name": "capitalRequirement",
                                "type": "uint256"
                            },
                            {
                                "name": "skewLimit",
                                "type": "uint256"
                            }
                        ],
                        "lineNumber": 43
                    }
                ],
                "inherits": [
                    "Owned",
                    "Pausable",
                    "MixinResolver",
                    "IBinaryOptionMarketManager"
                ],
                "libraries": [
                    {
                        "name": "SafeMath",
                        "type": "uint"
                    },
                    {
                        "name": "AddressSetLib",
                        "type": "AddressSetLib.AddressSet"
                    }
                ]
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/Pausable.sol": {
        "imports": [
            "contracts/Owned.sol"
        ],
        "contracts": {
            "Pausable": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 14,
                                "name": "require(..., Owner must be set)"
                            }
                        ],
                        "lineNumber": 12
                    },
                    {
                        "name": "setPaused",
                        "signature": "setPaused(bool _paused)",
                        "returns": "()",
                        "events": [
                            "PauseChanged"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 22
                    }
                ],
                "events": [
                    {
                        "name": "PauseChanged",
                        "parameters": "(bool isPaused)",
                        "lineNumber": 40
                    }
                ],
                "variables": [
                    {
                        "name": "lastPauseTime",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 9,
                        "visibility": "public"
                    },
                    {
                        "name": "paused",
                        "constant": false,
                        "type": "bool",
                        "lineNumber": 10,
                        "visibility": "public"
                    }
                ],
                "modifiers": [
                    {
                        "name": "notPaused",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 42
                    }
                ],
                "structs": [],
                "inherits": [
                    "Owned"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/BinaryOptionMarketFactory.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/MixinResolver.sol",
            "contracts/BinaryOptionMarket.sol"
        ],
        "contracts": {
            "BinaryOptionMarketFactory": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, address _resolver)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned",
                            "MixinResolver"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 21
                    },
                    {
                        "name": "resolverAddressesRequired",
                        "signature": "resolverAddressesRequired()",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 25
                    },
                    {
                        "name": "_manager",
                        "signature": "_manager()",
                        "returns": "(address)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 32
                    },
                    {
                        "name": "createMarket",
                        "signature": "createMarket(address creator, uint256[2] creatorLimits, bytes32 oracleKey, uint256 strikePrice, bool refundsEnabled, uint256[3] times, uint256[2] bids, uint256[3] fees)",
                        "returns": "(contract BinaryOptionMarket)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 49,
                                "name": "require(..., Only permitted by the manager.)"
                            }
                        ],
                        "lineNumber": 38
                    }
                ],
                "events": [],
                "variables": [
                    {
                        "name": "CONTRACT_BINARYOPTIONMARKETMANAGER",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 17,
                        "visibility": "internal"
                    }
                ],
                "modifiers": [],
                "structs": [],
                "inherits": [
                    "Owned",
                    "MixinResolver"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/interfaces/IExchangeRates.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {
            "IExchangeRates": {
                "functions": [
                    {
                        "name": "aggregators",
                        "signature": "aggregators(bytes32 currencyKey)",
                        "returns": "(address)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 21
                    },
                    {
                        "name": "aggregatorWarningFlags",
                        "signature": "aggregatorWarningFlags()",
                        "returns": "(address)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 23
                    },
                    {
                        "name": "anyRateIsInvalid",
                        "signature": "anyRateIsInvalid(bytes32[] currencyKeys)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 25
                    },
                    {
                        "name": "canFreezeRate",
                        "signature": "canFreezeRate(bytes32 currencyKey)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 27
                    },
                    {
                        "name": "currentRoundForRate",
                        "signature": "currentRoundForRate(bytes32 currencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 29
                    },
                    {
                        "name": "currenciesUsingAggregator",
                        "signature": "currenciesUsingAggregator(address aggregator)",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 31
                    },
                    {
                        "name": "effectiveValue",
                        "signature": "effectiveValue(bytes32 sourceCurrencyKey, uint256 sourceAmount, bytes32 destinationCurrencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 33
                    },
                    {
                        "name": "effectiveValueAndRates",
                        "signature": "effectiveValueAndRates(bytes32 sourceCurrencyKey, uint256 sourceAmount, bytes32 destinationCurrencyKey)",
                        "returns": "(uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 39
                    },
                    {
                        "name": "effectiveValueAtRound",
                        "signature": "effectiveValueAtRound(bytes32 sourceCurrencyKey, uint256 sourceAmount, bytes32 destinationCurrencyKey, uint256 roundIdForSrc, uint256 roundIdForDest)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 52
                    },
                    {
                        "name": "getCurrentRoundId",
                        "signature": "getCurrentRoundId(bytes32 currencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 60
                    },
                    {
                        "name": "getLastRoundIdBeforeElapsedSecs",
                        "signature": "getLastRoundIdBeforeElapsedSecs(bytes32 currencyKey, uint256 startingRoundId, uint256 startingTimestamp, uint256 timediff)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 62
                    },
                    {
                        "name": "inversePricing",
                        "signature": "inversePricing(bytes32 currencyKey)",
                        "returns": "(uint256, uint256, uint256, bool, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 69
                    },
                    {
                        "name": "lastRateUpdateTimes",
                        "signature": "lastRateUpdateTimes(bytes32 currencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 80
                    },
                    {
                        "name": "oracle",
                        "signature": "oracle()",
                        "returns": "(address)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 82
                    },
                    {
                        "name": "rateAndTimestampAtRound",
                        "signature": "rateAndTimestampAtRound(bytes32 currencyKey, uint256 roundId)",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 84
                    },
                    {
                        "name": "rateAndUpdatedTime",
                        "signature": "rateAndUpdatedTime(bytes32 currencyKey)",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 86
                    },
                    {
                        "name": "rateAndInvalid",
                        "signature": "rateAndInvalid(bytes32 currencyKey)",
                        "returns": "(uint256, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 88
                    },
                    {
                        "name": "rateForCurrency",
                        "signature": "rateForCurrency(bytes32 currencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 90
                    },
                    {
                        "name": "rateIsFlagged",
                        "signature": "rateIsFlagged(bytes32 currencyKey)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 92
                    },
                    {
                        "name": "rateIsFrozen",
                        "signature": "rateIsFrozen(bytes32 currencyKey)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 94
                    },
                    {
                        "name": "rateIsInvalid",
                        "signature": "rateIsInvalid(bytes32 currencyKey)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 96
                    },
                    {
                        "name": "rateIsStale",
                        "signature": "rateIsStale(bytes32 currencyKey)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 98
                    },
                    {
                        "name": "rateStalePeriod",
                        "signature": "rateStalePeriod()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 100
                    },
                    {
                        "name": "ratesAndUpdatedTimeForCurrencyLastNRounds",
                        "signature": "ratesAndUpdatedTimeForCurrencyLastNRounds(bytes32 currencyKey, uint256 numRounds)",
                        "returns": "(uint256[], uint256[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 102
                    },
                    {
                        "name": "ratesAndInvalidForCurrencies",
                        "signature": "ratesAndInvalidForCurrencies(bytes32[] currencyKeys)",
                        "returns": "(uint256[], bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 107
                    },
                    {
                        "name": "ratesForCurrencies",
                        "signature": "ratesForCurrencies(bytes32[] currencyKeys)",
                        "returns": "(uint256[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 112
                    },
                    {
                        "name": "freezeRate",
                        "signature": "freezeRate(bytes32 currencyKey)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 115
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [
                    {
                        "name": "RateAndUpdatedTime",
                        "members": [
                            {
                                "name": "rate",
                                "type": "uint216"
                            },
                            {
                                "name": "time",
                                "type": "uint40"
                            }
                        ],
                        "lineNumber": 7
                    },
                    {
                        "name": "InversePricing",
                        "members": [
                            {
                                "name": "entryPoint",
                                "type": "uint256"
                            },
                            {
                                "name": "upperLimit",
                                "type": "uint256"
                            },
                            {
                                "name": "lowerLimit",
                                "type": "uint256"
                            },
                            {
                                "name": "frozenAtUpperLimit",
                                "type": "bool"
                            },
                            {
                                "name": "frozenAtLowerLimit",
                                "type": "bool"
                            }
                        ],
                        "lineNumber": 12
                    }
                ],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/BinaryOptionMarketData.sol": {
        "imports": [
            "contracts/BinaryOption.sol",
            "contracts/BinaryOptionMarket.sol",
            "contracts/BinaryOptionMarketManager.sol"
        ],
        "contracts": {
            "BinaryOptionMarketData": {
                "functions": [
                    {
                        "name": "getMarketParameters",
                        "signature": "getMarketParameters(contract BinaryOptionMarket market)",
                        "returns": "(struct BinaryOptionMarketData.MarketParameters)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 60
                    },
                    {
                        "name": "getMarketData",
                        "signature": "getMarketData(contract BinaryOptionMarket market)",
                        "returns": "(struct BinaryOptionMarketData.MarketData)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 81
                    },
                    {
                        "name": "getAccountMarketData",
                        "signature": "getAccountMarketData(contract BinaryOptionMarket market, address account)",
                        "returns": "(struct BinaryOptionMarketData.AccountData)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 102
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [
                    {
                        "name": "OptionValues",
                        "members": [
                            {
                                "name": "long",
                                "type": "uint256"
                            },
                            {
                                "name": "short",
                                "type": "uint256"
                            }
                        ],
                        "lineNumber": 12
                    },
                    {
                        "name": "Deposits",
                        "members": [
                            {
                                "name": "deposited",
                                "type": "uint256"
                            },
                            {
                                "name": "exercisableDeposits",
                                "type": "uint256"
                            }
                        ],
                        "lineNumber": 17
                    },
                    {
                        "name": "Resolution",
                        "members": [
                            {
                                "name": "resolved",
                                "type": "bool"
                            },
                            {
                                "name": "canResolve",
                                "type": "bool"
                            }
                        ],
                        "lineNumber": 22
                    },
                    {
                        "name": "OraclePriceAndTimestamp",
                        "members": [
                            {
                                "name": "price",
                                "type": "uint256"
                            },
                            {
                                "name": "updatedAt",
                                "type": "uint256"
                            }
                        ],
                        "lineNumber": 27
                    },
                    {
                        "name": "MarketParameters",
                        "members": [
                            {
                                "name": "creator",
                                "type": "address"
                            },
                            {
                                "name": "options",
                                "type": "struct BinaryOptionMarket.Options"
                            },
                            {
                                "name": "times",
                                "type": "struct BinaryOptionMarket.Times"
                            },
                            {
                                "name": "oracleDetails",
                                "type": "struct BinaryOptionMarket.OracleDetails"
                            },
                            {
                                "name": "fees",
                                "type": "struct BinaryOptionMarketManager.Fees"
                            },
                            {
                                "name": "creatorLimits",
                                "type": "struct BinaryOptionMarketManager.CreatorLimits"
                            }
                        ],
                        "lineNumber": 33
                    },
                    {
                        "name": "MarketData",
                        "members": [
                            {
                                "name": "oraclePriceAndTimestamp",
                                "type": "struct BinaryOptionMarketData.OraclePriceAndTimestamp"
                            },
                            {
                                "name": "prices",
                                "type": "struct BinaryOptionMarket.Prices"
                            },
                            {
                                "name": "deposits",
                                "type": "struct BinaryOptionMarketData.Deposits"
                            },
                            {
                                "name": "resolution",
                                "type": "struct BinaryOptionMarketData.Resolution"
                            },
                            {
                                "name": "phase",
                                "type": "enum IBinaryOptionMarket.Phase"
                            },
                            {
                                "name": "result",
                                "type": "enum IBinaryOptionMarket.Side"
                            },
                            {
                                "name": "totalBids",
                                "type": "struct BinaryOptionMarketData.OptionValues"
                            },
                            {
                                "name": "totalClaimableSupplies",
                                "type": "struct BinaryOptionMarketData.OptionValues"
                            },
                            {
                                "name": "totalSupplies",
                                "type": "struct BinaryOptionMarketData.OptionValues"
                            }
                        ],
                        "lineNumber": 42
                    },
                    {
                        "name": "AccountData",
                        "members": [
                            {
                                "name": "bids",
                                "type": "struct BinaryOptionMarketData.OptionValues"
                            },
                            {
                                "name": "claimable",
                                "type": "struct BinaryOptionMarketData.OptionValues"
                            },
                            {
                                "name": "balances",
                                "type": "struct BinaryOptionMarketData.OptionValues"
                            }
                        ],
                        "lineNumber": 54
                    }
                ],
                "inherits": [],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/Bytes32SetLib.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {},
        "libraries": {
            "Bytes32SetLib": {
                "functions": [
                    {
                        "name": "contains",
                        "signature": "contains(struct Bytes32SetLib.Bytes32Set set, bytes32 candidate)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 11
                    },
                    {
                        "name": "getPage",
                        "signature": "getPage(struct Bytes32SetLib.Bytes32Set set, uint256 index, uint256 pageSize)",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 19
                    },
                    {
                        "name": "add",
                        "signature": "add(struct Bytes32SetLib.Bytes32Set set, bytes32 element)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 43
                    },
                    {
                        "name": "remove",
                        "signature": "remove(struct Bytes32SetLib.Bytes32Set set, bytes32 element)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 52,
                                "name": "require(..., Element not in set.)"
                            }
                        ],
                        "lineNumber": 51
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [
                    {
                        "name": "Bytes32Set",
                        "members": [
                            {
                                "name": "elements",
                                "type": "bytes32[]"
                            },
                            {
                                "name": "indices",
                                "type": "mapping(bytes32 => uint256)"
                            }
                        ],
                        "lineNumber": 6
                    }
                ],
                "inherits": [],
                "libraries": []
            }
        }
    },
    "contracts/Collateral.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/MixinSystemSettings.sol",
            "contracts/interfaces/ICollateralLoan.sol",
            "contracts/SafeDecimalMath.sol",
            "contracts/CollateralState.sol",
            "contracts/interfaces/ICollateralManager.sol",
            "contracts/interfaces/ISystemStatus.sol",
            "contracts/interfaces/IFeePool.sol",
            "contracts/interfaces/ISynth.sol",
            "contracts/interfaces/IERC20.sol",
            "contracts/interfaces/IExchangeRates.sol",
            "contracts/interfaces/IExchanger.sol",
            "contracts/interfaces/IShortingRewards.sol"
        ],
        "contracts": {
            "Collateral": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(contract CollateralState _state, address _owner, address _manager, address _resolver, bytes32 _collateralKey, uint256 _minCratio, uint256 _minCollateral)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned",
                            "MixinSystemSettings"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 83
                    },
                    {
                        "name": "resolverAddressesRequired",
                        "signature": "resolverAddressesRequired()",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 101
                    },
                    {
                        "name": "_systemStatus",
                        "signature": "_systemStatus()",
                        "returns": "(contract ISystemStatus)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 117
                    },
                    {
                        "name": "_synth",
                        "signature": "_synth(bytes32 synthName)",
                        "returns": "(contract ISynth)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 121
                    },
                    {
                        "name": "_synthsUSD",
                        "signature": "_synthsUSD()",
                        "returns": "(contract ISynth)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 125
                    },
                    {
                        "name": "_exchangeRates",
                        "signature": "_exchangeRates()",
                        "returns": "(contract IExchangeRates)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 129
                    },
                    {
                        "name": "_exchanger",
                        "signature": "_exchanger()",
                        "returns": "(contract IExchanger)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 133
                    },
                    {
                        "name": "_feePool",
                        "signature": "_feePool()",
                        "returns": "(contract IFeePool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 137
                    },
                    {
                        "name": "_manager",
                        "signature": "_manager()",
                        "returns": "(contract ICollateralManager)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 141
                    },
                    {
                        "name": "collateralRatio",
                        "signature": "collateralRatio(struct ICollateralLoan.Loan loan)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 147
                    },
                    {
                        "name": "maxLoan",
                        "signature": "maxLoan(uint256 amount, bytes32 currency)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 154
                    },
                    {
                        "name": "liquidationAmount",
                        "signature": "liquidationAmount(struct ICollateralLoan.Loan loan)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 167
                    },
                    {
                        "name": "collateralRedeemed",
                        "signature": "collateralRedeemed(bytes32 currency, uint256 amount)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 182
                    },
                    {
                        "name": "areSynthsAndCurrenciesSet",
                        "signature": "areSynthsAndCurrenciesSet(bytes32[] _synthNamesInResolver, bytes32[] _synthKeys)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 189
                    },
                    {
                        "name": "_checkSynthBalance",
                        "signature": "_checkSynthBalance(address payer, bytes32 key, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 219,
                                "name": "require(..., Not enough synth balance)"
                            }
                        ],
                        "lineNumber": 214
                    },
                    {
                        "name": "_checkLoanAvailable",
                        "signature": "_checkLoanAvailable(struct ICollateralLoan.Loan _loan)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 224,
                                "name": "require(..., Loan does not exist)"
                            },
                            {
                                "lineNumber": 225,
                                "name": "require(..., Loan recently interacted with)"
                            }
                        ],
                        "lineNumber": 223
                    },
                    {
                        "name": "issuanceRatio",
                        "signature": "issuanceRatio()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 228
                    },
                    {
                        "name": "addSynths",
                        "signature": "addSynths(bytes32[] _synthNamesInResolver, bytes32[] _synthKeys)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 237,
                                "name": "require(..., Input array length mismatch)"
                            }
                        ],
                        "lineNumber": 236
                    },
                    {
                        "name": "addRewardsContracts",
                        "signature": "addRewardsContracts(address rewardsContract, bytes32 synth)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 251
                    },
                    {
                        "name": "setMinCratio",
                        "signature": "setMinCratio(uint256 _minCratio)",
                        "returns": "()",
                        "events": [
                            "MinCratioRatioUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 258,
                                "name": "require(..., Must be greater than 1)"
                            }
                        ],
                        "lineNumber": 257
                    },
                    {
                        "name": "setIssueFeeRate",
                        "signature": "setIssueFeeRate(uint256 _issueFeeRate)",
                        "returns": "()",
                        "events": [
                            "IssueFeeRateUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 263
                    },
                    {
                        "name": "setInteractionDelay",
                        "signature": "setInteractionDelay(uint256 _interactionDelay)",
                        "returns": "()",
                        "events": [
                            "InteractionDelayUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 269,
                                "name": "require(..., Max 1 hour)"
                            }
                        ],
                        "lineNumber": 268
                    },
                    {
                        "name": "setManager",
                        "signature": "setManager(address _newManager)",
                        "returns": "()",
                        "events": [
                            "ManagerUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 274
                    },
                    {
                        "name": "setCanOpenLoans",
                        "signature": "setCanOpenLoans(bool _canOpenLoans)",
                        "returns": "()",
                        "events": [
                            "CanOpenLoansUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 279
                    },
                    {
                        "name": "openInternal",
                        "signature": "openInternal(uint256 collateral, uint256 amount, bytes32 currency, bool short)",
                        "returns": "(uint256)",
                        "events": [
                            "LoanCreated"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 295,
                                "name": "require(..., Opening is disabled)"
                            },
                            {
                                "lineNumber": 298,
                                "name": "require(..., Collateral rate is invalid)"
                            },
                            {
                                "lineNumber": 301,
                                "name": "require(..., Not allowed to issue this synth)"
                            },
                            {
                                "lineNumber": 304,
                                "name": "require(..., Currency rate is invalid)"
                            },
                            {
                                "lineNumber": 307,
                                "name": "require(..., Not enough collateral to open)"
                            },
                            {
                                "lineNumber": 310,
                                "name": "require(..., Max loans exceeded)"
                            },
                            {
                                "lineNumber": 315,
                                "name": "require(..., Debt limit or invalid rate)"
                            },
                            {
                                "lineNumber": 318,
                                "name": "require(..., Exceeds max borrowing power)"
                            }
                        ],
                        "lineNumber": 286
                    },
                    {
                        "name": "closeInternal",
                        "signature": "closeInternal(address borrower, uint256 id)",
                        "returns": "(uint256)",
                        "events": [
                            "LoanClosed"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 373,
                                "name": "require(..., Collateral rate is invalid)"
                            },
                            {
                                "lineNumber": 391,
                                "name": "require(..., Waiting secs or settlement owing)"
                            }
                        ],
                        "lineNumber": 368
                    },
                    {
                        "name": "closeByLiquidationInternal",
                        "signature": "closeByLiquidationInternal(address borrower, address liquidator, struct ICollateralLoan.Loan loan)",
                        "returns": "(uint256)",
                        "events": [
                            "LoanClosedByLiquidation"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 441,
                                "name": "require(..., Waiting or settlement owing)"
                            }
                        ],
                        "lineNumber": 426
                    },
                    {
                        "name": "depositInternal",
                        "signature": "depositInternal(address account, uint256 id, uint256 amount)",
                        "returns": "()",
                        "events": [
                            "CollateralDeposited"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 479,
                                "name": "require(..., Collateral rate is invalid)"
                            },
                            {
                                "lineNumber": 482,
                                "name": "require(..., Deposit must be greater than 0)"
                            }
                        ],
                        "lineNumber": 470
                    },
                    {
                        "name": "withdrawInternal",
                        "signature": "withdrawInternal(uint256 id, uint256 amount)",
                        "returns": "(uint256)",
                        "events": [
                            "CollateralWithdrawn"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 511,
                                "name": "require(..., Collateral rate is invalid)"
                            },
                            {
                                "lineNumber": 529,
                                "name": "require(..., Cratio too low)"
                            }
                        ],
                        "lineNumber": 506
                    },
                    {
                        "name": "liquidateInternal",
                        "signature": "liquidateInternal(address borrower, uint256 id, uint256 payment)",
                        "returns": "(uint256)",
                        "events": [
                            "LoanPartiallyLiquidated"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 550,
                                "name": "require(..., Collateral rate is invalid)"
                            },
                            {
                                "lineNumber": 553,
                                "name": "require(..., Payment must be greater than 0)"
                            },
                            {
                                "lineNumber": 568,
                                "name": "require(..., Cratio above liquidation ratio)"
                            },
                            {
                                "lineNumber": 595,
                                "name": "require(..., Waiting or settlement owing)"
                            }
                        ],
                        "lineNumber": 541
                    },
                    {
                        "name": "repayInternal",
                        "signature": "repayInternal(address borrower, address repayer, uint256 id, uint256 payment)",
                        "returns": "()",
                        "events": [
                            "LoanRepaymentMade"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 615,
                                "name": "require(..., Collateral rate is invalid)"
                            },
                            {
                                "lineNumber": 618,
                                "name": "require(..., Payment must be greater than 0)"
                            },
                            {
                                "lineNumber": 639,
                                "name": "require(..., Waiting or settlement owing)"
                            }
                        ],
                        "lineNumber": 605
                    },
                    {
                        "name": "drawInternal",
                        "signature": "drawInternal(uint256 id, uint256 amount)",
                        "returns": "()",
                        "events": [
                            "LoanDrawnDown"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 654,
                                "name": "require(..., Collateral rate is invalid)"
                            },
                            {
                                "lineNumber": 669,
                                "name": "require(..., Cannot draw this much)"
                            }
                        ],
                        "lineNumber": 649
                    },
                    {
                        "name": "accrueInterest",
                        "signature": "accrueInterest(struct ICollateralLoan.Loan loan)",
                        "returns": "(struct ICollateralLoan.Loan)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 717,
                                "name": "require(..., Rates are invalid)"
                            }
                        ],
                        "lineNumber": 704
                    },
                    {
                        "name": "_processPayment",
                        "signature": "_processPayment(struct ICollateralLoan.Loan loanBefore, uint256 payment)",
                        "returns": "(struct ICollateralLoan.Loan)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 740
                    },
                    {
                        "name": "_payFees",
                        "signature": "_payFees(uint256 amount, bytes32 synth)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 769
                    }
                ],
                "events": [
                    {
                        "name": "MinCratioRatioUpdated",
                        "parameters": "(uint256 minCratio)",
                        "lineNumber": 781
                    },
                    {
                        "name": "MinCollateralUpdated",
                        "parameters": "(uint256 minCollateral)",
                        "lineNumber": 782
                    },
                    {
                        "name": "IssueFeeRateUpdated",
                        "parameters": "(uint256 issueFeeRate)",
                        "lineNumber": 783
                    },
                    {
                        "name": "MaxLoansPerAccountUpdated",
                        "parameters": "(uint256 maxLoansPerAccount)",
                        "lineNumber": 784
                    },
                    {
                        "name": "InteractionDelayUpdated",
                        "parameters": "(uint256 interactionDelay)",
                        "lineNumber": 785
                    },
                    {
                        "name": "ManagerUpdated",
                        "parameters": "(address manager)",
                        "lineNumber": 786
                    },
                    {
                        "name": "CanOpenLoansUpdated",
                        "parameters": "(bool canOpenLoans)",
                        "lineNumber": 787
                    },
                    {
                        "name": "LoanCreated",
                        "parameters": "(address account, uint256 id, uint256 amount, uint256 collateral, bytes32 currency, uint256 issuanceFee)",
                        "lineNumber": 790
                    },
                    {
                        "name": "LoanClosed",
                        "parameters": "(address account, uint256 id)",
                        "lineNumber": 791
                    },
                    {
                        "name": "CollateralDeposited",
                        "parameters": "(address account, uint256 id, uint256 amountDeposited, uint256 collateralAfter)",
                        "lineNumber": 792
                    },
                    {
                        "name": "CollateralWithdrawn",
                        "parameters": "(address account, uint256 id, uint256 amountWithdrawn, uint256 collateralAfter)",
                        "lineNumber": 793
                    },
                    {
                        "name": "LoanRepaymentMade",
                        "parameters": "(address account, address repayer, uint256 id, uint256 amountRepaid, uint256 amountAfter)",
                        "lineNumber": 794
                    },
                    {
                        "name": "LoanDrawnDown",
                        "parameters": "(address account, uint256 id, uint256 amount)",
                        "lineNumber": 795
                    },
                    {
                        "name": "LoanPartiallyLiquidated",
                        "parameters": "(address account, uint256 id, address liquidator, uint256 amountLiquidated, uint256 collateralLiquidated)",
                        "lineNumber": 796
                    },
                    {
                        "name": "LoanClosedByLiquidation",
                        "parameters": "(address account, uint256 id, address liquidator, uint256 amountLiquidated, uint256 collateralLiquidated)",
                        "lineNumber": 803
                    }
                ],
                "variables": [
                    {
                        "name": "sUSD",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 32,
                        "visibility": "private"
                    },
                    {
                        "name": "collateralKey",
                        "constant": false,
                        "type": "bytes32",
                        "lineNumber": 37,
                        "visibility": "public"
                    },
                    {
                        "name": "state",
                        "constant": false,
                        "type": "contract CollateralState",
                        "lineNumber": 40,
                        "visibility": "public"
                    },
                    {
                        "name": "manager",
                        "constant": false,
                        "type": "address",
                        "lineNumber": 42,
                        "visibility": "public"
                    },
                    {
                        "name": "synths",
                        "constant": false,
                        "type": "bytes32[]",
                        "lineNumber": 45,
                        "visibility": "public"
                    },
                    {
                        "name": "synthsByKey",
                        "constant": false,
                        "type": "mapping(bytes32 => bytes32)",
                        "lineNumber": 48,
                        "visibility": "public"
                    },
                    {
                        "name": "shortingRewards",
                        "constant": false,
                        "type": "mapping(bytes32 => address)",
                        "lineNumber": 51,
                        "visibility": "public"
                    },
                    {
                        "name": "minCratio",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 56,
                        "visibility": "public"
                    },
                    {
                        "name": "minCollateral",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 59,
                        "visibility": "public"
                    },
                    {
                        "name": "issueFeeRate",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 62,
                        "visibility": "public"
                    },
                    {
                        "name": "maxLoansPerAccount",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 65,
                        "visibility": "public"
                    },
                    {
                        "name": "interactionDelay",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 69,
                        "visibility": "public"
                    },
                    {
                        "name": "canOpenLoans",
                        "constant": false,
                        "type": "bool",
                        "lineNumber": 71,
                        "visibility": "public"
                    },
                    {
                        "name": "CONTRACT_SYSTEMSTATUS",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 75,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_EXRATES",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 76,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_EXCHANGER",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 77,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_FEEPOOL",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 78,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_SYNTHSUSD",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 79,
                        "visibility": "private"
                    }
                ],
                "modifiers": [],
                "structs": [],
                "inherits": [
                    "ICollateralLoan",
                    "Owned",
                    "MixinSystemSettings"
                ],
                "libraries": [
                    {
                        "name": "SafeMath",
                        "type": "uint"
                    },
                    {
                        "name": "SafeDecimalMath",
                        "type": "uint"
                    }
                ]
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/MixinSystemSettings.sol": {
        "imports": [
            "contracts/MixinResolver.sol",
            "contracts/interfaces/IFlexibleStorage.sol"
        ],
        "contracts": {
            "MixinSystemSettings": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _resolver)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "MixinResolver"
                        ],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 36
                    },
                    {
                        "name": "resolverAddressesRequired",
                        "signature": "resolverAddressesRequired()",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 38
                    },
                    {
                        "name": "flexibleStorage",
                        "signature": "flexibleStorage()",
                        "returns": "(contract IFlexibleStorage)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 43
                    },
                    {
                        "name": "_getGasLimitSetting",
                        "signature": "_getGasLimitSetting(enum MixinSystemSettings.CrossDomainMessageGasLimits gasLimitType)",
                        "returns": "(bytes32)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "pure",
                        "requires": [],
                        "lineNumber": 47
                    },
                    {
                        "name": "getCrossDomainMessageGasLimit",
                        "signature": "getCrossDomainMessageGasLimit(enum MixinSystemSettings.CrossDomainMessageGasLimits gasLimitType)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 61
                    },
                    {
                        "name": "getTradingRewardsEnabled",
                        "signature": "getTradingRewardsEnabled()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 65
                    },
                    {
                        "name": "getWaitingPeriodSecs",
                        "signature": "getWaitingPeriodSecs()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 69
                    },
                    {
                        "name": "getPriceDeviationThresholdFactor",
                        "signature": "getPriceDeviationThresholdFactor()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 73
                    },
                    {
                        "name": "getIssuanceRatio",
                        "signature": "getIssuanceRatio()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 77
                    },
                    {
                        "name": "getFeePeriodDuration",
                        "signature": "getFeePeriodDuration()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 82
                    },
                    {
                        "name": "getTargetThreshold",
                        "signature": "getTargetThreshold()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 87
                    },
                    {
                        "name": "getLiquidationDelay",
                        "signature": "getLiquidationDelay()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 92
                    },
                    {
                        "name": "getLiquidationRatio",
                        "signature": "getLiquidationRatio()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 96
                    },
                    {
                        "name": "getLiquidationPenalty",
                        "signature": "getLiquidationPenalty()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 100
                    },
                    {
                        "name": "getRateStalePeriod",
                        "signature": "getRateStalePeriod()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 104
                    },
                    {
                        "name": "getExchangeFeeRate",
                        "signature": "getExchangeFeeRate(bytes32 currencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 108
                    },
                    {
                        "name": "getMinimumStakeTime",
                        "signature": "getMinimumStakeTime()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 116
                    },
                    {
                        "name": "getAggregatorWarningFlags",
                        "signature": "getAggregatorWarningFlags()",
                        "returns": "(address)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 120
                    },
                    {
                        "name": "getDebtSnapshotStaleTime",
                        "signature": "getDebtSnapshotStaleTime()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 124
                    }
                ],
                "events": [],
                "variables": [
                    {
                        "name": "SETTING_CONTRACT_NAME",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 11,
                        "visibility": "internal"
                    },
                    {
                        "name": "SETTING_WAITING_PERIOD_SECS",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 13,
                        "visibility": "internal"
                    },
                    {
                        "name": "SETTING_PRICE_DEVIATION_THRESHOLD_FACTOR",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 14,
                        "visibility": "internal"
                    },
                    {
                        "name": "SETTING_ISSUANCE_RATIO",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 15,
                        "visibility": "internal"
                    },
                    {
                        "name": "SETTING_FEE_PERIOD_DURATION",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 16,
                        "visibility": "internal"
                    },
                    {
                        "name": "SETTING_TARGET_THRESHOLD",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 17,
                        "visibility": "internal"
                    },
                    {
                        "name": "SETTING_LIQUIDATION_DELAY",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 18,
                        "visibility": "internal"
                    },
                    {
                        "name": "SETTING_LIQUIDATION_RATIO",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 19,
                        "visibility": "internal"
                    },
                    {
                        "name": "SETTING_LIQUIDATION_PENALTY",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 20,
                        "visibility": "internal"
                    },
                    {
                        "name": "SETTING_RATE_STALE_PERIOD",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 21,
                        "visibility": "internal"
                    },
                    {
                        "name": "SETTING_EXCHANGE_FEE_RATE",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 22,
                        "visibility": "internal"
                    },
                    {
                        "name": "SETTING_MINIMUM_STAKE_TIME",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 23,
                        "visibility": "internal"
                    },
                    {
                        "name": "SETTING_AGGREGATOR_WARNING_FLAGS",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 24,
                        "visibility": "internal"
                    },
                    {
                        "name": "SETTING_TRADING_REWARDS_ENABLED",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 25,
                        "visibility": "internal"
                    },
                    {
                        "name": "SETTING_DEBT_SNAPSHOT_STALE_TIME",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 26,
                        "visibility": "internal"
                    },
                    {
                        "name": "SETTING_CROSS_DOMAIN_DEPOSIT_GAS_LIMIT",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 27,
                        "visibility": "internal"
                    },
                    {
                        "name": "SETTING_CROSS_DOMAIN_ESCROW_GAS_LIMIT",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 28,
                        "visibility": "internal"
                    },
                    {
                        "name": "SETTING_CROSS_DOMAIN_REWARD_GAS_LIMIT",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 29,
                        "visibility": "internal"
                    },
                    {
                        "name": "SETTING_CROSS_DOMAIN_WITHDRAWAL_GAS_LIMIT",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 30,
                        "visibility": "internal"
                    },
                    {
                        "name": "CONTRACT_FLEXIBLESTORAGE",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 32,
                        "visibility": "internal"
                    }
                ],
                "modifiers": [],
                "structs": [],
                "inherits": [
                    "MixinResolver"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/interfaces/IFlexibleStorage.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {
            "IFlexibleStorage": {
                "functions": [
                    {
                        "name": "getUIntValue",
                        "signature": "getUIntValue(bytes32 contractName, bytes32 record)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 7
                    },
                    {
                        "name": "getUIntValues",
                        "signature": "getUIntValues(bytes32 contractName, bytes32[] records)",
                        "returns": "(uint256[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 9
                    },
                    {
                        "name": "getIntValue",
                        "signature": "getIntValue(bytes32 contractName, bytes32 record)",
                        "returns": "(int256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 11
                    },
                    {
                        "name": "getIntValues",
                        "signature": "getIntValues(bytes32 contractName, bytes32[] records)",
                        "returns": "(int256[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 13
                    },
                    {
                        "name": "getAddressValue",
                        "signature": "getAddressValue(bytes32 contractName, bytes32 record)",
                        "returns": "(address)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 15
                    },
                    {
                        "name": "getAddressValues",
                        "signature": "getAddressValues(bytes32 contractName, bytes32[] records)",
                        "returns": "(address[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 17
                    },
                    {
                        "name": "getBoolValue",
                        "signature": "getBoolValue(bytes32 contractName, bytes32 record)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 19
                    },
                    {
                        "name": "getBoolValues",
                        "signature": "getBoolValues(bytes32 contractName, bytes32[] records)",
                        "returns": "(bool[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 21
                    },
                    {
                        "name": "getBytes32Value",
                        "signature": "getBytes32Value(bytes32 contractName, bytes32 record)",
                        "returns": "(bytes32)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 23
                    },
                    {
                        "name": "getBytes32Values",
                        "signature": "getBytes32Values(bytes32 contractName, bytes32[] records)",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 25
                    },
                    {
                        "name": "deleteUIntValue",
                        "signature": "deleteUIntValue(bytes32 contractName, bytes32 record)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 28
                    },
                    {
                        "name": "deleteIntValue",
                        "signature": "deleteIntValue(bytes32 contractName, bytes32 record)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 30
                    },
                    {
                        "name": "deleteAddressValue",
                        "signature": "deleteAddressValue(bytes32 contractName, bytes32 record)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 32
                    },
                    {
                        "name": "deleteBoolValue",
                        "signature": "deleteBoolValue(bytes32 contractName, bytes32 record)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 34
                    },
                    {
                        "name": "deleteBytes32Value",
                        "signature": "deleteBytes32Value(bytes32 contractName, bytes32 record)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 36
                    },
                    {
                        "name": "setUIntValue",
                        "signature": "setUIntValue(bytes32 contractName, bytes32 record, uint256 value)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 38
                    },
                    {
                        "name": "setUIntValues",
                        "signature": "setUIntValues(bytes32 contractName, bytes32[] records, uint256[] values)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 44
                    },
                    {
                        "name": "setIntValue",
                        "signature": "setIntValue(bytes32 contractName, bytes32 record, int256 value)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 50
                    },
                    {
                        "name": "setIntValues",
                        "signature": "setIntValues(bytes32 contractName, bytes32[] records, int256[] values)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 56
                    },
                    {
                        "name": "setAddressValue",
                        "signature": "setAddressValue(bytes32 contractName, bytes32 record, address value)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 62
                    },
                    {
                        "name": "setAddressValues",
                        "signature": "setAddressValues(bytes32 contractName, bytes32[] records, address[] values)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 68
                    },
                    {
                        "name": "setBoolValue",
                        "signature": "setBoolValue(bytes32 contractName, bytes32 record, bool value)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 74
                    },
                    {
                        "name": "setBoolValues",
                        "signature": "setBoolValues(bytes32 contractName, bytes32[] records, bool[] values)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 80
                    },
                    {
                        "name": "setBytes32Value",
                        "signature": "setBytes32Value(bytes32 contractName, bytes32 record, bytes32 value)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 86
                    },
                    {
                        "name": "setBytes32Values",
                        "signature": "setBytes32Values(bytes32 contractName, bytes32[] records, bytes32[] values)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 92
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/interfaces/ICollateralLoan.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {
            "ICollateralLoan": {
                "functions": [],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [
                    {
                        "name": "Loan",
                        "members": [
                            {
                                "name": "id",
                                "type": "uint256"
                            },
                            {
                                "name": "account",
                                "type": "address payable"
                            },
                            {
                                "name": "collateral",
                                "type": "uint256"
                            },
                            {
                                "name": "currency",
                                "type": "bytes32"
                            },
                            {
                                "name": "amount",
                                "type": "uint256"
                            },
                            {
                                "name": "short",
                                "type": "bool"
                            },
                            {
                                "name": "accruedInterest",
                                "type": "uint256"
                            },
                            {
                                "name": "interestIndex",
                                "type": "uint256"
                            },
                            {
                                "name": "lastInteraction",
                                "type": "uint256"
                            }
                        ],
                        "lineNumber": 7
                    }
                ],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/CollateralState.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/State.sol",
            "contracts/interfaces/ICollateralLoan.sol",
            "contracts/SafeDecimalMath.sol"
        ],
        "contracts": {
            "CollateralState": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, address _associatedContract)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned",
                            "State"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 20
                    },
                    {
                        "name": "getLoan",
                        "signature": "getLoan(address account, uint256 loanID)",
                        "returns": "(struct ICollateralLoan.Loan)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 24
                    },
                    {
                        "name": "getNumLoans",
                        "signature": "getNumLoans(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 33
                    },
                    {
                        "name": "createLoan",
                        "signature": "createLoan(struct ICollateralLoan.Loan loan)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 39
                    },
                    {
                        "name": "updateLoan",
                        "signature": "updateLoan(struct ICollateralLoan.Loan loan)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 43
                    }
                ],
                "events": [],
                "variables": [
                    {
                        "name": "loans",
                        "constant": false,
                        "type": "mapping(address => struct ICollateralLoan.Loan[])",
                        "lineNumber": 18,
                        "visibility": "public"
                    }
                ],
                "modifiers": [],
                "structs": [],
                "inherits": [
                    "Owned",
                    "State",
                    "ICollateralLoan"
                ],
                "libraries": [
                    {
                        "name": "SafeMath",
                        "type": "uint"
                    },
                    {
                        "name": "SafeDecimalMath",
                        "type": "uint"
                    }
                ]
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/interfaces/ICollateralManager.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {
            "ICollateralManager": {
                "functions": [
                    {
                        "name": "hasCollateral",
                        "signature": "hasCollateral(address collateral)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 6
                    },
                    {
                        "name": "isSynthManaged",
                        "signature": "isSynthManaged(bytes32 currencyKey)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 8
                    },
                    {
                        "name": "long",
                        "signature": "long(bytes32 synth)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 11
                    },
                    {
                        "name": "short",
                        "signature": "short(bytes32 synth)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 13
                    },
                    {
                        "name": "totalLong",
                        "signature": "totalLong()",
                        "returns": "(uint256, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 15
                    },
                    {
                        "name": "totalShort",
                        "signature": "totalShort()",
                        "returns": "(uint256, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 17
                    },
                    {
                        "name": "getBorrowRate",
                        "signature": "getBorrowRate()",
                        "returns": "(uint256, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 19
                    },
                    {
                        "name": "getShortRate",
                        "signature": "getShortRate(bytes32 synth)",
                        "returns": "(uint256, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 21
                    },
                    {
                        "name": "getRatesAndTime",
                        "signature": "getRatesAndTime(uint256 index)",
                        "returns": "(uint256, uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 23
                    },
                    {
                        "name": "getShortRatesAndTime",
                        "signature": "getShortRatesAndTime(bytes32 currency, uint256 index)",
                        "returns": "(uint256, uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 33
                    },
                    {
                        "name": "exceedsDebtLimit",
                        "signature": "exceedsDebtLimit(uint256 amount, bytes32 currency)",
                        "returns": "(bool, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 43
                    },
                    {
                        "name": "areSynthsAndCurrenciesSet",
                        "signature": "areSynthsAndCurrenciesSet(bytes32[] requiredSynthNamesInResolver, bytes32[] synthKeys)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 45
                    },
                    {
                        "name": "areShortableSynthsSet",
                        "signature": "areShortableSynthsSet(bytes32[] requiredSynthNamesInResolver, bytes32[] synthKeys)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 50
                    },
                    {
                        "name": "getNewLoanId",
                        "signature": "getNewLoanId()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 56
                    },
                    {
                        "name": "addCollaterals",
                        "signature": "addCollaterals(address[] collaterals)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 59
                    },
                    {
                        "name": "removeCollaterals",
                        "signature": "removeCollaterals(address[] collaterals)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 61
                    },
                    {
                        "name": "addSynths",
                        "signature": "addSynths(bytes32[] synthNamesInResolver, bytes32[] synthKeys)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 63
                    },
                    {
                        "name": "removeSynths",
                        "signature": "removeSynths(bytes32[] synths, bytes32[] synthKeys)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 65
                    },
                    {
                        "name": "addShortableSynths",
                        "signature": "addShortableSynths(bytes32[2][] requiredSynthAndInverseNamesInResolver, bytes32[] synthKeys)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 67
                    },
                    {
                        "name": "removeShortableSynths",
                        "signature": "removeShortableSynths(bytes32[] synths)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 70
                    },
                    {
                        "name": "updateBorrowRates",
                        "signature": "updateBorrowRates(uint256 rate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 73
                    },
                    {
                        "name": "updateShortRates",
                        "signature": "updateShortRates(bytes32 currency, uint256 rate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 75
                    },
                    {
                        "name": "incrementLongs",
                        "signature": "incrementLongs(bytes32 synth, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 77
                    },
                    {
                        "name": "decrementLongs",
                        "signature": "decrementLongs(bytes32 synth, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 79
                    },
                    {
                        "name": "incrementShorts",
                        "signature": "incrementShorts(bytes32 synth, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 81
                    },
                    {
                        "name": "decrementShorts",
                        "signature": "decrementShorts(bytes32 synth, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 83
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/interfaces/IShortingRewards.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {
            "IShortingRewards": {
                "functions": [
                    {
                        "name": "lastTimeRewardApplicable",
                        "signature": "lastTimeRewardApplicable()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 7
                    },
                    {
                        "name": "rewardPerToken",
                        "signature": "rewardPerToken()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 9
                    },
                    {
                        "name": "earned",
                        "signature": "earned(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 11
                    },
                    {
                        "name": "getRewardForDuration",
                        "signature": "getRewardForDuration()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 13
                    },
                    {
                        "name": "totalSupply",
                        "signature": "totalSupply()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 15
                    },
                    {
                        "name": "balanceOf",
                        "signature": "balanceOf(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 17
                    },
                    {
                        "name": "enrol",
                        "signature": "enrol(address account, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 21
                    },
                    {
                        "name": "withdraw",
                        "signature": "withdraw(address account, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 23
                    },
                    {
                        "name": "getReward",
                        "signature": "getReward(address account)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 25
                    },
                    {
                        "name": "exit",
                        "signature": "exit(address account)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 27
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/CollateralErc20.sol": {
        "imports": [
            "contracts/Collateral.sol",
            "contracts/interfaces/ICollateralErc20.sol",
            "contracts/CollateralState.sol",
            "contracts/interfaces/IERC20.sol"
        ],
        "contracts": {
            "CollateralErc20": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(contract CollateralState _state, address _owner, address _manager, address _resolver, bytes32 _collateralKey, uint256 _minCratio, uint256 _minCollateral, address _underlyingContract, uint256 _underlyingDecimals)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Collateral"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 21
                    },
                    {
                        "name": "open",
                        "signature": "open(uint256 collateral, uint256 amount, bytes32 currency)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 42,
                                "name": "require(..., Allowance not high enough)"
                            }
                        ],
                        "lineNumber": 37
                    },
                    {
                        "name": "close",
                        "signature": "close(uint256 id)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 53
                    },
                    {
                        "name": "deposit",
                        "signature": "deposit(address borrower, uint256 id, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 67,
                                "name": "require(..., Allowance not high enough)"
                            }
                        ],
                        "lineNumber": 62
                    },
                    {
                        "name": "withdraw",
                        "signature": "withdraw(uint256 id, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 77
                    },
                    {
                        "name": "repay",
                        "signature": "repay(address borrower, uint256 id, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 89
                    },
                    {
                        "name": "draw",
                        "signature": "draw(uint256 id, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 97
                    },
                    {
                        "name": "liquidate",
                        "signature": "liquidate(address borrower, uint256 id, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 101
                    },
                    {
                        "name": "scaleUpCollateral",
                        "signature": "scaleUpCollateral(uint256 collateral)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 114
                    },
                    {
                        "name": "scaleDownCollateral",
                        "signature": "scaleDownCollateral(uint256 collateral)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 120
                    }
                ],
                "events": [],
                "variables": [
                    {
                        "name": "underlyingContract",
                        "constant": false,
                        "type": "address",
                        "lineNumber": 17,
                        "visibility": "public"
                    },
                    {
                        "name": "underlyingContractDecimals",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 19,
                        "visibility": "public"
                    }
                ],
                "modifiers": [],
                "structs": [],
                "inherits": [
                    "ICollateralErc20",
                    "Collateral"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/interfaces/ICollateralErc20.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {
            "ICollateralErc20": {
                "functions": [
                    {
                        "name": "open",
                        "signature": "open(uint256 collateral, uint256 amount, bytes32 currency)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 5
                    },
                    {
                        "name": "close",
                        "signature": "close(uint256 id)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 11
                    },
                    {
                        "name": "deposit",
                        "signature": "deposit(address borrower, uint256 id, uint256 collateral)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 13
                    },
                    {
                        "name": "withdraw",
                        "signature": "withdraw(uint256 id, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 19
                    },
                    {
                        "name": "repay",
                        "signature": "repay(address borrower, uint256 id, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 21
                    },
                    {
                        "name": "draw",
                        "signature": "draw(uint256 id, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 27
                    },
                    {
                        "name": "liquidate",
                        "signature": "liquidate(address borrower, uint256 id, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 29
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/CollateralEth.sol": {
        "imports": [
            "contracts/Collateral.sol",
            "openzeppelin-solidity-2.3.0/contracts/utils/ReentrancyGuard.sol",
            "contracts/interfaces/ICollateralEth.sol",
            "contracts/CollateralState.sol"
        ],
        "contracts": {
            "CollateralEth": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(contract CollateralState _state, address _owner, address _manager, address _resolver, bytes32 _collateralKey, uint256 _minCratio, uint256 _minCollateral)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Collateral"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 18
                    },
                    {
                        "name": "open",
                        "signature": "open(uint256 amount, bytes32 currency)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "payable",
                        "requires": [],
                        "lineNumber": 28
                    },
                    {
                        "name": "close",
                        "signature": "close(uint256 id)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 32
                    },
                    {
                        "name": "deposit",
                        "signature": "deposit(address borrower, uint256 id)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "payable",
                        "requires": [],
                        "lineNumber": 38
                    },
                    {
                        "name": "withdraw",
                        "signature": "withdraw(uint256 id, uint256 withdrawAmount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 42
                    },
                    {
                        "name": "repay",
                        "signature": "repay(address account, uint256 id, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 48
                    },
                    {
                        "name": "draw",
                        "signature": "draw(uint256 id, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 56
                    },
                    {
                        "name": "liquidate",
                        "signature": "liquidate(address borrower, uint256 id, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 60
                    },
                    {
                        "name": "claim",
                        "signature": "claim(uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "nonReentrant"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 75,
                                "name": "require(..., Transfer failed)"
                            }
                        ],
                        "lineNumber": 70
                    }
                ],
                "events": [],
                "variables": [
                    {
                        "name": "pendingWithdrawals",
                        "constant": false,
                        "type": "mapping(address => uint256)",
                        "lineNumber": 16,
                        "visibility": "public"
                    }
                ],
                "modifiers": [],
                "structs": [],
                "inherits": [
                    "Collateral",
                    "ICollateralEth",
                    "ReentrancyGuard"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "openzeppelin-solidity-2.3.0/contracts/utils/ReentrancyGuard.sol": {
        "imports": [],
        "contracts": {
            "ReentrancyGuard": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 19
                    }
                ],
                "events": [],
                "variables": [
                    {
                        "name": "_guardCounter",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 17,
                        "visibility": "private"
                    }
                ],
                "modifiers": [
                    {
                        "name": "nonReentrant",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 32
                    }
                ],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/interfaces/ICollateralEth.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {
            "ICollateralEth": {
                "functions": [
                    {
                        "name": "open",
                        "signature": "open(uint256 amount, bytes32 currency)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "payable",
                        "requires": [],
                        "lineNumber": 5
                    },
                    {
                        "name": "close",
                        "signature": "close(uint256 id)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 7
                    },
                    {
                        "name": "deposit",
                        "signature": "deposit(address borrower, uint256 id)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "payable",
                        "requires": [],
                        "lineNumber": 9
                    },
                    {
                        "name": "withdraw",
                        "signature": "withdraw(uint256 id, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 11
                    },
                    {
                        "name": "repay",
                        "signature": "repay(address borrower, uint256 id, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 13
                    },
                    {
                        "name": "liquidate",
                        "signature": "liquidate(address borrower, uint256 id, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 19
                    },
                    {
                        "name": "claim",
                        "signature": "claim(uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 25
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/CollateralManager.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/Pausable.sol",
            "contracts/MixinResolver.sol",
            "contracts/interfaces/ICollateralManager.sol",
            "contracts/AddressSetLib.sol",
            "contracts/Bytes32SetLib.sol",
            "contracts/SafeDecimalMath.sol",
            "contracts/CollateralManagerState.sol",
            "contracts/interfaces/IIssuer.sol",
            "contracts/interfaces/IExchangeRates.sol",
            "contracts/interfaces/IDebtCache.sol",
            "contracts/interfaces/IERC20.sol",
            "contracts/interfaces/ISynth.sol"
        ],
        "contracts": {
            "CollateralManager": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(contract CollateralManagerState _state, address _owner, address _resolver, uint256 _maxDebt, uint256 _baseBorrowRate, uint256 _baseShortRate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned",
                            "Pausable",
                            "MixinResolver"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 79
                    },
                    {
                        "name": "resolverAddressesRequired",
                        "signature": "resolverAddressesRequired()",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 99
                    },
                    {
                        "name": "isSynthManaged",
                        "signature": "isSynthManaged(bytes32 currencyKey)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 127
                    },
                    {
                        "name": "_issuer",
                        "signature": "_issuer()",
                        "returns": "(contract IIssuer)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 133
                    },
                    {
                        "name": "_exchangeRates",
                        "signature": "_exchangeRates()",
                        "returns": "(contract IExchangeRates)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 137
                    },
                    {
                        "name": "_synth",
                        "signature": "_synth(bytes32 synthName)",
                        "returns": "(contract ISynth)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 141
                    },
                    {
                        "name": "hasCollateral",
                        "signature": "hasCollateral(address collateral)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 147
                    },
                    {
                        "name": "hasAllCollaterals",
                        "signature": "hasAllCollaterals(address[] collaterals)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 151
                    },
                    {
                        "name": "long",
                        "signature": "long(bytes32 synth)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 162
                    },
                    {
                        "name": "short",
                        "signature": "short(bytes32 synth)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 166
                    },
                    {
                        "name": "totalLong",
                        "signature": "totalLong()",
                        "returns": "(uint256, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 170
                    },
                    {
                        "name": "totalShort",
                        "signature": "totalShort()",
                        "returns": "(uint256, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 190
                    },
                    {
                        "name": "getBorrowRate",
                        "signature": "getBorrowRate()",
                        "returns": "(uint256, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 206
                    },
                    {
                        "name": "getShortRate",
                        "signature": "getShortRate(bytes32 synth)",
                        "returns": "(uint256, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 228
                    },
                    {
                        "name": "getRatesAndTime",
                        "signature": "getRatesAndTime(uint256 index)",
                        "returns": "(uint256, uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 254
                    },
                    {
                        "name": "getShortRatesAndTime",
                        "signature": "getShortRatesAndTime(bytes32 currency, uint256 index)",
                        "returns": "(uint256, uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 267
                    },
                    {
                        "name": "exceedsDebtLimit",
                        "signature": "exceedsDebtLimit(uint256 amount, bytes32 currency)",
                        "returns": "(bool, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 280
                    },
                    {
                        "name": "setUtilisationMultiplier",
                        "signature": "setUtilisationMultiplier(uint256 _utilisationMultiplier)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 296,
                                "name": "require(..., Must be greater than 0)"
                            }
                        ],
                        "lineNumber": 295
                    },
                    {
                        "name": "setMaxDebt",
                        "signature": "setMaxDebt(uint256 _maxDebt)",
                        "returns": "()",
                        "events": [
                            "MaxDebtUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 301,
                                "name": "require(..., Must be greater than 0)"
                            }
                        ],
                        "lineNumber": 300
                    },
                    {
                        "name": "setBaseBorrowRate",
                        "signature": "setBaseBorrowRate(uint256 _baseBorrowRate)",
                        "returns": "()",
                        "events": [
                            "BaseBorrowRateUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 306
                    },
                    {
                        "name": "setBaseShortRate",
                        "signature": "setBaseShortRate(uint256 _baseShortRate)",
                        "returns": "()",
                        "events": [
                            "BaseShortRateUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 311
                    },
                    {
                        "name": "getNewLoanId",
                        "signature": "getNewLoanId()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [
                            "onlyCollateral"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 318
                    },
                    {
                        "name": "addCollaterals",
                        "signature": "addCollaterals(address[] collaterals)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 324
                    },
                    {
                        "name": "removeCollaterals",
                        "signature": "removeCollaterals(address[] collaterals)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 333
                    },
                    {
                        "name": "addSynths",
                        "signature": "addSynths(bytes32[] synthNamesInResolver, bytes32[] synthKeys)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 342
                    },
                    {
                        "name": "areSynthsAndCurrenciesSet",
                        "signature": "areSynthsAndCurrenciesSet(bytes32[] requiredSynthNamesInResolver, bytes32[] synthKeys)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 353
                    },
                    {
                        "name": "removeSynths",
                        "signature": "removeSynths(bytes32[] synths, bytes32[] synthKeys)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 374
                    },
                    {
                        "name": "addShortableSynths",
                        "signature": "addShortableSynths(bytes32[2][] requiredSynthAndInverseNamesInResolver, bytes32[] synthKeys)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 392,
                                "name": "require(..., Input array length mismatch)"
                            }
                        ],
                        "lineNumber": 388
                    },
                    {
                        "name": "areShortableSynthsSet",
                        "signature": "areShortableSynthsSet(bytes32[] requiredSynthNamesInResolver, bytes32[] synthKeys)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 422,
                                "name": "require(..., Input array length mismatch)"
                            }
                        ],
                        "lineNumber": 417
                    },
                    {
                        "name": "removeShortableSynths",
                        "signature": "removeShortableSynths(bytes32[] synths)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 446
                    },
                    {
                        "name": "updateBorrowRates",
                        "signature": "updateBorrowRates(uint256 rate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyCollateral"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 466
                    },
                    {
                        "name": "updateShortRates",
                        "signature": "updateShortRates(bytes32 currency, uint256 rate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyCollateral"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 470
                    },
                    {
                        "name": "incrementLongs",
                        "signature": "incrementLongs(bytes32 synth, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyCollateral"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 474
                    },
                    {
                        "name": "decrementLongs",
                        "signature": "decrementLongs(bytes32 synth, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyCollateral"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 478
                    },
                    {
                        "name": "incrementShorts",
                        "signature": "incrementShorts(bytes32 synth, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyCollateral"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 482
                    },
                    {
                        "name": "decrementShorts",
                        "signature": "decrementShorts(bytes32 synth, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyCollateral"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 486
                    }
                ],
                "events": [
                    {
                        "name": "MaxDebtUpdated",
                        "parameters": "(uint256 maxDebt)",
                        "lineNumber": 500
                    },
                    {
                        "name": "LiquidationPenaltyUpdated",
                        "parameters": "(uint256 liquidationPenalty)",
                        "lineNumber": 501
                    },
                    {
                        "name": "BaseBorrowRateUpdated",
                        "parameters": "(uint256 baseBorrowRate)",
                        "lineNumber": 502
                    },
                    {
                        "name": "BaseShortRateUpdated",
                        "parameters": "(uint256 baseShortRate)",
                        "lineNumber": 503
                    },
                    {
                        "name": "CollateralAdded",
                        "parameters": "(address collateral)",
                        "lineNumber": 505
                    },
                    {
                        "name": "CollateralRemoved",
                        "parameters": "(address collateral)",
                        "lineNumber": 506
                    },
                    {
                        "name": "SynthAdded",
                        "parameters": "(bytes32 synth)",
                        "lineNumber": 508
                    },
                    {
                        "name": "SynthRemoved",
                        "parameters": "(bytes32 synth)",
                        "lineNumber": 509
                    },
                    {
                        "name": "ShortableSynthAdded",
                        "parameters": "(bytes32 synth)",
                        "lineNumber": 511
                    },
                    {
                        "name": "ShortableSynthRemoved",
                        "parameters": "(bytes32 synth)",
                        "lineNumber": 512
                    }
                ],
                "variables": [
                    {
                        "name": "sUSD",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 32,
                        "visibility": "private"
                    },
                    {
                        "name": "SECONDS_IN_A_YEAR",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 34,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_NAME",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 37,
                        "visibility": "public"
                    },
                    {
                        "name": "COLLATERAL_SYNTHS",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 38,
                        "visibility": "internal"
                    },
                    {
                        "name": "state",
                        "constant": false,
                        "type": "contract CollateralManagerState",
                        "lineNumber": 43,
                        "visibility": "public"
                    },
                    {
                        "name": "_collaterals",
                        "constant": false,
                        "type": "struct AddressSetLib.AddressSet",
                        "lineNumber": 46,
                        "visibility": "internal"
                    },
                    {
                        "name": "_synths",
                        "constant": false,
                        "type": "struct Bytes32SetLib.Bytes32Set",
                        "lineNumber": 49,
                        "visibility": "internal"
                    },
                    {
                        "name": "synthsByKey",
                        "constant": false,
                        "type": "mapping(bytes32 => bytes32)",
                        "lineNumber": 52,
                        "visibility": "public"
                    },
                    {
                        "name": "_shortableSynths",
                        "constant": false,
                        "type": "struct Bytes32SetLib.Bytes32Set",
                        "lineNumber": 55,
                        "visibility": "internal"
                    },
                    {
                        "name": "synthToInverseSynth",
                        "constant": false,
                        "type": "mapping(bytes32 => bytes32)",
                        "lineNumber": 57,
                        "visibility": "public"
                    },
                    {
                        "name": "utilisationMultiplier",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 60,
                        "visibility": "public"
                    },
                    {
                        "name": "maxDebt",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 63,
                        "visibility": "public"
                    },
                    {
                        "name": "baseBorrowRate",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 66,
                        "visibility": "public"
                    },
                    {
                        "name": "baseShortRate",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 69,
                        "visibility": "public"
                    },
                    {
                        "name": "CONTRACT_ISSUER",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 73,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_EXRATES",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 74,
                        "visibility": "private"
                    },
                    {
                        "name": "addressesToCache",
                        "constant": false,
                        "type": "bytes32[24]",
                        "lineNumber": 76,
                        "visibility": "private"
                    }
                ],
                "modifiers": [
                    {
                        "name": "onlyCollateral",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 492
                    }
                ],
                "structs": [],
                "inherits": [
                    "ICollateralManager",
                    "Owned",
                    "Pausable",
                    "MixinResolver"
                ],
                "libraries": [
                    {
                        "name": "SafeMath",
                        "type": "uint"
                    },
                    {
                        "name": "SafeDecimalMath",
                        "type": "uint"
                    },
                    {
                        "name": "AddressSetLib",
                        "type": "AddressSetLib.AddressSet"
                    },
                    {
                        "name": "Bytes32SetLib",
                        "type": "Bytes32SetLib.Bytes32Set"
                    }
                ]
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/CollateralManagerState.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/State.sol",
            "contracts/SafeDecimalMath.sol"
        ],
        "contracts": {
            "CollateralManagerState": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, address _associatedContract)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned",
                            "State"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 33
                    },
                    {
                        "name": "incrementTotalLoans",
                        "signature": "incrementTotalLoans()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 38
                    },
                    {
                        "name": "long",
                        "signature": "long(bytes32 synth)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 43
                    },
                    {
                        "name": "short",
                        "signature": "short(bytes32 synth)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 47
                    },
                    {
                        "name": "incrementLongs",
                        "signature": "incrementLongs(bytes32 synth, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 51
                    },
                    {
                        "name": "decrementLongs",
                        "signature": "decrementLongs(bytes32 synth, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 55
                    },
                    {
                        "name": "incrementShorts",
                        "signature": "incrementShorts(bytes32 synth, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 59
                    },
                    {
                        "name": "decrementShorts",
                        "signature": "decrementShorts(bytes32 synth, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 63
                    },
                    {
                        "name": "getRateAt",
                        "signature": "getRateAt(uint256 index)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 69
                    },
                    {
                        "name": "getRatesLength",
                        "signature": "getRatesLength()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 73
                    },
                    {
                        "name": "updateBorrowRates",
                        "signature": "updateBorrowRates(uint256 rate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 77
                    },
                    {
                        "name": "ratesLastUpdated",
                        "signature": "ratesLastUpdated()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 82
                    },
                    {
                        "name": "getRatesAndTime",
                        "signature": "getRatesAndTime(uint256 index)",
                        "returns": "(uint256, uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 86
                    },
                    {
                        "name": "addShortCurrency",
                        "signature": "addShortCurrency(bytes32 currency)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 104
                    },
                    {
                        "name": "removeShortCurrency",
                        "signature": "removeShortCurrency(bytes32 currency)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 111
                    },
                    {
                        "name": "getShortRateAt",
                        "signature": "getShortRateAt(bytes32 currency, uint256 index)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 115
                    },
                    {
                        "name": "getShortRatesLength",
                        "signature": "getShortRatesLength(bytes32 currency)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 119
                    },
                    {
                        "name": "updateShortRates",
                        "signature": "updateShortRates(bytes32 currency, uint256 rate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 123
                    },
                    {
                        "name": "shortRateLastUpdated",
                        "signature": "shortRateLastUpdated(bytes32 currency)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 128
                    },
                    {
                        "name": "getShortRatesAndTime",
                        "signature": "getShortRatesAndTime(bytes32 currency, uint256 index)",
                        "returns": "(uint256, uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 132
                    }
                ],
                "events": [],
                "variables": [
                    {
                        "name": "totalLoans",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 22,
                        "visibility": "public"
                    },
                    {
                        "name": "borrowRates",
                        "constant": false,
                        "type": "uint256[]",
                        "lineNumber": 24,
                        "visibility": "public"
                    },
                    {
                        "name": "borrowRatesLastUpdated",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 25,
                        "visibility": "public"
                    },
                    {
                        "name": "shortRates",
                        "constant": false,
                        "type": "mapping(bytes32 => uint256[])",
                        "lineNumber": 27,
                        "visibility": "public"
                    },
                    {
                        "name": "shortRatesLastUpdated",
                        "constant": false,
                        "type": "mapping(bytes32 => uint256)",
                        "lineNumber": 28,
                        "visibility": "public"
                    },
                    {
                        "name": "totalIssuedSynths",
                        "constant": false,
                        "type": "mapping(bytes32 => struct CollateralManagerState.Balance)",
                        "lineNumber": 31,
                        "visibility": "public"
                    }
                ],
                "modifiers": [],
                "structs": [
                    {
                        "name": "Balance",
                        "members": [
                            {
                                "name": "long",
                                "type": "uint256"
                            },
                            {
                                "name": "short",
                                "type": "uint256"
                            }
                        ],
                        "lineNumber": 17
                    }
                ],
                "inherits": [
                    "Owned",
                    "State"
                ],
                "libraries": [
                    {
                        "name": "SafeMath",
                        "type": "uint"
                    },
                    {
                        "name": "SafeDecimalMath",
                        "type": "uint"
                    }
                ]
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/interfaces/IDebtCache.sol": {
        "imports": [
            "contracts/interfaces/ISynth.sol"
        ],
        "contracts": {},
        "interfaces": {
            "IDebtCache": {
                "functions": [
                    {
                        "name": "cachedDebt",
                        "signature": "cachedDebt()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 10
                    },
                    {
                        "name": "cachedSynthDebt",
                        "signature": "cachedSynthDebt(bytes32 currencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 12
                    },
                    {
                        "name": "cacheTimestamp",
                        "signature": "cacheTimestamp()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 14
                    },
                    {
                        "name": "cacheInvalid",
                        "signature": "cacheInvalid()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 16
                    },
                    {
                        "name": "cacheStale",
                        "signature": "cacheStale()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 18
                    },
                    {
                        "name": "currentSynthDebts",
                        "signature": "currentSynthDebts(bytes32[] currencyKeys)",
                        "returns": "(uint256[], bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 20
                    },
                    {
                        "name": "cachedSynthDebts",
                        "signature": "cachedSynthDebts(bytes32[] currencyKeys)",
                        "returns": "(uint256[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 25
                    },
                    {
                        "name": "currentDebt",
                        "signature": "currentDebt()",
                        "returns": "(uint256, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 27
                    },
                    {
                        "name": "cacheInfo",
                        "signature": "cacheInfo()",
                        "returns": "(uint256, uint256, bool, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 29
                    },
                    {
                        "name": "takeDebtSnapshot",
                        "signature": "takeDebtSnapshot()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 41
                    },
                    {
                        "name": "updateCachedSynthDebts",
                        "signature": "updateCachedSynthDebts(bytes32[] currencyKeys)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 43
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/CollateralShort.sol": {
        "imports": [
            "contracts/Collateral.sol",
            "contracts/CollateralState.sol"
        ],
        "contracts": {
            "CollateralShort": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(contract CollateralState _state, address _owner, address _manager, address _resolver, bytes32 _collateralKey, uint256 _minCratio, uint256 _minCollateral)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Collateral"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 13
                    },
                    {
                        "name": "open",
                        "signature": "open(uint256 collateral, uint256 amount, bytes32 currency)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 28,
                                "name": "require(..., Allowance not high enough)"
                            }
                        ],
                        "lineNumber": 23
                    },
                    {
                        "name": "close",
                        "signature": "close(uint256 id)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 38
                    },
                    {
                        "name": "deposit",
                        "signature": "deposit(address borrower, uint256 id, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 49,
                                "name": "require(..., Allowance not high enough)"
                            }
                        ],
                        "lineNumber": 44
                    },
                    {
                        "name": "withdraw",
                        "signature": "withdraw(uint256 id, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 56
                    },
                    {
                        "name": "repay",
                        "signature": "repay(address borrower, uint256 id, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 62
                    },
                    {
                        "name": "draw",
                        "signature": "draw(uint256 id, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 70
                    },
                    {
                        "name": "liquidate",
                        "signature": "liquidate(address borrower, uint256 id, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 74
                    },
                    {
                        "name": "getReward",
                        "signature": "getReward(bytes32 currency, address account)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 84
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [
                    "Collateral"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/ContractStorage.sol": {
        "imports": [
            "contracts/interfaces/IAddressResolver.sol"
        ],
        "contracts": {
            "ContractStorage": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _resolver)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 13
                    },
                    {
                        "name": "_memoizeHash",
                        "signature": "_memoizeHash(bytes32 contractName)",
                        "returns": "(bytes32)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 20
                    },
                    {
                        "name": "migrateContractKey",
                        "signature": "migrateContractKey(bytes32 fromContractName, bytes32 toContractName, bool removeAccessFromPreviousContract)",
                        "returns": "()",
                        "events": [
                            "KeyMigrated"
                        ],
                        "modifiers": [
                            "onlyContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 39,
                                "name": "require(..., Cannot migrate empty contract)"
                            }
                        ],
                        "lineNumber": 34
                    }
                ],
                "events": [
                    {
                        "name": "KeyMigrated",
                        "parameters": "(bytes32 fromContractName, bytes32 toContractName, bool removeAccessFromPreviousContract)",
                        "lineNumber": 63
                    }
                ],
                "variables": [
                    {
                        "name": "resolverProxy",
                        "constant": false,
                        "type": "contract IAddressResolver",
                        "lineNumber": 9,
                        "visibility": "public"
                    },
                    {
                        "name": "hashes",
                        "constant": false,
                        "type": "mapping(bytes32 => bytes32)",
                        "lineNumber": 11,
                        "visibility": "public"
                    }
                ],
                "modifiers": [
                    {
                        "name": "onlyContract",
                        "parameters": "(bytes32 contractName)",
                        "visibility": "internal",
                        "lineNumber": 52
                    }
                ],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/DappMaintenance.sol": {
        "imports": [
            "contracts/Owned.sol"
        ],
        "contracts": {
            "DappMaintenance": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner)",
                        "returns": "()",
                        "events": [
                            "OwnerChanged"
                        ],
                        "modifiers": [
                            "Owned"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 22,
                                "name": "require(..., Owner address cannot be 0)"
                            }
                        ],
                        "lineNumber": 21
                    },
                    {
                        "name": "setMaintenanceModeAll",
                        "signature": "setMaintenanceModeAll(bool isPaused)",
                        "returns": "()",
                        "events": [
                            "StakingMaintenance",
                            "SXMaintenance"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 27
                    },
                    {
                        "name": "setMaintenanceModeStaking",
                        "signature": "setMaintenanceModeStaking(bool isPaused)",
                        "returns": "()",
                        "events": [
                            "StakingMaintenance"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 34
                    },
                    {
                        "name": "setMaintenanceModeSX",
                        "signature": "setMaintenanceModeSX(bool isPaused)",
                        "returns": "()",
                        "events": [
                            "SXMaintenance"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 39
                    }
                ],
                "events": [
                    {
                        "name": "StakingMaintenance",
                        "parameters": "(bool isPaused)",
                        "lineNumber": 44
                    },
                    {
                        "name": "SXMaintenance",
                        "parameters": "(bool isPaused)",
                        "lineNumber": 45
                    }
                ],
                "variables": [
                    {
                        "name": "isPausedStaking",
                        "constant": false,
                        "type": "bool",
                        "lineNumber": 15,
                        "visibility": "public"
                    },
                    {
                        "name": "isPausedSX",
                        "constant": false,
                        "type": "bool",
                        "lineNumber": 16,
                        "visibility": "public"
                    }
                ],
                "modifiers": [],
                "structs": [],
                "inherits": [
                    "Owned"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/DebtCache.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/MixinResolver.sol",
            "contracts/MixinSystemSettings.sol",
            "contracts/interfaces/IDebtCache.sol",
            "contracts/SafeDecimalMath.sol",
            "contracts/interfaces/IIssuer.sol",
            "contracts/interfaces/IExchanger.sol",
            "contracts/interfaces/IExchangeRates.sol",
            "contracts/interfaces/ISystemStatus.sol",
            "contracts/interfaces/IEtherCollateral.sol",
            "contracts/interfaces/IEtherCollateralsUSD.sol",
            "contracts/interfaces/IERC20.sol",
            "contracts/interfaces/ICollateralManager.sol"
        ],
        "contracts": {
            "DebtCache": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, address _resolver)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned",
                            "MixinSystemSettings"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 48
                    },
                    {
                        "name": "resolverAddressesRequired",
                        "signature": "resolverAddressesRequired()",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 52
                    },
                    {
                        "name": "issuer",
                        "signature": "issuer()",
                        "returns": "(contract IIssuer)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 65
                    },
                    {
                        "name": "exchanger",
                        "signature": "exchanger()",
                        "returns": "(contract IExchanger)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 69
                    },
                    {
                        "name": "exchangeRates",
                        "signature": "exchangeRates()",
                        "returns": "(contract IExchangeRates)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 73
                    },
                    {
                        "name": "systemStatus",
                        "signature": "systemStatus()",
                        "returns": "(contract ISystemStatus)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 77
                    },
                    {
                        "name": "etherCollateral",
                        "signature": "etherCollateral()",
                        "returns": "(contract IEtherCollateral)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 81
                    },
                    {
                        "name": "etherCollateralsUSD",
                        "signature": "etherCollateralsUSD()",
                        "returns": "(contract IEtherCollateralsUSD)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 85
                    },
                    {
                        "name": "collateralManager",
                        "signature": "collateralManager()",
                        "returns": "(contract ICollateralManager)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 89
                    },
                    {
                        "name": "debtSnapshotStaleTime",
                        "signature": "debtSnapshotStaleTime()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 93
                    },
                    {
                        "name": "cachedDebt",
                        "signature": "cachedDebt()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 97
                    },
                    {
                        "name": "cachedSynthDebt",
                        "signature": "cachedSynthDebt(bytes32 currencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 101
                    },
                    {
                        "name": "cacheTimestamp",
                        "signature": "cacheTimestamp()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 105
                    },
                    {
                        "name": "cacheInvalid",
                        "signature": "cacheInvalid()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 109
                    },
                    {
                        "name": "_cacheStale",
                        "signature": "_cacheStale(uint256 timestamp)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 113
                    },
                    {
                        "name": "cacheStale",
                        "signature": "cacheStale()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 120
                    },
                    {
                        "name": "_issuedSynthValues",
                        "signature": "_issuedSynthValues(bytes32[] currencyKeys, uint256[] rates)",
                        "returns": "(uint256[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 124
                    },
                    {
                        "name": "_currentSynthDebts",
                        "signature": "_currentSynthDebts(bytes32[] currencyKeys)",
                        "returns": "(uint256[], bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 165
                    },
                    {
                        "name": "currentSynthDebts",
                        "signature": "currentSynthDebts(bytes32[] currencyKeys)",
                        "returns": "(uint256[], bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 174
                    },
                    {
                        "name": "_cachedSynthDebts",
                        "signature": "_cachedSynthDebts(bytes32[] currencyKeys)",
                        "returns": "(uint256[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 182
                    },
                    {
                        "name": "cachedSynthDebts",
                        "signature": "cachedSynthDebts(bytes32[] currencyKeys)",
                        "returns": "(uint256[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 191
                    },
                    {
                        "name": "_currentDebt",
                        "signature": "_currentDebt()",
                        "returns": "(uint256, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 195
                    },
                    {
                        "name": "currentDebt",
                        "signature": "currentDebt()",
                        "returns": "(uint256, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 213
                    },
                    {
                        "name": "cacheInfo",
                        "signature": "cacheInfo()",
                        "returns": "(uint256, uint256, bool, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 217
                    },
                    {
                        "name": "purgeCachedSynthDebt",
                        "signature": "purgeCachedSynthDebt(bytes32 currencyKey)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 235,
                                "name": "require(..., Synth exists)"
                            }
                        ],
                        "lineNumber": 234
                    },
                    {
                        "name": "takeDebtSnapshot",
                        "signature": "takeDebtSnapshot()",
                        "returns": "()",
                        "events": [
                            "DebtCacheUpdated",
                            "DebtCacheSnapshotTaken"
                        ],
                        "modifiers": [
                            "requireSystemActiveIfNotOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 239
                    },
                    {
                        "name": "updateCachedSynthDebts",
                        "signature": "updateCachedSynthDebts(bytes32[] currencyKeys)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "requireSystemActiveIfNotOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 262
                    },
                    {
                        "name": "updateCachedSynthDebtWithRate",
                        "signature": "updateCachedSynthDebtWithRate(bytes32 currencyKey, uint256 currencyRate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyIssuer"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 267
                    },
                    {
                        "name": "updateCachedSynthDebtsWithRates",
                        "signature": "updateCachedSynthDebtsWithRates(bytes32[] currencyKeys, uint256[] currencyRates)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyIssuerOrExchanger"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 275
                    },
                    {
                        "name": "updateDebtCacheValidity",
                        "signature": "updateDebtCacheValidity(bool currentlyInvalid)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyIssuer"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 282
                    },
                    {
                        "name": "_updateDebtCacheValidity",
                        "signature": "_updateDebtCacheValidity(bool currentlyInvalid)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 288
                    },
                    {
                        "name": "_updateCachedSynthDebtsWithRates",
                        "signature": "_updateCachedSynthDebtsWithRates(bytes32[] currencyKeys, uint256[] currentRates, bool anyRateIsInvalid)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 301,
                                "name": "require(..., Input array lengths differ)"
                            }
                        ],
                        "lineNumber": 295
                    },
                    {
                        "name": "_requireSystemActiveIfNotOwner",
                        "signature": "_requireSystemActiveIfNotOwner()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 335
                    },
                    {
                        "name": "_onlyIssuer",
                        "signature": "_onlyIssuer()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 347,
                                "name": "require(..., Sender is not Issuer)"
                            }
                        ],
                        "lineNumber": 346
                    },
                    {
                        "name": "_onlyIssuerOrExchanger",
                        "signature": "_onlyIssuerOrExchanger()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 356,
                                "name": "require(..., Sender is not Issuer or Exchanger)"
                            }
                        ],
                        "lineNumber": 355
                    }
                ],
                "events": [
                    {
                        "name": "DebtCacheUpdated",
                        "parameters": "(uint256 cachedDebt)",
                        "lineNumber": 366
                    },
                    {
                        "name": "DebtCacheSnapshotTaken",
                        "parameters": "(uint256 timestamp)",
                        "lineNumber": 367
                    },
                    {
                        "name": "DebtCacheValidityChanged",
                        "parameters": "(bool isInvalid)",
                        "lineNumber": 368
                    }
                ],
                "variables": [
                    {
                        "name": "_cachedDebt",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 28,
                        "visibility": "internal"
                    },
                    {
                        "name": "_cachedSynthDebt",
                        "constant": false,
                        "type": "mapping(bytes32 => uint256)",
                        "lineNumber": 29,
                        "visibility": "internal"
                    },
                    {
                        "name": "_cacheTimestamp",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 30,
                        "visibility": "internal"
                    },
                    {
                        "name": "_cacheInvalid",
                        "constant": false,
                        "type": "bool",
                        "lineNumber": 31,
                        "visibility": "internal"
                    },
                    {
                        "name": "sUSD",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 35,
                        "visibility": "internal"
                    },
                    {
                        "name": "sETH",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 36,
                        "visibility": "internal"
                    },
                    {
                        "name": "CONTRACT_ISSUER",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 40,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_EXCHANGER",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 41,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_EXRATES",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 42,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_SYSTEMSTATUS",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 43,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_ETHERCOLLATERAL",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 44,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_ETHERCOLLATERAL_SUSD",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 45,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_COLLATERALMANAGER",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 46,
                        "visibility": "private"
                    }
                ],
                "modifiers": [
                    {
                        "name": "requireSystemActiveIfNotOwner",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 341
                    },
                    {
                        "name": "onlyIssuer",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 350
                    },
                    {
                        "name": "onlyIssuerOrExchanger",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 359
                    }
                ],
                "structs": [],
                "inherits": [
                    "Owned",
                    "MixinSystemSettings",
                    "IDebtCache"
                ],
                "libraries": [
                    {
                        "name": "SafeMath",
                        "type": "uint"
                    },
                    {
                        "name": "SafeDecimalMath",
                        "type": "uint"
                    }
                ]
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/interfaces/IEtherCollateral.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {
            "IEtherCollateral": {
                "functions": [
                    {
                        "name": "totalIssuedSynths",
                        "signature": "totalIssuedSynths()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 7
                    },
                    {
                        "name": "totalLoansCreated",
                        "signature": "totalLoansCreated()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 9
                    },
                    {
                        "name": "totalOpenLoanCount",
                        "signature": "totalOpenLoanCount()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 11
                    },
                    {
                        "name": "openLoan",
                        "signature": "openLoan()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "payable",
                        "requires": [],
                        "lineNumber": 14
                    },
                    {
                        "name": "closeLoan",
                        "signature": "closeLoan(uint256 loanID)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 16
                    },
                    {
                        "name": "liquidateUnclosedLoan",
                        "signature": "liquidateUnclosedLoan(address _loanCreatorsAddress, uint256 _loanID)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 18
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/interfaces/IEtherCollateralsUSD.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {
            "IEtherCollateralsUSD": {
                "functions": [
                    {
                        "name": "totalIssuedSynths",
                        "signature": "totalIssuedSynths()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 7
                    },
                    {
                        "name": "totalLoansCreated",
                        "signature": "totalLoansCreated()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 9
                    },
                    {
                        "name": "totalOpenLoanCount",
                        "signature": "totalOpenLoanCount()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 11
                    },
                    {
                        "name": "openLoan",
                        "signature": "openLoan(uint256 _loanAmount)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "payable",
                        "requires": [],
                        "lineNumber": 14
                    },
                    {
                        "name": "closeLoan",
                        "signature": "closeLoan(uint256 loanID)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 16
                    },
                    {
                        "name": "liquidateUnclosedLoan",
                        "signature": "liquidateUnclosedLoan(address _loanCreatorsAddress, uint256 _loanID)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 18
                    },
                    {
                        "name": "depositCollateral",
                        "signature": "depositCollateral(address account, uint256 loanID)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "payable",
                        "requires": [],
                        "lineNumber": 20
                    },
                    {
                        "name": "withdrawCollateral",
                        "signature": "withdrawCollateral(uint256 loanID, uint256 withdrawAmount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 22
                    },
                    {
                        "name": "repayLoan",
                        "signature": "repayLoan(address _loanCreatorsAddress, uint256 _loanID, uint256 _repayAmount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 24
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/DelegateApprovals.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/interfaces/IDelegateApprovals.sol",
            "contracts/EternalStorage.sol"
        ],
        "contracts": {
            "DelegateApprovals": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, contract EternalStorage _eternalStorage)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 30
                    },
                    {
                        "name": "_getKey",
                        "signature": "_getKey(bytes32 _action, address _authoriser, address _delegate)",
                        "returns": "(bytes32)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "pure",
                        "requires": [],
                        "lineNumber": 39
                    },
                    {
                        "name": "canBurnFor",
                        "signature": "canBurnFor(address authoriser, address delegate)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 48
                    },
                    {
                        "name": "canIssueFor",
                        "signature": "canIssueFor(address authoriser, address delegate)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 52
                    },
                    {
                        "name": "canClaimFor",
                        "signature": "canClaimFor(address authoriser, address delegate)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 56
                    },
                    {
                        "name": "canExchangeFor",
                        "signature": "canExchangeFor(address authoriser, address delegate)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 60
                    },
                    {
                        "name": "approvedAll",
                        "signature": "approvedAll(address authoriser, address delegate)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 64
                    },
                    {
                        "name": "_checkApproval",
                        "signature": "_checkApproval(bytes32 action, address authoriser, address delegate)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 71
                    },
                    {
                        "name": "approveAllDelegatePowers",
                        "signature": "approveAllDelegatePowers(address delegate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 84
                    },
                    {
                        "name": "removeAllDelegatePowers",
                        "signature": "removeAllDelegatePowers(address delegate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 89
                    },
                    {
                        "name": "approveBurnOnBehalf",
                        "signature": "approveBurnOnBehalf(address delegate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 96
                    },
                    {
                        "name": "removeBurnOnBehalf",
                        "signature": "removeBurnOnBehalf(address delegate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 100
                    },
                    {
                        "name": "approveIssueOnBehalf",
                        "signature": "approveIssueOnBehalf(address delegate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 105
                    },
                    {
                        "name": "removeIssueOnBehalf",
                        "signature": "removeIssueOnBehalf(address delegate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 109
                    },
                    {
                        "name": "approveClaimOnBehalf",
                        "signature": "approveClaimOnBehalf(address delegate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 114
                    },
                    {
                        "name": "removeClaimOnBehalf",
                        "signature": "removeClaimOnBehalf(address delegate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 118
                    },
                    {
                        "name": "approveExchangeOnBehalf",
                        "signature": "approveExchangeOnBehalf(address delegate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 123
                    },
                    {
                        "name": "removeExchangeOnBehalf",
                        "signature": "removeExchangeOnBehalf(address delegate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 127
                    },
                    {
                        "name": "_setApproval",
                        "signature": "_setApproval(bytes32 action, address authoriser, address delegate)",
                        "returns": "()",
                        "events": [
                            "Approval"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 136,
                                "name": "require(..., Can't delegate to address(0))"
                            }
                        ],
                        "lineNumber": 131
                    },
                    {
                        "name": "_withdrawApproval",
                        "signature": "_withdrawApproval(bytes32 action, address authoriser, address delegate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 141
                    },
                    {
                        "name": "setEternalStorage",
                        "signature": "setEternalStorage(contract EternalStorage _eternalStorage)",
                        "returns": "()",
                        "events": [
                            "EternalStorageUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 154,
                                "name": "require(..., Can't set eternalStorage to address(0))"
                            }
                        ],
                        "lineNumber": 153
                    }
                ],
                "events": [
                    {
                        "name": "Approval",
                        "parameters": "(address authoriser, address delegate, bytes32 action)",
                        "lineNumber": 160
                    },
                    {
                        "name": "WithdrawApproval",
                        "parameters": "(address authoriser, address delegate, bytes32 action)",
                        "lineNumber": 161
                    },
                    {
                        "name": "EternalStorageUpdated",
                        "parameters": "(address newEternalStorage)",
                        "lineNumber": 162
                    }
                ],
                "variables": [
                    {
                        "name": "BURN_FOR_ADDRESS",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 13,
                        "visibility": "public"
                    },
                    {
                        "name": "ISSUE_FOR_ADDRESS",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 14,
                        "visibility": "public"
                    },
                    {
                        "name": "CLAIM_FOR_ADDRESS",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 15,
                        "visibility": "public"
                    },
                    {
                        "name": "EXCHANGE_FOR_ADDRESS",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 16,
                        "visibility": "public"
                    },
                    {
                        "name": "APPROVE_ALL",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 17,
                        "visibility": "public"
                    },
                    {
                        "name": "_delegatableFunctions",
                        "constant": false,
                        "type": "bytes32[5]",
                        "lineNumber": 19,
                        "visibility": "private"
                    },
                    {
                        "name": "eternalStorage",
                        "constant": false,
                        "type": "contract EternalStorage",
                        "lineNumber": 28,
                        "visibility": "public"
                    }
                ],
                "modifiers": [],
                "structs": [],
                "inherits": [
                    "Owned",
                    "IDelegateApprovals"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/interfaces/IDelegateApprovals.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {
            "IDelegateApprovals": {
                "functions": [
                    {
                        "name": "canBurnFor",
                        "signature": "canBurnFor(address authoriser, address delegate)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 7
                    },
                    {
                        "name": "canIssueFor",
                        "signature": "canIssueFor(address authoriser, address delegate)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 9
                    },
                    {
                        "name": "canClaimFor",
                        "signature": "canClaimFor(address authoriser, address delegate)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 11
                    },
                    {
                        "name": "canExchangeFor",
                        "signature": "canExchangeFor(address authoriser, address delegate)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 13
                    },
                    {
                        "name": "approveAllDelegatePowers",
                        "signature": "approveAllDelegatePowers(address delegate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 16
                    },
                    {
                        "name": "removeAllDelegatePowers",
                        "signature": "removeAllDelegatePowers(address delegate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 18
                    },
                    {
                        "name": "approveBurnOnBehalf",
                        "signature": "approveBurnOnBehalf(address delegate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 20
                    },
                    {
                        "name": "removeBurnOnBehalf",
                        "signature": "removeBurnOnBehalf(address delegate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 22
                    },
                    {
                        "name": "approveIssueOnBehalf",
                        "signature": "approveIssueOnBehalf(address delegate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 24
                    },
                    {
                        "name": "removeIssueOnBehalf",
                        "signature": "removeIssueOnBehalf(address delegate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 26
                    },
                    {
                        "name": "approveClaimOnBehalf",
                        "signature": "approveClaimOnBehalf(address delegate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 28
                    },
                    {
                        "name": "removeClaimOnBehalf",
                        "signature": "removeClaimOnBehalf(address delegate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 30
                    },
                    {
                        "name": "approveExchangeOnBehalf",
                        "signature": "approveExchangeOnBehalf(address delegate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 32
                    },
                    {
                        "name": "removeExchangeOnBehalf",
                        "signature": "removeExchangeOnBehalf(address delegate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 34
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/EternalStorage.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/State.sol"
        ],
        "contracts": {
            "EternalStorage": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, address _associatedContract)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned",
                            "State"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 17
                    },
                    {
                        "name": "getUIntValue",
                        "signature": "getUIntValue(bytes32 record)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 29
                    },
                    {
                        "name": "setUIntValue",
                        "signature": "setUIntValue(bytes32 record, uint256 value)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 33
                    },
                    {
                        "name": "deleteUIntValue",
                        "signature": "deleteUIntValue(bytes32 record)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 37
                    },
                    {
                        "name": "getStringValue",
                        "signature": "getStringValue(bytes32 record)",
                        "returns": "(string)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 42
                    },
                    {
                        "name": "setStringValue",
                        "signature": "setStringValue(bytes32 record, string value)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 46
                    },
                    {
                        "name": "deleteStringValue",
                        "signature": "deleteStringValue(bytes32 record)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 50
                    },
                    {
                        "name": "getAddressValue",
                        "signature": "getAddressValue(bytes32 record)",
                        "returns": "(address)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 55
                    },
                    {
                        "name": "setAddressValue",
                        "signature": "setAddressValue(bytes32 record, address value)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 59
                    },
                    {
                        "name": "deleteAddressValue",
                        "signature": "deleteAddressValue(bytes32 record)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 63
                    },
                    {
                        "name": "getBytesValue",
                        "signature": "getBytesValue(bytes32 record)",
                        "returns": "(bytes)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 68
                    },
                    {
                        "name": "setBytesValue",
                        "signature": "setBytesValue(bytes32 record, bytes value)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 72
                    },
                    {
                        "name": "deleteBytesValue",
                        "signature": "deleteBytesValue(bytes32 record)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 76
                    },
                    {
                        "name": "getBytes32Value",
                        "signature": "getBytes32Value(bytes32 record)",
                        "returns": "(bytes32)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 81
                    },
                    {
                        "name": "setBytes32Value",
                        "signature": "setBytes32Value(bytes32 record, bytes32 value)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 85
                    },
                    {
                        "name": "deleteBytes32Value",
                        "signature": "deleteBytes32Value(bytes32 record)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 89
                    },
                    {
                        "name": "getBooleanValue",
                        "signature": "getBooleanValue(bytes32 record)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 94
                    },
                    {
                        "name": "setBooleanValue",
                        "signature": "setBooleanValue(bytes32 record, bool value)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 98
                    },
                    {
                        "name": "deleteBooleanValue",
                        "signature": "deleteBooleanValue(bytes32 record)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 102
                    },
                    {
                        "name": "getIntValue",
                        "signature": "getIntValue(bytes32 record)",
                        "returns": "(int256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 107
                    },
                    {
                        "name": "setIntValue",
                        "signature": "setIntValue(bytes32 record, int256 value)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 111
                    },
                    {
                        "name": "deleteIntValue",
                        "signature": "deleteIntValue(bytes32 record)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 115
                    }
                ],
                "events": [],
                "variables": [
                    {
                        "name": "UIntStorage",
                        "constant": false,
                        "type": "mapping(bytes32 => uint256)",
                        "lineNumber": 20,
                        "visibility": "internal"
                    },
                    {
                        "name": "StringStorage",
                        "constant": false,
                        "type": "mapping(bytes32 => string)",
                        "lineNumber": 21,
                        "visibility": "internal"
                    },
                    {
                        "name": "AddressStorage",
                        "constant": false,
                        "type": "mapping(bytes32 => address)",
                        "lineNumber": 22,
                        "visibility": "internal"
                    },
                    {
                        "name": "BytesStorage",
                        "constant": false,
                        "type": "mapping(bytes32 => bytes)",
                        "lineNumber": 23,
                        "visibility": "internal"
                    },
                    {
                        "name": "Bytes32Storage",
                        "constant": false,
                        "type": "mapping(bytes32 => bytes32)",
                        "lineNumber": 24,
                        "visibility": "internal"
                    },
                    {
                        "name": "BooleanStorage",
                        "constant": false,
                        "type": "mapping(bytes32 => bool)",
                        "lineNumber": 25,
                        "visibility": "internal"
                    },
                    {
                        "name": "IntStorage",
                        "constant": false,
                        "type": "mapping(bytes32 => int256)",
                        "lineNumber": 26,
                        "visibility": "internal"
                    }
                ],
                "modifiers": [],
                "structs": [],
                "inherits": [
                    "Owned",
                    "State"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/Depot.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/Pausable.sol",
            "openzeppelin-solidity-2.3.0/contracts/utils/ReentrancyGuard.sol",
            "contracts/MixinResolver.sol",
            "contracts/interfaces/IDepot.sol",
            "contracts/SafeDecimalMath.sol",
            "contracts/interfaces/IERC20.sol",
            "contracts/interfaces/IExchangeRates.sol"
        ],
        "contracts": {
            "Depot": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, address payable _fundsWallet, address _resolver)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned",
                            "Pausable",
                            "MixinResolver"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 82
                    },
                    {
                        "name": "setMaxEthPurchase",
                        "signature": "setMaxEthPurchase(uint256 _maxEthPurchase)",
                        "returns": "()",
                        "events": [
                            "MaxEthPurchaseUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 92
                    },
                    {
                        "name": "setFundsWallet",
                        "signature": "setFundsWallet(address payable _fundsWallet)",
                        "returns": "()",
                        "events": [
                            "FundsWalletUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 101
                    },
                    {
                        "name": "setMinimumDepositAmount",
                        "signature": "setMinimumDepositAmount(uint256 _amount)",
                        "returns": "()",
                        "events": [
                            "MinimumDepositAmountUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 112,
                                "name": "require(..., Minimum deposit amount must be greater than UNIT)"
                            }
                        ],
                        "lineNumber": 110
                    },
                    {
                        "name": "fallback",
                        "signature": "()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "nonReentrant",
                            "rateNotInvalid",
                            "notPaused"
                        ],
                        "visibility": "external",
                        "stateMutability": "payable",
                        "requires": [],
                        "lineNumber": 122
                    },
                    {
                        "name": "exchangeEtherForSynths",
                        "signature": "exchangeEtherForSynths()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [
                            "nonReentrant",
                            "rateNotInvalid",
                            "notPaused"
                        ],
                        "visibility": "external",
                        "stateMutability": "payable",
                        "requires": [],
                        "lineNumber": 130
                    },
                    {
                        "name": "_exchangeEtherForSynths",
                        "signature": "_exchangeEtherForSynths()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 144,
                                "name": "require(..., ETH amount above maxEthPurchase limit)"
                            }
                        ],
                        "lineNumber": 143
                    },
                    {
                        "name": "exchangeEtherForSynthsAtRate",
                        "signature": "exchangeEtherForSynthsAtRate(uint256 guaranteedRate)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [
                            "rateNotInvalid",
                            "notPaused"
                        ],
                        "visibility": "external",
                        "stateMutability": "payable",
                        "requires": [
                            {
                                "lineNumber": 270,
                                "name": "require(..., Guaranteed rate would not be received)"
                            }
                        ],
                        "lineNumber": 261
                    },
                    {
                        "name": "_exchangeEtherForSNX",
                        "signature": "_exchangeEtherForSNX()",
                        "returns": "(uint256)",
                        "events": [
                            "Exchange"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 275
                    },
                    {
                        "name": "exchangeEtherForSNX",
                        "signature": "exchangeEtherForSNX()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [
                            "rateNotInvalid",
                            "rateNotInvalid",
                            "notPaused"
                        ],
                        "visibility": "external",
                        "stateMutability": "payable",
                        "requires": [],
                        "lineNumber": 293
                    },
                    {
                        "name": "exchangeEtherForSNXAtRate",
                        "signature": "exchangeEtherForSNXAtRate(uint256 guaranteedEtherRate, uint256 guaranteedSynthetixRate)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [
                            "rateNotInvalid",
                            "rateNotInvalid",
                            "notPaused"
                        ],
                        "visibility": "external",
                        "stateMutability": "payable",
                        "requires": [
                            {
                                "lineNumber": 322,
                                "name": "require(..., Guaranteed ether rate would not be received)"
                            },
                            {
                                "lineNumber": 323,
                                "name": "require(..., Guaranteed synthetix rate would not be received)"
                            }
                        ],
                        "lineNumber": 312
                    },
                    {
                        "name": "_exchangeSynthsForSNX",
                        "signature": "_exchangeSynthsForSNX(uint256 synthAmount)",
                        "returns": "(uint256)",
                        "events": [
                            "Exchange"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 331
                    },
                    {
                        "name": "exchangeSynthsForSNX",
                        "signature": "exchangeSynthsForSNX(uint256 synthAmount)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [
                            "rateNotInvalid",
                            "notPaused"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 352
                    },
                    {
                        "name": "exchangeSynthsForSNXAtRate",
                        "signature": "exchangeSynthsForSNXAtRate(uint256 synthAmount, uint256 guaranteedRate)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [
                            "rateNotInvalid",
                            "notPaused"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 377,
                                "name": "require(..., Guaranteed rate would not be received)"
                            }
                        ],
                        "lineNumber": 369
                    },
                    {
                        "name": "withdrawSynthetix",
                        "signature": "withdrawSynthetix(uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 386
                    },
                    {
                        "name": "withdrawMyDepositedSynths",
                        "signature": "withdrawMyDepositedSynths()",
                        "returns": "()",
                        "events": [
                            "SynthWithdrawal"
                        ],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 427,
                                "name": "require(..., You have no deposits to withdraw.)"
                            }
                        ],
                        "lineNumber": 402
                    },
                    {
                        "name": "depositSynths",
                        "signature": "depositSynths(uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 439
                    },
                    {
                        "name": "resolverAddressesRequired",
                        "signature": "resolverAddressesRequired()",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 466
                    },
                    {
                        "name": "synthetixReceivedForSynths",
                        "signature": "synthetixReceivedForSynths(uint256 amount)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 478
                    },
                    {
                        "name": "synthetixReceivedForEther",
                        "signature": "synthetixReceivedForEther(uint256 amount)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 488
                    },
                    {
                        "name": "synthsReceivedForEther",
                        "signature": "synthsReceivedForEther(uint256 amount)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 501
                    },
                    {
                        "name": "synthsUSD",
                        "signature": "synthsUSD()",
                        "returns": "(contract IERC20)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 508
                    },
                    {
                        "name": "synthetix",
                        "signature": "synthetix()",
                        "returns": "(contract IERC20)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 512
                    },
                    {
                        "name": "exchangeRates",
                        "signature": "exchangeRates()",
                        "returns": "(contract IExchangeRates)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 516
                    }
                ],
                "events": [
                    {
                        "name": "MaxEthPurchaseUpdated",
                        "parameters": "(uint256 amount)",
                        "lineNumber": 529
                    },
                    {
                        "name": "FundsWalletUpdated",
                        "parameters": "(address newFundsWallet)",
                        "lineNumber": 530
                    },
                    {
                        "name": "Exchange",
                        "parameters": "(string fromCurrency, uint256 fromAmount, string toCurrency, uint256 toAmount)",
                        "lineNumber": 531
                    },
                    {
                        "name": "SynthWithdrawal",
                        "parameters": "(address user, uint256 amount)",
                        "lineNumber": 532
                    },
                    {
                        "name": "SynthDeposit",
                        "parameters": "(address user, uint256 amount, uint256 depositIndex)",
                        "lineNumber": 533
                    },
                    {
                        "name": "SynthDepositRemoved",
                        "parameters": "(address user, uint256 amount, uint256 depositIndex)",
                        "lineNumber": 534
                    },
                    {
                        "name": "SynthDepositNotAccepted",
                        "parameters": "(address user, uint256 amount, uint256 minimum)",
                        "lineNumber": 535
                    },
                    {
                        "name": "MinimumDepositAmountUpdated",
                        "parameters": "(uint256 amount)",
                        "lineNumber": 536
                    },
                    {
                        "name": "NonPayableContract",
                        "parameters": "(address receiver, uint256 amount)",
                        "lineNumber": 537
                    },
                    {
                        "name": "ClearedDeposit",
                        "parameters": "(address fromAddress, address toAddress, uint256 fromETHAmount, uint256 toAmount, uint256 depositIndex)",
                        "lineNumber": 538
                    }
                ],
                "variables": [
                    {
                        "name": "SNX",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 23,
                        "visibility": "internal"
                    },
                    {
                        "name": "ETH",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 24,
                        "visibility": "internal"
                    },
                    {
                        "name": "fundsWallet",
                        "constant": false,
                        "type": "address payable",
                        "lineNumber": 31,
                        "visibility": "public"
                    },
                    {
                        "name": "deposits",
                        "constant": false,
                        "type": "mapping(uint256 => struct Depot.SynthDepositEntry)",
                        "lineNumber": 52,
                        "visibility": "public"
                    },
                    {
                        "name": "depositStartIndex",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 54,
                        "visibility": "public"
                    },
                    {
                        "name": "depositEndIndex",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 56,
                        "visibility": "public"
                    },
                    {
                        "name": "totalSellableDeposits",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 61,
                        "visibility": "public"
                    },
                    {
                        "name": "minimumDepositAmount",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 64,
                        "visibility": "public"
                    },
                    {
                        "name": "maxEthPurchase",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 67,
                        "visibility": "public"
                    },
                    {
                        "name": "smallDeposits",
                        "constant": false,
                        "type": "mapping(address => uint256)",
                        "lineNumber": 72,
                        "visibility": "public"
                    },
                    {
                        "name": "CONTRACT_SYNTHSUSD",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 76,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_EXRATES",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 77,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_SYNTHETIX",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 78,
                        "visibility": "private"
                    }
                ],
                "modifiers": [
                    {
                        "name": "rateNotInvalid",
                        "parameters": "(bytes32 currencyKey)",
                        "visibility": "internal",
                        "lineNumber": 522
                    }
                ],
                "structs": [
                    {
                        "name": "SynthDepositEntry",
                        "members": [
                            {
                                "name": "user",
                                "type": "address payable"
                            },
                            {
                                "name": "amount",
                                "type": "uint256"
                            }
                        ],
                        "lineNumber": 34
                    }
                ],
                "inherits": [
                    "Owned",
                    "Pausable",
                    "ReentrancyGuard",
                    "MixinResolver",
                    "IDepot"
                ],
                "libraries": [
                    {
                        "name": "SafeMath",
                        "type": "uint"
                    },
                    {
                        "name": "SafeDecimalMath",
                        "type": "uint"
                    }
                ]
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/interfaces/IDepot.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {
            "IDepot": {
                "functions": [
                    {
                        "name": "fundsWallet",
                        "signature": "fundsWallet()",
                        "returns": "(address payable)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 7
                    },
                    {
                        "name": "maxEthPurchase",
                        "signature": "maxEthPurchase()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 9
                    },
                    {
                        "name": "minimumDepositAmount",
                        "signature": "minimumDepositAmount()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 11
                    },
                    {
                        "name": "synthsReceivedForEther",
                        "signature": "synthsReceivedForEther(uint256 amount)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 13
                    },
                    {
                        "name": "totalSellableDeposits",
                        "signature": "totalSellableDeposits()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 15
                    },
                    {
                        "name": "depositSynths",
                        "signature": "depositSynths(uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 18
                    },
                    {
                        "name": "exchangeEtherForSynths",
                        "signature": "exchangeEtherForSynths()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "payable",
                        "requires": [],
                        "lineNumber": 20
                    },
                    {
                        "name": "exchangeEtherForSynthsAtRate",
                        "signature": "exchangeEtherForSynthsAtRate(uint256 guaranteedRate)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "payable",
                        "requires": [],
                        "lineNumber": 22
                    },
                    {
                        "name": "withdrawMyDepositedSynths",
                        "signature": "withdrawMyDepositedSynths()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 24
                    },
                    {
                        "name": "exchangeEtherForSNX",
                        "signature": "exchangeEtherForSNX()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "payable",
                        "requires": [],
                        "lineNumber": 27
                    },
                    {
                        "name": "exchangeEtherForSNXAtRate",
                        "signature": "exchangeEtherForSNXAtRate(uint256 guaranteedRate, uint256 guaranteedSynthetixRate)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "payable",
                        "requires": [],
                        "lineNumber": 29
                    },
                    {
                        "name": "exchangeSynthsForSNX",
                        "signature": "exchangeSynthsForSNX(uint256 synthAmount)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 31
                    },
                    {
                        "name": "synthetixReceivedForEther",
                        "signature": "synthetixReceivedForEther(uint256 amount)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 33
                    },
                    {
                        "name": "synthetixReceivedForSynths",
                        "signature": "synthetixReceivedForSynths(uint256 amount)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 35
                    },
                    {
                        "name": "withdrawSynthetix",
                        "signature": "withdrawSynthetix(uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 37
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/EmptyCollateralManager.sol": {
        "imports": [
            "contracts/interfaces/ICollateralManager.sol"
        ],
        "contracts": {
            "EmptyCollateralManager": {
                "functions": [
                    {
                        "name": "hasCollateral",
                        "signature": "hasCollateral(address )",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 8
                    },
                    {
                        "name": "isSynthManaged",
                        "signature": "isSynthManaged(bytes32 )",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 12
                    },
                    {
                        "name": "long",
                        "signature": "long(bytes32 )",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 17
                    },
                    {
                        "name": "short",
                        "signature": "short(bytes32 )",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 21
                    },
                    {
                        "name": "totalLong",
                        "signature": "totalLong()",
                        "returns": "(uint256, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 25
                    },
                    {
                        "name": "totalShort",
                        "signature": "totalShort()",
                        "returns": "(uint256, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 29
                    },
                    {
                        "name": "getBorrowRate",
                        "signature": "getBorrowRate()",
                        "returns": "(uint256, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 33
                    },
                    {
                        "name": "getShortRate",
                        "signature": "getShortRate(bytes32 )",
                        "returns": "(uint256, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 37
                    },
                    {
                        "name": "getRatesAndTime",
                        "signature": "getRatesAndTime(uint256 )",
                        "returns": "(uint256, uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 41
                    },
                    {
                        "name": "getShortRatesAndTime",
                        "signature": "getShortRatesAndTime(bytes32 , uint256 )",
                        "returns": "(uint256, uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 54
                    },
                    {
                        "name": "exceedsDebtLimit",
                        "signature": "exceedsDebtLimit(uint256 , bytes32 )",
                        "returns": "(bool, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 67
                    },
                    {
                        "name": "areSynthsAndCurrenciesSet",
                        "signature": "areSynthsAndCurrenciesSet(bytes32[] , bytes32[] )",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 71
                    },
                    {
                        "name": "areShortableSynthsSet",
                        "signature": "areShortableSynthsSet(bytes32[] , bytes32[] )",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 75
                    },
                    {
                        "name": "getNewLoanId",
                        "signature": "getNewLoanId()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 80
                    },
                    {
                        "name": "addCollaterals",
                        "signature": "addCollaterals(address[] )",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 85
                    },
                    {
                        "name": "removeCollaterals",
                        "signature": "removeCollaterals(address[] )",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 87
                    },
                    {
                        "name": "addSynths",
                        "signature": "addSynths(bytes32[] , bytes32[] )",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 89
                    },
                    {
                        "name": "removeSynths",
                        "signature": "removeSynths(bytes32[] , bytes32[] )",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 91
                    },
                    {
                        "name": "addShortableSynths",
                        "signature": "addShortableSynths(bytes32[2][] , bytes32[] )",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 93
                    },
                    {
                        "name": "removeShortableSynths",
                        "signature": "removeShortableSynths(bytes32[] )",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 95
                    },
                    {
                        "name": "updateBorrowRates",
                        "signature": "updateBorrowRates(uint256 )",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 98
                    },
                    {
                        "name": "updateShortRates",
                        "signature": "updateShortRates(bytes32 , uint256 )",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 100
                    },
                    {
                        "name": "incrementLongs",
                        "signature": "incrementLongs(bytes32 , uint256 )",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 102
                    },
                    {
                        "name": "decrementLongs",
                        "signature": "decrementLongs(bytes32 , uint256 )",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 104
                    },
                    {
                        "name": "incrementShorts",
                        "signature": "incrementShorts(bytes32 , uint256 )",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 106
                    },
                    {
                        "name": "decrementShorts",
                        "signature": "decrementShorts(bytes32 , uint256 )",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 108
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [
                    "ICollateralManager"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/EmptyEtherCollateral.sol": {
        "imports": [],
        "contracts": {
            "EmptyEtherCollateral": {
                "functions": [
                    {
                        "name": "totalIssuedSynths",
                        "signature": "totalIssuedSynths()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "pure",
                        "requires": [],
                        "lineNumber": 7
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/EscrowChecker.sol": {
        "imports": [],
        "contracts": {
            "EscrowChecker": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(contract ISynthetixEscrow _esc)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 15
                    },
                    {
                        "name": "checkAccountSchedule",
                        "signature": "checkAccountSchedule(address account)",
                        "returns": "(uint256[16])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 19
                    }
                ],
                "events": [],
                "variables": [
                    {
                        "name": "synthetix_escrow",
                        "constant": false,
                        "type": "contract ISynthetixEscrow",
                        "lineNumber": 13,
                        "visibility": "public"
                    }
                ],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "interfaces": {
            "ISynthetixEscrow": {
                "functions": [
                    {
                        "name": "numVestingEntries",
                        "signature": "numVestingEntries(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 5
                    },
                    {
                        "name": "getVestingScheduleEntry",
                        "signature": "getVestingScheduleEntry(address account, uint256 index)",
                        "returns": "(uint256[2])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 7
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/EtherCollateral.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/Pausable.sol",
            "openzeppelin-solidity-2.3.0/contracts/utils/ReentrancyGuard.sol",
            "contracts/MixinResolver.sol",
            "contracts/interfaces/IEtherCollateral.sol",
            "contracts/SafeDecimalMath.sol",
            "contracts/interfaces/ISystemStatus.sol",
            "contracts/interfaces/IFeePool.sol",
            "contracts/interfaces/ISynth.sol",
            "contracts/interfaces/IERC20.sol",
            "contracts/interfaces/IDepot.sol",
            "contracts/interfaces/IExchangeRates.sol"
        ],
        "contracts": {
            "EtherCollateral": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, address _resolver)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned",
                            "Pausable",
                            "MixinResolver"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 105
                    },
                    {
                        "name": "setCollateralizationRatio",
                        "signature": "setCollateralizationRatio(uint256 ratio)",
                        "returns": "()",
                        "events": [
                            "CollateralizationRatioUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 112,
                                "name": "require(..., Too high)"
                            },
                            {
                                "lineNumber": 113,
                                "name": "require(..., Too low)"
                            }
                        ],
                        "lineNumber": 111
                    },
                    {
                        "name": "setInterestRate",
                        "signature": "setInterestRate(uint256 _interestRate)",
                        "returns": "()",
                        "events": [
                            "InterestRateUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 119,
                                "name": "require(..., Interest rate cannot be less that the SECONDS_IN_A_YEAR)"
                            },
                            {
                                "lineNumber": 120,
                                "name": "require(..., Interest cannot be more than 100% APR)"
                            }
                        ],
                        "lineNumber": 118
                    },
                    {
                        "name": "setIssueFeeRate",
                        "signature": "setIssueFeeRate(uint256 _issueFeeRate)",
                        "returns": "()",
                        "events": [
                            "IssueFeeRateUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 126
                    },
                    {
                        "name": "setIssueLimit",
                        "signature": "setIssueLimit(uint256 _issueLimit)",
                        "returns": "()",
                        "events": [
                            "IssueLimitUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 131
                    },
                    {
                        "name": "setMinLoanSize",
                        "signature": "setMinLoanSize(uint256 _minLoanSize)",
                        "returns": "()",
                        "events": [
                            "MinLoanSizeUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 136
                    },
                    {
                        "name": "setAccountLoanLimit",
                        "signature": "setAccountLoanLimit(uint256 _loanLimit)",
                        "returns": "()",
                        "events": [
                            "AccountLoanLimitUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 143,
                                "name": "require(..., Owner cannot set higher than HARD_CAP)"
                            }
                        ],
                        "lineNumber": 141
                    },
                    {
                        "name": "setLoanLiquidationOpen",
                        "signature": "setLoanLiquidationOpen(bool _loanLiquidationOpen)",
                        "returns": "()",
                        "events": [
                            "LoanLiquidationOpenUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 149,
                                "name": "require(..., Before liquidation deadline)"
                            }
                        ],
                        "lineNumber": 148
                    },
                    {
                        "name": "resolverAddressesRequired",
                        "signature": "resolverAddressesRequired()",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 156
                    },
                    {
                        "name": "getContractInfo",
                        "signature": "getContractInfo()",
                        "returns": "(uint256, uint256, uint256, uint256, uint256, uint256, uint256, uint256, uint256, uint256, uint256, uint256, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 165
                    },
                    {
                        "name": "issuanceRatio",
                        "signature": "issuanceRatio()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 202
                    },
                    {
                        "name": "loanAmountFromCollateral",
                        "signature": "loanAmountFromCollateral(uint256 collateralAmount)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 208
                    },
                    {
                        "name": "collateralAmountForLoan",
                        "signature": "collateralAmountForLoan(uint256 loanAmount)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 212
                    },
                    {
                        "name": "currentInterestOnLoan",
                        "signature": "currentInterestOnLoan(address _account, uint256 _loanID)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 216
                    },
                    {
                        "name": "accruedInterestOnLoan",
                        "signature": "accruedInterestOnLoan(uint256 _loanAmount, uint256 _seconds)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 223
                    },
                    {
                        "name": "calculateMintingFee",
                        "signature": "calculateMintingFee(address _account, uint256 _loanID)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 229
                    },
                    {
                        "name": "openLoanIDsByAccount",
                        "signature": "openLoanIDsByAccount(address _account)",
                        "returns": "(uint256[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 235
                    },
                    {
                        "name": "getLoan",
                        "signature": "getLoan(address _account, uint256 _loanID)",
                        "returns": "(address, uint256, uint256, uint256, uint256, uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 258
                    },
                    {
                        "name": "loanLifeSpan",
                        "signature": "loanLifeSpan(address _account, uint256 _loanID)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 283
                    },
                    {
                        "name": "openLoan",
                        "signature": "openLoan()",
                        "returns": "(uint256)",
                        "events": [
                            "LoanCreated"
                        ],
                        "modifiers": [
                            "notPaused",
                            "nonReentrant",
                            "sETHRateNotInvalid"
                        ],
                        "visibility": "external",
                        "stateMutability": "payable",
                        "requires": [
                            {
                                "lineNumber": 294,
                                "name": "require(..., Not enough ETH to create this loan. Please see the minLoanSize)"
                            },
                            {
                                "lineNumber": 297,
                                "name": "require(..., Loans are now being liquidated)"
                            },
                            {
                                "lineNumber": 300,
                                "name": "require(..., Each account is limted to 50 loans)"
                            },
                            {
                                "lineNumber": 306,
                                "name": "require(..., Loan Amount exceeds the supply cap.)"
                            }
                        ],
                        "lineNumber": 290
                    },
                    {
                        "name": "closeLoan",
                        "signature": "closeLoan(uint256 loanID)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "nonReentrant",
                            "sETHRateNotInvalid"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 334
                    },
                    {
                        "name": "liquidateUnclosedLoan",
                        "signature": "liquidateUnclosedLoan(address _loanCreatorsAddress, uint256 _loanID)",
                        "returns": "()",
                        "events": [
                            "LoanLiquidated"
                        ],
                        "modifiers": [
                            "nonReentrant",
                            "sETHRateNotInvalid"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 340,
                                "name": "require(..., Liquidation is not open)"
                            }
                        ],
                        "lineNumber": 339
                    },
                    {
                        "name": "_closeLoan",
                        "signature": "_closeLoan(address account, uint256 loanID)",
                        "returns": "()",
                        "events": [
                            "LoanClosed"
                        ],
                        "modifiers": [],
                        "visibility": "private",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 355,
                                "name": "require(..., Loan does not exist)"
                            },
                            {
                                "lineNumber": 356,
                                "name": "require(..., Loan already closed)"
                            },
                            {
                                "lineNumber": 357,
                                "name": "require(..., You do not have the required Synth balance to close this loan.)"
                            },
                            {
                                "lineNumber": 377,
                                "name": "require(..., The sUSD Depot does not have enough sUSD to buy for fees)"
                            }
                        ],
                        "lineNumber": 349
                    },
                    {
                        "name": "_getLoanFromStorage",
                        "signature": "_getLoanFromStorage(address account, uint256 loanID)",
                        "returns": "(struct EtherCollateral.SynthLoanStruct)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "private",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 393
                    },
                    {
                        "name": "_recordLoanClosure",
                        "signature": "_recordLoanClosure(struct EtherCollateral.SynthLoanStruct synthLoan)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "private",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 402
                    },
                    {
                        "name": "_incrementTotalLoansCounter",
                        "signature": "_incrementTotalLoansCounter()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "private",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 416
                    },
                    {
                        "name": "_calculateMintingFee",
                        "signature": "_calculateMintingFee(struct EtherCollateral.SynthLoanStruct synthLoan)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "private",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 425
                    },
                    {
                        "name": "_loanLifeSpan",
                        "signature": "_loanLifeSpan(struct EtherCollateral.SynthLoanStruct synthLoan)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "private",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 429
                    },
                    {
                        "name": "systemStatus",
                        "signature": "systemStatus()",
                        "returns": "(contract ISystemStatus)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 438
                    },
                    {
                        "name": "synthsETH",
                        "signature": "synthsETH()",
                        "returns": "(contract ISynth)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 442
                    },
                    {
                        "name": "synthsUSD",
                        "signature": "synthsUSD()",
                        "returns": "(contract ISynth)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 446
                    },
                    {
                        "name": "depot",
                        "signature": "depot()",
                        "returns": "(contract IDepot)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 450
                    },
                    {
                        "name": "exchangeRates",
                        "signature": "exchangeRates()",
                        "returns": "(contract IExchangeRates)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 454
                    }
                ],
                "events": [
                    {
                        "name": "CollateralizationRatioUpdated",
                        "parameters": "(uint256 ratio)",
                        "lineNumber": 467
                    },
                    {
                        "name": "InterestRateUpdated",
                        "parameters": "(uint256 interestRate)",
                        "lineNumber": 468
                    },
                    {
                        "name": "IssueFeeRateUpdated",
                        "parameters": "(uint256 issueFeeRate)",
                        "lineNumber": 469
                    },
                    {
                        "name": "IssueLimitUpdated",
                        "parameters": "(uint256 issueLimit)",
                        "lineNumber": 470
                    },
                    {
                        "name": "MinLoanSizeUpdated",
                        "parameters": "(uint256 minLoanSize)",
                        "lineNumber": 471
                    },
                    {
                        "name": "AccountLoanLimitUpdated",
                        "parameters": "(uint256 loanLimit)",
                        "lineNumber": 472
                    },
                    {
                        "name": "LoanLiquidationOpenUpdated",
                        "parameters": "(bool loanLiquidationOpen)",
                        "lineNumber": 473
                    },
                    {
                        "name": "LoanCreated",
                        "parameters": "(address account, uint256 loanID, uint256 amount)",
                        "lineNumber": 474
                    },
                    {
                        "name": "LoanClosed",
                        "parameters": "(address account, uint256 loanID, uint256 feesPaid)",
                        "lineNumber": 475
                    },
                    {
                        "name": "LoanLiquidated",
                        "parameters": "(address account, uint256 loanID, address liquidator)",
                        "lineNumber": 476
                    }
                ],
                "variables": [
                    {
                        "name": "ONE_THOUSAND",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 28,
                        "visibility": "internal"
                    },
                    {
                        "name": "ONE_HUNDRED",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 29,
                        "visibility": "internal"
                    },
                    {
                        "name": "SECONDS_IN_A_YEAR",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 31,
                        "visibility": "internal"
                    },
                    {
                        "name": "FEE_ADDRESS",
                        "constant": true,
                        "type": "address",
                        "lineNumber": 34,
                        "visibility": "internal"
                    },
                    {
                        "name": "collateralizationRatio",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 39,
                        "visibility": "public"
                    },
                    {
                        "name": "interestRate",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 42,
                        "visibility": "public"
                    },
                    {
                        "name": "interestPerSecond",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 43,
                        "visibility": "public"
                    },
                    {
                        "name": "issueFeeRate",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 46,
                        "visibility": "public"
                    },
                    {
                        "name": "issueLimit",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 49,
                        "visibility": "public"
                    },
                    {
                        "name": "minLoanSize",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 52,
                        "visibility": "public"
                    },
                    {
                        "name": "accountLoanLimit",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 55,
                        "visibility": "public"
                    },
                    {
                        "name": "loanLiquidationOpen",
                        "constant": false,
                        "type": "bool",
                        "lineNumber": 58,
                        "visibility": "public"
                    },
                    {
                        "name": "liquidationDeadline",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 61,
                        "visibility": "public"
                    },
                    {
                        "name": "totalIssuedSynths",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 66,
                        "visibility": "public"
                    },
                    {
                        "name": "totalLoansCreated",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 69,
                        "visibility": "public"
                    },
                    {
                        "name": "totalOpenLoanCount",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 72,
                        "visibility": "public"
                    },
                    {
                        "name": "accountsSynthLoans",
                        "constant": false,
                        "type": "mapping(address => struct EtherCollateral.SynthLoanStruct[])",
                        "lineNumber": 91,
                        "visibility": "public"
                    },
                    {
                        "name": "accountOpenLoanCounter",
                        "constant": false,
                        "type": "mapping(address => uint256)",
                        "lineNumber": 94,
                        "visibility": "public"
                    },
                    {
                        "name": "CONTRACT_SYSTEMSTATUS",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 98,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_SYNTHSETH",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 99,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_SYNTHSUSD",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 100,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_DEPOT",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 101,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_EXRATES",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 102,
                        "visibility": "private"
                    }
                ],
                "modifiers": [
                    {
                        "name": "sETHRateNotInvalid",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 460
                    }
                ],
                "structs": [
                    {
                        "name": "SynthLoanStruct",
                        "members": [
                            {
                                "name": "account",
                                "type": "address"
                            },
                            {
                                "name": "collateralAmount",
                                "type": "uint256"
                            },
                            {
                                "name": "loanAmount",
                                "type": "uint256"
                            },
                            {
                                "name": "timeCreated",
                                "type": "uint256"
                            },
                            {
                                "name": "loanID",
                                "type": "uint256"
                            },
                            {
                                "name": "timeClosed",
                                "type": "uint256"
                            }
                        ],
                        "lineNumber": 75
                    }
                ],
                "inherits": [
                    "Owned",
                    "Pausable",
                    "ReentrancyGuard",
                    "MixinResolver",
                    "IEtherCollateral"
                ],
                "libraries": [
                    {
                        "name": "SafeMath",
                        "type": "uint256"
                    },
                    {
                        "name": "SafeDecimalMath",
                        "type": "uint256"
                    }
                ]
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/EtherCollateralsUSD.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/Pausable.sol",
            "openzeppelin-solidity-2.3.0/contracts/utils/ReentrancyGuard.sol",
            "contracts/MixinResolver.sol",
            "contracts/interfaces/IEtherCollateralsUSD.sol",
            "contracts/SafeDecimalMath.sol",
            "contracts/interfaces/ISystemStatus.sol",
            "contracts/interfaces/IFeePool.sol",
            "contracts/interfaces/ISynth.sol",
            "contracts/interfaces/IERC20.sol",
            "contracts/interfaces/IExchangeRates.sol"
        ],
        "contracts": {
            "EtherCollateralsUSD": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, address _resolver)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned",
                            "Pausable",
                            "MixinResolver"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 124
                    },
                    {
                        "name": "setCollateralizationRatio",
                        "signature": "setCollateralizationRatio(uint256 ratio)",
                        "returns": "()",
                        "events": [
                            "CollateralizationRatioUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 131,
                                "name": "require(..., Too high)"
                            },
                            {
                                "lineNumber": 132,
                                "name": "require(..., Too low)"
                            }
                        ],
                        "lineNumber": 130
                    },
                    {
                        "name": "setInterestRate",
                        "signature": "setInterestRate(uint256 _interestRate)",
                        "returns": "()",
                        "events": [
                            "InterestRateUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 138,
                                "name": "require(..., Interest rate cannot be less that the SECONDS_IN_A_YEAR)"
                            },
                            {
                                "lineNumber": 139,
                                "name": "require(..., Interest cannot be more than 100% APR)"
                            }
                        ],
                        "lineNumber": 137
                    },
                    {
                        "name": "setIssueFeeRate",
                        "signature": "setIssueFeeRate(uint256 _issueFeeRate)",
                        "returns": "()",
                        "events": [
                            "IssueFeeRateUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 145
                    },
                    {
                        "name": "setIssueLimit",
                        "signature": "setIssueLimit(uint256 _issueLimit)",
                        "returns": "()",
                        "events": [
                            "IssueLimitUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 150
                    },
                    {
                        "name": "setMinLoanCollateralSize",
                        "signature": "setMinLoanCollateralSize(uint256 _minLoanCollateralSize)",
                        "returns": "()",
                        "events": [
                            "MinLoanCollateralSizeUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 155
                    },
                    {
                        "name": "setAccountLoanLimit",
                        "signature": "setAccountLoanLimit(uint256 _loanLimit)",
                        "returns": "()",
                        "events": [
                            "AccountLoanLimitUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 161,
                                "name": "require(..., Owner cannot set higher than ACCOUNT_LOAN_LIMIT_CAP)"
                            }
                        ],
                        "lineNumber": 160
                    },
                    {
                        "name": "setLoanLiquidationOpen",
                        "signature": "setLoanLiquidationOpen(bool _loanLiquidationOpen)",
                        "returns": "()",
                        "events": [
                            "LoanLiquidationOpenUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 167,
                                "name": "require(..., Before liquidation deadline)"
                            }
                        ],
                        "lineNumber": 166
                    },
                    {
                        "name": "setLiquidationRatio",
                        "signature": "setLiquidationRatio(uint256 _liquidationRatio)",
                        "returns": "()",
                        "events": [
                            "LiquidationRatioUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 173,
                                "name": "require(..., Ratio less than 100%)"
                            }
                        ],
                        "lineNumber": 172
                    },
                    {
                        "name": "resolverAddressesRequired",
                        "signature": "resolverAddressesRequired()",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 179
                    },
                    {
                        "name": "getContractInfo",
                        "signature": "getContractInfo()",
                        "returns": "(uint256, uint256, uint256, uint256, uint256, uint256, uint256, uint256, uint256, uint256, uint256, uint256, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 187
                    },
                    {
                        "name": "issuanceRatio",
                        "signature": "issuanceRatio()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 223
                    },
                    {
                        "name": "loanAmountFromCollateral",
                        "signature": "loanAmountFromCollateral(uint256 collateralAmount)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 228
                    },
                    {
                        "name": "collateralAmountForLoan",
                        "signature": "collateralAmountForLoan(uint256 loanAmount)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 233
                    },
                    {
                        "name": "currentInterestOnLoan",
                        "signature": "currentInterestOnLoan(address _account, uint256 _loanID)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 241
                    },
                    {
                        "name": "accruedInterestOnLoan",
                        "signature": "accruedInterestOnLoan(uint256 _loanAmount, uint256 _seconds)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 251
                    },
                    {
                        "name": "totalFeesOnLoan",
                        "signature": "totalFeesOnLoan(address _account, uint256 _loanID)",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 257
                    },
                    {
                        "name": "getMintingFee",
                        "signature": "getMintingFee(address _account, uint256 _loanID)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 270
                    },
                    {
                        "name": "calculateAmountToLiquidate",
                        "signature": "calculateAmountToLiquidate(uint256 debtBalance, uint256 collateral)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 283
                    },
                    {
                        "name": "openLoanIDsByAccount",
                        "signature": "openLoanIDsByAccount(address _account)",
                        "returns": "(uint256[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 293
                    },
                    {
                        "name": "getLoan",
                        "signature": "getLoan(address _account, uint256 _loanID)",
                        "returns": "(address, uint256, uint256, uint256, uint256, uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 316
                    },
                    {
                        "name": "getLoanCollateralRatio",
                        "signature": "getLoanCollateralRatio(address _account, uint256 _loanID)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 343
                    },
                    {
                        "name": "_loanCollateralRatio",
                        "signature": "_loanCollateralRatio(struct EtherCollateralsUSD.SynthLoanStruct _loan)",
                        "returns": "(uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 350
                    },
                    {
                        "name": "timeSinceInterestAccrualOnLoan",
                        "signature": "timeSinceInterestAccrualOnLoan(address _account, uint256 _loanID)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 369
                    },
                    {
                        "name": "openLoan",
                        "signature": "openLoan(uint256 _loanAmount)",
                        "returns": "(uint256)",
                        "events": [
                            "LoanCreated"
                        ],
                        "modifiers": [
                            "notPaused",
                            "nonReentrant",
                            "ETHRateNotInvalid"
                        ],
                        "visibility": "external",
                        "stateMutability": "payable",
                        "requires": [
                            {
                                "lineNumber": 389,
                                "name": "require(..., Not enough ETH to create this loan. Please see the minLoanCollateralSize)"
                            },
                            {
                                "lineNumber": 395,
                                "name": "require(..., Loans are now being liquidated)"
                            },
                            {
                                "lineNumber": 398,
                                "name": "require(..., Each account is limited to 50 loans)"
                            },
                            {
                                "lineNumber": 405,
                                "name": "require(..., Loan amount exceeds max borrowing power)"
                            },
                            {
                                "lineNumber": 411,
                                "name": "require(..., Loan Amount exceeds the supply cap.)"
                            }
                        ],
                        "lineNumber": 378
                    },
                    {
                        "name": "closeLoan",
                        "signature": "closeLoan(uint256 loanID)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "nonReentrant",
                            "ETHRateNotInvalid"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 449
                    },
                    {
                        "name": "depositCollateral",
                        "signature": "depositCollateral(address account, uint256 loanID)",
                        "returns": "()",
                        "events": [
                            "CollateralDeposited"
                        ],
                        "modifiers": [
                            "notPaused"
                        ],
                        "visibility": "external",
                        "stateMutability": "payable",
                        "requires": [
                            {
                                "lineNumber": 455,
                                "name": "require(..., Deposit amount must be greater than 0)"
                            },
                            {
                                "lineNumber": 460,
                                "name": "require(..., Loans are now being liquidated)"
                            }
                        ],
                        "lineNumber": 454
                    },
                    {
                        "name": "withdrawCollateral",
                        "signature": "withdrawCollateral(uint256 loanID, uint256 withdrawAmount)",
                        "returns": "()",
                        "events": [
                            "CollateralWithdrawn"
                        ],
                        "modifiers": [
                            "notPaused",
                            "nonReentrant",
                            "ETHRateNotInvalid"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 478,
                                "name": "require(..., Amount to withdraw must be greater than 0)"
                            },
                            {
                                "lineNumber": 483,
                                "name": "require(..., Loans are now being liquidated)"
                            },
                            {
                                "lineNumber": 498,
                                "name": "require(..., Collateral ratio below liquidation after withdraw)"
                            }
                        ],
                        "lineNumber": 477
                    },
                    {
                        "name": "repayLoan",
                        "signature": "repayLoan(address _loanCreatorsAddress, uint256 _loanID, uint256 _repayAmount)",
                        "returns": "()",
                        "events": [
                            "LoanRepaid"
                        ],
                        "modifiers": [
                            "ETHRateNotInvalid"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 515,
                                "name": "require(..., Not enough sUSD balance)"
                            }
                        ],
                        "lineNumber": 507
                    },
                    {
                        "name": "liquidateLoan",
                        "signature": "liquidateLoan(address _loanCreatorsAddress, uint256 _loanID, uint256 _debtToCover)",
                        "returns": "()",
                        "events": [
                            "LoanPartiallyLiquidated"
                        ],
                        "modifiers": [
                            "nonReentrant",
                            "ETHRateNotInvalid"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 558,
                                "name": "require(..., Not enough sUSD balance)"
                            },
                            {
                                "lineNumber": 567,
                                "name": "require(..., Collateral ratio above liquidation ratio)"
                            }
                        ],
                        "lineNumber": 550
                    },
                    {
                        "name": "_splitInterestLoanPayment",
                        "signature": "_splitInterestLoanPayment(uint256 _paymentAmount, uint256 _accruedInterest, uint256 _loanAmount)",
                        "returns": "(uint256, uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "pure",
                        "requires": [],
                        "lineNumber": 617
                    },
                    {
                        "name": "_processInterestAndLoanPayment",
                        "signature": "_processInterestAndLoanPayment(uint256 interestPaid, uint256 loanAmountPaid)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 650
                    },
                    {
                        "name": "liquidateUnclosedLoan",
                        "signature": "liquidateUnclosedLoan(address _loanCreatorsAddress, uint256 _loanID)",
                        "returns": "()",
                        "events": [
                            "LoanLiquidated"
                        ],
                        "modifiers": [
                            "nonReentrant",
                            "ETHRateNotInvalid"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 665,
                                "name": "require(..., Liquidation is not open)"
                            }
                        ],
                        "lineNumber": 664
                    },
                    {
                        "name": "_closeLoan",
                        "signature": "_closeLoan(address account, uint256 loanID, bool liquidation)",
                        "returns": "()",
                        "events": [
                            "LoanClosed"
                        ],
                        "modifiers": [],
                        "visibility": "private",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 697,
                                "name": "require(..., You do not have the required Synth balance to close this loan.)"
                            }
                        ],
                        "lineNumber": 674
                    },
                    {
                        "name": "_getLoanFromStorage",
                        "signature": "_getLoanFromStorage(address account, uint256 loanID)",
                        "returns": "(struct EtherCollateralsUSD.SynthLoanStruct)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "private",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 742
                    },
                    {
                        "name": "_updateLoan",
                        "signature": "_updateLoan(struct EtherCollateralsUSD.SynthLoanStruct _synthLoan, uint256 _newLoanAmount, uint256 _newAccruedInterest, uint256 _lastInterestAccrued)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "private",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 751
                    },
                    {
                        "name": "_updateLoanCollateral",
                        "signature": "_updateLoanCollateral(struct EtherCollateralsUSD.SynthLoanStruct _synthLoan, uint256 _newCollateralAmount)",
                        "returns": "(struct EtherCollateralsUSD.SynthLoanStruct)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "private",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 768
                    },
                    {
                        "name": "_recordLoanClosure",
                        "signature": "_recordLoanClosure(struct EtherCollateralsUSD.SynthLoanStruct synthLoan)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "private",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 782
                    },
                    {
                        "name": "_incrementTotalLoansCounter",
                        "signature": "_incrementTotalLoansCounter()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "private",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 796
                    },
                    {
                        "name": "_calculateMintingFee",
                        "signature": "_calculateMintingFee(uint256 _loanAmount)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "private",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 805
                    },
                    {
                        "name": "_timeSinceInterestAccrual",
                        "signature": "_timeSinceInterestAccrual(struct EtherCollateralsUSD.SynthLoanStruct _synthLoan)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "private",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 809
                    },
                    {
                        "name": "_checkLoanIsOpen",
                        "signature": "_checkLoanIsOpen(struct EtherCollateralsUSD.SynthLoanStruct _synthLoan)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "pure",
                        "requires": [
                            {
                                "lineNumber": 824,
                                "name": "require(..., Loan does not exist)"
                            },
                            {
                                "lineNumber": 825,
                                "name": "require(..., Loan already closed)"
                            }
                        ],
                        "lineNumber": 823
                    },
                    {
                        "name": "systemStatus",
                        "signature": "systemStatus()",
                        "returns": "(contract ISystemStatus)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 830
                    },
                    {
                        "name": "synthsUSD",
                        "signature": "synthsUSD()",
                        "returns": "(contract ISynth)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 834
                    },
                    {
                        "name": "exchangeRates",
                        "signature": "exchangeRates()",
                        "returns": "(contract IExchangeRates)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 838
                    },
                    {
                        "name": "feePool",
                        "signature": "feePool()",
                        "returns": "(contract IFeePool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 842
                    }
                ],
                "events": [
                    {
                        "name": "CollateralizationRatioUpdated",
                        "parameters": "(uint256 ratio)",
                        "lineNumber": 855
                    },
                    {
                        "name": "LiquidationRatioUpdated",
                        "parameters": "(uint256 ratio)",
                        "lineNumber": 856
                    },
                    {
                        "name": "InterestRateUpdated",
                        "parameters": "(uint256 interestRate)",
                        "lineNumber": 857
                    },
                    {
                        "name": "IssueFeeRateUpdated",
                        "parameters": "(uint256 issueFeeRate)",
                        "lineNumber": 858
                    },
                    {
                        "name": "IssueLimitUpdated",
                        "parameters": "(uint256 issueLimit)",
                        "lineNumber": 859
                    },
                    {
                        "name": "MinLoanCollateralSizeUpdated",
                        "parameters": "(uint256 minLoanCollateralSize)",
                        "lineNumber": 860
                    },
                    {
                        "name": "AccountLoanLimitUpdated",
                        "parameters": "(uint256 loanLimit)",
                        "lineNumber": 861
                    },
                    {
                        "name": "LoanLiquidationOpenUpdated",
                        "parameters": "(bool loanLiquidationOpen)",
                        "lineNumber": 862
                    },
                    {
                        "name": "LoanCreated",
                        "parameters": "(address account, uint256 loanID, uint256 amount)",
                        "lineNumber": 863
                    },
                    {
                        "name": "LoanClosed",
                        "parameters": "(address account, uint256 loanID, uint256 feesPaid)",
                        "lineNumber": 864
                    },
                    {
                        "name": "LoanLiquidated",
                        "parameters": "(address account, uint256 loanID, address liquidator)",
                        "lineNumber": 865
                    },
                    {
                        "name": "LoanPartiallyLiquidated",
                        "parameters": "(address account, uint256 loanID, address liquidator, uint256 liquidatedAmount, uint256 liquidatedCollateral)",
                        "lineNumber": 866
                    },
                    {
                        "name": "CollateralDeposited",
                        "parameters": "(address account, uint256 loanID, uint256 collateralAmount, uint256 collateralAfter)",
                        "lineNumber": 873
                    },
                    {
                        "name": "CollateralWithdrawn",
                        "parameters": "(address account, uint256 loanID, uint256 amountWithdrawn, uint256 collateralAfter)",
                        "lineNumber": 874
                    },
                    {
                        "name": "LoanRepaid",
                        "parameters": "(address account, uint256 loanID, uint256 repaidAmount, uint256 newLoanAmount)",
                        "lineNumber": 875
                    }
                ],
                "variables": [
                    {
                        "name": "ETH",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 27,
                        "visibility": "internal"
                    },
                    {
                        "name": "ONE_THOUSAND",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 30,
                        "visibility": "internal"
                    },
                    {
                        "name": "ONE_HUNDRED",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 31,
                        "visibility": "internal"
                    },
                    {
                        "name": "SECONDS_IN_A_YEAR",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 33,
                        "visibility": "internal"
                    },
                    {
                        "name": "FEE_ADDRESS",
                        "constant": true,
                        "type": "address",
                        "lineNumber": 36,
                        "visibility": "internal"
                    },
                    {
                        "name": "ACCOUNT_LOAN_LIMIT_CAP",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 38,
                        "visibility": "internal"
                    },
                    {
                        "name": "sUSD",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 39,
                        "visibility": "private"
                    },
                    {
                        "name": "COLLATERAL",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 40,
                        "visibility": "public"
                    },
                    {
                        "name": "collateralizationRatio",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 45,
                        "visibility": "public"
                    },
                    {
                        "name": "interestRate",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 48,
                        "visibility": "public"
                    },
                    {
                        "name": "interestPerSecond",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 49,
                        "visibility": "public"
                    },
                    {
                        "name": "issueFeeRate",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 52,
                        "visibility": "public"
                    },
                    {
                        "name": "issueLimit",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 55,
                        "visibility": "public"
                    },
                    {
                        "name": "minLoanCollateralSize",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 58,
                        "visibility": "public"
                    },
                    {
                        "name": "accountLoanLimit",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 61,
                        "visibility": "public"
                    },
                    {
                        "name": "loanLiquidationOpen",
                        "constant": false,
                        "type": "bool",
                        "lineNumber": 64,
                        "visibility": "public"
                    },
                    {
                        "name": "liquidationDeadline",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 67,
                        "visibility": "public"
                    },
                    {
                        "name": "liquidationRatio",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 70,
                        "visibility": "public"
                    },
                    {
                        "name": "liquidationPenalty",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 73,
                        "visibility": "public"
                    },
                    {
                        "name": "totalIssuedSynths",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 78,
                        "visibility": "public"
                    },
                    {
                        "name": "totalLoansCreated",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 81,
                        "visibility": "public"
                    },
                    {
                        "name": "totalOpenLoanCount",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 84,
                        "visibility": "public"
                    },
                    {
                        "name": "accountsSynthLoans",
                        "constant": false,
                        "type": "mapping(address => struct EtherCollateralsUSD.SynthLoanStruct[])",
                        "lineNumber": 111,
                        "visibility": "public"
                    },
                    {
                        "name": "accountOpenLoanCounter",
                        "constant": false,
                        "type": "mapping(address => uint256)",
                        "lineNumber": 114,
                        "visibility": "public"
                    },
                    {
                        "name": "CONTRACT_SYSTEMSTATUS",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 118,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_SYNTHSUSD",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 119,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_EXRATES",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 120,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_FEEPOOL",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 121,
                        "visibility": "private"
                    }
                ],
                "modifiers": [
                    {
                        "name": "ETHRateNotInvalid",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 848
                    }
                ],
                "structs": [
                    {
                        "name": "SynthLoanStruct",
                        "members": [
                            {
                                "name": "account",
                                "type": "address payable"
                            },
                            {
                                "name": "collateralAmount",
                                "type": "uint256"
                            },
                            {
                                "name": "loanAmount",
                                "type": "uint256"
                            },
                            {
                                "name": "mintingFee",
                                "type": "uint256"
                            },
                            {
                                "name": "timeCreated",
                                "type": "uint256"
                            },
                            {
                                "name": "loanID",
                                "type": "uint256"
                            },
                            {
                                "name": "timeClosed",
                                "type": "uint256"
                            },
                            {
                                "name": "loanInterestRate",
                                "type": "uint256"
                            },
                            {
                                "name": "accruedInterest",
                                "type": "uint256"
                            },
                            {
                                "name": "lastInterestAccrued",
                                "type": "uint40"
                            }
                        ],
                        "lineNumber": 87
                    }
                ],
                "inherits": [
                    "Owned",
                    "Pausable",
                    "ReentrancyGuard",
                    "MixinResolver",
                    "IEtherCollateralsUSD"
                ],
                "libraries": [
                    {
                        "name": "SafeMath",
                        "type": "uint256"
                    },
                    {
                        "name": "SafeDecimalMath",
                        "type": "uint256"
                    }
                ]
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/Exchanger.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/MixinResolver.sol",
            "contracts/MixinSystemSettings.sol",
            "contracts/interfaces/IExchanger.sol",
            "contracts/SafeDecimalMath.sol",
            "contracts/interfaces/ISystemStatus.sol",
            "contracts/interfaces/IExchangeState.sol",
            "contracts/interfaces/IExchangeRates.sol",
            "contracts/interfaces/ISynthetix.sol",
            "contracts/interfaces/IFeePool.sol",
            "contracts/interfaces/IDelegateApprovals.sol",
            "contracts/interfaces/IIssuer.sol",
            "contracts/interfaces/ITradingRewards.sol",
            "contracts/interfaces/IDebtCache.sol",
            "contracts/interfaces/IVirtualSynth.sol",
            "contracts/Proxyable.sol",
            "openzeppelin-solidity-2.3.0/contracts/token/ERC20/IERC20.sol"
        ],
        "contracts": {
            "Exchanger": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, address _resolver)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned",
                            "MixinSystemSettings"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 103
                    },
                    {
                        "name": "resolverAddressesRequired",
                        "signature": "resolverAddressesRequired()",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 107
                    },
                    {
                        "name": "systemStatus",
                        "signature": "systemStatus()",
                        "returns": "(contract ISystemStatus)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 122
                    },
                    {
                        "name": "exchangeState",
                        "signature": "exchangeState()",
                        "returns": "(contract IExchangeState)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 126
                    },
                    {
                        "name": "exchangeRates",
                        "signature": "exchangeRates()",
                        "returns": "(contract IExchangeRates)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 130
                    },
                    {
                        "name": "synthetix",
                        "signature": "synthetix()",
                        "returns": "(contract ISynthetix)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 134
                    },
                    {
                        "name": "feePool",
                        "signature": "feePool()",
                        "returns": "(contract IFeePool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 138
                    },
                    {
                        "name": "tradingRewards",
                        "signature": "tradingRewards()",
                        "returns": "(contract ITradingRewards)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 142
                    },
                    {
                        "name": "delegateApprovals",
                        "signature": "delegateApprovals()",
                        "returns": "(contract IDelegateApprovals)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 146
                    },
                    {
                        "name": "issuer",
                        "signature": "issuer()",
                        "returns": "(contract IIssuer)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 150
                    },
                    {
                        "name": "debtCache",
                        "signature": "debtCache()",
                        "returns": "(contract IExchangerInternalDebtCache)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 154
                    },
                    {
                        "name": "maxSecsLeftInWaitingPeriod",
                        "signature": "maxSecsLeftInWaitingPeriod(address account, bytes32 currencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 158
                    },
                    {
                        "name": "waitingPeriodSecs",
                        "signature": "waitingPeriodSecs()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 162
                    },
                    {
                        "name": "tradingRewardsEnabled",
                        "signature": "tradingRewardsEnabled()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 166
                    },
                    {
                        "name": "priceDeviationThresholdFactor",
                        "signature": "priceDeviationThresholdFactor()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 170
                    },
                    {
                        "name": "settlementOwing",
                        "signature": "settlementOwing(address account, bytes32 currencyKey)",
                        "returns": "(uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 174
                    },
                    {
                        "name": "_settlementOwing",
                        "signature": "_settlementOwing(address account, bytes32 currencyKey)",
                        "returns": "(uint256, uint256, uint256, struct Exchanger.ExchangeEntrySettlement[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 187
                    },
                    {
                        "name": "_getExchangeEntry",
                        "signature": "_getExchangeEntry(address account, bytes32 currencyKey, uint256 index)",
                        "returns": "(struct IExchangeState.ExchangeEntry)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 252
                    },
                    {
                        "name": "hasWaitingPeriodOrSettlementOwing",
                        "signature": "hasWaitingPeriodOrSettlementOwing(address account, bytes32 currencyKey)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 281
                    },
                    {
                        "name": "calculateAmountAfterSettlement",
                        "signature": "calculateAmountAfterSettlement(address from, bytes32 currencyKey, uint256 amount, uint256 refunded)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 293
                    },
                    {
                        "name": "isSynthRateInvalid",
                        "signature": "isSynthRateInvalid(bytes32 currencyKey)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 315
                    },
                    {
                        "name": "exchange",
                        "signature": "exchange(address from, bytes32 sourceCurrencyKey, uint256 sourceAmount, bytes32 destinationCurrencyKey, address destinationAddress)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [
                            "onlySynthetixorSynth"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 320
                    },
                    {
                        "name": "exchangeOnBehalf",
                        "signature": "exchangeOnBehalf(address exchangeForAddress, address from, bytes32 sourceCurrencyKey, uint256 sourceAmount, bytes32 destinationCurrencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [
                            "onlySynthetixorSynth"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 347,
                                "name": "require(..., Not approved to act on behalf)"
                            }
                        ],
                        "lineNumber": 340
                    },
                    {
                        "name": "exchangeWithTracking",
                        "signature": "exchangeWithTracking(address from, bytes32 sourceCurrencyKey, uint256 sourceAmount, bytes32 destinationCurrencyKey, address destinationAddress, address originator, bytes32 trackingCode)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [
                            "onlySynthetixorSynth"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 362
                    },
                    {
                        "name": "exchangeOnBehalfWithTracking",
                        "signature": "exchangeOnBehalfWithTracking(address exchangeForAddress, address from, bytes32 sourceCurrencyKey, uint256 sourceAmount, bytes32 destinationCurrencyKey, address originator, bytes32 trackingCode)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [
                            "onlySynthetixorSynth"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 395,
                                "name": "require(..., Not approved to act on behalf)"
                            }
                        ],
                        "lineNumber": 386
                    },
                    {
                        "name": "exchangeWithVirtual",
                        "signature": "exchangeWithVirtual(address from, bytes32 sourceCurrencyKey, uint256 sourceAmount, bytes32 destinationCurrencyKey, address destinationAddress, bytes32 trackingCode)",
                        "returns": "(uint256, contract IVirtualSynth)",
                        "events": [],
                        "modifiers": [
                            "onlySynthetixorSynth"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 412
                    },
                    {
                        "name": "_emitTrackingEvent",
                        "signature": "_emitTrackingEvent(bytes32 trackingCode, bytes32 toCurrencyKey, uint256 toAmount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 437
                    },
                    {
                        "name": "_processTradingRewards",
                        "signature": "_processTradingRewards(uint256 fee, address originator)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 445
                    },
                    {
                        "name": "_suspendIfRateInvalid",
                        "signature": "_suspendIfRateInvalid(bytes32 currencyKey, uint256 rate)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 451
                    },
                    {
                        "name": "_updateSNXIssuedDebtOnExchange",
                        "signature": "_updateSNXIssuedDebtOnExchange(bytes32[2] currencyKeys, uint256[2] currencyRates)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 460
                    },
                    {
                        "name": "_settleAndCalcSourceAmountRemaining",
                        "signature": "_settleAndCalcSourceAmountRemaining(uint256 sourceAmount, address from, bytes32 sourceCurrencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 482
                    },
                    {
                        "name": "_exchange",
                        "signature": "_exchange(address from, bytes32 sourceCurrencyKey, uint256 sourceAmount, bytes32 destinationCurrencyKey, address destinationAddress, bool virtualSynth)",
                        "returns": "(uint256, uint256, contract IVirtualSynth)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 498
                    },
                    {
                        "name": "_convert",
                        "signature": "_convert(bytes32 sourceCurrencyKey, address from, uint256 sourceAmountAfterSettlement, bytes32 destinationCurrencyKey, uint256 amountReceived, address recipient, bool virtualSynth)",
                        "returns": "(contract IVirtualSynth)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 601
                    },
                    {
                        "name": "_createVirtualSynth",
                        "signature": "_createVirtualSynth(contract IERC20 , address , uint256 , bytes32 )",
                        "returns": "(contract IVirtualSynth)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 625
                    },
                    {
                        "name": "settle",
                        "signature": "settle(address from, bytes32 currencyKey)",
                        "returns": "(uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 635
                    },
                    {
                        "name": "suspendSynthWithInvalidRate",
                        "signature": "suspendSynthWithInvalidRate(bytes32 currencyKey)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 649,
                                "name": "require(..., No such synth)"
                            },
                            {
                                "lineNumber": 650,
                                "name": "require(..., Synth price is valid)"
                            }
                        ],
                        "lineNumber": 647
                    },
                    {
                        "name": "setLastExchangeRateForSynth",
                        "signature": "setLastExchangeRateForSynth(bytes32 currencyKey, uint256 rate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyExchangeRates"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 656,
                                "name": "require(..., Rate must be above 0)"
                            }
                        ],
                        "lineNumber": 655
                    },
                    {
                        "name": "_ensureCanExchange",
                        "signature": "_ensureCanExchange(bytes32 sourceCurrencyKey, uint256 sourceAmount, bytes32 destinationCurrencyKey)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 667,
                                "name": "require(..., Can't be same synth)"
                            },
                            {
                                "lineNumber": 668,
                                "name": "require(..., Zero amount)"
                            },
                            {
                                "lineNumber": 673,
                                "name": "require(..., Src/dest rate invalid or not found)"
                            }
                        ],
                        "lineNumber": 662
                    },
                    {
                        "name": "_isSynthRateInvalid",
                        "signature": "_isSynthRateInvalid(bytes32 currencyKey, uint256 currentRate)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 676
                    },
                    {
                        "name": "_isDeviationAboveThreshold",
                        "signature": "_isDeviationAboveThreshold(uint256 base, uint256 comparison)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 701
                    },
                    {
                        "name": "_internalSettle",
                        "signature": "_internalSettle(address from, bytes32 currencyKey, bool updateCache)",
                        "returns": "(uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 728,
                                "name": "require(..., Cannot settle during waiting period)"
                            }
                        ],
                        "lineNumber": 716
                    },
                    {
                        "name": "reclaim",
                        "signature": "reclaim(address from, bytes32 currencyKey, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 772
                    },
                    {
                        "name": "refund",
                        "signature": "refund(address from, bytes32 currencyKey, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 782
                    },
                    {
                        "name": "secsLeftInWaitingPeriodForExchange",
                        "signature": "secsLeftInWaitingPeriodForExchange(uint256 timestamp)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 792
                    },
                    {
                        "name": "feeRateForExchange",
                        "signature": "feeRateForExchange(bytes32 sourceCurrencyKey, bytes32 destinationCurrencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 801
                    },
                    {
                        "name": "_feeRateForExchange",
                        "signature": "_feeRateForExchange(bytes32 sourceCurrencyKey, bytes32 destinationCurrencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 809
                    },
                    {
                        "name": "getAmountsForExchange",
                        "signature": "getAmountsForExchange(uint256 sourceAmount, bytes32 sourceCurrencyKey, bytes32 destinationCurrencyKey)",
                        "returns": "(uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 833
                    },
                    {
                        "name": "_getAmountsForExchangeMinusFees",
                        "signature": "_getAmountsForExchangeMinusFees(uint256 sourceAmount, bytes32 sourceCurrencyKey, bytes32 destinationCurrencyKey)",
                        "returns": "(uint256, uint256, uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 853
                    },
                    {
                        "name": "_getAmountReceivedForExchange",
                        "signature": "_getAmountReceivedForExchange(uint256 destinationAmount, uint256 exchangeFeeRate)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "pure",
                        "requires": [],
                        "lineNumber": 879
                    },
                    {
                        "name": "appendExchange",
                        "signature": "appendExchange(address account, bytes32 src, uint256 amount, bytes32 dest, uint256 amountReceived, uint256 exchangeFeeRate)",
                        "returns": "()",
                        "events": [
                            "ExchangeEntryAppended"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 887
                    },
                    {
                        "name": "getRoundIdsAtPeriodEnd",
                        "signature": "getRoundIdsAtPeriodEnd(struct IExchangeState.ExchangeEntry exchangeEntry)",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 922
                    }
                ],
                "events": [
                    {
                        "name": "ExchangeEntryAppended",
                        "parameters": "(address account, bytes32 src, uint256 amount, bytes32 dest, uint256 amountReceived, uint256 exchangeFeeRate, uint256 roundIdForSrc, uint256 roundIdForDest)",
                        "lineNumber": 962
                    },
                    {
                        "name": "ExchangeEntrySettled",
                        "parameters": "(address from, bytes32 src, uint256 amount, bytes32 dest, uint256 reclaim, uint256 rebate, uint256 srcRoundIdAtPeriodEnd, uint256 destRoundIdAtPeriodEnd, uint256 exchangeTimestamp)",
                        "lineNumber": 973
                    }
                ],
                "variables": [
                    {
                        "name": "sUSD",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 84,
                        "visibility": "private"
                    },
                    {
                        "name": "CIRCUIT_BREAKER_SUSPENSION_REASON",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 87,
                        "visibility": "public"
                    },
                    {
                        "name": "lastExchangeRate",
                        "constant": false,
                        "type": "mapping(bytes32 => uint256)",
                        "lineNumber": 89,
                        "visibility": "public"
                    },
                    {
                        "name": "CONTRACT_SYSTEMSTATUS",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 93,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_EXCHANGESTATE",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 94,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_EXRATES",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 95,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_SYNTHETIX",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 96,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_FEEPOOL",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 97,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_TRADING_REWARDS",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 98,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_DELEGATEAPPROVALS",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 99,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_ISSUER",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 100,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_DEBTCACHE",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 101,
                        "visibility": "private"
                    }
                ],
                "modifiers": [
                    {
                        "name": "onlySynthetixorSynth",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 946
                    },
                    {
                        "name": "onlyExchangeRates",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 955
                    }
                ],
                "structs": [
                    {
                        "name": "ExchangeEntrySettlement",
                        "members": [
                            {
                                "name": "src",
                                "type": "bytes32"
                            },
                            {
                                "name": "amount",
                                "type": "uint256"
                            },
                            {
                                "name": "dest",
                                "type": "bytes32"
                            },
                            {
                                "name": "reclaim",
                                "type": "uint256"
                            },
                            {
                                "name": "rebate",
                                "type": "uint256"
                            },
                            {
                                "name": "srcRoundIdAtPeriodEnd",
                                "type": "uint256"
                            },
                            {
                                "name": "destRoundIdAtPeriodEnd",
                                "type": "uint256"
                            },
                            {
                                "name": "timestamp",
                                "type": "uint256"
                            }
                        ],
                        "lineNumber": 73
                    }
                ],
                "inherits": [
                    "Owned",
                    "MixinSystemSettings",
                    "IExchanger"
                ],
                "libraries": [
                    {
                        "name": "SafeMath",
                        "type": "uint"
                    },
                    {
                        "name": "SafeDecimalMath",
                        "type": "uint"
                    }
                ]
            }
        },
        "interfaces": {
            "ISynthetixInternal": {
                "functions": [
                    {
                        "name": "emitExchangeTracking",
                        "signature": "emitExchangeTracking(bytes32 trackingCode, bytes32 toCurrencyKey, uint256 toAmount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 32
                    },
                    {
                        "name": "emitSynthExchange",
                        "signature": "emitSynthExchange(address account, bytes32 fromCurrencyKey, uint256 fromAmount, bytes32 toCurrencyKey, uint256 toAmount, address toAddress)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 38
                    },
                    {
                        "name": "emitExchangeReclaim",
                        "signature": "emitExchangeReclaim(address account, bytes32 currencyKey, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 47
                    },
                    {
                        "name": "emitExchangeRebate",
                        "signature": "emitExchangeRebate(address account, bytes32 currencyKey, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 53
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            },
            "IExchangerInternalDebtCache": {
                "functions": [
                    {
                        "name": "updateCachedSynthDebtsWithRates",
                        "signature": "updateCachedSynthDebtsWithRates(bytes32[] currencyKeys, uint256[] currencyRates)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 62
                    },
                    {
                        "name": "updateCachedSynthDebts",
                        "signature": "updateCachedSynthDebts(bytes32[] currencyKeys)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 64
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/interfaces/IExchangeState.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {
            "IExchangeState": {
                "functions": [
                    {
                        "name": "getLengthOfEntries",
                        "signature": "getLengthOfEntries(address account, bytes32 currencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 18
                    },
                    {
                        "name": "getEntryAt",
                        "signature": "getEntryAt(address account, bytes32 currencyKey, uint256 index)",
                        "returns": "(bytes32, uint256, bytes32, uint256, uint256, uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 20
                    },
                    {
                        "name": "getMaxTimestamp",
                        "signature": "getMaxTimestamp(address account, bytes32 currencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 38
                    },
                    {
                        "name": "appendExchangeEntry",
                        "signature": "appendExchangeEntry(address account, bytes32 src, uint256 amount, bytes32 dest, uint256 amountReceived, uint256 exchangeFeeRate, uint256 timestamp, uint256 roundIdForSrc, uint256 roundIdForDest)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 41
                    },
                    {
                        "name": "removeEntries",
                        "signature": "removeEntries(address account, bytes32 currencyKey)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 53
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [
                    {
                        "name": "ExchangeEntry",
                        "members": [
                            {
                                "name": "src",
                                "type": "bytes32"
                            },
                            {
                                "name": "amount",
                                "type": "uint256"
                            },
                            {
                                "name": "dest",
                                "type": "bytes32"
                            },
                            {
                                "name": "amountReceived",
                                "type": "uint256"
                            },
                            {
                                "name": "exchangeFeeRate",
                                "type": "uint256"
                            },
                            {
                                "name": "timestamp",
                                "type": "uint256"
                            },
                            {
                                "name": "roundIdForSrc",
                                "type": "uint256"
                            },
                            {
                                "name": "roundIdForDest",
                                "type": "uint256"
                            }
                        ],
                        "lineNumber": 7
                    }
                ],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/interfaces/ITradingRewards.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {
            "ITradingRewards": {
                "functions": [
                    {
                        "name": "getAvailableRewards",
                        "signature": "getAvailableRewards()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 8
                    },
                    {
                        "name": "getUnassignedRewards",
                        "signature": "getUnassignedRewards()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 10
                    },
                    {
                        "name": "getRewardsToken",
                        "signature": "getRewardsToken()",
                        "returns": "(address)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 12
                    },
                    {
                        "name": "getPeriodController",
                        "signature": "getPeriodController()",
                        "returns": "(address)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 14
                    },
                    {
                        "name": "getCurrentPeriod",
                        "signature": "getCurrentPeriod()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 16
                    },
                    {
                        "name": "getPeriodIsClaimable",
                        "signature": "getPeriodIsClaimable(uint256 periodID)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 18
                    },
                    {
                        "name": "getPeriodIsFinalized",
                        "signature": "getPeriodIsFinalized(uint256 periodID)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 20
                    },
                    {
                        "name": "getPeriodRecordedFees",
                        "signature": "getPeriodRecordedFees(uint256 periodID)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 22
                    },
                    {
                        "name": "getPeriodTotalRewards",
                        "signature": "getPeriodTotalRewards(uint256 periodID)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 24
                    },
                    {
                        "name": "getPeriodAvailableRewards",
                        "signature": "getPeriodAvailableRewards(uint256 periodID)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 26
                    },
                    {
                        "name": "getUnaccountedFeesForAccountForPeriod",
                        "signature": "getUnaccountedFeesForAccountForPeriod(address account, uint256 periodID)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 28
                    },
                    {
                        "name": "getAvailableRewardsForAccountForPeriod",
                        "signature": "getAvailableRewardsForAccountForPeriod(address account, uint256 periodID)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 30
                    },
                    {
                        "name": "getAvailableRewardsForAccountForPeriods",
                        "signature": "getAvailableRewardsForAccountForPeriods(address account, uint256[] periodIDs)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 32
                    },
                    {
                        "name": "claimRewardsForPeriod",
                        "signature": "claimRewardsForPeriod(uint256 periodID)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 39
                    },
                    {
                        "name": "claimRewardsForPeriods",
                        "signature": "claimRewardsForPeriods(uint256[] periodIDs)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 41
                    },
                    {
                        "name": "recordExchangeFeeForAccount",
                        "signature": "recordExchangeFeeForAccount(uint256 usdFeeAmount, address account)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 45
                    },
                    {
                        "name": "closeCurrentPeriodWithRewards",
                        "signature": "closeCurrentPeriodWithRewards(uint256 rewards)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 47
                    },
                    {
                        "name": "recoverTokens",
                        "signature": "recoverTokens(address tokenAddress, address recoverAddress)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 49
                    },
                    {
                        "name": "recoverUnassignedRewardTokens",
                        "signature": "recoverUnassignedRewardTokens(address recoverAddress)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 51
                    },
                    {
                        "name": "recoverAssignedRewardTokensAndDestroyPeriod",
                        "signature": "recoverAssignedRewardTokensAndDestroyPeriod(address recoverAddress, uint256 periodID)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 53
                    },
                    {
                        "name": "setPeriodController",
                        "signature": "setPeriodController(address newPeriodController)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 55
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "openzeppelin-solidity-2.3.0/contracts/token/ERC20/IERC20.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {
            "IERC20": {
                "functions": [
                    {
                        "name": "totalSupply",
                        "signature": "totalSupply()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 11
                    },
                    {
                        "name": "balanceOf",
                        "signature": "balanceOf(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 16
                    },
                    {
                        "name": "transfer",
                        "signature": "transfer(address recipient, uint256 amount)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 25
                    },
                    {
                        "name": "allowance",
                        "signature": "allowance(address owner, address spender)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 34
                    },
                    {
                        "name": "approve",
                        "signature": "approve(address spender, uint256 amount)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 50
                    },
                    {
                        "name": "transferFrom",
                        "signature": "transferFrom(address sender, address recipient, uint256 amount)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 61
                    }
                ],
                "events": [
                    {
                        "name": "Transfer",
                        "parameters": "(address from, address to, uint256 value)",
                        "lineNumber": 69
                    },
                    {
                        "name": "Approval",
                        "parameters": "(address owner, address spender, uint256 value)",
                        "lineNumber": 75
                    }
                ],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/ExchangeRates.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/MixinResolver.sol",
            "contracts/MixinSystemSettings.sol",
            "contracts/interfaces/IExchangeRates.sol",
            "contracts/SafeDecimalMath.sol",
            "@chainlink/contracts-0.0.10/src/v0.5/interfaces/AggregatorV2V3Interface.sol",
            "@chainlink/contracts-0.0.10/src/v0.5/interfaces/FlagsInterface.sol",
            "contracts/interfaces/IExchanger.sol"
        ],
        "contracts": {
            "ExchangeRates": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, address _oracle, address _resolver, bytes32[] _currencyKeys, uint256[] _newRates)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned",
                            "MixinSystemSettings"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 63,
                                "name": "require(..., Currency key length and rate length must match.)"
                            }
                        ],
                        "lineNumber": 56
                    },
                    {
                        "name": "setOracle",
                        "signature": "setOracle(address _oracle)",
                        "returns": "()",
                        "events": [
                            "OracleUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 75
                    },
                    {
                        "name": "updateRates",
                        "signature": "updateRates(bytes32[] currencyKeys, uint256[] newRates, uint256 timeSent)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [
                            "onlyOracle"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 82
                    },
                    {
                        "name": "deleteRate",
                        "signature": "deleteRate(bytes32 currencyKey)",
                        "returns": "()",
                        "events": [
                            "RateDeleted"
                        ],
                        "modifiers": [
                            "onlyOracle"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 91,
                                "name": "require(..., Rate is zero)"
                            }
                        ],
                        "lineNumber": 90
                    },
                    {
                        "name": "setInversePricing",
                        "signature": "setInversePricing(bytes32 currencyKey, uint256 entryPoint, uint256 upperLimit, uint256 lowerLimit, bool freezeAtUpperLimit, bool freezeAtLowerLimit)",
                        "returns": "()",
                        "events": [
                            "InversePriceConfigured"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 109,
                                "name": "require(..., lowerLimit must be above 0)"
                            },
                            {
                                "lineNumber": 110,
                                "name": "require(..., upperLimit must be above the entryPoint)"
                            },
                            {
                                "lineNumber": 111,
                                "name": "require(..., upperLimit must be less than double entryPoint)"
                            },
                            {
                                "lineNumber": 112,
                                "name": "require(..., lowerLimit must be below the entryPoint)"
                            },
                            {
                                "lineNumber": 114,
                                "name": "require(..., Cannot freeze at both limits)"
                            }
                        ],
                        "lineNumber": 100
                    },
                    {
                        "name": "removeInversePricing",
                        "signature": "removeInversePricing(bytes32 currencyKey)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 153,
                                "name": "require(..., No inverted price exists)"
                            }
                        ],
                        "lineNumber": 152
                    },
                    {
                        "name": "addAggregator",
                        "signature": "addAggregator(bytes32 currencyKey, address aggregatorAddress)",
                        "returns": "()",
                        "events": [
                            "AggregatorAdded"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 170,
                                "name": "require(..., Given Aggregator is invalid)"
                            },
                            {
                                "lineNumber": 172,
                                "name": "require(..., Aggregator decimals should be lower or equal to 18)"
                            }
                        ],
                        "lineNumber": 165
                    },
                    {
                        "name": "removeAggregator",
                        "signature": "removeAggregator(bytes32 currencyKey)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 183,
                                "name": "require(..., No aggregator exists for key)"
                            }
                        ],
                        "lineNumber": 181
                    },
                    {
                        "name": "freezeRate",
                        "signature": "freezeRate(bytes32 currencyKey)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 197,
                                "name": "require(..., Cannot freeze non-inverse rate)"
                            },
                            {
                                "lineNumber": 198,
                                "name": "require(..., The rate is already frozen)"
                            }
                        ],
                        "lineNumber": 195
                    },
                    {
                        "name": "resolverAddressesRequired",
                        "signature": "resolverAddressesRequired()",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 215
                    },
                    {
                        "name": "canFreezeRate",
                        "signature": "canFreezeRate(bytes32 currencyKey)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 223
                    },
                    {
                        "name": "currenciesUsingAggregator",
                        "signature": "currenciesUsingAggregator(address aggregator)",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 233
                    },
                    {
                        "name": "rateStalePeriod",
                        "signature": "rateStalePeriod()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 244
                    },
                    {
                        "name": "aggregatorWarningFlags",
                        "signature": "aggregatorWarningFlags()",
                        "returns": "(address)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 248
                    },
                    {
                        "name": "rateAndUpdatedTime",
                        "signature": "rateAndUpdatedTime(bytes32 currencyKey)",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 252
                    },
                    {
                        "name": "getLastRoundIdBeforeElapsedSecs",
                        "signature": "getLastRoundIdBeforeElapsedSecs(bytes32 currencyKey, uint256 startingRoundId, uint256 startingTimestamp, uint256 timediff)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 257
                    },
                    {
                        "name": "getCurrentRoundId",
                        "signature": "getCurrentRoundId(bytes32 currencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 276
                    },
                    {
                        "name": "effectiveValueAtRound",
                        "signature": "effectiveValueAtRound(bytes32 sourceCurrencyKey, uint256 sourceAmount, bytes32 destinationCurrencyKey, uint256 roundIdForSrc, uint256 roundIdForDest)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 280
                    },
                    {
                        "name": "rateAndTimestampAtRound",
                        "signature": "rateAndTimestampAtRound(bytes32 currencyKey, uint256 roundId)",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 301
                    },
                    {
                        "name": "lastRateUpdateTimes",
                        "signature": "lastRateUpdateTimes(bytes32 currencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 305
                    },
                    {
                        "name": "lastRateUpdateTimesForCurrencies",
                        "signature": "lastRateUpdateTimesForCurrencies(bytes32[] currencyKeys)",
                        "returns": "(uint256[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 309
                    },
                    {
                        "name": "effectiveValue",
                        "signature": "effectiveValue(bytes32 sourceCurrencyKey, uint256 sourceAmount, bytes32 destinationCurrencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 319
                    },
                    {
                        "name": "effectiveValueAndRates",
                        "signature": "effectiveValueAndRates(bytes32 sourceCurrencyKey, uint256 sourceAmount, bytes32 destinationCurrencyKey)",
                        "returns": "(uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 327
                    },
                    {
                        "name": "rateForCurrency",
                        "signature": "rateForCurrency(bytes32 currencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 343
                    },
                    {
                        "name": "ratesAndUpdatedTimeForCurrencyLastNRounds",
                        "signature": "ratesAndUpdatedTimeForCurrencyLastNRounds(bytes32 currencyKey, uint256 numRounds)",
                        "returns": "(uint256[], uint256[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 347
                    },
                    {
                        "name": "ratesForCurrencies",
                        "signature": "ratesForCurrencies(bytes32[] currencyKeys)",
                        "returns": "(uint256[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 370
                    },
                    {
                        "name": "rateAndInvalid",
                        "signature": "rateAndInvalid(bytes32 currencyKey)",
                        "returns": "(uint256, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 380
                    },
                    {
                        "name": "ratesAndInvalidForCurrencies",
                        "signature": "ratesAndInvalidForCurrencies(bytes32[] currencyKeys)",
                        "returns": "(uint256[], bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 393
                    },
                    {
                        "name": "rateIsStale",
                        "signature": "rateIsStale(bytes32 currencyKey)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 415
                    },
                    {
                        "name": "rateIsFrozen",
                        "signature": "rateIsFrozen(bytes32 currencyKey)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 419
                    },
                    {
                        "name": "rateIsInvalid",
                        "signature": "rateIsInvalid(bytes32 currencyKey)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 423
                    },
                    {
                        "name": "rateIsFlagged",
                        "signature": "rateIsFlagged(bytes32 currencyKey)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 429
                    },
                    {
                        "name": "anyRateIsInvalid",
                        "signature": "anyRateIsInvalid(bytes32[] currencyKeys)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 433
                    },
                    {
                        "name": "exchanger",
                        "signature": "exchanger()",
                        "returns": "(contract IExchanger)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 450
                    },
                    {
                        "name": "getFlagsForRates",
                        "signature": "getFlagsForRates(bytes32[] currencyKeys)",
                        "returns": "(bool[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 454
                    },
                    {
                        "name": "_setRate",
                        "signature": "_setRate(bytes32 currencyKey, uint256 rate, uint256 time)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 471
                    },
                    {
                        "name": "internalUpdateRates",
                        "signature": "internalUpdateRates(bytes32[] currencyKeys, uint256[] newRates, uint256 timeSent)",
                        "returns": "(bool)",
                        "events": [
                            "RatesUpdated"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 490,
                                "name": "require(..., Currency key array length must match rates array length.)"
                            },
                            {
                                "lineNumber": 491,
                                "name": "require(..., Time is too far into the future)"
                            }
                        ],
                        "lineNumber": 485
                    },
                    {
                        "name": "removeFromArray",
                        "signature": "removeFromArray(bytes32 entry, bytes32[] array)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 517
                    },
                    {
                        "name": "_rateOrInverted",
                        "signature": "_rateOrInverted(bytes32 currencyKey, uint256 rate, uint256 roundId)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 536
                    },
                    {
                        "name": "_formatAggregatorAnswer",
                        "signature": "_formatAggregatorAnswer(bytes32 currencyKey, int256 rate)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 582,
                                "name": "require(..., Negative rate not supported)"
                            }
                        ],
                        "lineNumber": 581
                    },
                    {
                        "name": "_getRateAndUpdatedTime",
                        "signature": "_getRateAndUpdatedTime(bytes32 currencyKey)",
                        "returns": "(struct IExchangeRates.RateAndUpdatedTime)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 590
                    },
                    {
                        "name": "_getCurrentRoundId",
                        "signature": "_getCurrentRoundId(bytes32 currencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 619
                    },
                    {
                        "name": "_getRateAndTimestampAtRound",
                        "signature": "_getRateAndTimestampAtRound(bytes32 currencyKey, uint256 roundId)",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 629
                    },
                    {
                        "name": "_getRate",
                        "signature": "_getRate(bytes32 currencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 652
                    },
                    {
                        "name": "_getUpdatedTime",
                        "signature": "_getUpdatedTime(bytes32 currencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 656
                    },
                    {
                        "name": "_effectiveValueAndRates",
                        "signature": "_effectiveValueAndRates(bytes32 sourceCurrencyKey, uint256 sourceAmount, bytes32 destinationCurrencyKey)",
                        "returns": "(uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 660
                    },
                    {
                        "name": "_rateIsStale",
                        "signature": "_rateIsStale(bytes32 currencyKey, uint256 _rateStalePeriod)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 688
                    },
                    {
                        "name": "_rateIsStaleWithTime",
                        "signature": "_rateIsStaleWithTime(uint256 _rateStalePeriod, uint256 _time)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 695
                    },
                    {
                        "name": "_rateIsFrozen",
                        "signature": "_rateIsFrozen(bytes32 currencyKey)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 699
                    },
                    {
                        "name": "_rateIsFlagged",
                        "signature": "_rateIsFlagged(bytes32 currencyKey, contract FlagsInterface flags)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 704
                    },
                    {
                        "name": "_onlyOracle",
                        "signature": "_onlyOracle()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 723,
                                "name": "require(..., Only the oracle can perform this action)"
                            }
                        ],
                        "lineNumber": 722
                    }
                ],
                "events": [
                    {
                        "name": "OracleUpdated",
                        "parameters": "(address newOracle)",
                        "lineNumber": 728
                    },
                    {
                        "name": "RatesUpdated",
                        "parameters": "(bytes32[] currencyKeys, uint256[] newRates)",
                        "lineNumber": 729
                    },
                    {
                        "name": "RateDeleted",
                        "parameters": "(bytes32 currencyKey)",
                        "lineNumber": 730
                    },
                    {
                        "name": "InversePriceConfigured",
                        "parameters": "(bytes32 currencyKey, uint256 entryPoint, uint256 upperLimit, uint256 lowerLimit)",
                        "lineNumber": 731
                    },
                    {
                        "name": "InversePriceFrozen",
                        "parameters": "(bytes32 currencyKey, uint256 rate, uint256 roundId, address initiator)",
                        "lineNumber": 732
                    },
                    {
                        "name": "AggregatorAdded",
                        "parameters": "(bytes32 currencyKey, address aggregator)",
                        "lineNumber": 733
                    },
                    {
                        "name": "AggregatorRemoved",
                        "parameters": "(bytes32 currencyKey, address aggregator)",
                        "lineNumber": 734
                    }
                ],
                "variables": [
                    {
                        "name": "_rates",
                        "constant": false,
                        "type": "mapping(bytes32 => mapping(uint256 => struct IExchangeRates.RateAndUpdatedTime))",
                        "lineNumber": 26,
                        "visibility": "private"
                    },
                    {
                        "name": "oracle",
                        "constant": false,
                        "type": "address",
                        "lineNumber": 29,
                        "visibility": "public"
                    },
                    {
                        "name": "aggregators",
                        "constant": false,
                        "type": "mapping(bytes32 => contract AggregatorV2V3Interface)",
                        "lineNumber": 32,
                        "visibility": "public"
                    },
                    {
                        "name": "currencyKeyDecimals",
                        "constant": false,
                        "type": "mapping(bytes32 => uint8)",
                        "lineNumber": 34,
                        "visibility": "public"
                    },
                    {
                        "name": "aggregatorKeys",
                        "constant": false,
                        "type": "bytes32[]",
                        "lineNumber": 37,
                        "visibility": "public"
                    },
                    {
                        "name": "ORACLE_FUTURE_LIMIT",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 40,
                        "visibility": "private"
                    },
                    {
                        "name": "inversePricing",
                        "constant": false,
                        "type": "mapping(bytes32 => struct IExchangeRates.InversePricing)",
                        "lineNumber": 42,
                        "visibility": "public"
                    },
                    {
                        "name": "invertedKeys",
                        "constant": false,
                        "type": "bytes32[]",
                        "lineNumber": 44,
                        "visibility": "public"
                    },
                    {
                        "name": "currentRoundForRate",
                        "constant": false,
                        "type": "mapping(bytes32 => uint256)",
                        "lineNumber": 46,
                        "visibility": "public"
                    },
                    {
                        "name": "roundFrozen",
                        "constant": false,
                        "type": "mapping(bytes32 => uint256)",
                        "lineNumber": 48,
                        "visibility": "public"
                    },
                    {
                        "name": "CONTRACT_EXCHANGER",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 51,
                        "visibility": "private"
                    }
                ],
                "modifiers": [
                    {
                        "name": "onlyOracle",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 717
                    }
                ],
                "structs": [],
                "inherits": [
                    "Owned",
                    "MixinSystemSettings",
                    "IExchangeRates"
                ],
                "libraries": [
                    {
                        "name": "SafeMath",
                        "type": "uint"
                    },
                    {
                        "name": "SafeDecimalMath",
                        "type": "uint"
                    }
                ]
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "@chainlink/contracts-0.0.10/src/v0.5/interfaces/AggregatorV2V3Interface.sol": {
        "imports": [
            "@chainlink/contracts-0.0.10/src/v0.5/interfaces/AggregatorInterface.sol",
            "@chainlink/contracts-0.0.10/src/v0.5/interfaces/AggregatorV3Interface.sol"
        ],
        "contracts": {},
        "interfaces": {
            "AggregatorV2V3Interface": {
                "functions": [
                    {
                        "name": "latestAnswer",
                        "signature": "latestAnswer()",
                        "returns": "(int256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 16
                    },
                    {
                        "name": "latestTimestamp",
                        "signature": "latestTimestamp()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 17
                    },
                    {
                        "name": "latestRound",
                        "signature": "latestRound()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 18
                    },
                    {
                        "name": "getAnswer",
                        "signature": "getAnswer(uint256 roundId)",
                        "returns": "(int256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 19
                    },
                    {
                        "name": "getTimestamp",
                        "signature": "getTimestamp(uint256 roundId)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 20
                    },
                    {
                        "name": "decimals",
                        "signature": "decimals()",
                        "returns": "(uint8)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 28
                    },
                    {
                        "name": "description",
                        "signature": "description()",
                        "returns": "(string)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 29
                    },
                    {
                        "name": "version",
                        "signature": "version()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 30
                    },
                    {
                        "name": "getRoundData",
                        "signature": "getRoundData(uint80 _roundId)",
                        "returns": "(uint80, int256, uint256, uint256, uint80)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 35
                    },
                    {
                        "name": "latestRoundData",
                        "signature": "latestRoundData()",
                        "returns": "(uint80, int256, uint256, uint256, uint80)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 45
                    }
                ],
                "events": [
                    {
                        "name": "AnswerUpdated",
                        "parameters": "(int256 current, uint256 roundId, uint256 timestamp)",
                        "lineNumber": 22
                    },
                    {
                        "name": "NewRound",
                        "parameters": "(uint256 roundId, address startedBy, uint256 startedAt)",
                        "lineNumber": 23
                    }
                ],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "@chainlink/contracts-0.0.10/src/v0.5/interfaces/AggregatorInterface.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {
            "AggregatorInterface": {
                "functions": [
                    {
                        "name": "latestAnswer",
                        "signature": "latestAnswer()",
                        "returns": "(int256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 4
                    },
                    {
                        "name": "latestTimestamp",
                        "signature": "latestTimestamp()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 5
                    },
                    {
                        "name": "latestRound",
                        "signature": "latestRound()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 6
                    },
                    {
                        "name": "getAnswer",
                        "signature": "getAnswer(uint256 roundId)",
                        "returns": "(int256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 7
                    },
                    {
                        "name": "getTimestamp",
                        "signature": "getTimestamp(uint256 roundId)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 8
                    }
                ],
                "events": [
                    {
                        "name": "AnswerUpdated",
                        "parameters": "(int256 current, uint256 roundId, uint256 timestamp)",
                        "lineNumber": 10
                    },
                    {
                        "name": "NewRound",
                        "parameters": "(uint256 roundId, address startedBy, uint256 startedAt)",
                        "lineNumber": 11
                    }
                ],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "@chainlink/contracts-0.0.10/src/v0.5/interfaces/AggregatorV3Interface.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {
            "AggregatorV3Interface": {
                "functions": [
                    {
                        "name": "decimals",
                        "signature": "decimals()",
                        "returns": "(uint8)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 5
                    },
                    {
                        "name": "description",
                        "signature": "description()",
                        "returns": "(string)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 6
                    },
                    {
                        "name": "version",
                        "signature": "version()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 7
                    },
                    {
                        "name": "getRoundData",
                        "signature": "getRoundData(uint80 _roundId)",
                        "returns": "(uint80, int256, uint256, uint256, uint80)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 12
                    },
                    {
                        "name": "latestRoundData",
                        "signature": "latestRoundData()",
                        "returns": "(uint80, int256, uint256, uint256, uint80)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 22
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "@chainlink/contracts-0.0.10/src/v0.5/interfaces/FlagsInterface.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {
            "FlagsInterface": {
                "functions": [
                    {
                        "name": "getFlag",
                        "signature": "getFlag(address )",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 4
                    },
                    {
                        "name": "getFlags",
                        "signature": "getFlags(address[] )",
                        "returns": "(bool[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 5
                    },
                    {
                        "name": "raiseFlag",
                        "signature": "raiseFlag(address )",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 6
                    },
                    {
                        "name": "raiseFlags",
                        "signature": "raiseFlags(address[] )",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 7
                    },
                    {
                        "name": "lowerFlags",
                        "signature": "lowerFlags(address[] )",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 8
                    },
                    {
                        "name": "setRaisingAccessController",
                        "signature": "setRaisingAccessController(address )",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 9
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/ExchangeRatesWithoutInvPricing.sol": {
        "imports": [
            "contracts/ExchangeRates.sol"
        ],
        "contracts": {
            "ExchangeRatesWithoutInvPricing": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, address _oracle, address _resolver, bytes32[] _currencyKeys, uint256[] _newRates)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "ExchangeRates"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 9
                    },
                    {
                        "name": "setInversePricing",
                        "signature": "setInversePricing(bytes32 , uint256 , uint256 , uint256 , bool , bool )",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 17
                    },
                    {
                        "name": "removeInversePricing",
                        "signature": "removeInversePricing(bytes32 )",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 28
                    },
                    {
                        "name": "freezeRate",
                        "signature": "freezeRate(bytes32 )",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 32
                    },
                    {
                        "name": "canFreezeRate",
                        "signature": "canFreezeRate(bytes32 )",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 36
                    },
                    {
                        "name": "rateIsFrozen",
                        "signature": "rateIsFrozen(bytes32 )",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 40
                    },
                    {
                        "name": "_rateIsFrozen",
                        "signature": "_rateIsFrozen(bytes32 )",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 44
                    },
                    {
                        "name": "_notImplemented",
                        "signature": "_notImplemented()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "pure",
                        "requires": [],
                        "lineNumber": 48
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [
                    "ExchangeRates"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/ExchangerWithVirtualSynth.sol": {
        "imports": [
            "contracts/Exchanger.sol",
            "contracts/interfaces/IVirtualSynth.sol",
            "contracts/VirtualSynth.sol"
        ],
        "contracts": {
            "ExchangerWithVirtualSynth": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, address _resolver)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Exchanger"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 13
                    },
                    {
                        "name": "_createVirtualSynth",
                        "signature": "_createVirtualSynth(contract IERC20 synth, address recipient, uint256 amount, bytes32 currencyKey)",
                        "returns": "(contract IVirtualSynth)",
                        "events": [
                            "VirtualSynthCreated"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 22,
                                "name": "require(..., Cannot virtualize this synth)"
                            }
                        ],
                        "lineNumber": 15
                    }
                ],
                "events": [
                    {
                        "name": "VirtualSynthCreated",
                        "parameters": "(address synth, address recipient, address vSynth, bytes32 currencyKey, uint256 amount)",
                        "lineNumber": 28
                    }
                ],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [
                    "Exchanger"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/VirtualSynth.sol": {
        "imports": [
            "openzeppelin-solidity-2.3.0/contracts/token/ERC20/ERC20.sol",
            "contracts/SafeDecimalMath.sol",
            "contracts/interfaces/ISynth.sol",
            "contracts/interfaces/IAddressResolver.sol",
            "contracts/interfaces/IVirtualSynth.sol",
            "contracts/interfaces/IExchanger.sol",
            "openzeppelin-solidity-2.3.0/contracts/token/ERC20/IERC20.sol"
        ],
        "contracts": {
            "VirtualSynth": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(contract IERC20 _synth, contract IAddressResolver _resolver, address _recipient, uint256 _amount, bytes32 _currencyKey)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "ERC20"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 39
                    },
                    {
                        "name": "exchanger",
                        "signature": "exchanger()",
                        "returns": "(contract IExchanger)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 59
                    },
                    {
                        "name": "secsLeft",
                        "signature": "secsLeft()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 63
                    },
                    {
                        "name": "calcRate",
                        "signature": "calcRate()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 67
                    },
                    {
                        "name": "balanceUnderlying",
                        "signature": "balanceUnderlying(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 90
                    },
                    {
                        "name": "settleSynth",
                        "signature": "settleSynth()",
                        "returns": "()",
                        "events": [
                            "Settled"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 96
                    },
                    {
                        "name": "name",
                        "signature": "name()",
                        "returns": "(string)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 111
                    },
                    {
                        "name": "symbol",
                        "signature": "symbol()",
                        "returns": "(string)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 115
                    },
                    {
                        "name": "rate",
                        "signature": "rate()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 120
                    },
                    {
                        "name": "balanceOfUnderlying",
                        "signature": "balanceOfUnderlying(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 126
                    },
                    {
                        "name": "secsLeftInWaitingPeriod",
                        "signature": "secsLeftInWaitingPeriod()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 130
                    },
                    {
                        "name": "readyToSettle",
                        "signature": "readyToSettle()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 134
                    },
                    {
                        "name": "settle",
                        "signature": "settle(address account)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 142
                    }
                ],
                "events": [
                    {
                        "name": "Settled",
                        "parameters": "(uint256 totalSupply, uint256 amountAfterSettled)",
                        "lineNumber": 150
                    }
                ],
                "variables": [
                    {
                        "name": "synth",
                        "constant": false,
                        "type": "contract IERC20",
                        "lineNumber": 24,
                        "visibility": "public"
                    },
                    {
                        "name": "resolver",
                        "constant": false,
                        "type": "contract IAddressResolver",
                        "lineNumber": 25,
                        "visibility": "public"
                    },
                    {
                        "name": "settled",
                        "constant": false,
                        "type": "bool",
                        "lineNumber": 27,
                        "visibility": "public"
                    },
                    {
                        "name": "decimals",
                        "constant": true,
                        "type": "uint8",
                        "lineNumber": 29,
                        "visibility": "public"
                    },
                    {
                        "name": "initialSupply",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 32,
                        "visibility": "public"
                    },
                    {
                        "name": "settledAmount",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 35,
                        "visibility": "public"
                    },
                    {
                        "name": "currencyKey",
                        "constant": false,
                        "type": "bytes32",
                        "lineNumber": 37,
                        "visibility": "public"
                    }
                ],
                "modifiers": [],
                "structs": [],
                "inherits": [
                    "ERC20",
                    "IVirtualSynth"
                ],
                "libraries": [
                    {
                        "name": "SafeMath",
                        "type": "uint"
                    },
                    {
                        "name": "SafeDecimalMath",
                        "type": "uint"
                    }
                ]
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "openzeppelin-solidity-2.3.0/contracts/token/ERC20/ERC20.sol": {
        "imports": [
            "openzeppelin-solidity-2.3.0/contracts/token/ERC20/IERC20.sol",
            "openzeppelin-solidity-2.3.0/contracts/math/SafeMath.sol"
        ],
        "contracts": {
            "ERC20": {
                "functions": [
                    {
                        "name": "totalSupply",
                        "signature": "totalSupply()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 41
                    },
                    {
                        "name": "balanceOf",
                        "signature": "balanceOf(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 48
                    },
                    {
                        "name": "transfer",
                        "signature": "transfer(address recipient, uint256 amount)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 60
                    },
                    {
                        "name": "allowance",
                        "signature": "allowance(address owner, address spender)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 68
                    },
                    {
                        "name": "approve",
                        "signature": "approve(address spender, uint256 value)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 79
                    },
                    {
                        "name": "transferFrom",
                        "signature": "transferFrom(address sender, address recipient, uint256 amount)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 96
                    },
                    {
                        "name": "increaseAllowance",
                        "signature": "increaseAllowance(address spender, uint256 addedValue)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 114
                    },
                    {
                        "name": "decreaseAllowance",
                        "signature": "decreaseAllowance(address spender, uint256 subtractedValue)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 133
                    },
                    {
                        "name": "_transfer",
                        "signature": "_transfer(address sender, address recipient, uint256 amount)",
                        "returns": "()",
                        "events": [
                            "Transfer"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 153,
                                "name": "require(..., ERC20: transfer from the zero address)"
                            },
                            {
                                "lineNumber": 154,
                                "name": "require(..., ERC20: transfer to the zero address)"
                            }
                        ],
                        "lineNumber": 152
                    },
                    {
                        "name": "_mint",
                        "signature": "_mint(address account, uint256 amount)",
                        "returns": "()",
                        "events": [
                            "Transfer"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 171,
                                "name": "require(..., ERC20: mint to the zero address)"
                            }
                        ],
                        "lineNumber": 170
                    },
                    {
                        "name": "_burn",
                        "signature": "_burn(address account, uint256 value)",
                        "returns": "()",
                        "events": [
                            "Transfer"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 190,
                                "name": "require(..., ERC20: burn from the zero address)"
                            }
                        ],
                        "lineNumber": 189
                    },
                    {
                        "name": "_approve",
                        "signature": "_approve(address owner, address spender, uint256 value)",
                        "returns": "()",
                        "events": [
                            "Approval"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 211,
                                "name": "require(..., ERC20: approve from the zero address)"
                            },
                            {
                                "lineNumber": 212,
                                "name": "require(..., ERC20: approve to the zero address)"
                            }
                        ],
                        "lineNumber": 210
                    },
                    {
                        "name": "_burnFrom",
                        "signature": "_burnFrom(address account, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 224
                    }
                ],
                "events": [],
                "variables": [
                    {
                        "name": "_balances",
                        "constant": false,
                        "type": "mapping(address => uint256)",
                        "lineNumber": 32,
                        "visibility": "private"
                    },
                    {
                        "name": "_allowances",
                        "constant": false,
                        "type": "mapping(address => mapping(address => uint256))",
                        "lineNumber": 34,
                        "visibility": "private"
                    },
                    {
                        "name": "_totalSupply",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 36,
                        "visibility": "private"
                    }
                ],
                "modifiers": [],
                "structs": [],
                "inherits": [
                    "IERC20"
                ],
                "libraries": [
                    {
                        "name": "SafeMath",
                        "type": "uint256"
                    }
                ]
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/ExchangeState.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/State.sol",
            "contracts/interfaces/IExchangeState.sol"
        ],
        "contracts": {
            "ExchangeState": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, address _associatedContract)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned",
                            "State"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 15
                    },
                    {
                        "name": "setMaxEntriesInQueue",
                        "signature": "setMaxEntriesInQueue(uint256 _maxEntriesInQueue)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 19
                    },
                    {
                        "name": "appendExchangeEntry",
                        "signature": "appendExchangeEntry(address account, bytes32 src, uint256 amount, bytes32 dest, uint256 amountReceived, uint256 exchangeFeeRate, uint256 timestamp, uint256 roundIdForSrc, uint256 roundIdForDest)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 36,
                                "name": "require(..., Max queue length reached)"
                            }
                        ],
                        "lineNumber": 25
                    },
                    {
                        "name": "removeEntries",
                        "signature": "removeEntries(address account, bytes32 currencyKey)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 52
                    },
                    {
                        "name": "getLengthOfEntries",
                        "signature": "getLengthOfEntries(address account, bytes32 currencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 58
                    },
                    {
                        "name": "getEntryAt",
                        "signature": "getEntryAt(address account, bytes32 currencyKey, uint256 index)",
                        "returns": "(bytes32, uint256, bytes32, uint256, uint256, uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 62
                    },
                    {
                        "name": "getMaxTimestamp",
                        "signature": "getMaxTimestamp(address account, bytes32 currencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 93
                    }
                ],
                "events": [],
                "variables": [
                    {
                        "name": "exchanges",
                        "constant": false,
                        "type": "mapping(address => mapping(bytes32 => struct IExchangeState.ExchangeEntry[]))",
                        "lineNumber": 11,
                        "visibility": "public"
                    },
                    {
                        "name": "maxEntriesInQueue",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 13,
                        "visibility": "public"
                    }
                ],
                "modifiers": [],
                "structs": [],
                "inherits": [
                    "Owned",
                    "State",
                    "IExchangeState"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/FeePool.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/Proxyable.sol",
            "contracts/LimitedSetup.sol",
            "contracts/MixinResolver.sol",
            "contracts/MixinSystemSettings.sol",
            "contracts/interfaces/IFeePool.sol",
            "contracts/SafeDecimalMath.sol",
            "contracts/interfaces/IERC20.sol",
            "contracts/interfaces/ISynth.sol",
            "contracts/interfaces/ISystemStatus.sol",
            "contracts/interfaces/ISynthetix.sol",
            "contracts/FeePoolState.sol",
            "contracts/FeePoolEternalStorage.sol",
            "contracts/interfaces/IExchanger.sol",
            "contracts/interfaces/IIssuer.sol",
            "contracts/interfaces/ISynthetixState.sol",
            "contracts/interfaces/IRewardEscrowV2.sol",
            "contracts/interfaces/IDelegateApprovals.sol",
            "contracts/interfaces/IRewardsDistribution.sol",
            "contracts/interfaces/IEtherCollateralsUSD.sol",
            "contracts/interfaces/ICollateralManager.sol"
        ],
        "contracts": {
            "FeePool": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address payable _proxy, address _owner, address _resolver)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned",
                            "Proxyable",
                            "LimitedSetup",
                            "MixinSystemSettings"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 82
                    },
                    {
                        "name": "resolverAddressesRequired",
                        "signature": "resolverAddressesRequired()",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 93
                    },
                    {
                        "name": "systemStatus",
                        "signature": "systemStatus()",
                        "returns": "(contract ISystemStatus)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 111
                    },
                    {
                        "name": "synthetix",
                        "signature": "synthetix()",
                        "returns": "(contract ISynthetix)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 115
                    },
                    {
                        "name": "feePoolState",
                        "signature": "feePoolState()",
                        "returns": "(contract FeePoolState)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 119
                    },
                    {
                        "name": "feePoolEternalStorage",
                        "signature": "feePoolEternalStorage()",
                        "returns": "(contract FeePoolEternalStorage)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 123
                    },
                    {
                        "name": "exchanger",
                        "signature": "exchanger()",
                        "returns": "(contract IExchanger)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 127
                    },
                    {
                        "name": "etherCollateralsUSD",
                        "signature": "etherCollateralsUSD()",
                        "returns": "(contract IEtherCollateralsUSD)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 131
                    },
                    {
                        "name": "collateralManager",
                        "signature": "collateralManager()",
                        "returns": "(contract ICollateralManager)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 135
                    },
                    {
                        "name": "issuer",
                        "signature": "issuer()",
                        "returns": "(contract IIssuer)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 139
                    },
                    {
                        "name": "synthetixState",
                        "signature": "synthetixState()",
                        "returns": "(contract ISynthetixState)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 143
                    },
                    {
                        "name": "rewardEscrowV2",
                        "signature": "rewardEscrowV2()",
                        "returns": "(contract IRewardEscrowV2)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 147
                    },
                    {
                        "name": "delegateApprovals",
                        "signature": "delegateApprovals()",
                        "returns": "(contract IDelegateApprovals)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 151
                    },
                    {
                        "name": "rewardsDistribution",
                        "signature": "rewardsDistribution()",
                        "returns": "(contract IRewardsDistribution)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 155
                    },
                    {
                        "name": "issuanceRatio",
                        "signature": "issuanceRatio()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 159
                    },
                    {
                        "name": "feePeriodDuration",
                        "signature": "feePeriodDuration()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 163
                    },
                    {
                        "name": "targetThreshold",
                        "signature": "targetThreshold()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 167
                    },
                    {
                        "name": "recentFeePeriods",
                        "signature": "recentFeePeriods(uint256 index)",
                        "returns": "(uint64, uint64, uint64, uint256, uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 171
                    },
                    {
                        "name": "_recentFeePeriodsStorage",
                        "signature": "_recentFeePeriodsStorage(uint256 index)",
                        "returns": "(struct FeePool.FeePeriod)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 196
                    },
                    {
                        "name": "appendAccountIssuanceRecord",
                        "signature": "appendAccountIssuanceRecord(address account, uint256 debtRatio, uint256 debtEntryIndex)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyIssuerAndSynthetixState"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 210
                    },
                    {
                        "name": "recordFeePaid",
                        "signature": "recordFeePaid(uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyInternalContracts"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 229
                    },
                    {
                        "name": "setRewardsToDistribute",
                        "signature": "setRewardsToDistribute(uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 239,
                                "name": "require(..., Caller is not rewardsAuthority)"
                            }
                        ],
                        "lineNumber": 237
                    },
                    {
                        "name": "closeCurrentFeePeriod",
                        "signature": "closeCurrentFeePeriod()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "issuanceActive"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 248,
                                "name": "require(..., Fee Period Duration not set)"
                            },
                            {
                                "lineNumber": 249,
                                "name": "require(..., Too early to close fee period)"
                            }
                        ],
                        "lineNumber": 247
                    },
                    {
                        "name": "claimFees",
                        "signature": "claimFees()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [
                            "issuanceActive",
                            "optionalProxy"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 287
                    },
                    {
                        "name": "claimOnBehalf",
                        "signature": "claimOnBehalf(address claimingForAddress)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [
                            "issuanceActive",
                            "optionalProxy"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 298,
                                "name": "require(..., Not approved to claim on behalf)"
                            }
                        ],
                        "lineNumber": 297
                    },
                    {
                        "name": "_claimFees",
                        "signature": "_claimFees(address claimingAddress)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 313,
                                "name": "require(..., C-Ratio below penalty threshold)"
                            },
                            {
                                "lineNumber": 315,
                                "name": "require(..., A synth or SNX rate is invalid)"
                            },
                            {
                                "lineNumber": 320,
                                "name": "require(..., No fees or rewards available for period, or fees already claimed)"
                            }
                        ],
                        "lineNumber": 303
                    },
                    {
                        "name": "importFeePeriod",
                        "signature": "importFeePeriod(uint256 feePeriodIndex, uint256 feePeriodId, uint256 startingDebtIndex, uint256 startTime, uint256 feesToDistribute, uint256 feesClaimed, uint256 rewardsToDistribute, uint256 rewardsClaimed)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "optionalProxy_onlyOwner",
                            "onlyDuringSetup"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 362,
                                "name": "require(..., Cannot import bad data)"
                            }
                        ],
                        "lineNumber": 352
                    },
                    {
                        "name": "_recordFeePayment",
                        "signature": "_recordFeePayment(uint256 sUSDAmount)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 379
                    },
                    {
                        "name": "_recordRewardPayment",
                        "signature": "_recordRewardPayment(uint256 snxAmount)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 417
                    },
                    {
                        "name": "_payFees",
                        "signature": "_payFees(address account, uint256 sUSDAmount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "notFeeAddress"
                        ],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 458
                    },
                    {
                        "name": "_payRewards",
                        "signature": "_payRewards(address account, uint256 snxAmount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "notFeeAddress"
                        ],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 478
                    },
                    {
                        "name": "totalFeesAvailable",
                        "signature": "totalFeesAvailable()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 490
                    },
                    {
                        "name": "totalRewardsAvailable",
                        "signature": "totalRewardsAvailable()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 505
                    },
                    {
                        "name": "feesAvailable",
                        "signature": "feesAvailable(address account)",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 521
                    },
                    {
                        "name": "_isFeesClaimableAndAnyRatesInvalid",
                        "signature": "_isFeesClaimableAndAnyRatesInvalid(address account)",
                        "returns": "(bool, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 539
                    },
                    {
                        "name": "isFeesClaimable",
                        "signature": "isFeesClaimable(address account)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 562
                    },
                    {
                        "name": "feesByPeriod",
                        "signature": "feesByPeriod(address account)",
                        "returns": "(uint256[2][2])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 570
                    },
                    {
                        "name": "_feesAndRewardsFromPeriod",
                        "signature": "_feesAndRewardsFromPeriod(uint256 period, uint256 ownershipPercentage, uint256 debtEntryIndex)",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 632
                    },
                    {
                        "name": "_effectiveDebtRatioForPeriod",
                        "signature": "_effectiveDebtRatioForPeriod(uint256 closingDebtIndex, uint256 ownershipPercentage, uint256 debtEntryIndex)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 659
                    },
                    {
                        "name": "effectiveDebtRatioForPeriod",
                        "signature": "effectiveDebtRatioForPeriod(address account, uint256 period)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 676,
                                "name": "require(..., Current period is not closed yet)"
                            },
                            {
                                "lineNumber": 677,
                                "name": "require(..., Exceeds the FEE_PERIOD_LENGTH)"
                            }
                        ],
                        "lineNumber": 675
                    },
                    {
                        "name": "getLastFeeWithdrawal",
                        "signature": "getLastFeeWithdrawal(address _claimingAddress)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 697
                    },
                    {
                        "name": "getPenaltyThresholdRatio",
                        "signature": "getPenaltyThresholdRatio()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 704
                    },
                    {
                        "name": "_setLastFeeWithdrawal",
                        "signature": "_setLastFeeWithdrawal(address _claimingAddress, uint256 _feePeriodID)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 713
                    },
                    {
                        "name": "emitIssuanceDebtRatioEntry",
                        "signature": "emitIssuanceDebtRatioEntry(address account, uint256 debtRatio, uint256 debtEntryIndex, uint256 feePeriodStartingDebtIndex)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 760
                    },
                    {
                        "name": "emitFeePeriodClosed",
                        "signature": "emitFeePeriodClosed(uint256 feePeriodId)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 779
                    },
                    {
                        "name": "emitFeesClaimed",
                        "signature": "emitFeesClaimed(address account, uint256 sUSDAmount, uint256 snxRewards)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 786
                    }
                ],
                "events": [
                    {
                        "name": "IssuanceDebtRatioEntry",
                        "parameters": "(address account, uint256 debtRatio, uint256 debtEntryIndex, uint256 feePeriodStartingDebtIndex)",
                        "lineNumber": 750
                    },
                    {
                        "name": "FeePeriodClosed",
                        "parameters": "(uint256 feePeriodId)",
                        "lineNumber": 776
                    },
                    {
                        "name": "FeesClaimed",
                        "parameters": "(address account, uint256 sUSDAmount, uint256 snxRewards)",
                        "lineNumber": 783
                    }
                ],
                "variables": [
                    {
                        "name": "FEE_ADDRESS",
                        "constant": true,
                        "type": "address",
                        "lineNumber": 37,
                        "visibility": "public"
                    },
                    {
                        "name": "sUSD",
                        "constant": false,
                        "type": "bytes32",
                        "lineNumber": 40,
                        "visibility": "private"
                    },
                    {
                        "name": "FEE_PERIOD_LENGTH",
                        "constant": true,
                        "type": "uint8",
                        "lineNumber": 58,
                        "visibility": "public"
                    },
                    {
                        "name": "_recentFeePeriods",
                        "constant": false,
                        "type": "struct FeePool.FeePeriod[2]",
                        "lineNumber": 60,
                        "visibility": "private"
                    },
                    {
                        "name": "_currentFeePeriod",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 61,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_SYSTEMSTATUS",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 65,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_SYNTHETIX",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 66,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_FEEPOOLSTATE",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 67,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_FEEPOOLETERNALSTORAGE",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 68,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_EXCHANGER",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 69,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_ISSUER",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 70,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_SYNTHETIXSTATE",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 71,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_REWARDESCROW_V2",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 72,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_DELEGATEAPPROVALS",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 73,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_ETH_COLLATERAL_SUSD",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 74,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_COLLATERALMANAGER",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 75,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_REWARDSDISTRIBUTION",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 76,
                        "visibility": "private"
                    },
                    {
                        "name": "LAST_FEE_WITHDRAWAL",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 80,
                        "visibility": "private"
                    },
                    {
                        "name": "ISSUANCEDEBTRATIOENTRY_SIG",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 756,
                        "visibility": "private"
                    },
                    {
                        "name": "FEEPERIODCLOSED_SIG",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 777,
                        "visibility": "private"
                    },
                    {
                        "name": "FEESCLAIMED_SIG",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 784,
                        "visibility": "private"
                    }
                ],
                "modifiers": [
                    {
                        "name": "onlyInternalContracts",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 721
                    },
                    {
                        "name": "onlyIssuerAndSynthetixState",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 731
                    },
                    {
                        "name": "notFeeAddress",
                        "parameters": "(address account)",
                        "visibility": "internal",
                        "lineNumber": 738
                    },
                    {
                        "name": "issuanceActive",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 743
                    }
                ],
                "structs": [
                    {
                        "name": "FeePeriod",
                        "members": [
                            {
                                "name": "feePeriodId",
                                "type": "uint64"
                            },
                            {
                                "name": "startingDebtIndex",
                                "type": "uint64"
                            },
                            {
                                "name": "startTime",
                                "type": "uint64"
                            },
                            {
                                "name": "feesToDistribute",
                                "type": "uint256"
                            },
                            {
                                "name": "feesClaimed",
                                "type": "uint256"
                            },
                            {
                                "name": "rewardsToDistribute",
                                "type": "uint256"
                            },
                            {
                                "name": "rewardsClaimed",
                                "type": "uint256"
                            }
                        ],
                        "lineNumber": 43
                    }
                ],
                "inherits": [
                    "Owned",
                    "Proxyable",
                    "LimitedSetup",
                    "MixinSystemSettings",
                    "IFeePool"
                ],
                "libraries": [
                    {
                        "name": "SafeMath",
                        "type": "uint"
                    },
                    {
                        "name": "SafeDecimalMath",
                        "type": "uint"
                    }
                ]
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/FeePoolState.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/LimitedSetup.sol",
            "contracts/SafeDecimalMath.sol",
            "contracts/interfaces/IFeePool.sol"
        ],
        "contracts": {
            "FeePoolState": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, contract IFeePool _feePool)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned",
                            "LimitedSetup"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 34
                    },
                    {
                        "name": "setFeePool",
                        "signature": "setFeePool(contract IFeePool _feePool)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 45
                    },
                    {
                        "name": "getAccountsDebtEntry",
                        "signature": "getAccountsDebtEntry(address account, uint256 index)",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 61,
                                "name": "require(..., index exceeds the FEE_PERIOD_LENGTH)"
                            }
                        ],
                        "lineNumber": 56
                    },
                    {
                        "name": "applicableIssuanceData",
                        "signature": "applicableIssuanceData(address account, uint256 closingDebtIndex)",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 72
                    },
                    {
                        "name": "appendAccountIssuanceRecord",
                        "signature": "appendAccountIssuanceRecord(address account, uint256 debtRatio, uint256 debtEntryIndex, uint256 currentPeriodStartDebtIndex)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyFeePool"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 97
                    },
                    {
                        "name": "issuanceDataIndexOrder",
                        "signature": "issuanceDataIndexOrder(address account)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "private",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 117
                    },
                    {
                        "name": "importIssuerData",
                        "signature": "importIssuerData(address[] accounts, uint256[] ratios, uint256 periodToInsert, uint256 feePeriodCloseIndex)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner",
                            "onlyDuringSetup"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 142,
                                "name": "require(..., Length mismatch)"
                            }
                        ],
                        "lineNumber": 136
                    }
                ],
                "events": [
                    {
                        "name": "IssuanceDebtRatioEntry",
                        "parameters": "(address account, uint256 debtRatio, uint256 feePeriodCloseIndex)",
                        "lineNumber": 159
                    }
                ],
                "variables": [
                    {
                        "name": "FEE_PERIOD_LENGTH",
                        "constant": true,
                        "type": "uint8",
                        "lineNumber": 21,
                        "visibility": "public"
                    },
                    {
                        "name": "feePool",
                        "constant": false,
                        "type": "address",
                        "lineNumber": 23,
                        "visibility": "public"
                    },
                    {
                        "name": "accountIssuanceLedger",
                        "constant": false,
                        "type": "mapping(address => struct FeePoolState.IssuanceData[6])",
                        "lineNumber": 32,
                        "visibility": "public"
                    }
                ],
                "modifiers": [
                    {
                        "name": "onlyFeePool",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 153
                    }
                ],
                "structs": [
                    {
                        "name": "IssuanceData",
                        "members": [
                            {
                                "name": "debtPercentage",
                                "type": "uint256"
                            },
                            {
                                "name": "debtEntryIndex",
                                "type": "uint256"
                            }
                        ],
                        "lineNumber": 26
                    }
                ],
                "inherits": [
                    "Owned",
                    "LimitedSetup"
                ],
                "libraries": [
                    {
                        "name": "SafeMath",
                        "type": "uint"
                    },
                    {
                        "name": "SafeDecimalMath",
                        "type": "uint"
                    }
                ]
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/FeePoolEternalStorage.sol": {
        "imports": [
            "contracts/EternalStorage.sol",
            "contracts/LimitedSetup.sol"
        ],
        "contracts": {
            "FeePoolEternalStorage": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, address _feePool)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "EternalStorage",
                            "LimitedSetup"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 12
                    },
                    {
                        "name": "importFeeWithdrawalData",
                        "signature": "importFeeWithdrawalData(address[] accounts, uint256[] feePeriodIDs)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner",
                            "onlyDuringSetup"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 19,
                                "name": "require(..., Length mismatch)"
                            }
                        ],
                        "lineNumber": 14
                    }
                ],
                "events": [],
                "variables": [
                    {
                        "name": "LAST_FEE_WITHDRAWAL",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 10,
                        "visibility": "internal"
                    }
                ],
                "modifiers": [],
                "structs": [],
                "inherits": [
                    "EternalStorage",
                    "LimitedSetup"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/FlexibleStorage.sol": {
        "imports": [
            "contracts/ContractStorage.sol",
            "contracts/interfaces/IFlexibleStorage.sol",
            "contracts/interfaces/IAddressResolver.sol"
        ],
        "contracts": {
            "FlexibleStorage": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _resolver)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "ContractStorage"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 19
                    },
                    {
                        "name": "_setUIntValue",
                        "signature": "_setUIntValue(bytes32 contractName, bytes32 record, uint256 value)",
                        "returns": "()",
                        "events": [
                            "ValueSetUInt"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 23
                    },
                    {
                        "name": "_setIntValue",
                        "signature": "_setIntValue(bytes32 contractName, bytes32 record, int256 value)",
                        "returns": "()",
                        "events": [
                            "ValueSetInt"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 32
                    },
                    {
                        "name": "_setAddressValue",
                        "signature": "_setAddressValue(bytes32 contractName, bytes32 record, address value)",
                        "returns": "()",
                        "events": [
                            "ValueSetAddress"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 41
                    },
                    {
                        "name": "_setBoolValue",
                        "signature": "_setBoolValue(bytes32 contractName, bytes32 record, bool value)",
                        "returns": "()",
                        "events": [
                            "ValueSetBool"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 50
                    },
                    {
                        "name": "_setBytes32Value",
                        "signature": "_setBytes32Value(bytes32 contractName, bytes32 record, bytes32 value)",
                        "returns": "()",
                        "events": [
                            "ValueSetBytes32"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 59
                    },
                    {
                        "name": "getUIntValue",
                        "signature": "getUIntValue(bytes32 contractName, bytes32 record)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 70
                    },
                    {
                        "name": "getUIntValues",
                        "signature": "getUIntValues(bytes32 contractName, bytes32[] records)",
                        "returns": "(uint256[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 74
                    },
                    {
                        "name": "getIntValue",
                        "signature": "getIntValue(bytes32 contractName, bytes32 record)",
                        "returns": "(int256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 84
                    },
                    {
                        "name": "getIntValues",
                        "signature": "getIntValues(bytes32 contractName, bytes32[] records)",
                        "returns": "(int256[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 88
                    },
                    {
                        "name": "getAddressValue",
                        "signature": "getAddressValue(bytes32 contractName, bytes32 record)",
                        "returns": "(address)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 98
                    },
                    {
                        "name": "getAddressValues",
                        "signature": "getAddressValues(bytes32 contractName, bytes32[] records)",
                        "returns": "(address[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 102
                    },
                    {
                        "name": "getBoolValue",
                        "signature": "getBoolValue(bytes32 contractName, bytes32 record)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 112
                    },
                    {
                        "name": "getBoolValues",
                        "signature": "getBoolValues(bytes32 contractName, bytes32[] records)",
                        "returns": "(bool[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 116
                    },
                    {
                        "name": "getBytes32Value",
                        "signature": "getBytes32Value(bytes32 contractName, bytes32 record)",
                        "returns": "(bytes32)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 126
                    },
                    {
                        "name": "getBytes32Values",
                        "signature": "getBytes32Values(bytes32 contractName, bytes32[] records)",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 130
                    },
                    {
                        "name": "setUIntValue",
                        "signature": "setUIntValue(bytes32 contractName, bytes32 record, uint256 value)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 141
                    },
                    {
                        "name": "setUIntValues",
                        "signature": "setUIntValues(bytes32 contractName, bytes32[] records, uint256[] values)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 154,
                                "name": "require(..., Input lengths must match)"
                            }
                        ],
                        "lineNumber": 149
                    },
                    {
                        "name": "deleteUIntValue",
                        "signature": "deleteUIntValue(bytes32 contractName, bytes32 record)",
                        "returns": "()",
                        "events": [
                            "ValueDeletedUInt"
                        ],
                        "modifiers": [
                            "onlyContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 161
                    },
                    {
                        "name": "setIntValue",
                        "signature": "setIntValue(bytes32 contractName, bytes32 record, int256 value)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 167
                    },
                    {
                        "name": "setIntValues",
                        "signature": "setIntValues(bytes32 contractName, bytes32[] records, int256[] values)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 180,
                                "name": "require(..., Input lengths must match)"
                            }
                        ],
                        "lineNumber": 175
                    },
                    {
                        "name": "deleteIntValue",
                        "signature": "deleteIntValue(bytes32 contractName, bytes32 record)",
                        "returns": "()",
                        "events": [
                            "ValueDeletedInt"
                        ],
                        "modifiers": [
                            "onlyContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 187
                    },
                    {
                        "name": "setAddressValue",
                        "signature": "setAddressValue(bytes32 contractName, bytes32 record, address value)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 193
                    },
                    {
                        "name": "setAddressValues",
                        "signature": "setAddressValues(bytes32 contractName, bytes32[] records, address[] values)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 206,
                                "name": "require(..., Input lengths must match)"
                            }
                        ],
                        "lineNumber": 201
                    },
                    {
                        "name": "deleteAddressValue",
                        "signature": "deleteAddressValue(bytes32 contractName, bytes32 record)",
                        "returns": "()",
                        "events": [
                            "ValueDeletedAddress"
                        ],
                        "modifiers": [
                            "onlyContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 213
                    },
                    {
                        "name": "setBoolValue",
                        "signature": "setBoolValue(bytes32 contractName, bytes32 record, bool value)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 219
                    },
                    {
                        "name": "setBoolValues",
                        "signature": "setBoolValues(bytes32 contractName, bytes32[] records, bool[] values)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 232,
                                "name": "require(..., Input lengths must match)"
                            }
                        ],
                        "lineNumber": 227
                    },
                    {
                        "name": "deleteBoolValue",
                        "signature": "deleteBoolValue(bytes32 contractName, bytes32 record)",
                        "returns": "()",
                        "events": [
                            "ValueDeletedBool"
                        ],
                        "modifiers": [
                            "onlyContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 239
                    },
                    {
                        "name": "setBytes32Value",
                        "signature": "setBytes32Value(bytes32 contractName, bytes32 record, bytes32 value)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 245
                    },
                    {
                        "name": "setBytes32Values",
                        "signature": "setBytes32Values(bytes32 contractName, bytes32[] records, bytes32[] values)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 258,
                                "name": "require(..., Input lengths must match)"
                            }
                        ],
                        "lineNumber": 253
                    },
                    {
                        "name": "deleteBytes32Value",
                        "signature": "deleteBytes32Value(bytes32 contractName, bytes32 record)",
                        "returns": "()",
                        "events": [
                            "ValueDeletedBytes32"
                        ],
                        "modifiers": [
                            "onlyContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 265
                    }
                ],
                "events": [
                    {
                        "name": "ValueSetUInt",
                        "parameters": "(bytes32 contractName, bytes32 record, uint256 value)",
                        "lineNumber": 273
                    },
                    {
                        "name": "ValueDeletedUInt",
                        "parameters": "(bytes32 contractName, bytes32 record, uint256 value)",
                        "lineNumber": 274
                    },
                    {
                        "name": "ValueSetInt",
                        "parameters": "(bytes32 contractName, bytes32 record, int256 value)",
                        "lineNumber": 276
                    },
                    {
                        "name": "ValueDeletedInt",
                        "parameters": "(bytes32 contractName, bytes32 record, int256 value)",
                        "lineNumber": 277
                    },
                    {
                        "name": "ValueSetAddress",
                        "parameters": "(bytes32 contractName, bytes32 record, address value)",
                        "lineNumber": 279
                    },
                    {
                        "name": "ValueDeletedAddress",
                        "parameters": "(bytes32 contractName, bytes32 record, address value)",
                        "lineNumber": 280
                    },
                    {
                        "name": "ValueSetBool",
                        "parameters": "(bytes32 contractName, bytes32 record, bool value)",
                        "lineNumber": 282
                    },
                    {
                        "name": "ValueDeletedBool",
                        "parameters": "(bytes32 contractName, bytes32 record, bool value)",
                        "lineNumber": 283
                    },
                    {
                        "name": "ValueSetBytes32",
                        "parameters": "(bytes32 contractName, bytes32 record, bytes32 value)",
                        "lineNumber": 285
                    },
                    {
                        "name": "ValueDeletedBytes32",
                        "parameters": "(bytes32 contractName, bytes32 record, bytes32 value)",
                        "lineNumber": 286
                    }
                ],
                "variables": [
                    {
                        "name": "uintStorage",
                        "constant": false,
                        "type": "mapping(bytes32 => mapping(bytes32 => uint256))",
                        "lineNumber": 13,
                        "visibility": "internal"
                    },
                    {
                        "name": "intStorage",
                        "constant": false,
                        "type": "mapping(bytes32 => mapping(bytes32 => int256))",
                        "lineNumber": 14,
                        "visibility": "internal"
                    },
                    {
                        "name": "addressStorage",
                        "constant": false,
                        "type": "mapping(bytes32 => mapping(bytes32 => address))",
                        "lineNumber": 15,
                        "visibility": "internal"
                    },
                    {
                        "name": "boolStorage",
                        "constant": false,
                        "type": "mapping(bytes32 => mapping(bytes32 => bool))",
                        "lineNumber": 16,
                        "visibility": "internal"
                    },
                    {
                        "name": "bytes32Storage",
                        "constant": false,
                        "type": "mapping(bytes32 => mapping(bytes32 => bytes32))",
                        "lineNumber": 17,
                        "visibility": "internal"
                    }
                ],
                "modifiers": [],
                "structs": [],
                "inherits": [
                    "ContractStorage",
                    "IFlexibleStorage"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/ImportableRewardEscrowV2.sol": {
        "imports": [
            "contracts/BaseRewardEscrowV2.sol"
        ],
        "contracts": {
            "ImportableRewardEscrowV2": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, address _resolver)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "BaseRewardEscrowV2"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 15
                    },
                    {
                        "name": "resolverAddressesRequired",
                        "signature": "resolverAddressesRequired()",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 19
                    },
                    {
                        "name": "synthetixBridgeToBase",
                        "signature": "synthetixBridgeToBase()",
                        "returns": "(address)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 26
                    },
                    {
                        "name": "importVestingEntries",
                        "signature": "importVestingEntries(address account, uint256 escrowedAmount, struct VestingEntries.VestingEntry[] vestingEntries)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlySynthetixBridge"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 39,
                                "name": "require(..., Insufficient balance in the contract to provide for escrowed balance)"
                            }
                        ],
                        "lineNumber": 32
                    },
                    {
                        "name": "_importVestingEntry",
                        "signature": "_importVestingEntry(address account, struct VestingEntries.VestingEntry entry)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 52
                    }
                ],
                "events": [],
                "variables": [
                    {
                        "name": "CONTRACT_SYNTHETIX_BRIDGE_BASE",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 11,
                        "visibility": "private"
                    }
                ],
                "modifiers": [
                    {
                        "name": "onlySynthetixBridge",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 63
                    }
                ],
                "structs": [],
                "inherits": [
                    "BaseRewardEscrowV2"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/interfaces/IHasBalance.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {
            "IHasBalance": {
                "functions": [
                    {
                        "name": "balanceOf",
                        "signature": "balanceOf(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 7
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/interfaces/ILiquidations.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {
            "ILiquidations": {
                "functions": [
                    {
                        "name": "isOpenForLiquidation",
                        "signature": "isOpenForLiquidation(address account)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 7
                    },
                    {
                        "name": "getLiquidationDeadlineForAccount",
                        "signature": "getLiquidationDeadlineForAccount(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 9
                    },
                    {
                        "name": "isLiquidationDeadlinePassed",
                        "signature": "isLiquidationDeadlinePassed(address account)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 11
                    },
                    {
                        "name": "liquidationDelay",
                        "signature": "liquidationDelay()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 13
                    },
                    {
                        "name": "liquidationRatio",
                        "signature": "liquidationRatio()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 15
                    },
                    {
                        "name": "liquidationPenalty",
                        "signature": "liquidationPenalty()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 17
                    },
                    {
                        "name": "calculateAmountToFixCollateral",
                        "signature": "calculateAmountToFixCollateral(uint256 debtBalance, uint256 collateral)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 19
                    },
                    {
                        "name": "flagAccountForLiquidation",
                        "signature": "flagAccountForLiquidation(address account)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 22
                    },
                    {
                        "name": "removeAccountInLiquidation",
                        "signature": "removeAccountInLiquidation(address account)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 25
                    },
                    {
                        "name": "checkAndRemoveAccountInLiquidation",
                        "signature": "checkAndRemoveAccountInLiquidation(address account)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 27
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/interfaces/IRewardEscrow.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {
            "IRewardEscrow": {
                "functions": [
                    {
                        "name": "balanceOf",
                        "signature": "balanceOf(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 7
                    },
                    {
                        "name": "numVestingEntries",
                        "signature": "numVestingEntries(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 9
                    },
                    {
                        "name": "totalEscrowedAccountBalance",
                        "signature": "totalEscrowedAccountBalance(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 11
                    },
                    {
                        "name": "totalVestedAccountBalance",
                        "signature": "totalVestedAccountBalance(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 13
                    },
                    {
                        "name": "getVestingScheduleEntry",
                        "signature": "getVestingScheduleEntry(address account, uint256 index)",
                        "returns": "(uint256[2])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 15
                    },
                    {
                        "name": "getNextVestingIndex",
                        "signature": "getNextVestingIndex(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 17
                    },
                    {
                        "name": "appendVestingEntry",
                        "signature": "appendVestingEntry(address account, uint256 quantity)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 20
                    },
                    {
                        "name": "vest",
                        "signature": "vest()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 22
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/interfaces/IStakingRewards.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {
            "IStakingRewards": {
                "functions": [
                    {
                        "name": "lastTimeRewardApplicable",
                        "signature": "lastTimeRewardApplicable()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 7
                    },
                    {
                        "name": "rewardPerToken",
                        "signature": "rewardPerToken()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 9
                    },
                    {
                        "name": "earned",
                        "signature": "earned(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 11
                    },
                    {
                        "name": "getRewardForDuration",
                        "signature": "getRewardForDuration()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 13
                    },
                    {
                        "name": "totalSupply",
                        "signature": "totalSupply()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 15
                    },
                    {
                        "name": "balanceOf",
                        "signature": "balanceOf(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 17
                    },
                    {
                        "name": "stake",
                        "signature": "stake(uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 21
                    },
                    {
                        "name": "withdraw",
                        "signature": "withdraw(uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 23
                    },
                    {
                        "name": "getReward",
                        "signature": "getReward()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 25
                    },
                    {
                        "name": "exit",
                        "signature": "exit()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 27
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/interfaces/ISupplySchedule.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {
            "ISupplySchedule": {
                "functions": [
                    {
                        "name": "mintableSupply",
                        "signature": "mintableSupply()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 7
                    },
                    {
                        "name": "isMintable",
                        "signature": "isMintable()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 9
                    },
                    {
                        "name": "minterReward",
                        "signature": "minterReward()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 11
                    },
                    {
                        "name": "recordMintEvent",
                        "signature": "recordMintEvent(uint256 supplyMinted)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 14
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/interfaces/ISynthetixBridgeToBase.sol": {
        "imports": [
            "contracts/interfaces/IRewardEscrowV2.sol"
        ],
        "contracts": {},
        "interfaces": {
            "ISynthetixBridgeToBase": {
                "functions": [
                    {
                        "name": "initiateWithdrawal",
                        "signature": "initiateWithdrawal(uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 9
                    },
                    {
                        "name": "completeDeposit",
                        "signature": "completeDeposit(address account, uint256 depositAmount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 12
                    },
                    {
                        "name": "completeEscrowMigration",
                        "signature": "completeEscrowMigration(address account, uint256 escrowedAmount, struct VestingEntries.VestingEntry[] vestingEntries)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 15
                    },
                    {
                        "name": "completeRewardDeposit",
                        "signature": "completeRewardDeposit(uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 22
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/interfaces/ISynthetixBridgeToOptimism.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {
            "ISynthetixBridgeToOptimism": {
                "functions": [
                    {
                        "name": "completeWithdrawal",
                        "signature": "completeWithdrawal(address account, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 7
                    },
                    {
                        "name": "initiateDeposit",
                        "signature": "initiateDeposit(uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 10
                    },
                    {
                        "name": "initiateEscrowMigration",
                        "signature": "initiateEscrowMigration(uint256[][] entryIDs)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 12
                    },
                    {
                        "name": "initiateRewardDeposit",
                        "signature": "initiateRewardDeposit(uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 14
                    },
                    {
                        "name": "depositAndMigrateEscrow",
                        "signature": "depositAndMigrateEscrow(uint256 depositAmount, uint256[][] entryIDs)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 16
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/interfaces/ISystemSettings.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {
            "ISystemSettings": {
                "functions": [
                    {
                        "name": "priceDeviationThresholdFactor",
                        "signature": "priceDeviationThresholdFactor()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 7
                    },
                    {
                        "name": "waitingPeriodSecs",
                        "signature": "waitingPeriodSecs()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 9
                    },
                    {
                        "name": "issuanceRatio",
                        "signature": "issuanceRatio()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 11
                    },
                    {
                        "name": "feePeriodDuration",
                        "signature": "feePeriodDuration()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 13
                    },
                    {
                        "name": "targetThreshold",
                        "signature": "targetThreshold()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 15
                    },
                    {
                        "name": "liquidationDelay",
                        "signature": "liquidationDelay()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 17
                    },
                    {
                        "name": "liquidationRatio",
                        "signature": "liquidationRatio()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 19
                    },
                    {
                        "name": "liquidationPenalty",
                        "signature": "liquidationPenalty()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 21
                    },
                    {
                        "name": "rateStalePeriod",
                        "signature": "rateStalePeriod()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 23
                    },
                    {
                        "name": "exchangeFeeRate",
                        "signature": "exchangeFeeRate(bytes32 currencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 25
                    },
                    {
                        "name": "minimumStakeTime",
                        "signature": "minimumStakeTime()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 27
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/Issuer.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/MixinResolver.sol",
            "contracts/MixinSystemSettings.sol",
            "contracts/interfaces/IIssuer.sol",
            "contracts/SafeDecimalMath.sol",
            "contracts/interfaces/ISynth.sol",
            "contracts/interfaces/ISynthetix.sol",
            "contracts/interfaces/IFeePool.sol",
            "contracts/interfaces/ISynthetixState.sol",
            "contracts/interfaces/IExchanger.sol",
            "contracts/interfaces/IDelegateApprovals.sol",
            "contracts/interfaces/IExchangeRates.sol",
            "contracts/interfaces/IEtherCollateral.sol",
            "contracts/interfaces/IEtherCollateralsUSD.sol",
            "contracts/interfaces/IHasBalance.sol",
            "contracts/interfaces/IERC20.sol",
            "contracts/interfaces/ILiquidations.sol",
            "contracts/interfaces/ICollateralManager.sol",
            "contracts/interfaces/IDebtCache.sol"
        ],
        "contracts": {
            "Issuer": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, address _resolver)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned",
                            "MixinSystemSettings"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 91
                    },
                    {
                        "name": "resolverAddressesRequired",
                        "signature": "resolverAddressesRequired()",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 94
                    },
                    {
                        "name": "synthetix",
                        "signature": "synthetix()",
                        "returns": "(contract ISynthetix)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 113
                    },
                    {
                        "name": "exchanger",
                        "signature": "exchanger()",
                        "returns": "(contract IExchanger)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 117
                    },
                    {
                        "name": "exchangeRates",
                        "signature": "exchangeRates()",
                        "returns": "(contract IExchangeRates)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 121
                    },
                    {
                        "name": "synthetixState",
                        "signature": "synthetixState()",
                        "returns": "(contract ISynthetixState)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 125
                    },
                    {
                        "name": "feePool",
                        "signature": "feePool()",
                        "returns": "(contract IFeePool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 129
                    },
                    {
                        "name": "liquidations",
                        "signature": "liquidations()",
                        "returns": "(contract ILiquidations)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 133
                    },
                    {
                        "name": "delegateApprovals",
                        "signature": "delegateApprovals()",
                        "returns": "(contract IDelegateApprovals)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 137
                    },
                    {
                        "name": "etherCollateral",
                        "signature": "etherCollateral()",
                        "returns": "(contract IEtherCollateral)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 141
                    },
                    {
                        "name": "etherCollateralsUSD",
                        "signature": "etherCollateralsUSD()",
                        "returns": "(contract IEtherCollateralsUSD)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 145
                    },
                    {
                        "name": "collateralManager",
                        "signature": "collateralManager()",
                        "returns": "(contract ICollateralManager)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 149
                    },
                    {
                        "name": "rewardEscrowV2",
                        "signature": "rewardEscrowV2()",
                        "returns": "(contract IRewardEscrowV2)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 153
                    },
                    {
                        "name": "synthetixEscrow",
                        "signature": "synthetixEscrow()",
                        "returns": "(contract IHasBalance)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 157
                    },
                    {
                        "name": "debtCache",
                        "signature": "debtCache()",
                        "returns": "(contract IIssuerInternalDebtCache)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 161
                    },
                    {
                        "name": "issuanceRatio",
                        "signature": "issuanceRatio()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 165
                    },
                    {
                        "name": "_availableCurrencyKeysWithOptionalSNX",
                        "signature": "_availableCurrencyKeysWithOptionalSNX(bool withSNX)",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 169
                    },
                    {
                        "name": "_totalIssuedSynths",
                        "signature": "_totalIssuedSynths(bytes32 currencyKey, bool excludeCollateral)",
                        "returns": "(uint256, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 183
                    },
                    {
                        "name": "_debtBalanceOfAndTotalDebt",
                        "signature": "_debtBalanceOfAndTotalDebt(address _issuer, bytes32 currencyKey)",
                        "returns": "(uint256, uint256, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 218
                    },
                    {
                        "name": "_canBurnSynths",
                        "signature": "_canBurnSynths(address account)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 256
                    },
                    {
                        "name": "_lastIssueEvent",
                        "signature": "_lastIssueEvent(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 260
                    },
                    {
                        "name": "_remainingIssuableSynths",
                        "signature": "_remainingIssuableSynths(address _issuer)",
                        "returns": "(uint256, uint256, uint256, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 265
                    },
                    {
                        "name": "_snxToUSD",
                        "signature": "_snxToUSD(uint256 amount, uint256 snxRate)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "pure",
                        "requires": [],
                        "lineNumber": 287
                    },
                    {
                        "name": "_usdToSnx",
                        "signature": "_usdToSnx(uint256 amount, uint256 snxRate)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "pure",
                        "requires": [],
                        "lineNumber": 291
                    },
                    {
                        "name": "_maxIssuableSynths",
                        "signature": "_maxIssuableSynths(address _issuer)",
                        "returns": "(uint256, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 295
                    },
                    {
                        "name": "_collateralisationRatio",
                        "signature": "_collateralisationRatio(address _issuer)",
                        "returns": "(uint256, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 304
                    },
                    {
                        "name": "_collateral",
                        "signature": "_collateral(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 315
                    },
                    {
                        "name": "minimumStakeTime",
                        "signature": "minimumStakeTime()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 329
                    },
                    {
                        "name": "canBurnSynths",
                        "signature": "canBurnSynths(address account)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 333
                    },
                    {
                        "name": "availableCurrencyKeys",
                        "signature": "availableCurrencyKeys()",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 337
                    },
                    {
                        "name": "availableSynthCount",
                        "signature": "availableSynthCount()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 341
                    },
                    {
                        "name": "anySynthOrSNXRateIsInvalid",
                        "signature": "anySynthOrSNXRateIsInvalid()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 345
                    },
                    {
                        "name": "totalIssuedSynths",
                        "signature": "totalIssuedSynths(bytes32 currencyKey, bool excludeEtherCollateral)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 349
                    },
                    {
                        "name": "lastIssueEvent",
                        "signature": "lastIssueEvent(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 353
                    },
                    {
                        "name": "collateralisationRatio",
                        "signature": "collateralisationRatio(address _issuer)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 357
                    },
                    {
                        "name": "collateralisationRatioAndAnyRatesInvalid",
                        "signature": "collateralisationRatioAndAnyRatesInvalid(address _issuer)",
                        "returns": "(uint256, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 361
                    },
                    {
                        "name": "collateral",
                        "signature": "collateral(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 369
                    },
                    {
                        "name": "debtBalanceOf",
                        "signature": "debtBalanceOf(address _issuer, bytes32 currencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 373
                    },
                    {
                        "name": "remainingIssuableSynths",
                        "signature": "remainingIssuableSynths(address _issuer)",
                        "returns": "(uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 385
                    },
                    {
                        "name": "maxIssuableSynths",
                        "signature": "maxIssuableSynths(address _issuer)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 397
                    },
                    {
                        "name": "transferableSynthetixAndAnyRateIsInvalid",
                        "signature": "transferableSynthetixAndAnyRateIsInvalid(address account, uint256 balance)",
                        "returns": "(uint256, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 402
                    },
                    {
                        "name": "getSynths",
                        "signature": "getSynths(bytes32[] currencyKeys)",
                        "returns": "(contract ISynth[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 427
                    },
                    {
                        "name": "_addSynth",
                        "signature": "_addSynth(contract ISynth synth)",
                        "returns": "()",
                        "events": [
                            "SynthAdded"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 442,
                                "name": "require(..., Synth exists)"
                            },
                            {
                                "lineNumber": 443,
                                "name": "require(..., Synth address already exists)"
                            }
                        ],
                        "lineNumber": 440
                    },
                    {
                        "name": "addSynth",
                        "signature": "addSynth(contract ISynth synth)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 452
                    },
                    {
                        "name": "addSynths",
                        "signature": "addSynths(contract ISynth[] synthsToAdd)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 460
                    },
                    {
                        "name": "_removeSynth",
                        "signature": "_removeSynth(bytes32 currencyKey)",
                        "returns": "()",
                        "events": [
                            "SynthRemoved"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 472,
                                "name": "require(..., Synth does not exist)"
                            },
                            {
                                "lineNumber": 473,
                                "name": "require(..., Synth supply exists)"
                            },
                            {
                                "lineNumber": 474,
                                "name": "require(..., Cannot remove synth)"
                            }
                        ],
                        "lineNumber": 470
                    },
                    {
                        "name": "removeSynth",
                        "signature": "removeSynth(bytes32 currencyKey)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 500
                    },
                    {
                        "name": "removeSynths",
                        "signature": "removeSynths(bytes32[] currencyKeys)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 510
                    },
                    {
                        "name": "issueSynths",
                        "signature": "issueSynths(address from, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlySynthetix"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 525
                    },
                    {
                        "name": "issueMaxSynths",
                        "signature": "issueMaxSynths(address from)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlySynthetix"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 529
                    },
                    {
                        "name": "issueSynthsOnBehalf",
                        "signature": "issueSynthsOnBehalf(address issueForAddress, address from, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlySynthetix"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 538,
                                "name": "_requireCanIssueOnBehalf"
                            }
                        ],
                        "lineNumber": 533
                    },
                    {
                        "name": "issueMaxSynthsOnBehalf",
                        "signature": "issueMaxSynthsOnBehalf(address issueForAddress, address from)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlySynthetix"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 543,
                                "name": "_requireCanIssueOnBehalf"
                            }
                        ],
                        "lineNumber": 542
                    },
                    {
                        "name": "burnSynths",
                        "signature": "burnSynths(address from, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlySynthetix"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 547
                    },
                    {
                        "name": "burnSynthsOnBehalf",
                        "signature": "burnSynthsOnBehalf(address burnForAddress, address from, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlySynthetix"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 556,
                                "name": "_requireCanBurnOnBehalf"
                            }
                        ],
                        "lineNumber": 551
                    },
                    {
                        "name": "burnSynthsToTarget",
                        "signature": "burnSynthsToTarget(address from)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlySynthetix"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 560
                    },
                    {
                        "name": "burnSynthsToTargetOnBehalf",
                        "signature": "burnSynthsToTargetOnBehalf(address burnForAddress, address from)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlySynthetix"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 565,
                                "name": "_requireCanBurnOnBehalf"
                            }
                        ],
                        "lineNumber": 564
                    },
                    {
                        "name": "liquidateDelinquentAccount",
                        "signature": "liquidateDelinquentAccount(address account, uint256 susdAmount, address liquidator)",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [
                            "onlySynthetix"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 575,
                                "name": "require(..., sUSD needs to be settled)"
                            },
                            {
                                "lineNumber": 578,
                                "name": "require(..., Account not open for liquidation)"
                            },
                            {
                                "lineNumber": 581,
                                "name": "require(..., Not enough sUSD)"
                            },
                            {
                                "lineNumber": 588,
                                "name": "_requireRatesNotInvalid"
                            }
                        ],
                        "lineNumber": 569
                    },
                    {
                        "name": "_requireRatesNotInvalid",
                        "signature": "_requireRatesNotInvalid(bool anyRateIsInvalid)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "pure",
                        "requires": [
                            {
                                "lineNumber": 631,
                                "name": "require(..., A synth or SNX rate is invalid)"
                            }
                        ],
                        "lineNumber": 630
                    },
                    {
                        "name": "_requireCanIssueOnBehalf",
                        "signature": "_requireCanIssueOnBehalf(address issueForAddress, address from)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 635,
                                "name": "require(..., Not approved to act on behalf)"
                            }
                        ],
                        "lineNumber": 634
                    },
                    {
                        "name": "_requireCanBurnOnBehalf",
                        "signature": "_requireCanBurnOnBehalf(address burnForAddress, address from)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 639,
                                "name": "require(..., Not approved to act on behalf)"
                            }
                        ],
                        "lineNumber": 638
                    },
                    {
                        "name": "_issueSynths",
                        "signature": "_issueSynths(address from, uint256 amount, bool issueMax)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 648,
                                "name": "_requireRatesNotInvalid"
                            }
                        ],
                        "lineNumber": 642
                    },
                    {
                        "name": "_burnSynths",
                        "signature": "_burnSynths(address debtAccount, address burnAccount, uint256 amount, uint256 existingDebt, uint256 totalDebtIssued)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 672
                    },
                    {
                        "name": "_voluntaryBurnSynths",
                        "signature": "_voluntaryBurnSynths(address from, uint256 amount, bool burnToTarget)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 718,
                                "name": "_requireRatesNotInvalid"
                            },
                            {
                                "lineNumber": 719,
                                "name": "require(..., No debt to forgive)"
                            }
                        ],
                        "lineNumber": 701
                    },
                    {
                        "name": "_setLastIssueEvent",
                        "signature": "_setLastIssueEvent(address account)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 734
                    },
                    {
                        "name": "_appendAccountIssuanceRecord",
                        "signature": "_appendAccountIssuanceRecord(address from)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 743
                    },
                    {
                        "name": "_addToDebtRegister",
                        "signature": "_addToDebtRegister(address from, uint256 amount, uint256 existingDebt, uint256 totalDebtIssued)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 750
                    },
                    {
                        "name": "_removeFromDebtRegister",
                        "signature": "_removeFromDebtRegister(address from, uint256 debtToRemove, uint256 existingDebt, uint256 totalDebtIssued)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 790
                    },
                    {
                        "name": "_onlySynthetix",
                        "signature": "_onlySynthetix()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 835,
                                "name": "require(..., Issuer: Only the synthetix contract can perform this action)"
                            }
                        ],
                        "lineNumber": 834
                    }
                ],
                "events": [
                    {
                        "name": "SynthAdded",
                        "parameters": "(bytes32 currencyKey, address synth)",
                        "lineNumber": 845
                    },
                    {
                        "name": "SynthRemoved",
                        "parameters": "(bytes32 currencyKey, address synth)",
                        "lineNumber": 846
                    }
                ],
                "variables": [
                    {
                        "name": "availableSynths",
                        "constant": false,
                        "type": "contract ISynth[]",
                        "lineNumber": 60,
                        "visibility": "public"
                    },
                    {
                        "name": "synths",
                        "constant": false,
                        "type": "mapping(bytes32 => contract ISynth)",
                        "lineNumber": 61,
                        "visibility": "public"
                    },
                    {
                        "name": "synthsByAddress",
                        "constant": false,
                        "type": "mapping(address => bytes32)",
                        "lineNumber": 62,
                        "visibility": "public"
                    },
                    {
                        "name": "sUSD",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 66,
                        "visibility": "internal"
                    },
                    {
                        "name": "sETH",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 67,
                        "visibility": "internal"
                    },
                    {
                        "name": "SNX",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 68,
                        "visibility": "internal"
                    },
                    {
                        "name": "CONTRACT_NAME",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 72,
                        "visibility": "public"
                    },
                    {
                        "name": "LAST_ISSUE_EVENT",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 73,
                        "visibility": "internal"
                    },
                    {
                        "name": "CONTRACT_SYNTHETIX",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 77,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_EXCHANGER",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 78,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_EXRATES",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 79,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_SYNTHETIXSTATE",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 80,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_FEEPOOL",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 81,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_DELEGATEAPPROVALS",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 82,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_ETHERCOLLATERAL",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 83,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_ETHERCOLLATERAL_SUSD",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 84,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_COLLATERALMANAGER",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 85,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_REWARDESCROW_V2",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 86,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_SYNTHETIXESCROW",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 87,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_LIQUIDATIONS",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 88,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_DEBTCACHE",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 89,
                        "visibility": "private"
                    }
                ],
                "modifiers": [
                    {
                        "name": "onlySynthetix",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 838
                    }
                ],
                "structs": [],
                "inherits": [
                    "Owned",
                    "MixinSystemSettings",
                    "IIssuer"
                ],
                "libraries": [
                    {
                        "name": "SafeMath",
                        "type": "uint"
                    },
                    {
                        "name": "SafeDecimalMath",
                        "type": "uint"
                    }
                ]
            }
        },
        "interfaces": {
            "IRewardEscrowV2": {
                "functions": [
                    {
                        "name": "balanceOf",
                        "signature": "balanceOf(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 31
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            },
            "IIssuerInternalDebtCache": {
                "functions": [
                    {
                        "name": "updateCachedSynthDebtWithRate",
                        "signature": "updateCachedSynthDebtWithRate(bytes32 currencyKey, uint256 currencyRate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 36
                    },
                    {
                        "name": "updateCachedSynthDebtsWithRates",
                        "signature": "updateCachedSynthDebtsWithRates(bytes32[] currencyKeys, uint256[] currencyRates)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 38
                    },
                    {
                        "name": "updateDebtCacheValidity",
                        "signature": "updateDebtCacheValidity(bool currentlyInvalid)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 40
                    },
                    {
                        "name": "cacheInfo",
                        "signature": "cacheInfo()",
                        "returns": "(uint256, uint256, bool, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 42
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/IssuerWithoutLiquidations.sol": {
        "imports": [
            "contracts/Issuer.sol"
        ],
        "contracts": {
            "IssuerWithoutLiquidations": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, address _resolver)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Issuer"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 9
                    },
                    {
                        "name": "liquidateDelinquentAccount",
                        "signature": "liquidateDelinquentAccount(address account, uint256 susdAmount, address liquidator)",
                        "returns": "(uint256, uint256)",
                        "events": [],
                        "modifiers": [
                            "onlySynthetix"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 11
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [
                    "Issuer"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/Liquidations.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/MixinResolver.sol",
            "contracts/MixinSystemSettings.sol",
            "contracts/interfaces/ILiquidations.sol",
            "contracts/SafeDecimalMath.sol",
            "contracts/EternalStorage.sol",
            "contracts/interfaces/ISynthetix.sol",
            "contracts/interfaces/IExchangeRates.sol",
            "contracts/interfaces/IIssuer.sol",
            "contracts/interfaces/ISystemStatus.sol"
        ],
        "contracts": {
            "Liquidations": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, address _resolver)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned",
                            "MixinSystemSettings"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 44
                    },
                    {
                        "name": "resolverAddressesRequired",
                        "signature": "resolverAddressesRequired()",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 47
                    },
                    {
                        "name": "synthetix",
                        "signature": "synthetix()",
                        "returns": "(contract ISynthetix)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 58
                    },
                    {
                        "name": "systemStatus",
                        "signature": "systemStatus()",
                        "returns": "(contract ISystemStatus)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 62
                    },
                    {
                        "name": "issuer",
                        "signature": "issuer()",
                        "returns": "(contract IIssuer)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 66
                    },
                    {
                        "name": "exchangeRates",
                        "signature": "exchangeRates()",
                        "returns": "(contract IExchangeRates)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 70
                    },
                    {
                        "name": "eternalStorageLiquidations",
                        "signature": "eternalStorageLiquidations()",
                        "returns": "(contract EternalStorage)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 75
                    },
                    {
                        "name": "issuanceRatio",
                        "signature": "issuanceRatio()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 79
                    },
                    {
                        "name": "liquidationDelay",
                        "signature": "liquidationDelay()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 83
                    },
                    {
                        "name": "liquidationRatio",
                        "signature": "liquidationRatio()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 87
                    },
                    {
                        "name": "liquidationPenalty",
                        "signature": "liquidationPenalty()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 91
                    },
                    {
                        "name": "liquidationCollateralRatio",
                        "signature": "liquidationCollateralRatio()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 95
                    },
                    {
                        "name": "getLiquidationDeadlineForAccount",
                        "signature": "getLiquidationDeadlineForAccount(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 99
                    },
                    {
                        "name": "isOpenForLiquidation",
                        "signature": "isOpenForLiquidation(address account)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 104
                    },
                    {
                        "name": "isLiquidationDeadlinePassed",
                        "signature": "isLiquidationDeadlinePassed(address account)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 122
                    },
                    {
                        "name": "_deadlinePassed",
                        "signature": "_deadlinePassed(uint256 deadline)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 127
                    },
                    {
                        "name": "calculateAmountToFixCollateral",
                        "signature": "calculateAmountToFixCollateral(uint256 debtBalance, uint256 collateral)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 140
                    },
                    {
                        "name": "_getLiquidationEntryForAccount",
                        "signature": "_getLiquidationEntryForAccount(address account)",
                        "returns": "(struct Liquidations.LiquidationEntry)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 152
                    },
                    {
                        "name": "_getKey",
                        "signature": "_getKey(bytes32 _scope, address _account)",
                        "returns": "(bytes32)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "pure",
                        "requires": [],
                        "lineNumber": 159
                    },
                    {
                        "name": "flagAccountForLiquidation",
                        "signature": "flagAccountForLiquidation(address account)",
                        "returns": "()",
                        "events": [
                            "AccountFlaggedForLiquidation"
                        ],
                        "modifiers": [
                            "rateNotInvalid"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 170,
                                "name": "require(..., Liquidation ratio not set)"
                            },
                            {
                                "lineNumber": 171,
                                "name": "require(..., Liquidation delay not set)"
                            },
                            {
                                "lineNumber": 174,
                                "name": "require(..., Account already flagged for liquidation)"
                            },
                            {
                                "lineNumber": 179,
                                "name": "require(..., Account issuance ratio is less than liquidation ratio)"
                            }
                        ],
                        "lineNumber": 167
                    },
                    {
                        "name": "removeAccountInLiquidation",
                        "signature": "removeAccountInLiquidation(address account)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyIssuer"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 193
                    },
                    {
                        "name": "checkAndRemoveAccountInLiquidation",
                        "signature": "checkAndRemoveAccountInLiquidation(address account)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "rateNotInvalid"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 208,
                                "name": "require(..., Account has no liquidation set)"
                            }
                        ],
                        "lineNumber": 203
                    },
                    {
                        "name": "_storeLiquidationEntry",
                        "signature": "_storeLiquidationEntry(address _account, uint256 _deadline, address _caller)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 218
                    },
                    {
                        "name": "_removeLiquidationEntry",
                        "signature": "_removeLiquidationEntry(address _account)",
                        "returns": "()",
                        "events": [
                            "AccountRemovedFromLiquidation"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 228
                    }
                ],
                "events": [
                    {
                        "name": "AccountFlaggedForLiquidation",
                        "parameters": "(address account, uint256 deadline)",
                        "lineNumber": 250
                    },
                    {
                        "name": "AccountRemovedFromLiquidation",
                        "parameters": "(address account, uint256 time)",
                        "lineNumber": 251
                    }
                ],
                "variables": [
                    {
                        "name": "CONTRACT_SYSTEMSTATUS",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 32,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_SYNTHETIX",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 33,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_ETERNALSTORAGE_LIQUIDATIONS",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 34,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_ISSUER",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 35,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_EXRATES",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 36,
                        "visibility": "private"
                    },
                    {
                        "name": "LIQUIDATION_DEADLINE",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 41,
                        "visibility": "public"
                    },
                    {
                        "name": "LIQUIDATION_CALLER",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 42,
                        "visibility": "public"
                    }
                ],
                "modifiers": [
                    {
                        "name": "onlyIssuer",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 238
                    },
                    {
                        "name": "rateNotInvalid",
                        "parameters": "(bytes32 currencyKey)",
                        "visibility": "internal",
                        "lineNumber": 243
                    }
                ],
                "structs": [
                    {
                        "name": "LiquidationEntry",
                        "members": [
                            {
                                "name": "deadline",
                                "type": "uint256"
                            },
                            {
                                "name": "caller",
                                "type": "address"
                            }
                        ],
                        "lineNumber": 25
                    }
                ],
                "inherits": [
                    "Owned",
                    "MixinSystemSettings",
                    "ILiquidations"
                ],
                "libraries": [
                    {
                        "name": "SafeMath",
                        "type": "uint"
                    },
                    {
                        "name": "SafeDecimalMath",
                        "type": "uint"
                    }
                ]
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/Math.sol": {
        "imports": [
            "contracts/SafeDecimalMath.sol"
        ],
        "contracts": {},
        "interfaces": {},
        "libraries": {
            "Math": {
                "functions": [
                    {
                        "name": "powDecimal",
                        "signature": "powDecimal(uint256 x, uint256 n)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "pure",
                        "requires": [],
                        "lineNumber": 18
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": [
                    {
                        "name": "SafeMath",
                        "type": "uint"
                    },
                    {
                        "name": "SafeDecimalMath",
                        "type": "uint"
                    }
                ]
            }
        }
    },
    "contracts/MintableSynthetix.sol": {
        "imports": [
            "contracts/BaseSynthetix.sol"
        ],
        "contracts": {
            "MintableSynthetix": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address payable _proxy, contract TokenState _tokenState, address _owner, uint256 _totalSupply, address _resolver)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "BaseSynthetix"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 11
                    },
                    {
                        "name": "_mintSecondary",
                        "signature": "_mintSecondary(address account, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 21
                    },
                    {
                        "name": "onlyAllowFromBridge",
                        "signature": "onlyAllowFromBridge()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 28,
                                "name": "require(..., Can only be invoked by bridge)"
                            }
                        ],
                        "lineNumber": 27
                    },
                    {
                        "name": "resolverAddressesRequired",
                        "signature": "resolverAddressesRequired()",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 39
                    },
                    {
                        "name": "synthetixBridge",
                        "signature": "synthetixBridge()",
                        "returns": "(address)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 46
                    },
                    {
                        "name": "mintSecondary",
                        "signature": "mintSecondary(address account, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyBridge"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 52
                    },
                    {
                        "name": "mintSecondaryRewards",
                        "signature": "mintSecondaryRewards(uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyBridge"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 56
                    },
                    {
                        "name": "burnSecondary",
                        "signature": "burnSecondary(address account, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyBridge",
                            "systemActive"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 62
                    }
                ],
                "events": [],
                "variables": [
                    {
                        "name": "CONTRACT_SYNTHETIX_BRIDGE",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 9,
                        "visibility": "private"
                    }
                ],
                "modifiers": [
                    {
                        "name": "onlyBridge",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 33
                    }
                ],
                "structs": [],
                "inherits": [
                    "BaseSynthetix"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/MultiCollateralSynth.sol": {
        "imports": [
            "contracts/Synth.sol",
            "contracts/interfaces/ICollateralManager.sol",
            "contracts/interfaces/IEtherCollateralsUSD.sol",
            "contracts/interfaces/IEtherCollateral.sol"
        ],
        "contracts": {
            "MultiCollateralSynth": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address payable _proxy, contract TokenState _tokenState, string _tokenName, string _tokenSymbol, address _owner, bytes32 _currencyKey, uint256 _totalSupply, address _resolver)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Synth"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 22
                    },
                    {
                        "name": "collateralManager",
                        "signature": "collateralManager()",
                        "returns": "(contract ICollateralManager)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 35
                    },
                    {
                        "name": "etherCollateral",
                        "signature": "etherCollateral()",
                        "returns": "(contract IEtherCollateral)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 39
                    },
                    {
                        "name": "etherCollateralsUSD",
                        "signature": "etherCollateralsUSD()",
                        "returns": "(contract IEtherCollateralsUSD)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 43
                    },
                    {
                        "name": "resolverAddressesRequired",
                        "signature": "resolverAddressesRequired()",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 47
                    },
                    {
                        "name": "issue",
                        "signature": "issue(address account, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyInternalContracts"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 63
                    },
                    {
                        "name": "burn",
                        "signature": "burn(address account, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyInternalContracts"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 72
                    }
                ],
                "events": [],
                "variables": [
                    {
                        "name": "CONTRACT_COLLATERALMANAGER",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 16,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_ETH_COLLATERAL",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 17,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_ETH_COLLATERAL_SUSD",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 18,
                        "visibility": "private"
                    }
                ],
                "modifiers": [
                    {
                        "name": "onlyInternalContracts",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 79
                    }
                ],
                "structs": [],
                "inherits": [
                    "Synth"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/Synth.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/ExternStateToken.sol",
            "contracts/MixinResolver.sol",
            "contracts/interfaces/ISynth.sol",
            "contracts/interfaces/IERC20.sol",
            "contracts/interfaces/ISystemStatus.sol",
            "contracts/interfaces/IFeePool.sol",
            "contracts/interfaces/IExchanger.sol",
            "contracts/interfaces/IIssuer.sol"
        ],
        "contracts": {
            "Synth": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address payable _proxy, contract TokenState _tokenState, string _tokenName, string _tokenSymbol, address _owner, bytes32 _currencyKey, uint256 _totalSupply, address _resolver)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "ExternStateToken",
                            "MixinResolver"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 52,
                                "name": "require(..., _proxy cannot be 0)"
                            },
                            {
                                "lineNumber": 53,
                                "name": "require(..., _owner cannot be 0)"
                            }
                        ],
                        "lineNumber": 38
                    },
                    {
                        "name": "transfer",
                        "signature": "transfer(address to, uint256 value)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [
                            "optionalProxy"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 60
                    },
                    {
                        "name": "transferAndSettle",
                        "signature": "transferAndSettle(address to, uint256 value)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [
                            "optionalProxy"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 76
                    },
                    {
                        "name": "transferFrom",
                        "signature": "transferFrom(address from, address to, uint256 value)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [
                            "optionalProxy"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 93
                    },
                    {
                        "name": "transferFromAndSettle",
                        "signature": "transferFromAndSettle(address from, address to, uint256 value)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [
                            "optionalProxy"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 103
                    },
                    {
                        "name": "_transferToFeeAddress",
                        "signature": "_transferToFeeAddress(address to, uint256 value)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 128
                    },
                    {
                        "name": "issue",
                        "signature": "issue(address account, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyInternalContracts"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 146
                    },
                    {
                        "name": "burn",
                        "signature": "burn(address account, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyInternalContracts"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 150
                    },
                    {
                        "name": "_internalIssue",
                        "signature": "_internalIssue(address account, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 154
                    },
                    {
                        "name": "_internalBurn",
                        "signature": "_internalBurn(address account, uint256 amount)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 161
                    },
                    {
                        "name": "setTotalSupply",
                        "signature": "setTotalSupply(uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "optionalProxy_onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 171
                    },
                    {
                        "name": "resolverAddressesRequired",
                        "signature": "resolverAddressesRequired()",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 178
                    },
                    {
                        "name": "systemStatus",
                        "signature": "systemStatus()",
                        "returns": "(contract ISystemStatus)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 186
                    },
                    {
                        "name": "feePool",
                        "signature": "feePool()",
                        "returns": "(contract IFeePool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 190
                    },
                    {
                        "name": "exchanger",
                        "signature": "exchanger()",
                        "returns": "(contract IExchanger)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 194
                    },
                    {
                        "name": "issuer",
                        "signature": "issuer()",
                        "returns": "(contract IIssuer)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 198
                    },
                    {
                        "name": "_ensureCanTransfer",
                        "signature": "_ensureCanTransfer(address from, uint256 value)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 203,
                                "name": "require(..., Cannot transfer during waiting period)"
                            },
                            {
                                "lineNumber": 204,
                                "name": "require(..., Insufficient balance after any settlement owing)"
                            }
                        ],
                        "lineNumber": 202
                    },
                    {
                        "name": "transferableSynths",
                        "signature": "transferableSynths(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 208
                    },
                    {
                        "name": "_internalTransferFrom",
                        "signature": "_internalTransferFrom(address from, address to, uint256 value)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 225
                    },
                    {
                        "name": "emitIssued",
                        "signature": "emitIssued(address account, uint256 value)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 255
                    },
                    {
                        "name": "emitBurned",
                        "signature": "emitBurned(address account, uint256 value)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 262
                    }
                ],
                "events": [
                    {
                        "name": "Issued",
                        "parameters": "(address account, uint256 value)",
                        "lineNumber": 252
                    },
                    {
                        "name": "Burned",
                        "parameters": "(address account, uint256 value)",
                        "lineNumber": 259
                    }
                ],
                "variables": [
                    {
                        "name": "currencyKey",
                        "constant": false,
                        "type": "bytes32",
                        "lineNumber": 22,
                        "visibility": "public"
                    },
                    {
                        "name": "DECIMALS",
                        "constant": true,
                        "type": "uint8",
                        "lineNumber": 24,
                        "visibility": "public"
                    },
                    {
                        "name": "FEE_ADDRESS",
                        "constant": true,
                        "type": "address",
                        "lineNumber": 27,
                        "visibility": "public"
                    },
                    {
                        "name": "CONTRACT_SYSTEMSTATUS",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 31,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_EXCHANGER",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 32,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_ISSUER",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 33,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_FEEPOOL",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 34,
                        "visibility": "private"
                    },
                    {
                        "name": "ISSUED_SIG",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 253,
                        "visibility": "private"
                    },
                    {
                        "name": "BURNED_SIG",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 260,
                        "visibility": "private"
                    }
                ],
                "modifiers": [
                    {
                        "name": "onlyInternalContracts",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 242
                    }
                ],
                "structs": [],
                "inherits": [
                    "Owned",
                    "IERC20",
                    "ExternStateToken",
                    "MixinResolver",
                    "ISynth"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/ProxyERC20.sol": {
        "imports": [
            "contracts/Proxy.sol",
            "contracts/interfaces/IERC20.sol"
        ],
        "contracts": {
            "ProxyERC20": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Proxy"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 10
                    },
                    {
                        "name": "name",
                        "signature": "name()",
                        "returns": "(string)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 14
                    },
                    {
                        "name": "symbol",
                        "signature": "symbol()",
                        "returns": "(string)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 19
                    },
                    {
                        "name": "decimals",
                        "signature": "decimals()",
                        "returns": "(uint8)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 24
                    },
                    {
                        "name": "totalSupply",
                        "signature": "totalSupply()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 34
                    },
                    {
                        "name": "balanceOf",
                        "signature": "balanceOf(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 44
                    },
                    {
                        "name": "allowance",
                        "signature": "allowance(address owner, address spender)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 55
                    },
                    {
                        "name": "transfer",
                        "signature": "transfer(address to, uint256 value)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 65
                    },
                    {
                        "name": "approve",
                        "signature": "approve(address spender, uint256 value)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 85
                    },
                    {
                        "name": "transferFrom",
                        "signature": "transferFrom(address from, address to, uint256 value)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 102
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [
                    "Proxy",
                    "IERC20"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/PurgeableSynth.sol": {
        "imports": [
            "contracts/Synth.sol",
            "contracts/SafeDecimalMath.sol",
            "contracts/interfaces/IExchangeRates.sol"
        ],
        "contracts": {
            "PurgeableSynth": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address payable _proxy, contract TokenState _tokenState, string _tokenName, string _tokenSymbol, address payable _owner, bytes32 _currencyKey, uint256 _totalSupply, address _resolver)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Synth"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 24
                    },
                    {
                        "name": "resolverAddressesRequired",
                        "signature": "resolverAddressesRequired()",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 36
                    },
                    {
                        "name": "exchangeRates",
                        "signature": "exchangeRates()",
                        "returns": "(contract IExchangeRates)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 43
                    },
                    {
                        "name": "purge",
                        "signature": "purge(address[] addresses)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "optionalProxy_onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 55,
                                "name": "require(..., Cannot purge as total supply is above threshold and rate is not frozen.)"
                            }
                        ],
                        "lineNumber": 49
                    },
                    {
                        "name": "emitPurged",
                        "signature": "emitPurged(address account, uint256 value)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 76
                    }
                ],
                "events": [
                    {
                        "name": "Purged",
                        "parameters": "(address account, uint256 value)",
                        "lineNumber": 73
                    }
                ],
                "variables": [
                    {
                        "name": "maxSupplyToPurgeInUSD",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 18,
                        "visibility": "public"
                    },
                    {
                        "name": "CONTRACT_EXRATES",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 20,
                        "visibility": "private"
                    },
                    {
                        "name": "PURGED_SIG",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 74,
                        "visibility": "private"
                    }
                ],
                "modifiers": [],
                "structs": [],
                "inherits": [
                    "Synth"
                ],
                "libraries": [
                    {
                        "name": "SafeDecimalMath",
                        "type": "uint"
                    }
                ]
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/RealtimeDebtCache.sol": {
        "imports": [
            "contracts/DebtCache.sol"
        ],
        "contracts": {
            "RealtimeDebtCache": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, address _resolver)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "DebtCache"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 9
                    },
                    {
                        "name": "debtSnapshotStaleTime",
                        "signature": "debtSnapshotStaleTime()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 13
                    },
                    {
                        "name": "cachedDebt",
                        "signature": "cachedDebt()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 17
                    },
                    {
                        "name": "cachedSynthDebt",
                        "signature": "cachedSynthDebt(bytes32 currencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 22
                    },
                    {
                        "name": "cacheTimestamp",
                        "signature": "cacheTimestamp()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 29
                    },
                    {
                        "name": "cacheStale",
                        "signature": "cacheStale()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 33
                    },
                    {
                        "name": "cacheInvalid",
                        "signature": "cacheInvalid()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 37
                    },
                    {
                        "name": "cachedSynthDebts",
                        "signature": "cachedSynthDebts(bytes32[] currencyKeys)",
                        "returns": "(uint256[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 42
                    },
                    {
                        "name": "cacheInfo",
                        "signature": "cacheInfo()",
                        "returns": "(uint256, uint256, bool, bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 47
                    },
                    {
                        "name": "purgeCachedSynthDebt",
                        "signature": "purgeCachedSynthDebt(bytes32 currencyKey)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 64
                    },
                    {
                        "name": "takeDebtSnapshot",
                        "signature": "takeDebtSnapshot()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 66
                    },
                    {
                        "name": "updateCachedSynthDebts",
                        "signature": "updateCachedSynthDebts(bytes32[] currencyKeys)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 68
                    },
                    {
                        "name": "updateCachedSynthDebtWithRate",
                        "signature": "updateCachedSynthDebtWithRate(bytes32 currencyKey, uint256 currencyRate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 70
                    },
                    {
                        "name": "updateCachedSynthDebtsWithRates",
                        "signature": "updateCachedSynthDebtsWithRates(bytes32[] currencyKeys, uint256[] currencyRates)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 72
                    },
                    {
                        "name": "updateDebtCacheValidity",
                        "signature": "updateDebtCacheValidity(bool currentlyInvalid)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 74
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [
                    "DebtCache"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/RewardEscrow.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/interfaces/IRewardEscrow.sol",
            "contracts/SafeDecimalMath.sol",
            "contracts/interfaces/IERC20.sol",
            "contracts/interfaces/IFeePool.sol",
            "contracts/interfaces/ISynthetix.sol"
        ],
        "contracts": {
            "RewardEscrow": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, contract ISynthetix _synthetix, contract IFeePool _feePool)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 47
                    },
                    {
                        "name": "setSynthetix",
                        "signature": "setSynthetix(contract ISynthetix _synthetix)",
                        "returns": "()",
                        "events": [
                            "SynthetixUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 61
                    },
                    {
                        "name": "setFeePool",
                        "signature": "setFeePool(contract IFeePool _feePool)",
                        "returns": "()",
                        "events": [
                            "FeePoolUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 70
                    },
                    {
                        "name": "balanceOf",
                        "signature": "balanceOf(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 80
                    },
                    {
                        "name": "_numVestingEntries",
                        "signature": "_numVestingEntries(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 84
                    },
                    {
                        "name": "numVestingEntries",
                        "signature": "numVestingEntries(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 91
                    },
                    {
                        "name": "getVestingScheduleEntry",
                        "signature": "getVestingScheduleEntry(address account, uint256 index)",
                        "returns": "(uint256[2])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 99
                    },
                    {
                        "name": "getVestingTime",
                        "signature": "getVestingTime(address account, uint256 index)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 106
                    },
                    {
                        "name": "getVestingQuantity",
                        "signature": "getVestingQuantity(address account, uint256 index)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 113
                    },
                    {
                        "name": "getNextVestingIndex",
                        "signature": "getNextVestingIndex(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 120
                    },
                    {
                        "name": "getNextVestingEntry",
                        "signature": "getNextVestingEntry(address account)",
                        "returns": "(uint256[2])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 133
                    },
                    {
                        "name": "getNextVestingTime",
                        "signature": "getNextVestingTime(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 144
                    },
                    {
                        "name": "getNextVestingQuantity",
                        "signature": "getNextVestingQuantity(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 151
                    },
                    {
                        "name": "checkAccountSchedule",
                        "signature": "checkAccountSchedule(address account)",
                        "returns": "(uint256[520])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 161
                    },
                    {
                        "name": "_appendVestingEntry",
                        "signature": "_appendVestingEntry(address account, uint256 quantity)",
                        "returns": "()",
                        "events": [
                            "VestingEntryCreated"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 176,
                                "name": "require(..., Quantity cannot be zero)"
                            },
                            {
                                "lineNumber": 180,
                                "name": "require(..., Must be enough balance in the contract to provide for the vesting entry)"
                            },
                            {
                                "lineNumber": 187,
                                "name": "require(..., Vesting schedule is too long)"
                            }
                        ],
                        "lineNumber": 174
                    },
                    {
                        "name": "appendVestingEntry",
                        "signature": "appendVestingEntry(address account, uint256 quantity)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyFeePool"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 218
                    },
                    {
                        "name": "vest",
                        "signature": "vest()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 225
                    }
                ],
                "events": [
                    {
                        "name": "SynthetixUpdated",
                        "parameters": "(address newSynthetix)",
                        "lineNumber": 261
                    },
                    {
                        "name": "FeePoolUpdated",
                        "parameters": "(address newFeePool)",
                        "lineNumber": 263
                    },
                    {
                        "name": "Vested",
                        "parameters": "(address beneficiary, uint256 time, uint256 value)",
                        "lineNumber": 265
                    },
                    {
                        "name": "VestingEntryCreated",
                        "parameters": "(address beneficiary, uint256 time, uint256 value)",
                        "lineNumber": 267
                    }
                ],
                "variables": [
                    {
                        "name": "synthetix",
                        "constant": false,
                        "type": "contract ISynthetix",
                        "lineNumber": 21,
                        "visibility": "public"
                    },
                    {
                        "name": "feePool",
                        "constant": false,
                        "type": "contract IFeePool",
                        "lineNumber": 23,
                        "visibility": "public"
                    },
                    {
                        "name": "vestingSchedules",
                        "constant": false,
                        "type": "mapping(address => uint256[2][])",
                        "lineNumber": 27,
                        "visibility": "public"
                    },
                    {
                        "name": "totalEscrowedAccountBalance",
                        "constant": false,
                        "type": "mapping(address => uint256)",
                        "lineNumber": 30,
                        "visibility": "public"
                    },
                    {
                        "name": "totalVestedAccountBalance",
                        "constant": false,
                        "type": "mapping(address => uint256)",
                        "lineNumber": 33,
                        "visibility": "public"
                    },
                    {
                        "name": "totalEscrowedBalance",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 36,
                        "visibility": "public"
                    },
                    {
                        "name": "TIME_INDEX",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 38,
                        "visibility": "internal"
                    },
                    {
                        "name": "QUANTITY_INDEX",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 39,
                        "visibility": "internal"
                    },
                    {
                        "name": "MAX_VESTING_ENTRIES",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 43,
                        "visibility": "public"
                    }
                ],
                "modifiers": [
                    {
                        "name": "onlyFeePool",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 252
                    }
                ],
                "structs": [],
                "inherits": [
                    "Owned",
                    "IRewardEscrow"
                ],
                "libraries": [
                    {
                        "name": "SafeMath",
                        "type": "uint"
                    }
                ]
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/RewardEscrowV2.sol": {
        "imports": [
            "contracts/BaseRewardEscrowV2.sol",
            "contracts/interfaces/IRewardEscrow.sol",
            "contracts/interfaces/ISystemStatus.sol"
        ],
        "contracts": {
            "RewardEscrowV2": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, address _resolver)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "BaseRewardEscrowV2"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 26
                    },
                    {
                        "name": "resolverAddressesRequired",
                        "signature": "resolverAddressesRequired()",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 30
                    },
                    {
                        "name": "synthetixBridgeToOptimism",
                        "signature": "synthetixBridgeToOptimism()",
                        "returns": "(address)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 39
                    },
                    {
                        "name": "oldRewardEscrow",
                        "signature": "oldRewardEscrow()",
                        "returns": "(contract IRewardEscrow)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 43
                    },
                    {
                        "name": "systemStatus",
                        "signature": "systemStatus()",
                        "returns": "(contract ISystemStatus)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 47
                    },
                    {
                        "name": "setMigrateEntriesThresholdAmount",
                        "signature": "setMigrateEntriesThresholdAmount(uint256 amount)",
                        "returns": "()",
                        "events": [
                            "MigrateEntriesThresholdAmountUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 59
                    },
                    {
                        "name": "migrateVestingSchedule",
                        "signature": "migrateVestingSchedule(address addressToMigrate)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "systemActive"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 68,
                                "name": "require(..., No escrow migration pending)"
                            },
                            {
                                "lineNumber": 69,
                                "name": "require(..., Address escrow balance is 0)"
                            }
                        ],
                        "lineNumber": 65
                    },
                    {
                        "name": "importVestingSchedule",
                        "signature": "importVestingSchedule(address[] accounts, uint256[] escrowAmounts)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyDuringSetup",
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 122,
                                "name": "require(..., Account and escrowAmounts Length mismatch)"
                            }
                        ],
                        "lineNumber": 117
                    },
                    {
                        "name": "migrateAccountEscrowBalances",
                        "signature": "migrateAccountEscrowBalances(address[] accounts, uint256[] escrowBalances, uint256[] vestedBalances)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyDuringSetup",
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 156,
                                "name": "require(..., Number of accounts and balances don't match)"
                            },
                            {
                                "lineNumber": 157,
                                "name": "require(..., Number of accounts and vestedBalances don't match)"
                            }
                        ],
                        "lineNumber": 151
                    },
                    {
                        "name": "_importVestingEntry",
                        "signature": "_importVestingEntry(address account, struct VestingEntries.VestingEntry entry)",
                        "returns": "()",
                        "events": [
                            "ImportedVestingEntry"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 182
                    },
                    {
                        "name": "burnForMigration",
                        "signature": "burnForMigration(address account, uint256[] entryIDs)",
                        "returns": "(uint256, struct VestingEntries.VestingEntry[])",
                        "events": [
                            "BurnedForMigrationToL2"
                        ],
                        "modifiers": [
                            "onlySynthetixBridge"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 196,
                                "name": "require(..., Entry IDs required)"
                            }
                        ],
                        "lineNumber": 191
                    }
                ],
                "events": [
                    {
                        "name": "MigratedAccountEscrow",
                        "parameters": "(address account, uint256 escrowedAmount, uint256 vestedAmount, uint256 time)",
                        "lineNumber": 241
                    },
                    {
                        "name": "ImportedVestingSchedule",
                        "parameters": "(address account, uint256 time, uint256 escrowAmount)",
                        "lineNumber": 242
                    },
                    {
                        "name": "BurnedForMigrationToL2",
                        "parameters": "(address account, uint256[] entryIDs, uint256 escrowedAmountMigrated, uint256 time)",
                        "lineNumber": 243
                    },
                    {
                        "name": "ImportedVestingEntry",
                        "parameters": "(address account, uint256 entryID, uint256 escrowAmount, uint256 endTime)",
                        "lineNumber": 244
                    },
                    {
                        "name": "MigrateEntriesThresholdAmountUpdated",
                        "parameters": "(uint256 newAmount)",
                        "lineNumber": 245
                    }
                ],
                "variables": [
                    {
                        "name": "totalBalancePendingMigration",
                        "constant": false,
                        "type": "mapping(address => uint256)",
                        "lineNumber": 14,
                        "visibility": "public"
                    },
                    {
                        "name": "migrateEntriesThresholdAmount",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 16,
                        "visibility": "public"
                    },
                    {
                        "name": "CONTRACT_SYNTHETIX_BRIDGE_OPTIMISM",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 20,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_REWARD_ESCROW",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 21,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_SYSTEMSTATUS",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 22,
                        "visibility": "private"
                    },
                    {
                        "name": "TIME_INDEX",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 53,
                        "visibility": "internal"
                    },
                    {
                        "name": "QUANTITY_INDEX",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 54,
                        "visibility": "internal"
                    }
                ],
                "modifiers": [
                    {
                        "name": "onlySynthetixBridge",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 230
                    },
                    {
                        "name": "systemActive",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 235
                    }
                ],
                "structs": [],
                "inherits": [
                    "BaseRewardEscrowV2"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/RewardsDistribution.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/interfaces/IRewardsDistribution.sol",
            "contracts/SafeDecimalMath.sol",
            "contracts/interfaces/IERC20.sol",
            "contracts/interfaces/IFeePool.sol",
            "contracts/interfaces/IRewardsDistribution.sol"
        ],
        "contracts": {
            "RewardsDistribution": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, address _authority, address _synthetixProxy, address _rewardEscrow, address _feePoolProxy)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 50
                    },
                    {
                        "name": "setSynthetixProxy",
                        "signature": "setSynthetixProxy(address _synthetixProxy)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 65
                    },
                    {
                        "name": "setRewardEscrow",
                        "signature": "setRewardEscrow(address _rewardEscrow)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 69
                    },
                    {
                        "name": "setFeePoolProxy",
                        "signature": "setFeePoolProxy(address _feePoolProxy)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 73
                    },
                    {
                        "name": "setAuthority",
                        "signature": "setAuthority(address _authority)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 81
                    },
                    {
                        "name": "addRewardDistribution",
                        "signature": "addRewardDistribution(address destination, uint256 amount)",
                        "returns": "(bool)",
                        "events": [
                            "RewardDistributionAdded"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 96,
                                "name": "require(..., Cant add a zero address)"
                            },
                            {
                                "lineNumber": 97,
                                "name": "require(..., Cant add a zero amount)"
                            }
                        ],
                        "lineNumber": 95
                    },
                    {
                        "name": "removeRewardDistribution",
                        "signature": "removeRewardDistribution(uint256 index)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 112,
                                "name": "require(..., index out of bounds)"
                            }
                        ],
                        "lineNumber": 111
                    },
                    {
                        "name": "editRewardDistribution",
                        "signature": "editRewardDistribution(uint256 index, address destination, uint256 amount)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 137,
                                "name": "require(..., index out of bounds)"
                            }
                        ],
                        "lineNumber": 132
                    },
                    {
                        "name": "distributeRewards",
                        "signature": "distributeRewards(uint256 amount)",
                        "returns": "(bool)",
                        "events": [
                            "RewardsDistributed"
                        ],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 146,
                                "name": "require(..., Nothing to distribute)"
                            },
                            {
                                "lineNumber": 147,
                                "name": "require(..., Caller is not authorised)"
                            },
                            {
                                "lineNumber": 148,
                                "name": "require(..., RewardEscrow is not set)"
                            },
                            {
                                "lineNumber": 149,
                                "name": "require(..., SynthetixProxy is not set)"
                            },
                            {
                                "lineNumber": 150,
                                "name": "require(..., FeePoolProxy is not set)"
                            },
                            {
                                "lineNumber": 151,
                                "name": "require(..., RewardsDistribution contract does not have enough tokens to distribute)"
                            }
                        ],
                        "lineNumber": 145
                    },
                    {
                        "name": "distributionsLength",
                        "signature": "distributionsLength()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 193
                    }
                ],
                "events": [
                    {
                        "name": "RewardDistributionAdded",
                        "parameters": "(uint256 index, address destination, uint256 amount)",
                        "lineNumber": 199
                    },
                    {
                        "name": "RewardsDistributed",
                        "parameters": "(uint256 amount)",
                        "lineNumber": 200
                    }
                ],
                "variables": [
                    {
                        "name": "authority",
                        "constant": false,
                        "type": "address",
                        "lineNumber": 24,
                        "visibility": "public"
                    },
                    {
                        "name": "synthetixProxy",
                        "constant": false,
                        "type": "address",
                        "lineNumber": 29,
                        "visibility": "public"
                    },
                    {
                        "name": "rewardEscrow",
                        "constant": false,
                        "type": "address",
                        "lineNumber": 34,
                        "visibility": "public"
                    },
                    {
                        "name": "feePoolProxy",
                        "constant": false,
                        "type": "address",
                        "lineNumber": 39,
                        "visibility": "public"
                    },
                    {
                        "name": "distributions",
                        "constant": false,
                        "type": "struct IRewardsDistribution.DistributionData[]",
                        "lineNumber": 44,
                        "visibility": "public"
                    }
                ],
                "modifiers": [],
                "structs": [],
                "inherits": [
                    "Owned",
                    "IRewardsDistribution"
                ],
                "libraries": [
                    {
                        "name": "SafeMath",
                        "type": "uint"
                    },
                    {
                        "name": "SafeDecimalMath",
                        "type": "uint"
                    }
                ]
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/RewardsDistributionRecipient.sol": {
        "imports": [
            "contracts/Owned.sol"
        ],
        "contracts": {
            "RewardsDistributionRecipient": {
                "functions": [
                    {
                        "name": "notifyRewardAmount",
                        "signature": "notifyRewardAmount(uint256 reward)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 11
                    },
                    {
                        "name": "setRewardsDistribution",
                        "signature": "setRewardsDistribution(address _rewardsDistribution)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 18
                    }
                ],
                "events": [],
                "variables": [
                    {
                        "name": "rewardsDistribution",
                        "constant": false,
                        "type": "address",
                        "lineNumber": 9,
                        "visibility": "public"
                    }
                ],
                "modifiers": [
                    {
                        "name": "onlyRewardsDistribution",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 13
                    }
                ],
                "structs": [],
                "inherits": [
                    "Owned"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/ShortingRewards.sol": {
        "imports": [
            "openzeppelin-solidity-2.3.0/contracts/math/Math.sol",
            "openzeppelin-solidity-2.3.0/contracts/math/SafeMath.sol",
            "openzeppelin-solidity-2.3.0/contracts/token/ERC20/ERC20Detailed.sol",
            "openzeppelin-solidity-2.3.0/contracts/token/ERC20/SafeERC20.sol",
            "openzeppelin-solidity-2.3.0/contracts/utils/ReentrancyGuard.sol",
            "contracts/interfaces/IShortingRewards.sol",
            "contracts/RewardsDistributionRecipient.sol",
            "contracts/Pausable.sol",
            "contracts/MixinResolver.sol",
            "contracts/interfaces/ICollateralErc20.sol"
        ],
        "contracts": {
            "ShortingRewards": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, address _resolver, address _rewardsDistribution, address _rewardsToken, address _short, bytes32 _synth)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned",
                            "MixinResolver"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 48
                    },
                    {
                        "name": "resolverAddressesRequired",
                        "signature": "resolverAddressesRequired()",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 62
                    },
                    {
                        "name": "_short",
                        "signature": "_short()",
                        "returns": "(contract ICollateralErc20)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 67
                    },
                    {
                        "name": "totalSupply",
                        "signature": "totalSupply()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 73
                    },
                    {
                        "name": "balanceOf",
                        "signature": "balanceOf(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 77
                    },
                    {
                        "name": "lastTimeRewardApplicable",
                        "signature": "lastTimeRewardApplicable()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 81
                    },
                    {
                        "name": "rewardPerToken",
                        "signature": "rewardPerToken()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 85
                    },
                    {
                        "name": "earned",
                        "signature": "earned(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 95
                    },
                    {
                        "name": "getRewardForDuration",
                        "signature": "getRewardForDuration()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 99
                    },
                    {
                        "name": "enrol",
                        "signature": "enrol(address account, uint256 amount)",
                        "returns": "()",
                        "events": [
                            "Enrol"
                        ],
                        "modifiers": [
                            "onlyShortContract",
                            "nonReentrant",
                            "notPaused",
                            "updateReward"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 107,
                                "name": "require(..., Cannot stake 0)"
                            }
                        ],
                        "lineNumber": 106
                    },
                    {
                        "name": "withdraw",
                        "signature": "withdraw(address account, uint256 amount)",
                        "returns": "()",
                        "events": [
                            "Withdrawn"
                        ],
                        "modifiers": [
                            "onlyShortContract",
                            "nonReentrant",
                            "updateReward"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 114,
                                "name": "require(..., Cannot withdraw 0)"
                            }
                        ],
                        "lineNumber": 113
                    },
                    {
                        "name": "getReward",
                        "signature": "getReward(address account)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "nonReentrant",
                            "updateReward"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 120
                    },
                    {
                        "name": "exit",
                        "signature": "exit(address account)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyShortContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 129
                    },
                    {
                        "name": "notifyRewardAmount",
                        "signature": "notifyRewardAmount(uint256 reward)",
                        "returns": "()",
                        "events": [
                            "RewardAdded"
                        ],
                        "modifiers": [
                            "onlyRewardsDistribution",
                            "updateReward"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 150,
                                "name": "require(..., Provided reward too high)"
                            }
                        ],
                        "lineNumber": 136
                    },
                    {
                        "name": "setRewardsDuration",
                        "signature": "setRewardsDuration(uint256 _rewardsDuration)",
                        "returns": "()",
                        "events": [
                            "RewardsDurationUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 158,
                                "name": "require(..., Previous rewards period must be complete before changing the duration for the new period)"
                            }
                        ],
                        "lineNumber": 157
                    }
                ],
                "events": [
                    {
                        "name": "RewardAdded",
                        "parameters": "(uint256 reward)",
                        "lineNumber": 185
                    },
                    {
                        "name": "Enrol",
                        "parameters": "(address user, uint256 amount)",
                        "lineNumber": 186
                    },
                    {
                        "name": "Withdrawn",
                        "parameters": "(address user, uint256 amount)",
                        "lineNumber": 187
                    },
                    {
                        "name": "RewardPaid",
                        "parameters": "(address user, uint256 reward)",
                        "lineNumber": 188
                    },
                    {
                        "name": "RewardsDurationUpdated",
                        "parameters": "(uint256 newDuration)",
                        "lineNumber": 189
                    },
                    {
                        "name": "Recovered",
                        "parameters": "(address token, uint256 amount)",
                        "lineNumber": 190
                    }
                ],
                "variables": [
                    {
                        "name": "rewardsToken",
                        "constant": false,
                        "type": "contract IERC20",
                        "lineNumber": 27,
                        "visibility": "public"
                    },
                    {
                        "name": "short",
                        "constant": false,
                        "type": "contract ICollateralErc20",
                        "lineNumber": 28,
                        "visibility": "public"
                    },
                    {
                        "name": "synth",
                        "constant": false,
                        "type": "bytes32",
                        "lineNumber": 29,
                        "visibility": "public"
                    },
                    {
                        "name": "periodFinish",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 30,
                        "visibility": "public"
                    },
                    {
                        "name": "rewardRate",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 31,
                        "visibility": "public"
                    },
                    {
                        "name": "rewardsDuration",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 32,
                        "visibility": "public"
                    },
                    {
                        "name": "lastUpdateTime",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 33,
                        "visibility": "public"
                    },
                    {
                        "name": "rewardPerTokenStored",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 34,
                        "visibility": "public"
                    },
                    {
                        "name": "userRewardPerTokenPaid",
                        "constant": false,
                        "type": "mapping(address => uint256)",
                        "lineNumber": 36,
                        "visibility": "public"
                    },
                    {
                        "name": "rewards",
                        "constant": false,
                        "type": "mapping(address => uint256)",
                        "lineNumber": 37,
                        "visibility": "public"
                    },
                    {
                        "name": "_totalSupply",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 39,
                        "visibility": "private"
                    },
                    {
                        "name": "_balances",
                        "constant": false,
                        "type": "mapping(address => uint256)",
                        "lineNumber": 40,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_SHORT",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 44,
                        "visibility": "private"
                    }
                ],
                "modifiers": [
                    {
                        "name": "updateReward",
                        "parameters": "(address account)",
                        "visibility": "internal",
                        "lineNumber": 168
                    },
                    {
                        "name": "onlyShortContract",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 178
                    }
                ],
                "structs": [],
                "inherits": [
                    "IShortingRewards",
                    "RewardsDistributionRecipient",
                    "ReentrancyGuard",
                    "Pausable",
                    "MixinResolver"
                ],
                "libraries": [
                    {
                        "name": "SafeMath",
                        "type": "uint256"
                    },
                    {
                        "name": "SafeERC20",
                        "type": "IERC20"
                    }
                ]
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "openzeppelin-solidity-2.3.0/contracts/math/Math.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {},
        "libraries": {
            "Math": {
                "functions": [
                    {
                        "name": "max",
                        "signature": "max(uint256 a, uint256 b)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "pure",
                        "requires": [],
                        "lineNumber": 10
                    },
                    {
                        "name": "min",
                        "signature": "min(uint256 a, uint256 b)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "pure",
                        "requires": [],
                        "lineNumber": 17
                    },
                    {
                        "name": "average",
                        "signature": "average(uint256 a, uint256 b)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "pure",
                        "requires": [],
                        "lineNumber": 25
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        }
    },
    "openzeppelin-solidity-2.3.0/contracts/token/ERC20/ERC20Detailed.sol": {
        "imports": [
            "openzeppelin-solidity-2.3.0/contracts/token/ERC20/IERC20.sol"
        ],
        "contracts": {
            "ERC20Detailed": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(string name, string symbol, uint8 decimals)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 18
                    },
                    {
                        "name": "name",
                        "signature": "name()",
                        "returns": "(string)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 27
                    },
                    {
                        "name": "symbol",
                        "signature": "symbol()",
                        "returns": "(string)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 35
                    },
                    {
                        "name": "decimals",
                        "signature": "decimals()",
                        "returns": "(uint8)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 51
                    }
                ],
                "events": [],
                "variables": [
                    {
                        "name": "_name",
                        "constant": false,
                        "type": "string",
                        "lineNumber": 9,
                        "visibility": "private"
                    },
                    {
                        "name": "_symbol",
                        "constant": false,
                        "type": "string",
                        "lineNumber": 10,
                        "visibility": "private"
                    },
                    {
                        "name": "_decimals",
                        "constant": false,
                        "type": "uint8",
                        "lineNumber": 11,
                        "visibility": "private"
                    }
                ],
                "modifiers": [],
                "structs": [],
                "inherits": [
                    "IERC20"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "openzeppelin-solidity-2.3.0/contracts/token/ERC20/SafeERC20.sol": {
        "imports": [
            "openzeppelin-solidity-2.3.0/contracts/token/ERC20/IERC20.sol",
            "openzeppelin-solidity-2.3.0/contracts/math/SafeMath.sol",
            "openzeppelin-solidity-2.3.0/contracts/utils/Address.sol"
        ],
        "contracts": {},
        "interfaces": {},
        "libraries": {
            "SafeERC20": {
                "functions": [
                    {
                        "name": "safeTransfer",
                        "signature": "safeTransfer(contract IERC20 token, address to, uint256 value)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 20
                    },
                    {
                        "name": "safeTransferFrom",
                        "signature": "safeTransferFrom(contract IERC20 token, address from, address to, uint256 value)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 24
                    },
                    {
                        "name": "safeApprove",
                        "signature": "safeApprove(contract IERC20 token, address spender, uint256 value)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 33,
                                "name": "require(..., SafeERC20: approve from non-zero to non-zero allowance)"
                            }
                        ],
                        "lineNumber": 28
                    },
                    {
                        "name": "safeIncreaseAllowance",
                        "signature": "safeIncreaseAllowance(contract IERC20 token, address spender, uint256 value)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 39
                    },
                    {
                        "name": "safeDecreaseAllowance",
                        "signature": "safeDecreaseAllowance(contract IERC20 token, address spender, uint256 value)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 44
                    },
                    {
                        "name": "callOptionalReturn",
                        "signature": "callOptionalReturn(contract IERC20 token, bytes data)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "private",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 64,
                                "name": "require(..., SafeERC20: call to non-contract)"
                            },
                            {
                                "lineNumber": 68,
                                "name": "require(..., SafeERC20: low-level call failed)"
                            }
                        ],
                        "lineNumber": 55
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": [
                    {
                        "name": "SafeMath",
                        "type": "uint256"
                    },
                    {
                        "name": "Address",
                        "type": "address"
                    }
                ]
            }
        }
    },
    "openzeppelin-solidity-2.3.0/contracts/utils/Address.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {},
        "libraries": {
            "Address": {
                "functions": [
                    {
                        "name": "isContract",
                        "signature": "isContract(address account)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 17
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        }
    },
    "contracts/StakingRewards.sol": {
        "imports": [
            "openzeppelin-solidity-2.3.0/contracts/math/Math.sol",
            "openzeppelin-solidity-2.3.0/contracts/math/SafeMath.sol",
            "openzeppelin-solidity-2.3.0/contracts/token/ERC20/ERC20Detailed.sol",
            "openzeppelin-solidity-2.3.0/contracts/token/ERC20/SafeERC20.sol",
            "openzeppelin-solidity-2.3.0/contracts/utils/ReentrancyGuard.sol",
            "contracts/interfaces/IStakingRewards.sol",
            "contracts/RewardsDistributionRecipient.sol",
            "contracts/Pausable.sol"
        ],
        "contracts": {
            "StakingRewards": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, address _rewardsDistribution, address _rewardsToken, address _stakingToken)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 38
                    },
                    {
                        "name": "totalSupply",
                        "signature": "totalSupply()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 51
                    },
                    {
                        "name": "balanceOf",
                        "signature": "balanceOf(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 55
                    },
                    {
                        "name": "lastTimeRewardApplicable",
                        "signature": "lastTimeRewardApplicable()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 59
                    },
                    {
                        "name": "rewardPerToken",
                        "signature": "rewardPerToken()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 63
                    },
                    {
                        "name": "earned",
                        "signature": "earned(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 73
                    },
                    {
                        "name": "getRewardForDuration",
                        "signature": "getRewardForDuration()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 77
                    },
                    {
                        "name": "stake",
                        "signature": "stake(uint256 amount)",
                        "returns": "()",
                        "events": [
                            "Staked"
                        ],
                        "modifiers": [
                            "nonReentrant",
                            "notPaused",
                            "updateReward"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 84,
                                "name": "require(..., Cannot stake 0)"
                            }
                        ],
                        "lineNumber": 83
                    },
                    {
                        "name": "withdraw",
                        "signature": "withdraw(uint256 amount)",
                        "returns": "()",
                        "events": [
                            "Withdrawn"
                        ],
                        "modifiers": [
                            "nonReentrant",
                            "updateReward"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 92,
                                "name": "require(..., Cannot withdraw 0)"
                            }
                        ],
                        "lineNumber": 91
                    },
                    {
                        "name": "getReward",
                        "signature": "getReward()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "nonReentrant",
                            "updateReward"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 99
                    },
                    {
                        "name": "exit",
                        "signature": "exit()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 108
                    },
                    {
                        "name": "notifyRewardAmount",
                        "signature": "notifyRewardAmount(uint256 reward)",
                        "returns": "()",
                        "events": [
                            "RewardAdded"
                        ],
                        "modifiers": [
                            "onlyRewardsDistribution",
                            "updateReward"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 129,
                                "name": "require(..., Provided reward too high)"
                            }
                        ],
                        "lineNumber": 115
                    },
                    {
                        "name": "recoverERC20",
                        "signature": "recoverERC20(address tokenAddress, uint256 tokenAmount)",
                        "returns": "()",
                        "events": [
                            "Recovered"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 138,
                                "name": "require(..., Cannot withdraw the staking token)"
                            }
                        ],
                        "lineNumber": 137
                    },
                    {
                        "name": "setRewardsDuration",
                        "signature": "setRewardsDuration(uint256 _rewardsDuration)",
                        "returns": "()",
                        "events": [
                            "RewardsDurationUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 144,
                                "name": "require(..., Previous rewards period must be complete before changing the duration for the new period)"
                            }
                        ],
                        "lineNumber": 143
                    }
                ],
                "events": [
                    {
                        "name": "RewardAdded",
                        "parameters": "(uint256 reward)",
                        "lineNumber": 166
                    },
                    {
                        "name": "Staked",
                        "parameters": "(address user, uint256 amount)",
                        "lineNumber": 167
                    },
                    {
                        "name": "Withdrawn",
                        "parameters": "(address user, uint256 amount)",
                        "lineNumber": 168
                    },
                    {
                        "name": "RewardPaid",
                        "parameters": "(address user, uint256 reward)",
                        "lineNumber": 169
                    },
                    {
                        "name": "RewardsDurationUpdated",
                        "parameters": "(uint256 newDuration)",
                        "lineNumber": 170
                    },
                    {
                        "name": "Recovered",
                        "parameters": "(address token, uint256 amount)",
                        "lineNumber": 171
                    }
                ],
                "variables": [
                    {
                        "name": "rewardsToken",
                        "constant": false,
                        "type": "contract IERC20",
                        "lineNumber": 22,
                        "visibility": "public"
                    },
                    {
                        "name": "stakingToken",
                        "constant": false,
                        "type": "contract IERC20",
                        "lineNumber": 23,
                        "visibility": "public"
                    },
                    {
                        "name": "periodFinish",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 24,
                        "visibility": "public"
                    },
                    {
                        "name": "rewardRate",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 25,
                        "visibility": "public"
                    },
                    {
                        "name": "rewardsDuration",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 26,
                        "visibility": "public"
                    },
                    {
                        "name": "lastUpdateTime",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 27,
                        "visibility": "public"
                    },
                    {
                        "name": "rewardPerTokenStored",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 28,
                        "visibility": "public"
                    },
                    {
                        "name": "userRewardPerTokenPaid",
                        "constant": false,
                        "type": "mapping(address => uint256)",
                        "lineNumber": 30,
                        "visibility": "public"
                    },
                    {
                        "name": "rewards",
                        "constant": false,
                        "type": "mapping(address => uint256)",
                        "lineNumber": 31,
                        "visibility": "public"
                    },
                    {
                        "name": "_totalSupply",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 33,
                        "visibility": "private"
                    },
                    {
                        "name": "_balances",
                        "constant": false,
                        "type": "mapping(address => uint256)",
                        "lineNumber": 34,
                        "visibility": "private"
                    }
                ],
                "modifiers": [
                    {
                        "name": "updateReward",
                        "parameters": "(address account)",
                        "visibility": "internal",
                        "lineNumber": 154
                    }
                ],
                "structs": [],
                "inherits": [
                    "IStakingRewards",
                    "RewardsDistributionRecipient",
                    "ReentrancyGuard",
                    "Pausable"
                ],
                "libraries": [
                    {
                        "name": "SafeMath",
                        "type": "uint256"
                    },
                    {
                        "name": "SafeERC20",
                        "type": "IERC20"
                    }
                ]
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/SupplySchedule.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/interfaces/ISupplySchedule.sol",
            "contracts/SafeDecimalMath.sol",
            "contracts/Math.sol",
            "contracts/Proxy.sol",
            "contracts/interfaces/ISynthetix.sol",
            "contracts/interfaces/IERC20.sol"
        ],
        "contracts": {
            "SupplySchedule": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, uint256 _lastMintEvent, uint256 _currentWeek)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 56
                    },
                    {
                        "name": "mintableSupply",
                        "signature": "mintableSupply()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 70
                    },
                    {
                        "name": "tokenDecaySupplyForWeek",
                        "signature": "tokenDecaySupplyForWeek(uint256 counter)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "pure",
                        "requires": [],
                        "lineNumber": 115
                    },
                    {
                        "name": "terminalInflationSupply",
                        "signature": "terminalInflationSupply(uint256 totalSupply, uint256 numOfWeeks)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "pure",
                        "requires": [],
                        "lineNumber": 128
                    },
                    {
                        "name": "weeksSinceLastIssuance",
                        "signature": "weeksSinceLastIssuance()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 140
                    },
                    {
                        "name": "isMintable",
                        "signature": "isMintable()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 151
                    },
                    {
                        "name": "recordMintEvent",
                        "signature": "recordMintEvent(uint256 supplyMinted)",
                        "returns": "(bool)",
                        "events": [
                            "SupplyMinted"
                        ],
                        "modifiers": [
                            "onlySynthetix"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 166
                    },
                    {
                        "name": "setMinterReward",
                        "signature": "setMinterReward(uint256 amount)",
                        "returns": "()",
                        "events": [
                            "MinterRewardUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 188,
                                "name": "require(..., Reward cannot exceed max minter reward)"
                            }
                        ],
                        "lineNumber": 187
                    },
                    {
                        "name": "setSynthetixProxy",
                        "signature": "setSynthetixProxy(contract ISynthetix _synthetixProxy)",
                        "returns": "()",
                        "events": [
                            "SynthetixProxyUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 201,
                                "name": "require(..., Address cannot be 0)"
                            }
                        ],
                        "lineNumber": 200
                    }
                ],
                "events": [
                    {
                        "name": "SupplyMinted",
                        "parameters": "(uint256 supplyMinted, uint256 numberOfWeeksIssued, uint256 lastMintEvent, uint256 timestamp)",
                        "lineNumber": 223
                    },
                    {
                        "name": "MinterRewardUpdated",
                        "parameters": "(uint256 newRewardAmount)",
                        "lineNumber": 228
                    },
                    {
                        "name": "SynthetixProxyUpdated",
                        "parameters": "(address newAddress)",
                        "lineNumber": 233
                    }
                ],
                "variables": [
                    {
                        "name": "lastMintEvent",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 24,
                        "visibility": "public"
                    },
                    {
                        "name": "weekCounter",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 27,
                        "visibility": "public"
                    },
                    {
                        "name": "minterReward",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 30,
                        "visibility": "public"
                    },
                    {
                        "name": "INITIAL_WEEKLY_SUPPLY",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 34,
                        "visibility": "public"
                    },
                    {
                        "name": "synthetixProxy",
                        "constant": false,
                        "type": "address payable",
                        "lineNumber": 37,
                        "visibility": "public"
                    },
                    {
                        "name": "MAX_MINTER_REWARD",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 40,
                        "visibility": "public"
                    },
                    {
                        "name": "MINT_PERIOD_DURATION",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 43,
                        "visibility": "public"
                    },
                    {
                        "name": "INFLATION_START_DATE",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 45,
                        "visibility": "public"
                    },
                    {
                        "name": "MINT_BUFFER",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 46,
                        "visibility": "public"
                    },
                    {
                        "name": "SUPPLY_DECAY_START",
                        "constant": true,
                        "type": "uint8",
                        "lineNumber": 47,
                        "visibility": "public"
                    },
                    {
                        "name": "SUPPLY_DECAY_END",
                        "constant": true,
                        "type": "uint8",
                        "lineNumber": 48,
                        "visibility": "public"
                    },
                    {
                        "name": "DECAY_RATE",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 51,
                        "visibility": "public"
                    },
                    {
                        "name": "TERMINAL_SUPPLY_RATE_ANNUAL",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 54,
                        "visibility": "public"
                    }
                ],
                "modifiers": [
                    {
                        "name": "onlySynthetix",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 211
                    }
                ],
                "structs": [],
                "inherits": [
                    "Owned",
                    "ISupplySchedule"
                ],
                "libraries": [
                    {
                        "name": "SafeMath",
                        "type": "uint"
                    },
                    {
                        "name": "SafeDecimalMath",
                        "type": "uint"
                    },
                    {
                        "name": "Math",
                        "type": "uint"
                    }
                ]
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/Synthetix.sol": {
        "imports": [
            "contracts/BaseSynthetix.sol",
            "contracts/interfaces/IRewardEscrow.sol",
            "contracts/interfaces/IRewardEscrowV2.sol",
            "contracts/interfaces/ISupplySchedule.sol"
        ],
        "contracts": {
            "Synthetix": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address payable _proxy, contract TokenState _tokenState, address _owner, uint256 _totalSupply, address _resolver)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "BaseSynthetix"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 21
                    },
                    {
                        "name": "resolverAddressesRequired",
                        "signature": "resolverAddressesRequired()",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 29
                    },
                    {
                        "name": "rewardEscrow",
                        "signature": "rewardEscrow()",
                        "returns": "(contract IRewardEscrow)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 40
                    },
                    {
                        "name": "rewardEscrowV2",
                        "signature": "rewardEscrowV2()",
                        "returns": "(contract IRewardEscrowV2)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 44
                    },
                    {
                        "name": "supplySchedule",
                        "signature": "supplySchedule()",
                        "returns": "(contract ISupplySchedule)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 48
                    },
                    {
                        "name": "exchange",
                        "signature": "exchange(bytes32 sourceCurrencyKey, uint256 sourceAmount, bytes32 destinationCurrencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [
                            "exchangeActive",
                            "optionalProxy"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 54
                    },
                    {
                        "name": "exchangeOnBehalf",
                        "signature": "exchangeOnBehalf(address exchangeForAddress, bytes32 sourceCurrencyKey, uint256 sourceAmount, bytes32 destinationCurrencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [
                            "exchangeActive",
                            "optionalProxy"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 62
                    },
                    {
                        "name": "exchangeWithTracking",
                        "signature": "exchangeWithTracking(bytes32 sourceCurrencyKey, uint256 sourceAmount, bytes32 destinationCurrencyKey, address originator, bytes32 trackingCode)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [
                            "exchangeActive",
                            "optionalProxy"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 78
                    },
                    {
                        "name": "exchangeOnBehalfWithTracking",
                        "signature": "exchangeOnBehalfWithTracking(address exchangeForAddress, bytes32 sourceCurrencyKey, uint256 sourceAmount, bytes32 destinationCurrencyKey, address originator, bytes32 trackingCode)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [
                            "exchangeActive",
                            "optionalProxy"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 97
                    },
                    {
                        "name": "exchangeWithVirtual",
                        "signature": "exchangeWithVirtual(bytes32 sourceCurrencyKey, uint256 sourceAmount, bytes32 destinationCurrencyKey, bytes32 trackingCode)",
                        "returns": "(uint256, contract IVirtualSynth)",
                        "events": [],
                        "modifiers": [
                            "exchangeActive",
                            "optionalProxy"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 117
                    },
                    {
                        "name": "settle",
                        "signature": "settle(bytes32 currencyKey)",
                        "returns": "(uint256, uint256, uint256)",
                        "events": [],
                        "modifiers": [
                            "optionalProxy"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 139
                    },
                    {
                        "name": "mint",
                        "signature": "mint()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [
                            "issuanceActive"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 152,
                                "name": "require(..., RewardsDistribution not set)"
                            },
                            {
                                "lineNumber": 158,
                                "name": "require(..., No supply is mintable)"
                            }
                        ],
                        "lineNumber": 151
                    },
                    {
                        "name": "liquidateDelinquentAccount",
                        "signature": "liquidateDelinquentAccount(address account, uint256 susdAmount)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [
                            "systemActive",
                            "optionalProxy"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 188
                    },
                    {
                        "name": "migrateEscrowBalanceToRewardEscrowV2",
                        "signature": "migrateEscrowBalanceToRewardEscrowV2()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 210
                    },
                    {
                        "name": "emitSynthExchange",
                        "signature": "emitSynthExchange(address account, bytes32 fromCurrencyKey, uint256 fromAmount, bytes32 toCurrencyKey, uint256 toAmount, address toAddress)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyExchanger"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 232
                    },
                    {
                        "name": "emitExchangeTracking",
                        "signature": "emitExchangeTracking(bytes32 trackingCode, bytes32 toCurrencyKey, uint256 toAmount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyExchanger"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 253
                    },
                    {
                        "name": "emitExchangeReclaim",
                        "signature": "emitExchangeReclaim(address account, bytes32 currencyKey, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyExchanger"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 264
                    },
                    {
                        "name": "emitExchangeRebate",
                        "signature": "emitExchangeRebate(address account, bytes32 currencyKey, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyExchanger"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 275
                    },
                    {
                        "name": "emitAccountLiquidated",
                        "signature": "emitAccountLiquidated(address account, uint256 snxRedeemed, uint256 amountLiquidated, address liquidator)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 286
                    },
                    {
                        "name": "_onlyExchanger",
                        "signature": "_onlyExchanger()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "private",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 310,
                                "name": "require(..., Only Exchanger can invoke this)"
                            }
                        ],
                        "lineNumber": 309
                    },
                    {
                        "name": "_exchangeActive",
                        "signature": "_exchangeActive(bytes32 src, bytes32 dest)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "private",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 318
                    }
                ],
                "events": [
                    {
                        "name": "SynthExchange",
                        "parameters": "(address account, bytes32 fromCurrencyKey, uint256 fromAmount, bytes32 toCurrencyKey, uint256 toAmount, address toAddress)",
                        "lineNumber": 220
                    },
                    {
                        "name": "ExchangeTracking",
                        "parameters": "(bytes32 trackingCode, bytes32 toCurrencyKey, uint256 toAmount)",
                        "lineNumber": 250
                    },
                    {
                        "name": "ExchangeReclaim",
                        "parameters": "(address account, bytes32 currencyKey, uint256 amount)",
                        "lineNumber": 261
                    },
                    {
                        "name": "ExchangeRebate",
                        "parameters": "(address account, bytes32 currencyKey, uint256 amount)",
                        "lineNumber": 272
                    },
                    {
                        "name": "AccountLiquidated",
                        "parameters": "(address account, uint256 snxRedeemed, uint256 amountLiquidated, address liquidator)",
                        "lineNumber": 283
                    }
                ],
                "variables": [
                    {
                        "name": "CONTRACT_REWARD_ESCROW",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 15,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_REWARDESCROW_V2",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 16,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_SUPPLYSCHEDULE",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 17,
                        "visibility": "private"
                    },
                    {
                        "name": "SYNTHEXCHANGE_SIG",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 228,
                        "visibility": "internal"
                    },
                    {
                        "name": "EXCHANGE_TRACKING_SIG",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 251,
                        "visibility": "internal"
                    },
                    {
                        "name": "EXCHANGERECLAIM_SIG",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 262,
                        "visibility": "internal"
                    },
                    {
                        "name": "EXCHANGEREBATE_SIG",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 273,
                        "visibility": "internal"
                    },
                    {
                        "name": "ACCOUNTLIQUIDATED_SIG",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 284,
                        "visibility": "internal"
                    }
                ],
                "modifiers": [
                    {
                        "name": "onlyExchanger",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 304
                    },
                    {
                        "name": "exchangeActive",
                        "parameters": "(bytes32 src, bytes32 dest)",
                        "visibility": "internal",
                        "lineNumber": 313
                    }
                ],
                "structs": [],
                "inherits": [
                    "BaseSynthetix"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/SynthetixBridgeToBase.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/MixinResolver.sol",
            "contracts/MixinSystemSettings.sol",
            "contracts/interfaces/ISynthetixBridgeToBase.sol",
            "contracts/interfaces/ISynthetix.sol",
            "contracts/interfaces/IRewardEscrowV2.sol",
            "contracts/interfaces/ISynthetixBridgeToOptimism.sol",
            "@eth-optimism/contracts/build/contracts/iOVM/bridge/iOVM_BaseCrossDomainMessenger.sol"
        ],
        "contracts": {
            "SynthetixBridgeToBase": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, address _resolver)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned",
                            "MixinSystemSettings"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 28
                    },
                    {
                        "name": "messenger",
                        "signature": "messenger()",
                        "returns": "(contract iOVM_BaseCrossDomainMessenger)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 33
                    },
                    {
                        "name": "synthetix",
                        "signature": "synthetix()",
                        "returns": "(contract ISynthetix)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 37
                    },
                    {
                        "name": "rewardEscrowV2",
                        "signature": "rewardEscrowV2()",
                        "returns": "(contract IRewardEscrowV2)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 41
                    },
                    {
                        "name": "synthetixBridgeToOptimism",
                        "signature": "synthetixBridgeToOptimism()",
                        "returns": "(address)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 45
                    },
                    {
                        "name": "onlyAllowFromOptimism",
                        "signature": "onlyAllowFromOptimism()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 52,
                                "name": "require(..., Only the relayer can call this)"
                            },
                            {
                                "lineNumber": 53,
                                "name": "require(..., Only the L1 bridge can invoke)"
                            }
                        ],
                        "lineNumber": 49
                    },
                    {
                        "name": "resolverAddressesRequired",
                        "signature": "resolverAddressesRequired()",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 63
                    },
                    {
                        "name": "initiateWithdrawal",
                        "signature": "initiateWithdrawal(uint256 amount)",
                        "returns": "()",
                        "events": [
                            "WithdrawalInitiated"
                        ],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 77,
                                "name": "require(..., Not enough transferable SNX)"
                            }
                        ],
                        "lineNumber": 76
                    },
                    {
                        "name": "completeEscrowMigration",
                        "signature": "completeEscrowMigration(address account, uint256 escrowedAmount, struct VestingEntries.VestingEntry[] vestingEntries)",
                        "returns": "()",
                        "events": [
                            "ImportedVestingEntries"
                        ],
                        "modifiers": [
                            "onlyOptimismBridge"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 98
                    },
                    {
                        "name": "completeDeposit",
                        "signature": "completeDeposit(address account, uint256 depositAmount)",
                        "returns": "()",
                        "events": [
                            "MintedSecondary"
                        ],
                        "modifiers": [
                            "onlyOptimismBridge"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 111
                    },
                    {
                        "name": "completeRewardDeposit",
                        "signature": "completeRewardDeposit(uint256 amount)",
                        "returns": "()",
                        "events": [
                            "MintedSecondaryRewards"
                        ],
                        "modifiers": [
                            "onlyOptimismBridge"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 118
                    }
                ],
                "events": [
                    {
                        "name": "ImportedVestingEntries",
                        "parameters": "(address account, uint256 escrowedAmount, struct VestingEntries.VestingEntry[] vestingEntries)",
                        "lineNumber": 125
                    },
                    {
                        "name": "MintedSecondary",
                        "parameters": "(address account, uint256 amount)",
                        "lineNumber": 130
                    },
                    {
                        "name": "MintedSecondaryRewards",
                        "parameters": "(uint256 amount)",
                        "lineNumber": 131
                    },
                    {
                        "name": "WithdrawalInitiated",
                        "parameters": "(address account, uint256 amount)",
                        "lineNumber": 132
                    }
                ],
                "variables": [
                    {
                        "name": "CONTRACT_EXT_MESSENGER",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 21,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_SYNTHETIX",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 22,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_REWARDESCROW",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 23,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_BASE_SYNTHETIXBRIDGETOOPTIMISM",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 24,
                        "visibility": "private"
                    }
                ],
                "modifiers": [
                    {
                        "name": "onlyOptimismBridge",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 56
                    }
                ],
                "structs": [],
                "inherits": [
                    "Owned",
                    "MixinSystemSettings",
                    "ISynthetixBridgeToBase"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "@eth-optimism/contracts/build/contracts/iOVM/bridge/iOVM_BaseCrossDomainMessenger.sol": {
        "imports": [],
        "contracts": {},
        "interfaces": {
            "iOVM_BaseCrossDomainMessenger": {
                "functions": [
                    {
                        "name": "xDomainMessageSender",
                        "signature": "xDomainMessageSender()",
                        "returns": "(address)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 12
                    },
                    {
                        "name": "sendMessage",
                        "signature": "sendMessage(address _target, bytes _message, uint32 _gasLimit)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 24
                    }
                ],
                "events": [],
                "variables": [],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "libraries": {}
    },
    "contracts/SynthetixBridgeToOptimism.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/MixinResolver.sol",
            "contracts/MixinSystemSettings.sol",
            "contracts/interfaces/ISynthetixBridgeToOptimism.sol",
            "contracts/interfaces/ISynthetix.sol",
            "contracts/interfaces/IERC20.sol",
            "contracts/interfaces/IIssuer.sol",
            "contracts/interfaces/IRewardEscrowV2.sol",
            "contracts/interfaces/ISynthetixBridgeToBase.sol",
            "@eth-optimism/contracts/build/contracts/iOVM/bridge/iOVM_BaseCrossDomainMessenger.sol"
        ],
        "contracts": {
            "SynthetixBridgeToOptimism": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, address _resolver)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned",
                            "MixinSystemSettings"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 36
                    },
                    {
                        "name": "messenger",
                        "signature": "messenger()",
                        "returns": "(contract iOVM_BaseCrossDomainMessenger)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 43
                    },
                    {
                        "name": "synthetix",
                        "signature": "synthetix()",
                        "returns": "(contract ISynthetix)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 47
                    },
                    {
                        "name": "synthetixERC20",
                        "signature": "synthetixERC20()",
                        "returns": "(contract IERC20)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 51
                    },
                    {
                        "name": "issuer",
                        "signature": "issuer()",
                        "returns": "(contract IIssuer)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 55
                    },
                    {
                        "name": "rewardsDistribution",
                        "signature": "rewardsDistribution()",
                        "returns": "(address)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 59
                    },
                    {
                        "name": "rewardEscrowV2",
                        "signature": "rewardEscrowV2()",
                        "returns": "(contract IRewardEscrowV2)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 63
                    },
                    {
                        "name": "synthetixBridgeToBase",
                        "signature": "synthetixBridgeToBase()",
                        "returns": "(address)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 67
                    },
                    {
                        "name": "isActive",
                        "signature": "isActive()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 72,
                                "name": "require(..., Function deactivated)"
                            }
                        ],
                        "lineNumber": 71
                    },
                    {
                        "name": "hasZeroDebt",
                        "signature": "hasZeroDebt()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 76,
                                "name": "require(..., Cannot deposit or migrate with debt)"
                            }
                        ],
                        "lineNumber": 75
                    },
                    {
                        "name": "resolverAddressesRequired",
                        "signature": "resolverAddressesRequired()",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 81
                    },
                    {
                        "name": "initiateDeposit",
                        "signature": "initiateDeposit(uint256 depositAmount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "requireActive",
                            "requireZeroDebt"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 107
                    },
                    {
                        "name": "initiateEscrowMigration",
                        "signature": "initiateEscrowMigration(uint256[][] entryIDs)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "requireActive",
                            "requireZeroDebt"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 111
                    },
                    {
                        "name": "initiateRewardDeposit",
                        "signature": "initiateRewardDeposit(uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "requireActive"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 116
                    },
                    {
                        "name": "completeWithdrawal",
                        "signature": "completeWithdrawal(address account, uint256 amount)",
                        "returns": "()",
                        "events": [
                            "WithdrawalCompleted"
                        ],
                        "modifiers": [
                            "requireActive"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 128,
                                "name": "require(..., Only the relayer can call this)"
                            },
                            {
                                "lineNumber": 129,
                                "name": "require(..., Only the L2 bridge can invoke)"
                            }
                        ],
                        "lineNumber": 126
                    },
                    {
                        "name": "migrateBridge",
                        "signature": "migrateBridge(address newBridge)",
                        "returns": "()",
                        "events": [
                            "BridgeMigrated"
                        ],
                        "modifiers": [
                            "onlyOwner",
                            "requireActive"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 140,
                                "name": "require(..., Cannot migrate to address 0)"
                            }
                        ],
                        "lineNumber": 139
                    },
                    {
                        "name": "notifyRewardAmount",
                        "signature": "notifyRewardAmount(uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "requireActive"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 153,
                                "name": "require(..., Caller is not RewardsDistribution contract)"
                            }
                        ],
                        "lineNumber": 152
                    },
                    {
                        "name": "depositAndMigrateEscrow",
                        "signature": "depositAndMigrateEscrow(uint256 depositAmount, uint256[][] entryIDs)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "requireActive",
                            "requireZeroDebt"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 159
                    },
                    {
                        "name": "_initiateRewardDeposit",
                        "signature": "_initiateRewardDeposit(uint256 _amount)",
                        "returns": "()",
                        "events": [
                            "RewardDeposit"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 175
                    },
                    {
                        "name": "_initiateDeposit",
                        "signature": "_initiateDeposit(uint256 _depositAmount)",
                        "returns": "()",
                        "events": [
                            "Deposit"
                        ],
                        "modifiers": [],
                        "visibility": "private",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 190
                    },
                    {
                        "name": "_initiateEscrowMigration",
                        "signature": "_initiateEscrowMigration(uint256[][] _entryIDs)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "private",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 207
                    }
                ],
                "events": [
                    {
                        "name": "BridgeMigrated",
                        "parameters": "(address oldBridge, address newBridge, uint256 amount)",
                        "lineNumber": 240
                    },
                    {
                        "name": "Deposit",
                        "parameters": "(address account, uint256 amount)",
                        "lineNumber": 241
                    },
                    {
                        "name": "ExportedVestingEntries",
                        "parameters": "(address account, uint256 escrowedAccountBalance, struct VestingEntries.VestingEntry[] vestingEntries)",
                        "lineNumber": 242
                    },
                    {
                        "name": "RewardDeposit",
                        "parameters": "(address account, uint256 amount)",
                        "lineNumber": 247
                    },
                    {
                        "name": "WithdrawalCompleted",
                        "parameters": "(address account, uint256 amount)",
                        "lineNumber": 248
                    }
                ],
                "variables": [
                    {
                        "name": "CONTRACT_EXT_MESSENGER",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 23,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_SYNTHETIX",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 24,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_ISSUER",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 25,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_REWARDSDISTRIBUTION",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 26,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_REWARDESCROW",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 27,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_OVM_SYNTHETIXBRIDGETOBASE",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 28,
                        "visibility": "private"
                    },
                    {
                        "name": "MAX_ENTRIES_MIGRATED_PER_MESSAGE",
                        "constant": true,
                        "type": "uint8",
                        "lineNumber": 30,
                        "visibility": "private"
                    },
                    {
                        "name": "activated",
                        "constant": false,
                        "type": "bool",
                        "lineNumber": 32,
                        "visibility": "public"
                    }
                ],
                "modifiers": [
                    {
                        "name": "requireActive",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 95
                    },
                    {
                        "name": "requireZeroDebt",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 100
                    }
                ],
                "structs": [],
                "inherits": [
                    "Owned",
                    "MixinSystemSettings",
                    "ISynthetixBridgeToOptimism"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/SynthetixEscrow.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/LimitedSetup.sol",
            "contracts/interfaces/IHasBalance.sol",
            "contracts/SafeDecimalMath.sol",
            "contracts/interfaces/IERC20.sol",
            "contracts/interfaces/ISynthetix.sol"
        ],
        "contracts": {
            "SynthetixEscrow": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, contract ISynthetix _synthetix)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 41
                    },
                    {
                        "name": "setSynthetix",
                        "signature": "setSynthetix(contract ISynthetix _synthetix)",
                        "returns": "()",
                        "events": [
                            "SynthetixUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 47
                    },
                    {
                        "name": "balanceOf",
                        "signature": "balanceOf(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 57
                    },
                    {
                        "name": "numVestingEntries",
                        "signature": "numVestingEntries(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 64
                    },
                    {
                        "name": "getVestingScheduleEntry",
                        "signature": "getVestingScheduleEntry(address account, uint256 index)",
                        "returns": "(uint256[2])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 72
                    },
                    {
                        "name": "getVestingTime",
                        "signature": "getVestingTime(address account, uint256 index)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 79
                    },
                    {
                        "name": "getVestingQuantity",
                        "signature": "getVestingQuantity(address account, uint256 index)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 86
                    },
                    {
                        "name": "getNextVestingIndex",
                        "signature": "getNextVestingIndex(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 93
                    },
                    {
                        "name": "getNextVestingEntry",
                        "signature": "getNextVestingEntry(address account)",
                        "returns": "(uint256[2])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 106
                    },
                    {
                        "name": "getNextVestingTime",
                        "signature": "getNextVestingTime(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 117
                    },
                    {
                        "name": "getNextVestingQuantity",
                        "signature": "getNextVestingQuantity(address account)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 124
                    },
                    {
                        "name": "purgeAccount",
                        "signature": "purgeAccount(address account)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner",
                            "onlyDuringSetup"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 133
                    },
                    {
                        "name": "appendVestingEntry",
                        "signature": "appendVestingEntry(address account, uint256 time, uint256 quantity)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner",
                            "onlyDuringSetup"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 158,
                                "name": "require(..., Time must be in the future)"
                            },
                            {
                                "lineNumber": 159,
                                "name": "require(..., Quantity cannot be zero)"
                            },
                            {
                                "lineNumber": 163,
                                "name": "require(..., Must be enough balance in the contract to provide for the vesting entry)"
                            },
                            {
                                "lineNumber": 170,
                                "name": "require(..., Vesting schedule is too long)"
                            }
                        ],
                        "lineNumber": 152
                    },
                    {
                        "name": "addVestingSchedule",
                        "signature": "addVestingSchedule(address account, uint256[] times, uint256[] quantities)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner",
                            "onlyDuringSetup"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 194
                    },
                    {
                        "name": "vest",
                        "signature": "vest()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 207
                    }
                ],
                "events": [
                    {
                        "name": "SynthetixUpdated",
                        "parameters": "(address newSynthetix)",
                        "lineNumber": 233
                    },
                    {
                        "name": "Vested",
                        "parameters": "(address beneficiary, uint256 time, uint256 value)",
                        "lineNumber": 235
                    }
                ],
                "variables": [
                    {
                        "name": "synthetix",
                        "constant": false,
                        "type": "contract ISynthetix",
                        "lineNumber": 21,
                        "visibility": "public"
                    },
                    {
                        "name": "vestingSchedules",
                        "constant": false,
                        "type": "mapping(address => uint256[2][])",
                        "lineNumber": 25,
                        "visibility": "public"
                    },
                    {
                        "name": "totalVestedAccountBalance",
                        "constant": false,
                        "type": "mapping(address => uint256)",
                        "lineNumber": 28,
                        "visibility": "public"
                    },
                    {
                        "name": "totalVestedBalance",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 31,
                        "visibility": "public"
                    },
                    {
                        "name": "TIME_INDEX",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 33,
                        "visibility": "public"
                    },
                    {
                        "name": "QUANTITY_INDEX",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 34,
                        "visibility": "public"
                    },
                    {
                        "name": "MAX_VESTING_ENTRIES",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 37,
                        "visibility": "public"
                    }
                ],
                "modifiers": [],
                "structs": [],
                "inherits": [
                    "Owned",
                    "LimitedSetup",
                    "IHasBalance"
                ],
                "libraries": [
                    {
                        "name": "SafeMath",
                        "type": "uint"
                    }
                ]
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/SynthetixState.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/State.sol",
            "contracts/interfaces/ISynthetixState.sol",
            "contracts/SafeDecimalMath.sol"
        ],
        "contracts": {
            "SynthetixState": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, address _associatedContract)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned",
                            "State"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 40
                    },
                    {
                        "name": "setCurrentIssuanceData",
                        "signature": "setCurrentIssuanceData(address account, uint256 initialDebtOwnership)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 50
                    },
                    {
                        "name": "clearIssuanceData",
                        "signature": "clearIssuanceData(address account)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 60
                    },
                    {
                        "name": "incrementTotalIssuerCount",
                        "signature": "incrementTotalIssuerCount()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 68
                    },
                    {
                        "name": "decrementTotalIssuerCount",
                        "signature": "decrementTotalIssuerCount()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 76
                    },
                    {
                        "name": "appendDebtLedgerValue",
                        "signature": "appendDebtLedgerValue(uint256 value)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyAssociatedContract"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 85
                    },
                    {
                        "name": "debtLedgerLength",
                        "signature": "debtLedgerLength()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 94
                    },
                    {
                        "name": "lastDebtLedgerEntry",
                        "signature": "lastDebtLedgerEntry()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 101
                    },
                    {
                        "name": "hasIssued",
                        "signature": "hasIssued(address account)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 109
                    }
                ],
                "events": [],
                "variables": [
                    {
                        "name": "issuanceData",
                        "constant": false,
                        "type": "mapping(address => struct SynthetixState.IssuanceData)",
                        "lineNumber": 32,
                        "visibility": "public"
                    },
                    {
                        "name": "totalIssuerCount",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 35,
                        "visibility": "public"
                    },
                    {
                        "name": "debtLedger",
                        "constant": false,
                        "type": "uint256[]",
                        "lineNumber": 38,
                        "visibility": "public"
                    }
                ],
                "modifiers": [],
                "structs": [
                    {
                        "name": "IssuanceData",
                        "members": [
                            {
                                "name": "initialDebtOwnership",
                                "type": "uint256"
                            },
                            {
                                "name": "debtEntryIndex",
                                "type": "uint256"
                            }
                        ],
                        "lineNumber": 18
                    }
                ],
                "inherits": [
                    "Owned",
                    "State",
                    "ISynthetixState"
                ],
                "libraries": [
                    {
                        "name": "SafeMath",
                        "type": "uint"
                    },
                    {
                        "name": "SafeDecimalMath",
                        "type": "uint"
                    }
                ]
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/SynthetixStateWithLimitedSetup.sol": {
        "imports": [
            "contracts/LimitedSetup.sol",
            "contracts/SynthetixState.sol",
            "contracts/interfaces/IFeePool.sol"
        ],
        "contracts": {
            "SynthetixStateWithLimitedSetup": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, address _associatedContract)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "SynthetixState",
                            "LimitedSetup"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 18
                    },
                    {
                        "name": "setFeePool",
                        "signature": "setFeePool(contract IFeePool _feePool)",
                        "returns": "()",
                        "events": [
                            "FeePoolUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 30
                    },
                    {
                        "name": "importIssuerData",
                        "signature": "importIssuerData(address[] accounts, uint256[] sUSDAmounts)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner",
                            "onlyDuringSetup"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 40,
                                "name": "require(..., Length mismatch)"
                            }
                        ],
                        "lineNumber": 39
                    },
                    {
                        "name": "_addToDebtRegister",
                        "signature": "_addToDebtRegister(address account, uint256 amount)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 51
                    }
                ],
                "events": [
                    {
                        "name": "FeePoolUpdated",
                        "parameters": "(address newFeePool)",
                        "lineNumber": 99
                    }
                ],
                "variables": [
                    {
                        "name": "feePool",
                        "constant": false,
                        "type": "contract IFeePool",
                        "lineNumber": 13,
                        "visibility": "public"
                    },
                    {
                        "name": "importedDebtAmount",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 16,
                        "visibility": "public"
                    }
                ],
                "modifiers": [],
                "structs": [],
                "inherits": [
                    "SynthetixState",
                    "LimitedSetup"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/SynthUtil.sol": {
        "imports": [
            "contracts/interfaces/ISynth.sol",
            "contracts/interfaces/ISynthetix.sol",
            "contracts/interfaces/IExchangeRates.sol",
            "contracts/interfaces/IAddressResolver.sol",
            "contracts/interfaces/IERC20.sol"
        ],
        "contracts": {
            "SynthUtil": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address resolver)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 19
                    },
                    {
                        "name": "_synthetix",
                        "signature": "_synthetix()",
                        "returns": "(contract ISynthetix)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 23
                    },
                    {
                        "name": "_exchangeRates",
                        "signature": "_exchangeRates()",
                        "returns": "(contract IExchangeRates)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 27
                    },
                    {
                        "name": "totalSynthsInKey",
                        "signature": "totalSynthsInKey(address account, bytes32 currencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 31
                    },
                    {
                        "name": "synthsBalances",
                        "signature": "synthsBalances(address account)",
                        "returns": "(bytes32[], uint256[], uint256[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 46
                    },
                    {
                        "name": "frozenSynths",
                        "signature": "frozenSynths()",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 70
                    },
                    {
                        "name": "synthsRates",
                        "signature": "synthsRates()",
                        "returns": "(bytes32[], uint256[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 84
                    },
                    {
                        "name": "synthsTotalSupplies",
                        "signature": "synthsTotalSupplies()",
                        "returns": "(bytes32[], uint256[], uint256[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 89
                    }
                ],
                "events": [],
                "variables": [
                    {
                        "name": "addressResolverProxy",
                        "constant": false,
                        "type": "contract IAddressResolver",
                        "lineNumber": 13,
                        "visibility": "public"
                    },
                    {
                        "name": "CONTRACT_SYNTHETIX",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 15,
                        "visibility": "internal"
                    },
                    {
                        "name": "CONTRACT_EXRATES",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 16,
                        "visibility": "internal"
                    },
                    {
                        "name": "SUSD",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 17,
                        "visibility": "internal"
                    }
                ],
                "modifiers": [],
                "structs": [],
                "inherits": [],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/SystemSettings.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/MixinResolver.sol",
            "contracts/MixinSystemSettings.sol",
            "contracts/interfaces/ISystemSettings.sol",
            "contracts/SafeDecimalMath.sol"
        ],
        "contracts": {
            "SystemSettings": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner, address _resolver)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned",
                            "MixinSystemSettings"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 45
                    },
                    {
                        "name": "waitingPeriodSecs",
                        "signature": "waitingPeriodSecs()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 52
                    },
                    {
                        "name": "priceDeviationThresholdFactor",
                        "signature": "priceDeviationThresholdFactor()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 59
                    },
                    {
                        "name": "issuanceRatio",
                        "signature": "issuanceRatio()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 65
                    },
                    {
                        "name": "feePeriodDuration",
                        "signature": "feePeriodDuration()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 73
                    },
                    {
                        "name": "targetThreshold",
                        "signature": "targetThreshold()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 78
                    },
                    {
                        "name": "liquidationDelay",
                        "signature": "liquidationDelay()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 84
                    },
                    {
                        "name": "liquidationRatio",
                        "signature": "liquidationRatio()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 91
                    },
                    {
                        "name": "liquidationPenalty",
                        "signature": "liquidationPenalty()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 97
                    },
                    {
                        "name": "rateStalePeriod",
                        "signature": "rateStalePeriod()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 102
                    },
                    {
                        "name": "exchangeFeeRate",
                        "signature": "exchangeFeeRate(bytes32 currencyKey)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 106
                    },
                    {
                        "name": "minimumStakeTime",
                        "signature": "minimumStakeTime()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 110
                    },
                    {
                        "name": "debtSnapshotStaleTime",
                        "signature": "debtSnapshotStaleTime()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 114
                    },
                    {
                        "name": "aggregatorWarningFlags",
                        "signature": "aggregatorWarningFlags()",
                        "returns": "(address)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 118
                    },
                    {
                        "name": "tradingRewardsEnabled",
                        "signature": "tradingRewardsEnabled()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 124
                    },
                    {
                        "name": "crossDomainMessageGasLimit",
                        "signature": "crossDomainMessageGasLimit(enum MixinSystemSettings.CrossDomainMessageGasLimits gasLimitType)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 128
                    },
                    {
                        "name": "setCrossDomainMessageGasLimit",
                        "signature": "setCrossDomainMessageGasLimit(enum MixinSystemSettings.CrossDomainMessageGasLimits _gasLimitType, uint256 _crossDomainMessageGasLimit)",
                        "returns": "()",
                        "events": [
                            "CrossDomainMessageGasLimitChanged"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 138,
                                "name": "require(..., Out of range xDomain gasLimit)"
                            }
                        ],
                        "lineNumber": 134
                    },
                    {
                        "name": "setTradingRewardsEnabled",
                        "signature": "setTradingRewardsEnabled(bool _tradingRewardsEnabled)",
                        "returns": "()",
                        "events": [
                            "TradingRewardsEnabled"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 151
                    },
                    {
                        "name": "setWaitingPeriodSecs",
                        "signature": "setWaitingPeriodSecs(uint256 _waitingPeriodSecs)",
                        "returns": "()",
                        "events": [
                            "WaitingPeriodSecsUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 156
                    },
                    {
                        "name": "setPriceDeviationThresholdFactor",
                        "signature": "setPriceDeviationThresholdFactor(uint256 _priceDeviationThresholdFactor)",
                        "returns": "()",
                        "events": [
                            "PriceDeviationThresholdUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 161
                    },
                    {
                        "name": "setIssuanceRatio",
                        "signature": "setIssuanceRatio(uint256 _issuanceRatio)",
                        "returns": "()",
                        "events": [
                            "IssuanceRatioUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 171,
                                "name": "require(..., New issuance ratio cannot exceed MAX_ISSUANCE_RATIO)"
                            }
                        ],
                        "lineNumber": 170
                    },
                    {
                        "name": "setFeePeriodDuration",
                        "signature": "setFeePeriodDuration(uint256 _feePeriodDuration)",
                        "returns": "()",
                        "events": [
                            "FeePeriodDurationUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 177,
                                "name": "require(..., value < MIN_FEE_PERIOD_DURATION)"
                            },
                            {
                                "lineNumber": 178,
                                "name": "require(..., value > MAX_FEE_PERIOD_DURATION)"
                            }
                        ],
                        "lineNumber": 176
                    },
                    {
                        "name": "setTargetThreshold",
                        "signature": "setTargetThreshold(uint256 _percent)",
                        "returns": "()",
                        "events": [
                            "TargetThresholdUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 186,
                                "name": "require(..., Threshold too high)"
                            }
                        ],
                        "lineNumber": 185
                    },
                    {
                        "name": "setLiquidationDelay",
                        "signature": "setLiquidationDelay(uint256 time)",
                        "returns": "()",
                        "events": [
                            "LiquidationDelayUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 196,
                                "name": "require(..., Must be less than 30 days)"
                            },
                            {
                                "lineNumber": 197,
                                "name": "require(..., Must be greater than 1 day)"
                            }
                        ],
                        "lineNumber": 195
                    },
                    {
                        "name": "setLiquidationRatio",
                        "signature": "setLiquidationRatio(uint256 _liquidationRatio)",
                        "returns": "()",
                        "events": [
                            "LiquidationRatioUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 207,
                                "name": "require(..., liquidationRatio > MAX_LIQUIDATION_RATIO / (1 + penalty))"
                            },
                            {
                                "lineNumber": 215,
                                "name": "require(..., liquidationRatio < MIN_LIQUIDATION_RATIO)"
                            }
                        ],
                        "lineNumber": 206
                    },
                    {
                        "name": "setLiquidationPenalty",
                        "signature": "setLiquidationPenalty(uint256 penalty)",
                        "returns": "()",
                        "events": [
                            "LiquidationPenaltyUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 223,
                                "name": "require(..., penalty > MAX_LIQUIDATION_PENALTY)"
                            }
                        ],
                        "lineNumber": 222
                    },
                    {
                        "name": "setRateStalePeriod",
                        "signature": "setRateStalePeriod(uint256 period)",
                        "returns": "()",
                        "events": [
                            "RateStalePeriodUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 230
                    },
                    {
                        "name": "setExchangeFeeRateForSynths",
                        "signature": "setExchangeFeeRateForSynths(bytes32[] synthKeys, uint256[] exchangeFeeRates)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 240,
                                "name": "require(..., Array lengths dont match)"
                            }
                        ],
                        "lineNumber": 236
                    },
                    {
                        "name": "setMinimumStakeTime",
                        "signature": "setMinimumStakeTime(uint256 _seconds)",
                        "returns": "()",
                        "events": [
                            "MinimumStakeTimeUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 253,
                                "name": "require(..., stake time exceed maximum 1 week)"
                            }
                        ],
                        "lineNumber": 252
                    },
                    {
                        "name": "setDebtSnapshotStaleTime",
                        "signature": "setDebtSnapshotStaleTime(uint256 _seconds)",
                        "returns": "()",
                        "events": [
                            "DebtSnapshotStaleTimeUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 258
                    },
                    {
                        "name": "setAggregatorWarningFlags",
                        "signature": "setAggregatorWarningFlags(address _flags)",
                        "returns": "()",
                        "events": [
                            "AggregatorWarningFlagsUpdated"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 264,
                                "name": "require(..., Valid address must be given)"
                            }
                        ],
                        "lineNumber": 263
                    }
                ],
                "events": [
                    {
                        "name": "CrossDomainMessageGasLimitChanged",
                        "parameters": "(enum MixinSystemSettings.CrossDomainMessageGasLimits gasLimitType, uint256 newLimit)",
                        "lineNumber": 270
                    },
                    {
                        "name": "TradingRewardsEnabled",
                        "parameters": "(bool enabled)",
                        "lineNumber": 271
                    },
                    {
                        "name": "WaitingPeriodSecsUpdated",
                        "parameters": "(uint256 waitingPeriodSecs)",
                        "lineNumber": 272
                    },
                    {
                        "name": "PriceDeviationThresholdUpdated",
                        "parameters": "(uint256 threshold)",
                        "lineNumber": 273
                    },
                    {
                        "name": "IssuanceRatioUpdated",
                        "parameters": "(uint256 newRatio)",
                        "lineNumber": 274
                    },
                    {
                        "name": "FeePeriodDurationUpdated",
                        "parameters": "(uint256 newFeePeriodDuration)",
                        "lineNumber": 275
                    },
                    {
                        "name": "TargetThresholdUpdated",
                        "parameters": "(uint256 newTargetThreshold)",
                        "lineNumber": 276
                    },
                    {
                        "name": "LiquidationDelayUpdated",
                        "parameters": "(uint256 newDelay)",
                        "lineNumber": 277
                    },
                    {
                        "name": "LiquidationRatioUpdated",
                        "parameters": "(uint256 newRatio)",
                        "lineNumber": 278
                    },
                    {
                        "name": "LiquidationPenaltyUpdated",
                        "parameters": "(uint256 newPenalty)",
                        "lineNumber": 279
                    },
                    {
                        "name": "RateStalePeriodUpdated",
                        "parameters": "(uint256 rateStalePeriod)",
                        "lineNumber": 280
                    },
                    {
                        "name": "ExchangeFeeUpdated",
                        "parameters": "(bytes32 synthKey, uint256 newExchangeFeeRate)",
                        "lineNumber": 281
                    },
                    {
                        "name": "MinimumStakeTimeUpdated",
                        "parameters": "(uint256 minimumStakeTime)",
                        "lineNumber": 282
                    },
                    {
                        "name": "DebtSnapshotStaleTimeUpdated",
                        "parameters": "(uint256 debtSnapshotStaleTime)",
                        "lineNumber": 283
                    },
                    {
                        "name": "AggregatorWarningFlagsUpdated",
                        "parameters": "(address flags)",
                        "lineNumber": 284
                    }
                ],
                "variables": [
                    {
                        "name": "MAX_ISSUANCE_RATIO",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 19,
                        "visibility": "public"
                    },
                    {
                        "name": "MIN_FEE_PERIOD_DURATION",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 22,
                        "visibility": "public"
                    },
                    {
                        "name": "MAX_FEE_PERIOD_DURATION",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 23,
                        "visibility": "public"
                    },
                    {
                        "name": "MAX_TARGET_THRESHOLD",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 25,
                        "visibility": "public"
                    },
                    {
                        "name": "MAX_LIQUIDATION_RATIO",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 27,
                        "visibility": "public"
                    },
                    {
                        "name": "MAX_LIQUIDATION_PENALTY",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 29,
                        "visibility": "public"
                    },
                    {
                        "name": "RATIO_FROM_TARGET_BUFFER",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 31,
                        "visibility": "public"
                    },
                    {
                        "name": "MAX_LIQUIDATION_DELAY",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 33,
                        "visibility": "public"
                    },
                    {
                        "name": "MIN_LIQUIDATION_DELAY",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 34,
                        "visibility": "public"
                    },
                    {
                        "name": "MAX_EXCHANGE_FEE_RATE",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 37,
                        "visibility": "public"
                    },
                    {
                        "name": "MAX_MINIMUM_STAKE_TIME",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 40,
                        "visibility": "public"
                    },
                    {
                        "name": "MAX_CROSS_DOMAIN_GAS_LIMIT",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 42,
                        "visibility": "public"
                    },
                    {
                        "name": "MIN_CROSS_DOMAIN_GAS_LIMIT",
                        "constant": true,
                        "type": "uint256",
                        "lineNumber": 43,
                        "visibility": "public"
                    }
                ],
                "modifiers": [],
                "structs": [],
                "inherits": [
                    "Owned",
                    "MixinSystemSettings",
                    "ISystemSettings"
                ],
                "libraries": [
                    {
                        "name": "SafeMath",
                        "type": "uint"
                    },
                    {
                        "name": "SafeDecimalMath",
                        "type": "uint"
                    }
                ]
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/SystemStatus.sol": {
        "imports": [
            "contracts/Owned.sol",
            "contracts/interfaces/ISystemStatus.sol"
        ],
        "contracts": {
            "SystemStatus": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address _owner)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 27
                    },
                    {
                        "name": "requireSystemActive",
                        "signature": "requireSystemActive()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 36,
                                "name": "_internalRequireSystemActive"
                            }
                        ],
                        "lineNumber": 35
                    },
                    {
                        "name": "requireIssuanceActive",
                        "signature": "requireIssuanceActive()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 41,
                                "name": "_internalRequireSystemActive"
                            },
                            {
                                "lineNumber": 42,
                                "name": "require(..., Issuance is suspended. Operation prohibited)"
                            }
                        ],
                        "lineNumber": 39
                    },
                    {
                        "name": "requireExchangeActive",
                        "signature": "requireExchangeActive()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 47,
                                "name": "_internalRequireSystemActive"
                            },
                            {
                                "lineNumber": 48,
                                "name": "require(..., Exchange is suspended. Operation prohibited)"
                            }
                        ],
                        "lineNumber": 45
                    },
                    {
                        "name": "requireSynthActive",
                        "signature": "requireSynthActive(bytes32 currencyKey)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 53,
                                "name": "_internalRequireSystemActive"
                            },
                            {
                                "lineNumber": 54,
                                "name": "require(..., Synth is suspended. Operation prohibited)"
                            }
                        ],
                        "lineNumber": 51
                    },
                    {
                        "name": "requireSynthsActive",
                        "signature": "requireSynthsActive(bytes32 sourceCurrencyKey, bytes32 destinationCurrencyKey)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 59,
                                "name": "_internalRequireSystemActive"
                            },
                            {
                                "lineNumber": 61,
                                "name": "require(..., One or more synths are suspended. Operation prohibited)"
                            }
                        ],
                        "lineNumber": 57
                    },
                    {
                        "name": "isSystemUpgrading",
                        "signature": "isSystemUpgrading()",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 67
                    },
                    {
                        "name": "getSynthSuspensions",
                        "signature": "getSynthSuspensions(bytes32[] synths)",
                        "returns": "(bool[], uint256[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 71
                    },
                    {
                        "name": "updateAccessControl",
                        "signature": "updateAccessControl(bytes32 section, address account, bool canSuspend, bool canResume)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 86
                    },
                    {
                        "name": "suspendSystem",
                        "signature": "suspendSystem(uint256 reason)",
                        "returns": "()",
                        "events": [
                            "SystemSuspended"
                        ],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 96,
                                "name": "_requireAccessToSuspend"
                            }
                        ],
                        "lineNumber": 95
                    },
                    {
                        "name": "resumeSystem",
                        "signature": "resumeSystem()",
                        "returns": "()",
                        "events": [
                            "SystemResumed"
                        ],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 103,
                                "name": "_requireAccessToResume"
                            }
                        ],
                        "lineNumber": 102
                    },
                    {
                        "name": "suspendIssuance",
                        "signature": "suspendIssuance(uint256 reason)",
                        "returns": "()",
                        "events": [
                            "IssuanceSuspended"
                        ],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 110,
                                "name": "_requireAccessToSuspend"
                            }
                        ],
                        "lineNumber": 109
                    },
                    {
                        "name": "resumeIssuance",
                        "signature": "resumeIssuance()",
                        "returns": "()",
                        "events": [
                            "IssuanceResumed"
                        ],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 117,
                                "name": "_requireAccessToResume"
                            }
                        ],
                        "lineNumber": 116
                    },
                    {
                        "name": "suspendExchange",
                        "signature": "suspendExchange(uint256 reason)",
                        "returns": "()",
                        "events": [
                            "ExchangeSuspended"
                        ],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 124,
                                "name": "_requireAccessToSuspend"
                            }
                        ],
                        "lineNumber": 123
                    },
                    {
                        "name": "resumeExchange",
                        "signature": "resumeExchange()",
                        "returns": "()",
                        "events": [
                            "ExchangeResumed"
                        ],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 131,
                                "name": "_requireAccessToResume"
                            }
                        ],
                        "lineNumber": 130
                    },
                    {
                        "name": "suspendSynth",
                        "signature": "suspendSynth(bytes32 currencyKey, uint256 reason)",
                        "returns": "()",
                        "events": [
                            "SynthSuspended"
                        ],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 138,
                                "name": "_requireAccessToSuspend"
                            }
                        ],
                        "lineNumber": 137
                    },
                    {
                        "name": "resumeSynth",
                        "signature": "resumeSynth(bytes32 currencyKey)",
                        "returns": "()",
                        "events": [
                            "SynthResumed"
                        ],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 145,
                                "name": "_requireAccessToResume"
                            }
                        ],
                        "lineNumber": 144
                    },
                    {
                        "name": "_requireAccessToSuspend",
                        "signature": "_requireAccessToSuspend(bytes32 section)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 153,
                                "name": "require(..., Restricted to access control list)"
                            }
                        ],
                        "lineNumber": 152
                    },
                    {
                        "name": "_requireAccessToResume",
                        "signature": "_requireAccessToResume(bytes32 section)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 157,
                                "name": "require(..., Restricted to access control list)"
                            }
                        ],
                        "lineNumber": 156
                    },
                    {
                        "name": "_internalRequireSystemActive",
                        "signature": "_internalRequireSystemActive()",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [
                            {
                                "lineNumber": 161,
                                "name": "require(..., memory)"
                            }
                        ],
                        "lineNumber": 160
                    },
                    {
                        "name": "_internalUpdateAccessControl",
                        "signature": "_internalUpdateAccessControl(bytes32 section, address account, bool canSuspend, bool canResume)",
                        "returns": "()",
                        "events": [
                            "AccessControlUpdated"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 175,
                                "name": "require(..., Invalid section supplied)"
                            }
                        ],
                        "lineNumber": 169
                    }
                ],
                "events": [
                    {
                        "name": "SystemSuspended",
                        "parameters": "(uint256 reason)",
                        "lineNumber": 189
                    },
                    {
                        "name": "SystemResumed",
                        "parameters": "(uint256 reason)",
                        "lineNumber": 190
                    },
                    {
                        "name": "IssuanceSuspended",
                        "parameters": "(uint256 reason)",
                        "lineNumber": 192
                    },
                    {
                        "name": "IssuanceResumed",
                        "parameters": "(uint256 reason)",
                        "lineNumber": 193
                    },
                    {
                        "name": "ExchangeSuspended",
                        "parameters": "(uint256 reason)",
                        "lineNumber": 195
                    },
                    {
                        "name": "ExchangeResumed",
                        "parameters": "(uint256 reason)",
                        "lineNumber": 196
                    },
                    {
                        "name": "SynthSuspended",
                        "parameters": "(bytes32 currencyKey, uint256 reason)",
                        "lineNumber": 198
                    },
                    {
                        "name": "SynthResumed",
                        "parameters": "(bytes32 currencyKey, uint256 reason)",
                        "lineNumber": 199
                    },
                    {
                        "name": "AccessControlUpdated",
                        "parameters": "(bytes32 section, address account, bool canSuspend, bool canResume)",
                        "lineNumber": 201
                    }
                ],
                "variables": [
                    {
                        "name": "accessControl",
                        "constant": false,
                        "type": "mapping(bytes32 => mapping(address => struct ISystemStatus.Status))",
                        "lineNumber": 10,
                        "visibility": "public"
                    },
                    {
                        "name": "SUSPENSION_REASON_UPGRADE",
                        "constant": true,
                        "type": "uint248",
                        "lineNumber": 12,
                        "visibility": "public"
                    },
                    {
                        "name": "SECTION_SYSTEM",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 14,
                        "visibility": "public"
                    },
                    {
                        "name": "SECTION_ISSUANCE",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 15,
                        "visibility": "public"
                    },
                    {
                        "name": "SECTION_EXCHANGE",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 16,
                        "visibility": "public"
                    },
                    {
                        "name": "SECTION_SYNTH",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 17,
                        "visibility": "public"
                    },
                    {
                        "name": "systemSuspension",
                        "constant": false,
                        "type": "struct ISystemStatus.Suspension",
                        "lineNumber": 19,
                        "visibility": "public"
                    },
                    {
                        "name": "issuanceSuspension",
                        "constant": false,
                        "type": "struct ISystemStatus.Suspension",
                        "lineNumber": 21,
                        "visibility": "public"
                    },
                    {
                        "name": "exchangeSuspension",
                        "constant": false,
                        "type": "struct ISystemStatus.Suspension",
                        "lineNumber": 23,
                        "visibility": "public"
                    },
                    {
                        "name": "synthSuspension",
                        "constant": false,
                        "type": "mapping(bytes32 => struct ISystemStatus.Suspension)",
                        "lineNumber": 25,
                        "visibility": "public"
                    }
                ],
                "modifiers": [],
                "structs": [],
                "inherits": [
                    "Owned",
                    "ISystemStatus"
                ],
                "libraries": []
            }
        },
        "interfaces": {},
        "libraries": {}
    },
    "contracts/TradingRewards.sol": {
        "imports": [
            "contracts/Pausable.sol",
            "contracts/MixinResolver.sol",
            "contracts/Owned.sol",
            "openzeppelin-solidity-2.3.0/contracts/token/ERC20/ERC20Detailed.sol",
            "openzeppelin-solidity-2.3.0/contracts/token/ERC20/SafeERC20.sol",
            "openzeppelin-solidity-2.3.0/contracts/utils/ReentrancyGuard.sol",
            "contracts/SafeDecimalMath.sol",
            "contracts/interfaces/ITradingRewards.sol",
            "contracts/interfaces/IExchanger.sol"
        ],
        "contracts": {
            "TradingRewards": {
                "functions": [
                    {
                        "name": "constructor",
                        "signature": "(address owner, address periodController, address resolver)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "Owned",
                            "MixinResolver"
                        ],
                        "visibility": "public",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 55,
                                "name": "require(..., Invalid period controller)"
                            }
                        ],
                        "lineNumber": 50
                    },
                    {
                        "name": "resolverAddressesRequired",
                        "signature": "resolverAddressesRequired()",
                        "returns": "(bytes32[])",
                        "events": [],
                        "modifiers": [],
                        "visibility": "public",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 62
                    },
                    {
                        "name": "synthetix",
                        "signature": "synthetix()",
                        "returns": "(contract IERC20)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 68
                    },
                    {
                        "name": "exchanger",
                        "signature": "exchanger()",
                        "returns": "(contract IExchanger)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 72
                    },
                    {
                        "name": "getAvailableRewards",
                        "signature": "getAvailableRewards()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 76
                    },
                    {
                        "name": "getUnassignedRewards",
                        "signature": "getUnassignedRewards()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 80
                    },
                    {
                        "name": "getRewardsToken",
                        "signature": "getRewardsToken()",
                        "returns": "(address)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 84
                    },
                    {
                        "name": "getPeriodController",
                        "signature": "getPeriodController()",
                        "returns": "(address)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 88
                    },
                    {
                        "name": "getCurrentPeriod",
                        "signature": "getCurrentPeriod()",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 92
                    },
                    {
                        "name": "getPeriodIsClaimable",
                        "signature": "getPeriodIsClaimable(uint256 periodID)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 96
                    },
                    {
                        "name": "getPeriodIsFinalized",
                        "signature": "getPeriodIsFinalized(uint256 periodID)",
                        "returns": "(bool)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 100
                    },
                    {
                        "name": "getPeriodRecordedFees",
                        "signature": "getPeriodRecordedFees(uint256 periodID)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 104
                    },
                    {
                        "name": "getPeriodTotalRewards",
                        "signature": "getPeriodTotalRewards(uint256 periodID)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 108
                    },
                    {
                        "name": "getPeriodAvailableRewards",
                        "signature": "getPeriodAvailableRewards(uint256 periodID)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 112
                    },
                    {
                        "name": "getUnaccountedFeesForAccountForPeriod",
                        "signature": "getUnaccountedFeesForAccountForPeriod(address account, uint256 periodID)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 116
                    },
                    {
                        "name": "getAvailableRewardsForAccountForPeriod",
                        "signature": "getAvailableRewardsForAccountForPeriod(address account, uint256 periodID)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 120
                    },
                    {
                        "name": "getAvailableRewardsForAccountForPeriods",
                        "signature": "getAvailableRewardsForAccountForPeriods(address account, uint256[] periodIDs)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "external",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 124
                    },
                    {
                        "name": "_calculateRewards",
                        "signature": "_calculateRewards(address account, uint256 periodID)",
                        "returns": "(uint256)",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 136
                    },
                    {
                        "name": "claimRewardsForPeriod",
                        "signature": "claimRewardsForPeriod(uint256 periodID)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "nonReentrant",
                            "notPaused"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 153
                    },
                    {
                        "name": "claimRewardsForPeriods",
                        "signature": "claimRewardsForPeriods(uint256[] periodIDs)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [
                            "nonReentrant",
                            "notPaused"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 157
                    },
                    {
                        "name": "_claimRewards",
                        "signature": "_claimRewards(address account, uint256 periodID)",
                        "returns": "()",
                        "events": [
                            "RewardsClaimed"
                        ],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 168,
                                "name": "require(..., Period is not finalized)"
                            },
                            {
                                "lineNumber": 171,
                                "name": "require(..., No rewards available)"
                            }
                        ],
                        "lineNumber": 166
                    },
                    {
                        "name": "recordExchangeFeeForAccount",
                        "signature": "recordExchangeFeeForAccount(uint256 usdFeeAmount, address account)",
                        "returns": "()",
                        "events": [
                            "ExchangeFeeRecorded"
                        ],
                        "modifiers": [
                            "onlyExchanger"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [],
                        "lineNumber": 185
                    },
                    {
                        "name": "closeCurrentPeriodWithRewards",
                        "signature": "closeCurrentPeriodWithRewards(uint256 rewards)",
                        "returns": "()",
                        "events": [
                            "PeriodFinalizedWithRewards",
                            "NewPeriodStarted"
                        ],
                        "modifiers": [
                            "onlyPeriodController"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 199,
                                "name": "require(..., Insufficient free rewards)"
                            }
                        ],
                        "lineNumber": 196
                    },
                    {
                        "name": "recoverTokens",
                        "signature": "recoverTokens(address tokenAddress, address recoverAddress)",
                        "returns": "()",
                        "events": [
                            "TokensRecovered"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 218,
                                "name": "require(..., Must use another function)"
                            },
                            {
                                "lineNumber": 223,
                                "name": "require(..., No tokens to recover)"
                            }
                        ],
                        "lineNumber": 216
                    },
                    {
                        "name": "recoverUnassignedRewardTokens",
                        "signature": "recoverUnassignedRewardTokens(address recoverAddress)",
                        "returns": "()",
                        "events": [
                            "UnassignedRewardTokensRecovered"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 234,
                                "name": "require(..., No tokens to recover)"
                            },
                            {
                                "lineNumber": 237,
                                "name": "require(..., No tokens to recover)"
                            }
                        ],
                        "lineNumber": 230
                    },
                    {
                        "name": "recoverAssignedRewardTokensAndDestroyPeriod",
                        "signature": "recoverAssignedRewardTokensAndDestroyPeriod(address recoverAddress, uint256 periodID)",
                        "returns": "()",
                        "events": [
                            "AssignedRewardTokensRecovered"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 246,
                                "name": "require(..., Cannot recover from active)"
                            },
                            {
                                "lineNumber": 249,
                                "name": "require(..., No rewards available to recover)"
                            }
                        ],
                        "lineNumber": 244
                    },
                    {
                        "name": "_validateRecoverAddress",
                        "signature": "_validateRecoverAddress(address recoverAddress)",
                        "returns": "()",
                        "events": [],
                        "modifiers": [],
                        "visibility": "internal",
                        "stateMutability": "view",
                        "requires": [],
                        "lineNumber": 261
                    },
                    {
                        "name": "setPeriodController",
                        "signature": "setPeriodController(address newPeriodController)",
                        "returns": "()",
                        "events": [
                            "PeriodControllerChanged"
                        ],
                        "modifiers": [
                            "onlyOwner"
                        ],
                        "visibility": "external",
                        "stateMutability": "nonpayable",
                        "requires": [
                            {
                                "lineNumber": 268,
                                "name": "require(..., Invalid period controller)"
                            }
                        ],
                        "lineNumber": 267
                    }
                ],
                "events": [
                    {
                        "name": "ExchangeFeeRecorded",
                        "parameters": "(address account, uint256 amount, uint256 periodID)",
                        "lineNumber": 289
                    },
                    {
                        "name": "RewardsClaimed",
                        "parameters": "(address account, uint256 amount, uint256 periodID)",
                        "lineNumber": 290
                    },
                    {
                        "name": "NewPeriodStarted",
                        "parameters": "(uint256 periodID)",
                        "lineNumber": 291
                    },
                    {
                        "name": "PeriodFinalizedWithRewards",
                        "parameters": "(uint256 periodID, uint256 rewards)",
                        "lineNumber": 292
                    },
                    {
                        "name": "TokensRecovered",
                        "parameters": "(address tokenAddress, address recoverAddress, uint256 amount)",
                        "lineNumber": 293
                    },
                    {
                        "name": "UnassignedRewardTokensRecovered",
                        "parameters": "(address recoverAddress, uint256 amount)",
                        "lineNumber": 294
                    },
                    {
                        "name": "AssignedRewardTokensRecovered",
                        "parameters": "(address recoverAddress, uint256 amount, uint256 periodID)",
                        "lineNumber": 295
                    },
                    {
                        "name": "PeriodControllerChanged",
                        "parameters": "(address newPeriodController)",
                        "lineNumber": 296
                    }
                ],
                "variables": [
                    {
                        "name": "_currentPeriodID",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 29,
                        "visibility": "private"
                    },
                    {
                        "name": "_balanceAssignedToRewards",
                        "constant": false,
                        "type": "uint256",
                        "lineNumber": 30,
                        "visibility": "private"
                    },
                    {
                        "name": "_periods",
                        "constant": false,
                        "type": "mapping(uint256 => struct TradingRewards.Period)",
                        "lineNumber": 31,
                        "visibility": "private"
                    },
                    {
                        "name": "_periodController",
                        "constant": false,
                        "type": "address",
                        "lineNumber": 41,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_EXCHANGER",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 45,
                        "visibility": "private"
                    },
                    {
                        "name": "CONTRACT_SYNTHETIX",
                        "constant": true,
                        "type": "bytes32",
                        "lineNumber": 46,
                        "visibility": "private"
                    }
                ],
                "modifiers": [
                    {
                        "name": "onlyPeriodController",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 277
                    },
                    {
                        "name": "onlyExchanger",
                        "parameters": "()",
                        "visibility": "internal",
                        "lineNumber": 282
                    }
                ],
                "structs": [
                    {
                        "name": "Period",
                        "members": [
                            {
                                "name": "isFinalized",
                                "type": "bool"
                            },
                            {
                                "name": "recordedFees",
                                "type": "uint256"
                            },
                            {
                                "name": "totalRewards",
                                "type": "uint256"
                            },
                            {
                                "name": "availableRewards",
                                "type": "uint256"
                            },
                            {
                                "name": "unaccountedFeesForAccount",
                                "type": "mapping(address => uint256)"
                            }
                        ],
                        "lineNumber": 33
                    }
                ],
                "inherits": [
                    "ITradingRewards",
                    "ReentrancyGuard",
                    "Owned",
                    "Pausable",
                    "MixinResolver"
                ],
                "libraries": [
                    {
                        "name": "SafeMath",
                        "type": "uint"
                    },
                    {
                        "name": "SafeDecimalMath",
                        "type": "uint"
                    },
                    {
                        "name": "SafeERC20",
                        "type": "IERC20"
                    }
                ]
            }
        },
        "interfaces": {},
        "libraries": {}
    }
}