{
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        }
      ],
      "name": "getAssetPrice",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "priceInETH",
          "type": "uint256"
        }
      ],
      "name": "setAssetPrice",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "allSourcePaths": {
    "25": "contracts/mocks/PriceOracle.sol",
    "33": "interfaces/IExchange.sol"
  },
  "ast": {
    "absolutePath": "contracts/mocks/PriceOracle.sol",
    "exportedSymbols": {
      "IPriceOracle": [
        14497
      ],
      "PriceOracle": [
        13937
      ]
    },
    "id": 13938,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 13901,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "39:23:25"
      },
      {
        "absolutePath": "interfaces/IExchange.sol",
        "file": "../../interfaces/IExchange.sol",
        "id": 13903,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 13938,
        "sourceUnit": 14555,
        "src": "64:60:25",
        "symbolAliases": [
          {
            "foreign": {
              "id": 13902,
              "name": "IPriceOracle",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "72:12:25",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 13904,
              "name": "IPriceOracle",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 14497,
              "src": "150:12:25"
            },
            "id": 13905,
            "nodeType": "InheritanceSpecifier",
            "src": "150:12:25"
          }
        ],
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 13937,
        "linearizedBaseContracts": [
          13937,
          14497
        ],
        "name": "PriceOracle",
        "nameLocation": "135:11:25",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 13909,
            "mutability": "mutable",
            "name": "_prices",
            "nameLocation": "204:7:25",
            "nodeType": "VariableDeclaration",
            "scope": 13937,
            "src": "167:44:25",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 13908,
              "keyType": {
                "id": 13906,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "175:7:25",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "167:27:25",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 13907,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "186:7:25",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              14496
            ],
            "body": {
              "id": 13921,
              "nodeType": "Block",
              "src": "295:32:25",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "id": 13917,
                      "name": "_prices",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13909,
                      "src": "308:7:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 13919,
                    "indexExpression": {
                      "id": 13918,
                      "name": "asset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13911,
                      "src": "316:5:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "308:14:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 13916,
                  "id": 13920,
                  "nodeType": "Return",
                  "src": "301:21:25"
                }
              ]
            },
            "functionSelector": "b3596f07",
            "id": 13922,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAssetPrice",
            "nameLocation": "225:13:25",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 13913,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "268:8:25"
            },
            "parameters": {
              "id": 13912,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13911,
                  "mutability": "mutable",
                  "name": "asset",
                  "nameLocation": "247:5:25",
                  "nodeType": "VariableDeclaration",
                  "scope": 13922,
                  "src": "239:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13910,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "239:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "238:15:25"
            },
            "returnParameters": {
              "id": 13916,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13915,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 13922,
                  "src": "286:7:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13914,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "286:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "285:9:25"
            },
            "scope": 13937,
            "src": "216:111:25",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 13935,
              "nodeType": "Block",
              "src": "398:38:25",
              "statements": [
                {
                  "expression": {
                    "id": 13933,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 13929,
                        "name": "_prices",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13909,
                        "src": "404:7:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 13931,
                      "indexExpression": {
                        "id": 13930,
                        "name": "asset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13924,
                        "src": "412:5:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "404:14:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 13932,
                      "name": "priceInETH",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13926,
                      "src": "421:10:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "404:27:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 13934,
                  "nodeType": "ExpressionStatement",
                  "src": "404:27:25"
                }
              ]
            },
            "functionSelector": "51323f72",
            "id": 13936,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setAssetPrice",
            "nameLocation": "340:13:25",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13927,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13924,
                  "mutability": "mutable",
                  "name": "asset",
                  "nameLocation": "362:5:25",
                  "nodeType": "VariableDeclaration",
                  "scope": 13936,
                  "src": "354:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13923,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "354:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13926,
                  "mutability": "mutable",
                  "name": "priceInETH",
                  "nameLocation": "377:10:25",
                  "nodeType": "VariableDeclaration",
                  "scope": 13936,
                  "src": "369:18:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13925,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "369:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "353:35:25"
            },
            "returnParameters": {
              "id": 13928,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "398:0:25"
            },
            "scope": 13937,
            "src": "331:105:25",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 13938,
        "src": "126:312:25",
        "usedErrors": []
      }
    ],
    "src": "39:400:25"
  },
  "bytecode": "608060405234801561001057600080fd5b5061012f806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806351323f72146037578063b3596f07146060575b600080fd5b605e604236600460d2565b6001600160a01b03909116600090815260208190526040902055565b005b6086606b36600460b3565b6001600160a01b031660009081526020819052604090205490565b60405190815260200160405180910390f35b80356001600160a01b038116811460ae57600080fd5b919050565b60006020828403121560c457600080fd5b60cb826098565b9392505050565b6000806040838503121560e457600080fd5b60eb836098565b94602093909301359350505056fea264697066735822122042037d6c06d4521df7058700a174c7596f915f7ada855112a493c76e00a3262e64736f6c63430008060033",
  "bytecodeSha1": "bd2e316e10e1f168d645f92e9efaab83b95f0cc1",
  "compiler": {
    "evm_version": "istanbul",
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "version": "0.8.6+commit.11564f7e"
  },
  "contractName": "PriceOracle",
  "coverageMap": {
    "branches": {
      "25": {},
      "33": {}
    },
    "statements": {
      "25": {
        "PriceOracle.getAssetPrice": {
          "1": [
            301,
            322
          ]
        },
        "PriceOracle.setAssetPrice": {
          "0": [
            404,
            431
          ]
        }
      },
      "33": {}
    }
  },
  "dependencies": [
    "IPriceOracle"
  ],
  "deployedBytecode": "6080604052348015600f57600080fd5b506004361060325760003560e01c806351323f72146037578063b3596f07146060575b600080fd5b605e604236600460d2565b6001600160a01b03909116600090815260208190526040902055565b005b6086606b36600460b3565b6001600160a01b031660009081526020819052604090205490565b60405190815260200160405180910390f35b80356001600160a01b038116811460ae57600080fd5b919050565b60006020828403121560c457600080fd5b60cb826098565b9392505050565b6000806040838503121560e457600080fd5b60eb836098565b94602093909301359350505056fea264697066735822122042037d6c06d4521df7058700a174c7596f915f7ada855112a493c76e00a3262e64736f6c63430008060033",
  "deployedSourceMap": "126:312:25:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;331:105;;;;;;:::i;:::-;-1:-1:-1;;;;;404:14:25;;;:7;:14;;;;;;;;;;:27;331:105;;;216:111;;;;;;:::i;:::-;-1:-1:-1;;;;;308:14:25;286:7;308:14;;;;;;;;;;;;216:111;;;;788:25:114;;;776:2;761:18;216:111:25;;;;;;;14:173:114;82:20;;-1:-1:-1;;;;;131:31:114;;121:42;;111:2;;177:1;174;167:12;111:2;63:124;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:2;;;320:1;317;310:12;272:2;343:29;362:9;343:29;:::i;:::-;333:39;262:116;-1:-1:-1;;;262:116:114:o;383:254::-;451:6;459;512:2;500:9;491:7;487:23;483:32;480:2;;;528:1;525;518:12;480:2;551:29;570:9;551:29;:::i;:::-;541:39;627:2;612:18;;;;599:32;;-1:-1:-1;;;470:167:114:o",
  "language": "Solidity",
  "natspec": {
    "kind": "dev",
    "methods": {
      "getAssetPrice(address)": {
        "details": "Returns the price of the asset in ETH",
        "params": {
          "asset": "Address of a ERC20 asset"
        },
        "returns": {
          "_0": "Price of the asset in ETH (Wad)"
        }
      }
    },
    "version": 1
  },
  "offset": [
    126,
    438
  ],
  "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x51323F72 EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0xB3596F07 EQ PUSH1 0x60 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5E PUSH1 0x42 CALLDATASIZE PUSH1 0x4 PUSH1 0xD2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST STOP JUMPDEST PUSH1 0x86 PUSH1 0x6B CALLDATASIZE PUSH1 0x4 PUSH1 0xB3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH1 0xAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0xC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xCB DUP3 PUSH1 0x98 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH1 0xE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xEB DUP4 PUSH1 0x98 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 TIMESTAMP SUB PUSH30 0x6C06D4521DF7058700A174C7596F915F7ADA855112A493C76E00A3262E64 PUSH20 0x6F6C634300080600330000000000000000000000 ",
  "pcMap": {
    "0": {
      "offset": [
        126,
        438
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x80"
    },
    "2": {
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x40"
    },
    "4": {
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "5": {
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "CALLVALUE",
      "path": "25"
    },
    "6": {
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "DUP1",
      "path": "25"
    },
    "7": {
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "ISZERO",
      "path": "25"
    },
    "8": {
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0xF"
    },
    "10": {
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "JUMPI",
      "path": "25"
    },
    "11": {
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x0"
    },
    "13": {
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "DUP1",
      "path": "25"
    },
    "14": {
      "dev": "Cannot send ether to nonpayable function",
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "REVERT",
      "path": "25"
    },
    "15": {
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "16": {
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "POP",
      "path": "25"
    },
    "17": {
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x4"
    },
    "19": {
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "CALLDATASIZE",
      "path": "25"
    },
    "20": {
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "LT",
      "path": "25"
    },
    "21": {
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x32"
    },
    "23": {
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "JUMPI",
      "path": "25"
    },
    "24": {
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x0"
    },
    "26": {
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "CALLDATALOAD",
      "path": "25"
    },
    "27": {
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0xE0"
    },
    "29": {
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "SHR",
      "path": "25"
    },
    "30": {
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "DUP1",
      "path": "25"
    },
    "31": {
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "PUSH4",
      "path": "25",
      "value": "0x51323F72"
    },
    "36": {
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "EQ",
      "path": "25"
    },
    "37": {
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x37"
    },
    "39": {
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "JUMPI",
      "path": "25"
    },
    "40": {
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "DUP1",
      "path": "25"
    },
    "41": {
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "PUSH4",
      "path": "25",
      "value": "0xB3596F07"
    },
    "46": {
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "EQ",
      "path": "25"
    },
    "47": {
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x60"
    },
    "49": {
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "JUMPI",
      "path": "25"
    },
    "50": {
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "51": {
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x0"
    },
    "53": {
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "DUP1",
      "path": "25"
    },
    "54": {
      "first_revert": true,
      "fn": null,
      "offset": [
        126,
        438
      ],
      "op": "REVERT",
      "path": "25"
    },
    "55": {
      "fn": "PriceOracle.setAssetPrice",
      "offset": [
        331,
        436
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "56": {
      "fn": "PriceOracle.setAssetPrice",
      "offset": [
        331,
        436
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x5E"
    },
    "58": {
      "fn": "PriceOracle.setAssetPrice",
      "offset": [
        331,
        436
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x42"
    },
    "60": {
      "fn": "PriceOracle.setAssetPrice",
      "offset": [
        331,
        436
      ],
      "op": "CALLDATASIZE",
      "path": "25"
    },
    "61": {
      "fn": "PriceOracle.setAssetPrice",
      "offset": [
        331,
        436
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x4"
    },
    "63": {
      "fn": "PriceOracle.setAssetPrice",
      "offset": [
        331,
        436
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0xD2"
    },
    "65": {
      "fn": "PriceOracle.setAssetPrice",
      "jump": "i",
      "offset": [
        331,
        436
      ],
      "op": "JUMP",
      "path": "25"
    },
    "66": {
      "fn": "PriceOracle.setAssetPrice",
      "offset": [
        331,
        436
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "67": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "69": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "71": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "73": {
      "op": "SHL"
    },
    "74": {
      "op": "SUB"
    },
    "75": {
      "fn": "PriceOracle.setAssetPrice",
      "offset": [
        404,
        418
      ],
      "op": "SWAP1",
      "path": "25",
      "statement": 0
    },
    "76": {
      "fn": "PriceOracle.setAssetPrice",
      "offset": [
        404,
        418
      ],
      "op": "SWAP2",
      "path": "25"
    },
    "77": {
      "fn": "PriceOracle.setAssetPrice",
      "offset": [
        404,
        418
      ],
      "op": "AND",
      "path": "25"
    },
    "78": {
      "fn": "PriceOracle.setAssetPrice",
      "offset": [
        404,
        411
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x0"
    },
    "80": {
      "fn": "PriceOracle.setAssetPrice",
      "offset": [
        404,
        418
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "81": {
      "fn": "PriceOracle.setAssetPrice",
      "offset": [
        404,
        418
      ],
      "op": "DUP2",
      "path": "25"
    },
    "82": {
      "fn": "PriceOracle.setAssetPrice",
      "offset": [
        404,
        418
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "83": {
      "fn": "PriceOracle.setAssetPrice",
      "offset": [
        404,
        418
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x20"
    },
    "85": {
      "fn": "PriceOracle.setAssetPrice",
      "offset": [
        404,
        418
      ],
      "op": "DUP2",
      "path": "25"
    },
    "86": {
      "fn": "PriceOracle.setAssetPrice",
      "offset": [
        404,
        418
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "87": {
      "fn": "PriceOracle.setAssetPrice",
      "offset": [
        404,
        418
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "88": {
      "fn": "PriceOracle.setAssetPrice",
      "offset": [
        404,
        418
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x40"
    },
    "90": {
      "fn": "PriceOracle.setAssetPrice",
      "offset": [
        404,
        418
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "91": {
      "fn": "PriceOracle.setAssetPrice",
      "offset": [
        404,
        418
      ],
      "op": "KECCAK256",
      "path": "25"
    },
    "92": {
      "fn": "PriceOracle.setAssetPrice",
      "offset": [
        404,
        431
      ],
      "op": "SSTORE",
      "path": "25"
    },
    "93": {
      "fn": "PriceOracle.setAssetPrice",
      "offset": [
        331,
        436
      ],
      "op": "JUMP",
      "path": "25"
    },
    "94": {
      "fn": "PriceOracle.setAssetPrice",
      "offset": [
        331,
        436
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "95": {
      "fn": "PriceOracle.setAssetPrice",
      "offset": [
        331,
        436
      ],
      "op": "STOP",
      "path": "25"
    },
    "96": {
      "fn": "PriceOracle.getAssetPrice",
      "offset": [
        216,
        327
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "97": {
      "fn": "PriceOracle.getAssetPrice",
      "offset": [
        216,
        327
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x86"
    },
    "99": {
      "fn": "PriceOracle.getAssetPrice",
      "offset": [
        216,
        327
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x6B"
    },
    "101": {
      "fn": "PriceOracle.getAssetPrice",
      "offset": [
        216,
        327
      ],
      "op": "CALLDATASIZE",
      "path": "25"
    },
    "102": {
      "fn": "PriceOracle.getAssetPrice",
      "offset": [
        216,
        327
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x4"
    },
    "104": {
      "fn": "PriceOracle.getAssetPrice",
      "offset": [
        216,
        327
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0xB3"
    },
    "106": {
      "fn": "PriceOracle.getAssetPrice",
      "jump": "i",
      "offset": [
        216,
        327
      ],
      "op": "JUMP",
      "path": "25"
    },
    "107": {
      "fn": "PriceOracle.getAssetPrice",
      "offset": [
        216,
        327
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "108": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "110": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "112": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "114": {
      "op": "SHL"
    },
    "115": {
      "op": "SUB"
    },
    "116": {
      "fn": "PriceOracle.getAssetPrice",
      "offset": [
        308,
        322
      ],
      "op": "AND",
      "path": "25",
      "statement": 1
    },
    "117": {
      "fn": "PriceOracle.getAssetPrice",
      "offset": [
        286,
        293
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x0"
    },
    "119": {
      "fn": "PriceOracle.getAssetPrice",
      "offset": [
        308,
        322
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "120": {
      "fn": "PriceOracle.getAssetPrice",
      "offset": [
        308,
        322
      ],
      "op": "DUP2",
      "path": "25"
    },
    "121": {
      "fn": "PriceOracle.getAssetPrice",
      "offset": [
        308,
        322
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "122": {
      "fn": "PriceOracle.getAssetPrice",
      "offset": [
        308,
        322
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x20"
    },
    "124": {
      "fn": "PriceOracle.getAssetPrice",
      "offset": [
        308,
        322
      ],
      "op": "DUP2",
      "path": "25"
    },
    "125": {
      "fn": "PriceOracle.getAssetPrice",
      "offset": [
        308,
        322
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "126": {
      "fn": "PriceOracle.getAssetPrice",
      "offset": [
        308,
        322
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "127": {
      "fn": "PriceOracle.getAssetPrice",
      "offset": [
        308,
        322
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x40"
    },
    "129": {
      "fn": "PriceOracle.getAssetPrice",
      "offset": [
        308,
        322
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "130": {
      "fn": "PriceOracle.getAssetPrice",
      "offset": [
        308,
        322
      ],
      "op": "KECCAK256",
      "path": "25"
    },
    "131": {
      "fn": "PriceOracle.getAssetPrice",
      "offset": [
        308,
        322
      ],
      "op": "SLOAD",
      "path": "25"
    },
    "132": {
      "fn": "PriceOracle.getAssetPrice",
      "offset": [
        308,
        322
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "133": {
      "fn": "PriceOracle.getAssetPrice",
      "offset": [
        216,
        327
      ],
      "op": "JUMP",
      "path": "25"
    },
    "134": {
      "fn": "PriceOracle.getAssetPrice",
      "offset": [
        216,
        327
      ],
      "op": "JUMPDEST",
      "path": "25"
    },
    "135": {
      "fn": "PriceOracle.getAssetPrice",
      "offset": [
        216,
        327
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x40"
    },
    "137": {
      "fn": "PriceOracle.getAssetPrice",
      "offset": [
        216,
        327
      ],
      "op": "MLOAD",
      "path": "25"
    },
    "138": {
      "op": "SWAP1"
    },
    "139": {
      "op": "DUP2"
    },
    "140": {
      "op": "MSTORE"
    },
    "141": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "143": {
      "op": "ADD"
    },
    "144": {
      "fn": "PriceOracle.getAssetPrice",
      "offset": [
        216,
        327
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x40"
    },
    "146": {
      "fn": "PriceOracle.getAssetPrice",
      "offset": [
        216,
        327
      ],
      "op": "MLOAD",
      "path": "25"
    },
    "147": {
      "fn": "PriceOracle.getAssetPrice",
      "offset": [
        216,
        327
      ],
      "op": "DUP1",
      "path": "25"
    },
    "148": {
      "fn": "PriceOracle.getAssetPrice",
      "offset": [
        216,
        327
      ],
      "op": "SWAP2",
      "path": "25"
    },
    "149": {
      "fn": "PriceOracle.getAssetPrice",
      "offset": [
        216,
        327
      ],
      "op": "SUB",
      "path": "25"
    },
    "150": {
      "fn": "PriceOracle.getAssetPrice",
      "offset": [
        216,
        327
      ],
      "op": "SWAP1",
      "path": "25"
    },
    "151": {
      "fn": "PriceOracle.getAssetPrice",
      "offset": [
        216,
        327
      ],
      "op": "RETURN",
      "path": "25"
    },
    "152": {
      "op": "JUMPDEST"
    },
    "153": {
      "op": "DUP1"
    },
    "154": {
      "op": "CALLDATALOAD"
    },
    "155": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "157": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "159": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "161": {
      "op": "SHL"
    },
    "162": {
      "op": "SUB"
    },
    "163": {
      "op": "DUP2"
    },
    "164": {
      "op": "AND"
    },
    "165": {
      "op": "DUP2"
    },
    "166": {
      "op": "EQ"
    },
    "167": {
      "op": "PUSH1",
      "value": "0xAE"
    },
    "169": {
      "op": "JUMPI"
    },
    "170": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "172": {
      "op": "DUP1"
    },
    "173": {
      "op": "REVERT"
    },
    "174": {
      "op": "JUMPDEST"
    },
    "175": {
      "op": "SWAP2"
    },
    "176": {
      "op": "SWAP1"
    },
    "177": {
      "op": "POP"
    },
    "178": {
      "jump": "o",
      "op": "JUMP"
    },
    "179": {
      "op": "JUMPDEST"
    },
    "180": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "182": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "184": {
      "op": "DUP3"
    },
    "185": {
      "op": "DUP5"
    },
    "186": {
      "op": "SUB"
    },
    "187": {
      "op": "SLT"
    },
    "188": {
      "op": "ISZERO"
    },
    "189": {
      "op": "PUSH1",
      "value": "0xC4"
    },
    "191": {
      "op": "JUMPI"
    },
    "192": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "194": {
      "op": "DUP1"
    },
    "195": {
      "op": "REVERT"
    },
    "196": {
      "op": "JUMPDEST"
    },
    "197": {
      "op": "PUSH1",
      "value": "0xCB"
    },
    "199": {
      "op": "DUP3"
    },
    "200": {
      "op": "PUSH1",
      "value": "0x98"
    },
    "202": {
      "jump": "i",
      "op": "JUMP"
    },
    "203": {
      "op": "JUMPDEST"
    },
    "204": {
      "op": "SWAP4"
    },
    "205": {
      "op": "SWAP3"
    },
    "206": {
      "op": "POP"
    },
    "207": {
      "op": "POP"
    },
    "208": {
      "op": "POP"
    },
    "209": {
      "jump": "o",
      "op": "JUMP"
    },
    "210": {
      "op": "JUMPDEST"
    },
    "211": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "213": {
      "op": "DUP1"
    },
    "214": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "216": {
      "op": "DUP4"
    },
    "217": {
      "op": "DUP6"
    },
    "218": {
      "op": "SUB"
    },
    "219": {
      "op": "SLT"
    },
    "220": {
      "op": "ISZERO"
    },
    "221": {
      "op": "PUSH1",
      "value": "0xE4"
    },
    "223": {
      "op": "JUMPI"
    },
    "224": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "226": {
      "op": "DUP1"
    },
    "227": {
      "op": "REVERT"
    },
    "228": {
      "op": "JUMPDEST"
    },
    "229": {
      "op": "PUSH1",
      "value": "0xEB"
    },
    "231": {
      "op": "DUP4"
    },
    "232": {
      "op": "PUSH1",
      "value": "0x98"
    },
    "234": {
      "jump": "i",
      "op": "JUMP"
    },
    "235": {
      "op": "JUMPDEST"
    },
    "236": {
      "op": "SWAP5"
    },
    "237": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "239": {
      "op": "SWAP4"
    },
    "240": {
      "op": "SWAP1"
    },
    "241": {
      "op": "SWAP4"
    },
    "242": {
      "op": "ADD"
    },
    "243": {
      "op": "CALLDATALOAD"
    },
    "244": {
      "op": "SWAP4"
    },
    "245": {
      "op": "POP"
    },
    "246": {
      "op": "POP"
    },
    "247": {
      "op": "POP"
    },
    "248": {
      "jump": "o",
      "op": "JUMP"
    }
  },
  "sha1": "5a1292d857a8cccfb147817669beedfa24d4dc5e",
  "source": "// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\nimport {IPriceOracle} from \"../../interfaces/IExchange.sol\";\n\ncontract PriceOracle is IPriceOracle {\n  mapping(address => uint256) internal _prices;\n\n  function getAssetPrice(address asset) external view override returns (uint256) {\n    return _prices[asset];\n  }\n\n  function setAssetPrice(address asset, uint256 priceInETH) external {\n    _prices[asset] = priceInETH;\n  }\n}\n",
  "sourceMap": "126:312:25:-:0;;;;;;;;;;;;;;;;;;;",
  "sourcePath": "contracts/mocks/PriceOracle.sol",
  "type": "contract"
}