{
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "ChainlinkCancelled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "ChainlinkFulfilled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "ChainlinkRequested",
      "type": "event"
    }
  ],
  "allSourcePaths": {
    "54": "/home/vscode/.brownie/packages/smartcontractkit/chainlink@1.6.0/contracts/src/v0.8/Chainlink.sol",
    "55": "/home/vscode/.brownie/packages/smartcontractkit/chainlink@1.6.0/contracts/src/v0.8/ChainlinkClient.sol",
    "56": "/home/vscode/.brownie/packages/smartcontractkit/chainlink@1.6.0/contracts/src/v0.8/interfaces/ChainlinkRequestInterface.sol",
    "57": "/home/vscode/.brownie/packages/smartcontractkit/chainlink@1.6.0/contracts/src/v0.8/interfaces/ENSInterface.sol",
    "58": "/home/vscode/.brownie/packages/smartcontractkit/chainlink@1.6.0/contracts/src/v0.8/interfaces/LinkTokenInterface.sol",
    "59": "/home/vscode/.brownie/packages/smartcontractkit/chainlink@1.6.0/contracts/src/v0.8/interfaces/OperatorInterface.sol",
    "60": "/home/vscode/.brownie/packages/smartcontractkit/chainlink@1.6.0/contracts/src/v0.8/interfaces/OracleInterface.sol",
    "61": "/home/vscode/.brownie/packages/smartcontractkit/chainlink@1.6.0/contracts/src/v0.8/interfaces/PointerInterface.sol",
    "62": "/home/vscode/.brownie/packages/smartcontractkit/chainlink@1.6.0/contracts/src/v0.8/vendor/BufferChainlink.sol",
    "63": "/home/vscode/.brownie/packages/smartcontractkit/chainlink@1.6.0/contracts/src/v0.8/vendor/CBORChainlink.sol",
    "64": "/home/vscode/.brownie/packages/smartcontractkit/chainlink@1.6.0/contracts/src/v0.8/vendor/ENSResolver.sol"
  },
  "ast": {
    "absolutePath": "/home/vscode/.brownie/packages/smartcontractkit/chainlink@1.6.0/contracts/src/v0.8/ChainlinkClient.sol",
    "exportedSymbols": {
      "BufferChainlink": [
        28140
      ],
      "CBORChainlink": [
        28587
      ],
      "Chainlink": [
        25676
      ],
      "ChainlinkClient": [
        17961
      ],
      "ChainlinkRequestInterface": [
        25709
      ],
      "ENSInterface": [
        25789
      ],
      "ENSResolver_Chainlink": [
        25982
      ],
      "LinkTokenInterface": [
        25884
      ],
      "OperatorInterface": [
        25964
      ],
      "OracleInterface": [
        28626
      ],
      "PointerInterface": [
        25972
      ]
    },
    "id": 17962,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 17370,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "32:23:55"
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/smartcontractkit/chainlink@1.6.0/contracts/src/v0.8/Chainlink.sol",
        "file": "./Chainlink.sol",
        "id": 17371,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 17962,
        "sourceUnit": 25677,
        "src": "57:25:55",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/smartcontractkit/chainlink@1.6.0/contracts/src/v0.8/interfaces/ENSInterface.sol",
        "file": "./interfaces/ENSInterface.sol",
        "id": 17372,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 17962,
        "sourceUnit": 25790,
        "src": "83:39:55",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/smartcontractkit/chainlink@1.6.0/contracts/src/v0.8/interfaces/LinkTokenInterface.sol",
        "file": "./interfaces/LinkTokenInterface.sol",
        "id": 17373,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 17962,
        "sourceUnit": 25885,
        "src": "123:45:55",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/smartcontractkit/chainlink@1.6.0/contracts/src/v0.8/interfaces/ChainlinkRequestInterface.sol",
        "file": "./interfaces/ChainlinkRequestInterface.sol",
        "id": 17374,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 17962,
        "sourceUnit": 25710,
        "src": "169:52:55",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/smartcontractkit/chainlink@1.6.0/contracts/src/v0.8/interfaces/OperatorInterface.sol",
        "file": "./interfaces/OperatorInterface.sol",
        "id": 17375,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 17962,
        "sourceUnit": 25965,
        "src": "222:44:55",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/smartcontractkit/chainlink@1.6.0/contracts/src/v0.8/interfaces/PointerInterface.sol",
        "file": "./interfaces/PointerInterface.sol",
        "id": 17376,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 17962,
        "sourceUnit": 25973,
        "src": "267:43:55",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/smartcontractkit/chainlink@1.6.0/contracts/src/v0.8/vendor/ENSResolver.sol",
        "file": "./vendor/ENSResolver.sol",
        "id": 17378,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 17962,
        "sourceUnit": 25983,
        "src": "311:78:55",
        "symbolAliases": [
          {
            "foreign": {
              "id": 17377,
              "name": "ENSResolver",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "319:11:55",
              "typeDescriptions": {}
            },
            "local": "ENSResolver_Chainlink",
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "abstract": true,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": {
          "id": 17379,
          "nodeType": "StructuredDocumentation",
          "src": "391:157:55",
          "text": " @title The ChainlinkClient contract\n @notice Contract writers can inherit this contract in order to create requests for the\n Chainlink network"
        },
        "fullyImplemented": true,
        "id": 17961,
        "linearizedBaseContracts": [
          17961
        ],
        "name": "ChainlinkClient",
        "nameLocation": "567:15:55",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 17383,
            "libraryName": {
              "id": 17380,
              "name": "Chainlink",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 25676,
              "src": "593:9:55"
            },
            "nodeType": "UsingForDirective",
            "src": "587:38:55",
            "typeName": {
              "id": 17382,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 17381,
                "name": "Chainlink.Request",
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 25433,
                "src": "607:17:55"
              },
              "referencedDeclaration": 25433,
              "src": "607:17:55",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Request_$25433_storage_ptr",
                "typeString": "struct Chainlink.Request"
              }
            }
          },
          {
            "constant": true,
            "id": 17388,
            "mutability": "constant",
            "name": "LINK_DIVISIBILITY",
            "nameLocation": "655:17:55",
            "nodeType": "VariableDeclaration",
            "scope": 17961,
            "src": "629:52:55",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 17384,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "629:7:55",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "commonType": {
                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                "typeString": "int_const 1000000000000000000"
              },
              "id": 17387,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "lValueRequested": false,
              "leftExpression": {
                "hexValue": "3130",
                "id": 17385,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "675:2:55",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_10_by_1",
                  "typeString": "int_const 10"
                },
                "value": "10"
              },
              "nodeType": "BinaryOperation",
              "operator": "**",
              "rightExpression": {
                "hexValue": "3138",
                "id": 17386,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "679:2:55",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_18_by_1",
                  "typeString": "int_const 18"
                },
                "value": "18"
              },
              "src": "675:6:55",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                "typeString": "int_const 1000000000000000000"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 17391,
            "mutability": "constant",
            "name": "AMOUNT_OVERRIDE",
            "nameLocation": "710:15:55",
            "nodeType": "VariableDeclaration",
            "scope": 17961,
            "src": "685:44:55",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 17389,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "685:7:55",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "30",
              "id": 17390,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "728:1:55",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_0_by_1",
                "typeString": "int_const 0"
              },
              "value": "0"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 17397,
            "mutability": "constant",
            "name": "SENDER_OVERRIDE",
            "nameLocation": "758:15:55",
            "nodeType": "VariableDeclaration",
            "scope": 17961,
            "src": "733:53:55",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 17392,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "733:7:55",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": {
              "arguments": [
                {
                  "hexValue": "30",
                  "id": 17395,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "784:1:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_0_by_1",
                    "typeString": "int_const 0"
                  },
                  "value": "0"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_rational_0_by_1",
                    "typeString": "int_const 0"
                  }
                ],
                "id": 17394,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "ElementaryTypeNameExpression",
                "src": "776:7:55",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_address_$",
                  "typeString": "type(address)"
                },
                "typeName": {
                  "id": 17393,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "776:7:55",
                  "typeDescriptions": {}
                }
              },
              "id": 17396,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "776:10:55",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 17400,
            "mutability": "constant",
            "name": "ORACLE_ARGS_VERSION",
            "nameLocation": "815:19:55",
            "nodeType": "VariableDeclaration",
            "scope": 17961,
            "src": "790:48:55",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 17398,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "790:7:55",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "31",
              "id": 17399,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "837:1:55",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1_by_1",
                "typeString": "int_const 1"
              },
              "value": "1"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 17403,
            "mutability": "constant",
            "name": "OPERATOR_ARGS_VERSION",
            "nameLocation": "867:21:55",
            "nodeType": "VariableDeclaration",
            "scope": 17961,
            "src": "842:50:55",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 17401,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "842:7:55",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "32",
              "id": 17402,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "891:1:55",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_2_by_1",
                "typeString": "int_const 2"
              },
              "value": "2"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 17408,
            "mutability": "constant",
            "name": "ENS_TOKEN_SUBNAME",
            "nameLocation": "921:17:55",
            "nodeType": "VariableDeclaration",
            "scope": 17961,
            "src": "896:62:55",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 17404,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "896:7:55",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "arguments": [
                {
                  "hexValue": "6c696e6b",
                  "id": 17406,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "951:6:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_90430203e2d9ce04f00738d355173358b054545ecb52218de9c6fb01cbd9aeaf",
                    "typeString": "literal_string \"link\""
                  },
                  "value": "link"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_90430203e2d9ce04f00738d355173358b054545ecb52218de9c6fb01cbd9aeaf",
                    "typeString": "literal_string \"link\""
                  }
                ],
                "id": 17405,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": -8,
                "src": "941:9:55",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                  "typeString": "function (bytes memory) pure returns (bytes32)"
                }
              },
              "id": 17407,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "941:17:55",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 17413,
            "mutability": "constant",
            "name": "ENS_ORACLE_SUBNAME",
            "nameLocation": "987:18:55",
            "nodeType": "VariableDeclaration",
            "scope": 17961,
            "src": "962:65:55",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 17409,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "962:7:55",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "arguments": [
                {
                  "hexValue": "6f7261636c65",
                  "id": 17411,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "1018:8:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_89cbf5af14e0328a3cd3a734f92c3832d729d431da79b7873a62cbeebd37beb6",
                    "typeString": "literal_string \"oracle\""
                  },
                  "value": "oracle"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_89cbf5af14e0328a3cd3a734f92c3832d729d431da79b7873a62cbeebd37beb6",
                    "typeString": "literal_string \"oracle\""
                  }
                ],
                "id": 17410,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": -8,
                "src": "1008:9:55",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                  "typeString": "function (bytes memory) pure returns (bytes32)"
                }
              },
              "id": 17412,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "1008:19:55",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 17416,
            "mutability": "constant",
            "name": "LINK_TOKEN_POINTER",
            "nameLocation": "1056:18:55",
            "nodeType": "VariableDeclaration",
            "scope": 17961,
            "src": "1031:88:55",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 17414,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1031:7:55",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": {
              "hexValue": "307843383962443445313633324433413433434230334141416435323632636265343033384263353731",
              "id": 17415,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1077:42:55",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              },
              "value": "0xC89bD4E1632D3A43CB03AAAd5262cbe4038Bc571"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 17419,
            "mutability": "mutable",
            "name": "s_ens",
            "nameLocation": "1145:5:55",
            "nodeType": "VariableDeclaration",
            "scope": 17961,
            "src": "1124:26:55",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ENSInterface_$25789",
              "typeString": "contract ENSInterface"
            },
            "typeName": {
              "id": 17418,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 17417,
                "name": "ENSInterface",
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 25789,
                "src": "1124:12:55"
              },
              "referencedDeclaration": 25789,
              "src": "1124:12:55",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ENSInterface_$25789",
                "typeString": "contract ENSInterface"
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 17421,
            "mutability": "mutable",
            "name": "s_ensNode",
            "nameLocation": "1170:9:55",
            "nodeType": "VariableDeclaration",
            "scope": 17961,
            "src": "1154:25:55",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 17420,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1154:7:55",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 17424,
            "mutability": "mutable",
            "name": "s_link",
            "nameLocation": "1210:6:55",
            "nodeType": "VariableDeclaration",
            "scope": 17961,
            "src": "1183:33:55",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_LinkTokenInterface_$25884",
              "typeString": "contract LinkTokenInterface"
            },
            "typeName": {
              "id": 17423,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 17422,
                "name": "LinkTokenInterface",
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 25884,
                "src": "1183:18:55"
              },
              "referencedDeclaration": 25884,
              "src": "1183:18:55",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_LinkTokenInterface_$25884",
                "typeString": "contract LinkTokenInterface"
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 17427,
            "mutability": "mutable",
            "name": "s_oracle",
            "nameLocation": "1246:8:55",
            "nodeType": "VariableDeclaration",
            "scope": 17961,
            "src": "1220:34:55",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_OperatorInterface_$25964",
              "typeString": "contract OperatorInterface"
            },
            "typeName": {
              "id": 17426,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 17425,
                "name": "OperatorInterface",
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 25964,
                "src": "1220:17:55"
              },
              "referencedDeclaration": 25964,
              "src": "1220:17:55",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_OperatorInterface_$25964",
                "typeString": "contract OperatorInterface"
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 17430,
            "mutability": "mutable",
            "name": "s_requestCount",
            "nameLocation": "1274:14:55",
            "nodeType": "VariableDeclaration",
            "scope": 17961,
            "src": "1258:34:55",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 17428,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1258:7:55",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "31",
              "id": 17429,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1291:1:55",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1_by_1",
                "typeString": "int_const 1"
              },
              "value": "1"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 17434,
            "mutability": "mutable",
            "name": "s_pendingRequests",
            "nameLocation": "1332:17:55",
            "nodeType": "VariableDeclaration",
            "scope": 17961,
            "src": "1296:53:55",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
              "typeString": "mapping(bytes32 => address)"
            },
            "typeName": {
              "id": 17433,
              "keyType": {
                "id": 17431,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1304:7:55",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1296:27:55",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                "typeString": "mapping(bytes32 => address)"
              },
              "valueType": {
                "id": 17432,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1315:7:55",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "visibility": "private"
          },
          {
            "anonymous": false,
            "id": 17438,
            "name": "ChainlinkRequested",
            "nameLocation": "1360:18:55",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 17437,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17436,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "1395:2:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17438,
                  "src": "1379:18:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17435,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1379:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1378:20:55"
            },
            "src": "1354:45:55"
          },
          {
            "anonymous": false,
            "id": 17442,
            "name": "ChainlinkFulfilled",
            "nameLocation": "1408:18:55",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 17441,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17440,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "1443:2:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17442,
                  "src": "1427:18:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17439,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1427:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1426:20:55"
            },
            "src": "1402:45:55"
          },
          {
            "anonymous": false,
            "id": 17446,
            "name": "ChainlinkCancelled",
            "nameLocation": "1456:18:55",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 17445,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17444,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "1491:2:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17446,
                  "src": "1475:18:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17443,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1475:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1474:20:55"
            },
            "src": "1450:45:55"
          },
          {
            "body": {
              "id": 17472,
              "nodeType": "Block",
              "src": "2018:115:55",
              "statements": [
                {
                  "assignments": [
                    17463
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17463,
                      "mutability": "mutable",
                      "name": "req",
                      "nameLocation": "2049:3:55",
                      "nodeType": "VariableDeclaration",
                      "scope": 17472,
                      "src": "2024:28:55",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Request_$25433_memory_ptr",
                        "typeString": "struct Chainlink.Request"
                      },
                      "typeName": {
                        "id": 17462,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 17461,
                          "name": "Chainlink.Request",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 25433,
                          "src": "2024:17:55"
                        },
                        "referencedDeclaration": 25433,
                        "src": "2024:17:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Request_$25433_storage_ptr",
                          "typeString": "struct Chainlink.Request"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 17464,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2024:28:55"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 17467,
                        "name": "specId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17449,
                        "src": "2080:6:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 17468,
                        "name": "callbackAddr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17451,
                        "src": "2088:12:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 17469,
                        "name": "callbackFunctionSignature",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17453,
                        "src": "2102:25:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "expression": {
                        "id": 17465,
                        "name": "req",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17463,
                        "src": "2065:3:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Request_$25433_memory_ptr",
                          "typeString": "struct Chainlink.Request memory"
                        }
                      },
                      "id": 17466,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 25478,
                      "src": "2065:14:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_Request_$25433_memory_ptr_$_t_bytes32_$_t_address_$_t_bytes4_$returns$_t_struct$_Request_$25433_memory_ptr_$bound_to$_t_struct$_Request_$25433_memory_ptr_$",
                        "typeString": "function (struct Chainlink.Request memory,bytes32,address,bytes4) pure returns (struct Chainlink.Request memory)"
                      }
                    },
                    "id": 17470,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2065:63:55",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Request_$25433_memory_ptr",
                      "typeString": "struct Chainlink.Request memory"
                    }
                  },
                  "functionReturnParameters": 17458,
                  "id": 17471,
                  "nodeType": "Return",
                  "src": "2058:70:55"
                }
              ]
            },
            "documentation": {
              "id": 17447,
              "nodeType": "StructuredDocumentation",
              "src": "1499:348:55",
              "text": " @notice Creates a request that can hold additional parameters\n @param specId The Job Specification ID that the request will be created for\n @param callbackAddr address to operate the callback on\n @param callbackFunctionSignature function signature to use for the callback\n @return A Chainlink Request struct in memory"
            },
            "id": 17473,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "buildChainlinkRequest",
            "nameLocation": "1859:21:55",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17454,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17449,
                  "mutability": "mutable",
                  "name": "specId",
                  "nameLocation": "1894:6:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17473,
                  "src": "1886:14:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17448,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1886:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17451,
                  "mutability": "mutable",
                  "name": "callbackAddr",
                  "nameLocation": "1914:12:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17473,
                  "src": "1906:20:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17450,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1906:7:55",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17453,
                  "mutability": "mutable",
                  "name": "callbackFunctionSignature",
                  "nameLocation": "1939:25:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17473,
                  "src": "1932:32:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 17452,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1932:6:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1880:88:55"
            },
            "returnParameters": {
              "id": 17458,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17457,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17473,
                  "src": "1992:24:55",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Request_$25433_memory_ptr",
                    "typeString": "struct Chainlink.Request"
                  },
                  "typeName": {
                    "id": 17456,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 17455,
                      "name": "Chainlink.Request",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 25433,
                      "src": "1992:17:55"
                    },
                    "referencedDeclaration": 25433,
                    "src": "1992:17:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Request_$25433_storage_ptr",
                      "typeString": "struct Chainlink.Request"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1991:26:55"
            },
            "scope": 17961,
            "src": "1850:283:55",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17500,
              "nodeType": "Block",
              "src": "2571:116:55",
              "statements": [
                {
                  "assignments": [
                    17488
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17488,
                      "mutability": "mutable",
                      "name": "req",
                      "nameLocation": "2602:3:55",
                      "nodeType": "VariableDeclaration",
                      "scope": 17500,
                      "src": "2577:28:55",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Request_$25433_memory_ptr",
                        "typeString": "struct Chainlink.Request"
                      },
                      "typeName": {
                        "id": 17487,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 17486,
                          "name": "Chainlink.Request",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 25433,
                          "src": "2577:17:55"
                        },
                        "referencedDeclaration": 25433,
                        "src": "2577:17:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Request_$25433_storage_ptr",
                          "typeString": "struct Chainlink.Request"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 17489,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2577:28:55"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 17492,
                        "name": "specId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17476,
                        "src": "2633:6:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 17495,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "2649:4:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ChainlinkClient_$17961",
                              "typeString": "contract ChainlinkClient"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ChainlinkClient_$17961",
                              "typeString": "contract ChainlinkClient"
                            }
                          ],
                          "id": 17494,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2641:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 17493,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2641:7:55",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 17496,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2641:13:55",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 17497,
                        "name": "callbackFunctionSignature",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17478,
                        "src": "2656:25:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "expression": {
                        "id": 17490,
                        "name": "req",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17488,
                        "src": "2618:3:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Request_$25433_memory_ptr",
                          "typeString": "struct Chainlink.Request memory"
                        }
                      },
                      "id": 17491,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 25478,
                      "src": "2618:14:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_Request_$25433_memory_ptr_$_t_bytes32_$_t_address_$_t_bytes4_$returns$_t_struct$_Request_$25433_memory_ptr_$bound_to$_t_struct$_Request_$25433_memory_ptr_$",
                        "typeString": "function (struct Chainlink.Request memory,bytes32,address,bytes4) pure returns (struct Chainlink.Request memory)"
                      }
                    },
                    "id": 17498,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2618:64:55",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Request_$25433_memory_ptr",
                      "typeString": "struct Chainlink.Request memory"
                    }
                  },
                  "functionReturnParameters": 17483,
                  "id": 17499,
                  "nodeType": "Return",
                  "src": "2611:71:55"
                }
              ]
            },
            "documentation": {
              "id": 17474,
              "nodeType": "StructuredDocumentation",
              "src": "2137:288:55",
              "text": " @notice Creates a request that can hold additional parameters\n @param specId The Job Specification ID that the request will be created for\n @param callbackFunctionSignature function signature to use for the callback\n @return A Chainlink Request struct in memory"
            },
            "id": 17501,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "buildOperatorRequest",
            "nameLocation": "2437:20:55",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17479,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17476,
                  "mutability": "mutable",
                  "name": "specId",
                  "nameLocation": "2466:6:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17501,
                  "src": "2458:14:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17475,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2458:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17478,
                  "mutability": "mutable",
                  "name": "callbackFunctionSignature",
                  "nameLocation": "2481:25:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17501,
                  "src": "2474:32:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 17477,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "2474:6:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2457:50:55"
            },
            "returnParameters": {
              "id": 17483,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17482,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17501,
                  "src": "2543:24:55",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Request_$25433_memory_ptr",
                    "typeString": "struct Chainlink.Request"
                  },
                  "typeName": {
                    "id": 17481,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 17480,
                      "name": "Chainlink.Request",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 25433,
                      "src": "2543:17:55"
                    },
                    "referencedDeclaration": 25433,
                    "src": "2543:17:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Request_$25433_storage_ptr",
                      "typeString": "struct Chainlink.Request"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2542:26:55"
            },
            "scope": 17961,
            "src": "2428:259:55",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17521,
              "nodeType": "Block",
              "src": "3096:73:55",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 17515,
                            "name": "s_oracle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17427,
                            "src": "3140:8:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_OperatorInterface_$25964",
                              "typeString": "contract OperatorInterface"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_OperatorInterface_$25964",
                              "typeString": "contract OperatorInterface"
                            }
                          ],
                          "id": 17514,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3132:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 17513,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3132:7:55",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 17516,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3132:17:55",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 17517,
                        "name": "req",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17505,
                        "src": "3151:3:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Request_$25433_memory_ptr",
                          "typeString": "struct Chainlink.Request memory"
                        }
                      },
                      {
                        "id": 17518,
                        "name": "payment",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17507,
                        "src": "3156:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_struct$_Request_$25433_memory_ptr",
                          "typeString": "struct Chainlink.Request memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 17512,
                      "name": "sendChainlinkRequestTo",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17577,
                      "src": "3109:22:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_struct$_Request_$25433_memory_ptr_$_t_uint256_$returns$_t_bytes32_$",
                        "typeString": "function (address,struct Chainlink.Request memory,uint256) returns (bytes32)"
                      }
                    },
                    "id": 17519,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3109:55:55",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 17511,
                  "id": 17520,
                  "nodeType": "Return",
                  "src": "3102:62:55"
                }
              ]
            },
            "documentation": {
              "id": 17502,
              "nodeType": "StructuredDocumentation",
              "src": "2691:298:55",
              "text": " @notice Creates a Chainlink request to the stored oracle address\n @dev Calls `chainlinkRequestTo` with the stored oracle address\n @param req The initialized Chainlink Request\n @param payment The amount of LINK to send for the request\n @return requestId The request ID"
            },
            "id": 17522,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "sendChainlinkRequest",
            "nameLocation": "3001:20:55",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17508,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17505,
                  "mutability": "mutable",
                  "name": "req",
                  "nameLocation": "3047:3:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17522,
                  "src": "3022:28:55",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Request_$25433_memory_ptr",
                    "typeString": "struct Chainlink.Request"
                  },
                  "typeName": {
                    "id": 17504,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 17503,
                      "name": "Chainlink.Request",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 25433,
                      "src": "3022:17:55"
                    },
                    "referencedDeclaration": 25433,
                    "src": "3022:17:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Request_$25433_storage_ptr",
                      "typeString": "struct Chainlink.Request"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17507,
                  "mutability": "mutable",
                  "name": "payment",
                  "nameLocation": "3060:7:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17522,
                  "src": "3052:15:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17506,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3052:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3021:47:55"
            },
            "returnParameters": {
              "id": 17511,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17510,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17522,
                  "src": "3087:7:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17509,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3087:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3086:9:55"
            },
            "scope": 17961,
            "src": "2992:177:55",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17576,
              "nodeType": "Block",
              "src": "3842:601:55",
              "statements": [
                {
                  "assignments": [
                    17536
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17536,
                      "mutability": "mutable",
                      "name": "nonce",
                      "nameLocation": "3856:5:55",
                      "nodeType": "VariableDeclaration",
                      "scope": 17576,
                      "src": "3848:13:55",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17535,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3848:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 17538,
                  "initialValue": {
                    "id": 17537,
                    "name": "s_requestCount",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17430,
                    "src": "3864:14:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3848:30:55"
                },
                {
                  "expression": {
                    "id": 17543,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 17539,
                      "name": "s_requestCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17430,
                      "src": "3884:14:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 17542,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 17540,
                        "name": "nonce",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17536,
                        "src": "3901:5:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "hexValue": "31",
                        "id": 17541,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3909:1:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "3901:9:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3884:26:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 17544,
                  "nodeType": "ExpressionStatement",
                  "src": "3884:26:55"
                },
                {
                  "assignments": [
                    17546
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17546,
                      "mutability": "mutable",
                      "name": "encodedRequest",
                      "nameLocation": "3929:14:55",
                      "nodeType": "VariableDeclaration",
                      "scope": 17576,
                      "src": "3916:27:55",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 17545,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3916:5:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 17568,
                  "initialValue": {
                    "arguments": [
                      {
                        "expression": {
                          "expression": {
                            "id": 17549,
                            "name": "ChainlinkRequestInterface",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25709,
                            "src": "3976:25:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ChainlinkRequestInterface_$25709_$",
                              "typeString": "type(contract ChainlinkRequestInterface)"
                            }
                          },
                          "id": 17550,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "oracleRequest",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25697,
                          "src": "3976:39:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_uint256_$_t_bytes32_$_t_address_$_t_bytes4_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$returns$__$",
                            "typeString": "function ChainlinkRequestInterface.oracleRequest(address,uint256,bytes32,address,bytes4,uint256,uint256,bytes calldata)"
                          }
                        },
                        "id": 17551,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "selector",
                        "nodeType": "MemberAccess",
                        "src": "3976:48:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "id": 17552,
                        "name": "SENDER_OVERRIDE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17397,
                        "src": "4032:15:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 17553,
                        "name": "AMOUNT_OVERRIDE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17391,
                        "src": "4140:15:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 17554,
                          "name": "req",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17528,
                          "src": "4245:3:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Request_$25433_memory_ptr",
                            "typeString": "struct Chainlink.Request memory"
                          }
                        },
                        "id": 17555,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "id",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25423,
                        "src": "4245:6:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 17558,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "4267:4:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ChainlinkClient_$17961",
                              "typeString": "contract ChainlinkClient"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ChainlinkClient_$17961",
                              "typeString": "contract ChainlinkClient"
                            }
                          ],
                          "id": 17557,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4259:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 17556,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4259:7:55",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 17559,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4259:13:55",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "expression": {
                          "id": 17560,
                          "name": "req",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17528,
                          "src": "4280:3:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Request_$25433_memory_ptr",
                            "typeString": "struct Chainlink.Request memory"
                          }
                        },
                        "id": 17561,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "callbackFunctionId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25427,
                        "src": "4280:22:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "id": 17562,
                        "name": "nonce",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17536,
                        "src": "4310:5:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 17563,
                        "name": "ORACLE_ARGS_VERSION",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17400,
                        "src": "4323:19:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "expression": {
                            "id": 17564,
                            "name": "req",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17528,
                            "src": "4350:3:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Request_$25433_memory_ptr",
                              "typeString": "struct Chainlink.Request memory"
                            }
                          },
                          "id": 17565,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "buf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25432,
                          "src": "4350:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$27626_memory_ptr",
                            "typeString": "struct BufferChainlink.buffer memory"
                          }
                        },
                        "id": 17566,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "buf",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 27623,
                        "src": "4350:11:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 17547,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "3946:3:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 17548,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "encodeWithSelector",
                      "nodeType": "MemberAccess",
                      "src": "3946:22:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes4) pure returns (bytes memory)"
                      }
                    },
                    "id": 17567,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3946:421:55",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3916:451:55"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 17570,
                        "name": "oracleAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17525,
                        "src": "4392:13:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 17571,
                        "name": "nonce",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17536,
                        "src": "4407:5:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 17572,
                        "name": "payment",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17530,
                        "src": "4414:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 17573,
                        "name": "encodedRequest",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17546,
                        "src": "4423:14:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17569,
                      "name": "_rawRequest",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17694,
                      "src": "4380:11:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (address,uint256,uint256,bytes memory) returns (bytes32)"
                      }
                    },
                    "id": 17574,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4380:58:55",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 17534,
                  "id": 17575,
                  "nodeType": "Return",
                  "src": "4373:65:55"
                }
              ]
            },
            "documentation": {
              "id": 17523,
              "nodeType": "StructuredDocumentation",
              "src": "3173:511:55",
              "text": " @notice Creates a Chainlink request to the specified oracle address\n @dev Generates and stores a request ID, increments the local nonce, and uses `transferAndCall` to\n send LINK which creates a request on the target oracle contract.\n Emits ChainlinkRequested event.\n @param oracleAddress The address of the oracle for the request\n @param req The initialized Chainlink Request\n @param payment The amount of LINK to send for the request\n @return requestId The request ID"
            },
            "id": 17577,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "sendChainlinkRequestTo",
            "nameLocation": "3696:22:55",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17531,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17525,
                  "mutability": "mutable",
                  "name": "oracleAddress",
                  "nameLocation": "3732:13:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17577,
                  "src": "3724:21:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17524,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3724:7:55",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17528,
                  "mutability": "mutable",
                  "name": "req",
                  "nameLocation": "3776:3:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17577,
                  "src": "3751:28:55",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Request_$25433_memory_ptr",
                    "typeString": "struct Chainlink.Request"
                  },
                  "typeName": {
                    "id": 17527,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 17526,
                      "name": "Chainlink.Request",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 25433,
                      "src": "3751:17:55"
                    },
                    "referencedDeclaration": 25433,
                    "src": "3751:17:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Request_$25433_storage_ptr",
                      "typeString": "struct Chainlink.Request"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17530,
                  "mutability": "mutable",
                  "name": "payment",
                  "nameLocation": "3793:7:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17577,
                  "src": "3785:15:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17529,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3785:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3718:86:55"
            },
            "returnParameters": {
              "id": 17534,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17533,
                  "mutability": "mutable",
                  "name": "requestId",
                  "nameLocation": "3831:9:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17577,
                  "src": "3823:17:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17532,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3823:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3822:19:55"
            },
            "scope": 17961,
            "src": "3687:756:55",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17597,
              "nodeType": "Block",
              "src": "4907:72:55",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 17591,
                            "name": "s_oracle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17427,
                            "src": "4950:8:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_OperatorInterface_$25964",
                              "typeString": "contract OperatorInterface"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_OperatorInterface_$25964",
                              "typeString": "contract OperatorInterface"
                            }
                          ],
                          "id": 17590,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4942:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 17589,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4942:7:55",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 17592,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4942:17:55",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 17593,
                        "name": "req",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17581,
                        "src": "4961:3:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Request_$25433_memory_ptr",
                          "typeString": "struct Chainlink.Request memory"
                        }
                      },
                      {
                        "id": 17594,
                        "name": "payment",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17583,
                        "src": "4966:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_struct$_Request_$25433_memory_ptr",
                          "typeString": "struct Chainlink.Request memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 17588,
                      "name": "sendOperatorRequestTo",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17649,
                      "src": "4920:21:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_struct$_Request_$25433_memory_ptr_$_t_uint256_$returns$_t_bytes32_$",
                        "typeString": "function (address,struct Chainlink.Request memory,uint256) returns (bytes32)"
                      }
                    },
                    "id": 17595,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4920:54:55",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 17587,
                  "id": 17596,
                  "nodeType": "Return",
                  "src": "4913:61:55"
                }
              ]
            },
            "documentation": {
              "id": 17578,
              "nodeType": "StructuredDocumentation",
              "src": "4447:354:55",
              "text": " @notice Creates a Chainlink request to the stored oracle address\n @dev This function supports multi-word response\n @dev Calls `sendOperatorRequestTo` with the stored oracle address\n @param req The initialized Chainlink Request\n @param payment The amount of LINK to send for the request\n @return requestId The request ID"
            },
            "id": 17598,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "sendOperatorRequest",
            "nameLocation": "4813:19:55",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17584,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17581,
                  "mutability": "mutable",
                  "name": "req",
                  "nameLocation": "4858:3:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17598,
                  "src": "4833:28:55",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Request_$25433_memory_ptr",
                    "typeString": "struct Chainlink.Request"
                  },
                  "typeName": {
                    "id": 17580,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 17579,
                      "name": "Chainlink.Request",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 25433,
                      "src": "4833:17:55"
                    },
                    "referencedDeclaration": 25433,
                    "src": "4833:17:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Request_$25433_storage_ptr",
                      "typeString": "struct Chainlink.Request"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17583,
                  "mutability": "mutable",
                  "name": "payment",
                  "nameLocation": "4871:7:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17598,
                  "src": "4863:15:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17582,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4863:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4832:47:55"
            },
            "returnParameters": {
              "id": 17587,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17586,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17598,
                  "src": "4898:7:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17585,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4898:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4897:9:55"
            },
            "scope": 17961,
            "src": "4804:175:55",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17648,
              "nodeType": "Block",
              "src": "5704:576:55",
              "statements": [
                {
                  "assignments": [
                    17612
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17612,
                      "mutability": "mutable",
                      "name": "nonce",
                      "nameLocation": "5718:5:55",
                      "nodeType": "VariableDeclaration",
                      "scope": 17648,
                      "src": "5710:13:55",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17611,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5710:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 17614,
                  "initialValue": {
                    "id": 17613,
                    "name": "s_requestCount",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17430,
                    "src": "5726:14:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5710:30:55"
                },
                {
                  "expression": {
                    "id": 17619,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 17615,
                      "name": "s_requestCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17430,
                      "src": "5746:14:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 17618,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 17616,
                        "name": "nonce",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17612,
                        "src": "5763:5:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "hexValue": "31",
                        "id": 17617,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5771:1:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "5763:9:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5746:26:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 17620,
                  "nodeType": "ExpressionStatement",
                  "src": "5746:26:55"
                },
                {
                  "assignments": [
                    17622
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17622,
                      "mutability": "mutable",
                      "name": "encodedRequest",
                      "nameLocation": "5791:14:55",
                      "nodeType": "VariableDeclaration",
                      "scope": 17648,
                      "src": "5778:27:55",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 17621,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "5778:5:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 17640,
                  "initialValue": {
                    "arguments": [
                      {
                        "expression": {
                          "expression": {
                            "id": 17625,
                            "name": "OperatorInterface",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25964,
                            "src": "5838:17:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_OperatorInterface_$25964_$",
                              "typeString": "type(contract OperatorInterface)"
                            }
                          },
                          "id": 17626,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "operatorRequest",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25909,
                          "src": "5838:33:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_uint256_$_t_bytes32_$_t_bytes4_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$returns$__$",
                            "typeString": "function OperatorInterface.operatorRequest(address,uint256,bytes32,bytes4,uint256,uint256,bytes calldata)"
                          }
                        },
                        "id": 17627,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "selector",
                        "nodeType": "MemberAccess",
                        "src": "5838:42:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "id": 17628,
                        "name": "SENDER_OVERRIDE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17397,
                        "src": "5888:15:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 17629,
                        "name": "AMOUNT_OVERRIDE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17391,
                        "src": "5996:15:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 17630,
                          "name": "req",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17604,
                          "src": "6101:3:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Request_$25433_memory_ptr",
                            "typeString": "struct Chainlink.Request memory"
                          }
                        },
                        "id": 17631,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "id",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25423,
                        "src": "6101:6:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "expression": {
                          "id": 17632,
                          "name": "req",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17604,
                          "src": "6115:3:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Request_$25433_memory_ptr",
                            "typeString": "struct Chainlink.Request memory"
                          }
                        },
                        "id": 17633,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "callbackFunctionId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25427,
                        "src": "6115:22:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "id": 17634,
                        "name": "nonce",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17612,
                        "src": "6145:5:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 17635,
                        "name": "OPERATOR_ARGS_VERSION",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17403,
                        "src": "6158:21:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "expression": {
                            "id": 17636,
                            "name": "req",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17604,
                            "src": "6187:3:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Request_$25433_memory_ptr",
                              "typeString": "struct Chainlink.Request memory"
                            }
                          },
                          "id": 17637,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "buf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25432,
                          "src": "6187:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$27626_memory_ptr",
                            "typeString": "struct BufferChainlink.buffer memory"
                          }
                        },
                        "id": 17638,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "buf",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 27623,
                        "src": "6187:11:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 17623,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "5808:3:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 17624,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "encodeWithSelector",
                      "nodeType": "MemberAccess",
                      "src": "5808:22:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes4) pure returns (bytes memory)"
                      }
                    },
                    "id": 17639,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5808:396:55",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5778:426:55"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 17642,
                        "name": "oracleAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17601,
                        "src": "6229:13:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 17643,
                        "name": "nonce",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17612,
                        "src": "6244:5:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 17644,
                        "name": "payment",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17606,
                        "src": "6251:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 17645,
                        "name": "encodedRequest",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17622,
                        "src": "6260:14:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17641,
                      "name": "_rawRequest",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17694,
                      "src": "6217:11:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (address,uint256,uint256,bytes memory) returns (bytes32)"
                      }
                    },
                    "id": 17646,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6217:58:55",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 17610,
                  "id": 17647,
                  "nodeType": "Return",
                  "src": "6210:65:55"
                }
              ]
            },
            "documentation": {
              "id": 17599,
              "nodeType": "StructuredDocumentation",
              "src": "4983:564:55",
              "text": " @notice Creates a Chainlink request to the specified oracle address\n @dev This function supports multi-word response\n @dev Generates and stores a request ID, increments the local nonce, and uses `transferAndCall` to\n send LINK which creates a request on the target oracle contract.\n Emits ChainlinkRequested event.\n @param oracleAddress The address of the oracle for the request\n @param req The initialized Chainlink Request\n @param payment The amount of LINK to send for the request\n @return requestId The request ID"
            },
            "id": 17649,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "sendOperatorRequestTo",
            "nameLocation": "5559:21:55",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17607,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17601,
                  "mutability": "mutable",
                  "name": "oracleAddress",
                  "nameLocation": "5594:13:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17649,
                  "src": "5586:21:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17600,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5586:7:55",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17604,
                  "mutability": "mutable",
                  "name": "req",
                  "nameLocation": "5638:3:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17649,
                  "src": "5613:28:55",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Request_$25433_memory_ptr",
                    "typeString": "struct Chainlink.Request"
                  },
                  "typeName": {
                    "id": 17603,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 17602,
                      "name": "Chainlink.Request",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 25433,
                      "src": "5613:17:55"
                    },
                    "referencedDeclaration": 25433,
                    "src": "5613:17:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Request_$25433_storage_ptr",
                      "typeString": "struct Chainlink.Request"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17606,
                  "mutability": "mutable",
                  "name": "payment",
                  "nameLocation": "5655:7:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17649,
                  "src": "5647:15:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17605,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5647:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5580:86:55"
            },
            "returnParameters": {
              "id": 17610,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17609,
                  "mutability": "mutable",
                  "name": "requestId",
                  "nameLocation": "5693:9:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17649,
                  "src": "5685:17:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17608,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5685:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5684:19:55"
            },
            "scope": 17961,
            "src": "5550:730:55",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17693,
              "nodeType": "Block",
              "src": "6790:269:55",
              "statements": [
                {
                  "expression": {
                    "id": 17671,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 17663,
                      "name": "requestId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17661,
                      "src": "6796:9:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "id": 17667,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -28,
                              "src": "6835:4:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ChainlinkClient_$17961",
                                "typeString": "contract ChainlinkClient"
                              }
                            },
                            {
                              "id": 17668,
                              "name": "nonce",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17654,
                              "src": "6841:5:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_ChainlinkClient_$17961",
                                "typeString": "contract ChainlinkClient"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 17665,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "6818:3:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 17666,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodePacked",
                            "nodeType": "MemberAccess",
                            "src": "6818:16:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 17669,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6818:29:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 17664,
                        "name": "keccak256",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -8,
                        "src": "6808:9:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (bytes memory) pure returns (bytes32)"
                        }
                      },
                      "id": 17670,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6808:40:55",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "6796:52:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 17672,
                  "nodeType": "ExpressionStatement",
                  "src": "6796:52:55"
                },
                {
                  "expression": {
                    "id": 17677,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 17673,
                        "name": "s_pendingRequests",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17434,
                        "src": "6854:17:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 17675,
                      "indexExpression": {
                        "id": 17674,
                        "name": "requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17661,
                        "src": "6872:9:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "6854:28:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 17676,
                      "name": "oracleAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17652,
                      "src": "6885:13:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "6854:44:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 17678,
                  "nodeType": "ExpressionStatement",
                  "src": "6854:44:55"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 17680,
                        "name": "requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17661,
                        "src": "6928:9:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 17679,
                      "name": "ChainlinkRequested",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17438,
                      "src": "6909:18:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 17681,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6909:29:55",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17682,
                  "nodeType": "EmitStatement",
                  "src": "6904:34:55"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 17686,
                            "name": "oracleAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17652,
                            "src": "6975:13:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 17687,
                            "name": "payment",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17656,
                            "src": "6990:7:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17688,
                            "name": "encodedRequest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17658,
                            "src": "6999:14:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "id": 17684,
                            "name": "s_link",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17424,
                            "src": "6952:6:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_LinkTokenInterface_$25884",
                              "typeString": "contract LinkTokenInterface"
                            }
                          },
                          "id": 17685,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferAndCall",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25872,
                          "src": "6952:22:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,uint256,bytes memory) external returns (bool)"
                          }
                        },
                        "id": 17689,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6952:62:55",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "756e61626c6520746f207472616e73666572416e6443616c6c20746f206f7261636c65",
                        "id": 17690,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7016:37:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_3b3efd608222b424e5ed8427d7f6a272069793e6a1f5930c93db5c7960c3ce96",
                          "typeString": "literal_string \"unable to transferAndCall to oracle\""
                        },
                        "value": "unable to transferAndCall to oracle"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_3b3efd608222b424e5ed8427d7f6a272069793e6a1f5930c93db5c7960c3ce96",
                          "typeString": "literal_string \"unable to transferAndCall to oracle\""
                        }
                      ],
                      "id": 17683,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "6944:7:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17691,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6944:110:55",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17692,
                  "nodeType": "ExpressionStatement",
                  "src": "6944:110:55"
                }
              ]
            },
            "documentation": {
              "id": 17650,
              "nodeType": "StructuredDocumentation",
              "src": "6284:342:55",
              "text": " @notice Make a request to an oracle\n @param oracleAddress The address of the oracle for the request\n @param nonce used to generate the request ID\n @param payment The amount of LINK to send for the request\n @param encodedRequest data encoded for request type specific format\n @return requestId The request ID"
            },
            "id": 17694,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_rawRequest",
            "nameLocation": "6638:11:55",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17659,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17652,
                  "mutability": "mutable",
                  "name": "oracleAddress",
                  "nameLocation": "6663:13:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17694,
                  "src": "6655:21:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17651,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6655:7:55",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17654,
                  "mutability": "mutable",
                  "name": "nonce",
                  "nameLocation": "6690:5:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17694,
                  "src": "6682:13:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17653,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6682:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17656,
                  "mutability": "mutable",
                  "name": "payment",
                  "nameLocation": "6709:7:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17694,
                  "src": "6701:15:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17655,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6701:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17658,
                  "mutability": "mutable",
                  "name": "encodedRequest",
                  "nameLocation": "6735:14:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17694,
                  "src": "6722:27:55",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 17657,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6722:5:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6649:104:55"
            },
            "returnParameters": {
              "id": 17662,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17661,
                  "mutability": "mutable",
                  "name": "requestId",
                  "nameLocation": "6779:9:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17694,
                  "src": "6771:17:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17660,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6771:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6770:19:55"
            },
            "scope": 17961,
            "src": "6629:430:55",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 17733,
              "nodeType": "Block",
              "src": "7713:250:55",
              "statements": [
                {
                  "assignments": [
                    17708
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17708,
                      "mutability": "mutable",
                      "name": "requested",
                      "nameLocation": "7737:9:55",
                      "nodeType": "VariableDeclaration",
                      "scope": 17733,
                      "src": "7719:27:55",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_OperatorInterface_$25964",
                        "typeString": "contract OperatorInterface"
                      },
                      "typeName": {
                        "id": 17707,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 17706,
                          "name": "OperatorInterface",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 25964,
                          "src": "7719:17:55"
                        },
                        "referencedDeclaration": 25964,
                        "src": "7719:17:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_OperatorInterface_$25964",
                          "typeString": "contract OperatorInterface"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 17714,
                  "initialValue": {
                    "arguments": [
                      {
                        "baseExpression": {
                          "id": 17710,
                          "name": "s_pendingRequests",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17434,
                          "src": "7767:17:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                            "typeString": "mapping(bytes32 => address)"
                          }
                        },
                        "id": 17712,
                        "indexExpression": {
                          "id": 17711,
                          "name": "requestId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17697,
                          "src": "7785:9:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "7767:28:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 17709,
                      "name": "OperatorInterface",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25964,
                      "src": "7749:17:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_OperatorInterface_$25964_$",
                        "typeString": "type(contract OperatorInterface)"
                      }
                    },
                    "id": 17713,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7749:47:55",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_OperatorInterface_$25964",
                      "typeString": "contract OperatorInterface"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7719:77:55"
                },
                {
                  "expression": {
                    "id": 17718,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "7802:35:55",
                    "subExpression": {
                      "baseExpression": {
                        "id": 17715,
                        "name": "s_pendingRequests",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17434,
                        "src": "7809:17:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 17717,
                      "indexExpression": {
                        "id": 17716,
                        "name": "requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17697,
                        "src": "7827:9:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "7809:28:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17719,
                  "nodeType": "ExpressionStatement",
                  "src": "7802:35:55"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 17721,
                        "name": "requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17697,
                        "src": "7867:9:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 17720,
                      "name": "ChainlinkCancelled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17446,
                      "src": "7848:18:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 17722,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7848:29:55",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17723,
                  "nodeType": "EmitStatement",
                  "src": "7843:34:55"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 17727,
                        "name": "requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17697,
                        "src": "7913:9:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 17728,
                        "name": "payment",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17699,
                        "src": "7924:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 17729,
                        "name": "callbackFunc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17701,
                        "src": "7933:12:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "id": 17730,
                        "name": "expiration",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17703,
                        "src": "7947:10:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 17724,
                        "name": "requested",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17708,
                        "src": "7883:9:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_OperatorInterface_$25964",
                          "typeString": "contract OperatorInterface"
                        }
                      },
                      "id": 17726,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "cancelOracleRequest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 25708,
                      "src": "7883:29:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_uint256_$_t_bytes4_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,uint256,bytes4,uint256) external"
                      }
                    },
                    "id": 17731,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7883:75:55",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17732,
                  "nodeType": "ExpressionStatement",
                  "src": "7883:75:55"
                }
              ]
            },
            "documentation": {
              "id": 17695,
              "nodeType": "StructuredDocumentation",
              "src": "7063:509:55",
              "text": " @notice Allows a request to be cancelled if it has not been fulfilled\n @dev Requires keeping track of the expiration value emitted from the oracle contract.\n Deletes the request from the `pendingRequests` mapping.\n Emits ChainlinkCancelled event.\n @param requestId The request ID\n @param payment The amount of LINK sent for the request\n @param callbackFunc The callback function specified for the request\n @param expiration The time of the expiration for the request"
            },
            "id": 17734,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "cancelChainlinkRequest",
            "nameLocation": "7584:22:55",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17704,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17697,
                  "mutability": "mutable",
                  "name": "requestId",
                  "nameLocation": "7620:9:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17734,
                  "src": "7612:17:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17696,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7612:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17699,
                  "mutability": "mutable",
                  "name": "payment",
                  "nameLocation": "7643:7:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17734,
                  "src": "7635:15:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17698,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7635:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17701,
                  "mutability": "mutable",
                  "name": "callbackFunc",
                  "nameLocation": "7663:12:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17734,
                  "src": "7656:19:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 17700,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "7656:6:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17703,
                  "mutability": "mutable",
                  "name": "expiration",
                  "nameLocation": "7689:10:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17734,
                  "src": "7681:18:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17702,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7681:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7606:97:55"
            },
            "returnParameters": {
              "id": 17705,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7713:0:55"
            },
            "scope": 17961,
            "src": "7575:388:55",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17742,
              "nodeType": "Block",
              "src": "8238:32:55",
              "statements": [
                {
                  "expression": {
                    "id": 17740,
                    "name": "s_requestCount",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17430,
                    "src": "8251:14:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 17739,
                  "id": 17741,
                  "nodeType": "Return",
                  "src": "8244:21:55"
                }
              ]
            },
            "documentation": {
              "id": 17735,
              "nodeType": "StructuredDocumentation",
              "src": "7967:205:55",
              "text": " @notice the next request count to be used in generating a nonce\n @dev starts at 1 in order to ensure consistent gas cost\n @return returns the next request count to be used in a nonce"
            },
            "id": 17743,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getNextRequestCount",
            "nameLocation": "8184:19:55",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17736,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8203:2:55"
            },
            "returnParameters": {
              "id": 17739,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17738,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17743,
                  "src": "8229:7:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17737,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8229:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8228:9:55"
            },
            "scope": 17961,
            "src": "8175:95:55",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17755,
              "nodeType": "Block",
              "src": "8451:54:55",
              "statements": [
                {
                  "expression": {
                    "id": 17753,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 17749,
                      "name": "s_oracle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17427,
                      "src": "8457:8:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_OperatorInterface_$25964",
                        "typeString": "contract OperatorInterface"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 17751,
                          "name": "oracleAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17746,
                          "src": "8486:13:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 17750,
                        "name": "OperatorInterface",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25964,
                        "src": "8468:17:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_OperatorInterface_$25964_$",
                          "typeString": "type(contract OperatorInterface)"
                        }
                      },
                      "id": 17752,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8468:32:55",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_OperatorInterface_$25964",
                        "typeString": "contract OperatorInterface"
                      }
                    },
                    "src": "8457:43:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_OperatorInterface_$25964",
                      "typeString": "contract OperatorInterface"
                    }
                  },
                  "id": 17754,
                  "nodeType": "ExpressionStatement",
                  "src": "8457:43:55"
                }
              ]
            },
            "documentation": {
              "id": 17744,
              "nodeType": "StructuredDocumentation",
              "src": "8274:114:55",
              "text": " @notice Sets the stored oracle address\n @param oracleAddress The address of the oracle contract"
            },
            "id": 17756,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setChainlinkOracle",
            "nameLocation": "8400:18:55",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17747,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17746,
                  "mutability": "mutable",
                  "name": "oracleAddress",
                  "nameLocation": "8427:13:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17756,
                  "src": "8419:21:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17745,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8419:7:55",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8418:23:55"
            },
            "returnParameters": {
              "id": 17748,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8451:0:55"
            },
            "scope": 17961,
            "src": "8391:114:55",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17768,
              "nodeType": "Block",
              "src": "8682:51:55",
              "statements": [
                {
                  "expression": {
                    "id": 17766,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 17762,
                      "name": "s_link",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17424,
                      "src": "8688:6:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_LinkTokenInterface_$25884",
                        "typeString": "contract LinkTokenInterface"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 17764,
                          "name": "linkAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17759,
                          "src": "8716:11:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 17763,
                        "name": "LinkTokenInterface",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25884,
                        "src": "8697:18:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_LinkTokenInterface_$25884_$",
                          "typeString": "type(contract LinkTokenInterface)"
                        }
                      },
                      "id": 17765,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8697:31:55",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_LinkTokenInterface_$25884",
                        "typeString": "contract LinkTokenInterface"
                      }
                    },
                    "src": "8688:40:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LinkTokenInterface_$25884",
                      "typeString": "contract LinkTokenInterface"
                    }
                  },
                  "id": 17767,
                  "nodeType": "ExpressionStatement",
                  "src": "8688:40:55"
                }
              ]
            },
            "documentation": {
              "id": 17757,
              "nodeType": "StructuredDocumentation",
              "src": "8509:113:55",
              "text": " @notice Sets the LINK token address\n @param linkAddress The address of the LINK token contract"
            },
            "id": 17769,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setChainlinkToken",
            "nameLocation": "8634:17:55",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17760,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17759,
                  "mutability": "mutable",
                  "name": "linkAddress",
                  "nameLocation": "8660:11:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17769,
                  "src": "8652:19:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17758,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8652:7:55",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8651:21:55"
            },
            "returnParameters": {
              "id": 17761,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8682:0:55"
            },
            "scope": 17961,
            "src": "8625:108:55",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17781,
              "nodeType": "Block",
              "src": "8900:79:55",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "arguments": [
                              {
                                "id": 17775,
                                "name": "LINK_TOKEN_POINTER",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17416,
                                "src": "8941:18:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 17774,
                              "name": "PointerInterface",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 25972,
                              "src": "8924:16:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_PointerInterface_$25972_$",
                                "typeString": "type(contract PointerInterface)"
                              }
                            },
                            "id": 17776,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8924:36:55",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_PointerInterface_$25972",
                              "typeString": "contract PointerInterface"
                            }
                          },
                          "id": 17777,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getAddress",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25971,
                          "src": "8924:47:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                            "typeString": "function () view external returns (address)"
                          }
                        },
                        "id": 17778,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8924:49:55",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 17773,
                      "name": "setChainlinkToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17769,
                      "src": "8906:17:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 17779,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8906:68:55",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17780,
                  "nodeType": "ExpressionStatement",
                  "src": "8906:68:55"
                }
              ]
            },
            "documentation": {
              "id": 17770,
              "nodeType": "StructuredDocumentation",
              "src": "8737:116:55",
              "text": " @notice Sets the Chainlink token address for the public\n network as given by the Pointer contract"
            },
            "id": 17782,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setPublicChainlinkToken",
            "nameLocation": "8865:23:55",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17771,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8888:2:55"
            },
            "returnParameters": {
              "id": 17772,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8900:0:55"
            },
            "scope": 17961,
            "src": "8856:123:55",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17793,
              "nodeType": "Block",
              "src": "9163:33:55",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 17790,
                        "name": "s_link",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17424,
                        "src": "9184:6:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_LinkTokenInterface_$25884",
                          "typeString": "contract LinkTokenInterface"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_LinkTokenInterface_$25884",
                          "typeString": "contract LinkTokenInterface"
                        }
                      ],
                      "id": 17789,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "9176:7:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 17788,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9176:7:55",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 17791,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9176:15:55",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 17787,
                  "id": 17792,
                  "nodeType": "Return",
                  "src": "9169:22:55"
                }
              ]
            },
            "documentation": {
              "id": 17783,
              "nodeType": "StructuredDocumentation",
              "src": "8983:112:55",
              "text": " @notice Retrieves the stored address of the LINK token\n @return The address of the LINK token"
            },
            "id": 17794,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "chainlinkTokenAddress",
            "nameLocation": "9107:21:55",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17784,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9128:2:55"
            },
            "returnParameters": {
              "id": 17787,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17786,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17794,
                  "src": "9154:7:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17785,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9154:7:55",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9153:9:55"
            },
            "scope": 17961,
            "src": "9098:98:55",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17805,
              "nodeType": "Block",
              "src": "9391:35:55",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 17802,
                        "name": "s_oracle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17427,
                        "src": "9412:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_OperatorInterface_$25964",
                          "typeString": "contract OperatorInterface"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_OperatorInterface_$25964",
                          "typeString": "contract OperatorInterface"
                        }
                      ],
                      "id": 17801,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "9404:7:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 17800,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9404:7:55",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 17803,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9404:17:55",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 17799,
                  "id": 17804,
                  "nodeType": "Return",
                  "src": "9397:24:55"
                }
              ]
            },
            "documentation": {
              "id": 17795,
              "nodeType": "StructuredDocumentation",
              "src": "9200:122:55",
              "text": " @notice Retrieves the stored address of the oracle contract\n @return The address of the oracle contract"
            },
            "id": 17806,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "chainlinkOracleAddress",
            "nameLocation": "9334:22:55",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17796,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9356:2:55"
            },
            "returnParameters": {
              "id": 17799,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17798,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17806,
                  "src": "9382:7:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17797,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9382:7:55",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9381:9:55"
            },
            "scope": 17961,
            "src": "9325:101:55",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17823,
              "nodeType": "Block",
              "src": "9819:55:55",
              "statements": [
                {
                  "expression": {
                    "id": 17821,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 17817,
                        "name": "s_pendingRequests",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17434,
                        "src": "9825:17:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 17819,
                      "indexExpression": {
                        "id": 17818,
                        "name": "requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17811,
                        "src": "9843:9:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "9825:28:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 17820,
                      "name": "oracleAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17809,
                      "src": "9856:13:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "9825:44:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 17822,
                  "nodeType": "ExpressionStatement",
                  "src": "9825:44:55"
                }
              ]
            },
            "documentation": {
              "id": 17807,
              "nodeType": "StructuredDocumentation",
              "src": "9430:269:55",
              "text": " @notice Allows for a request which was created on another contract to be fulfilled\n on this contract\n @param oracleAddress The address of the oracle contract that will fulfill the request\n @param requestId The request ID used for the response"
            },
            "id": 17824,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 17814,
                    "name": "requestId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17811,
                    "src": "9808:9:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 17815,
                "modifierName": {
                  "id": 17813,
                  "name": "notPendingRequest",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 17960,
                  "src": "9790:17:55"
                },
                "nodeType": "ModifierInvocation",
                "src": "9790:28:55"
              }
            ],
            "name": "addChainlinkExternalRequest",
            "nameLocation": "9711:27:55",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17812,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17809,
                  "mutability": "mutable",
                  "name": "oracleAddress",
                  "nameLocation": "9747:13:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17824,
                  "src": "9739:21:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17808,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9739:7:55",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17811,
                  "mutability": "mutable",
                  "name": "requestId",
                  "nameLocation": "9770:9:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17824,
                  "src": "9762:17:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17810,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9762:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9738:42:55"
            },
            "returnParameters": {
              "id": 17816,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9819:0:55"
            },
            "scope": 17961,
            "src": "9702:172:55",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17872,
              "nodeType": "Block",
              "src": "10207:326:55",
              "statements": [
                {
                  "expression": {
                    "id": 17836,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 17832,
                      "name": "s_ens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17419,
                      "src": "10213:5:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ENSInterface_$25789",
                        "typeString": "contract ENSInterface"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 17834,
                          "name": "ensAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17827,
                          "src": "10234:10:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 17833,
                        "name": "ENSInterface",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 25789,
                        "src": "10221:12:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ENSInterface_$25789_$",
                          "typeString": "type(contract ENSInterface)"
                        }
                      },
                      "id": 17835,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10221:24:55",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ENSInterface_$25789",
                        "typeString": "contract ENSInterface"
                      }
                    },
                    "src": "10213:32:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENSInterface_$25789",
                      "typeString": "contract ENSInterface"
                    }
                  },
                  "id": 17837,
                  "nodeType": "ExpressionStatement",
                  "src": "10213:32:55"
                },
                {
                  "expression": {
                    "id": 17840,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 17838,
                      "name": "s_ensNode",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17421,
                      "src": "10251:9:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 17839,
                      "name": "node",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17829,
                      "src": "10263:4:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "10251:16:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 17841,
                  "nodeType": "ExpressionStatement",
                  "src": "10251:16:55"
                },
                {
                  "assignments": [
                    17843
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17843,
                      "mutability": "mutable",
                      "name": "linkSubnode",
                      "nameLocation": "10281:11:55",
                      "nodeType": "VariableDeclaration",
                      "scope": 17872,
                      "src": "10273:19:55",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 17842,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "10273:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 17851,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 17847,
                            "name": "s_ensNode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17421,
                            "src": "10322:9:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "id": 17848,
                            "name": "ENS_TOKEN_SUBNAME",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17408,
                            "src": "10333:17:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "id": 17845,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "10305:3:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17846,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "src": "10305:16:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 17849,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10305:46:55",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17844,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "10295:9:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 17850,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10295:57:55",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10273:79:55"
                },
                {
                  "assignments": [
                    17854
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17854,
                      "mutability": "mutable",
                      "name": "resolver",
                      "nameLocation": "10380:8:55",
                      "nodeType": "VariableDeclaration",
                      "scope": 17872,
                      "src": "10358:30:55",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ENSResolver_$25982",
                        "typeString": "contract ENSResolver"
                      },
                      "typeName": {
                        "id": 17853,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 17852,
                          "name": "ENSResolver_Chainlink",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 25982,
                          "src": "10358:21:55"
                        },
                        "referencedDeclaration": 25982,
                        "src": "10358:21:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ENSResolver_$25982",
                          "typeString": "contract ENSResolver"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 17861,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 17858,
                            "name": "linkSubnode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17843,
                            "src": "10428:11:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "id": 17856,
                            "name": "s_ens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17419,
                            "src": "10413:5:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENSInterface_$25789",
                              "typeString": "contract ENSInterface"
                            }
                          },
                          "id": 17857,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "resolver",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25781,
                          "src": "10413:14:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32) view external returns (address)"
                          }
                        },
                        "id": 17859,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10413:27:55",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 17855,
                      "name": "ENSResolver_Chainlink",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25982,
                      "src": "10391:21:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_ENSResolver_$25982_$",
                        "typeString": "type(contract ENSResolver)"
                      }
                    },
                    "id": 17860,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10391:50:55",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENSResolver_$25982",
                      "typeString": "contract ENSResolver"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10358:83:55"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 17865,
                            "name": "linkSubnode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17843,
                            "src": "10479:11:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "id": 17863,
                            "name": "resolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17854,
                            "src": "10465:8:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENSResolver_$25982",
                              "typeString": "contract ENSResolver"
                            }
                          },
                          "id": 17864,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "addr",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25981,
                          "src": "10465:13:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32) view external returns (address)"
                          }
                        },
                        "id": 17866,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10465:26:55",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 17862,
                      "name": "setChainlinkToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17769,
                      "src": "10447:17:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 17867,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10447:45:55",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17868,
                  "nodeType": "ExpressionStatement",
                  "src": "10447:45:55"
                },
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 17869,
                      "name": "updateChainlinkOracleWithENS",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17905,
                      "src": "10498:28:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 17870,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10498:30:55",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17871,
                  "nodeType": "ExpressionStatement",
                  "src": "10498:30:55"
                }
              ]
            },
            "documentation": {
              "id": 17825,
              "nodeType": "StructuredDocumentation",
              "src": "9878:254:55",
              "text": " @notice Sets the stored oracle and LINK token contracts with the addresses resolved by ENS\n @dev Accounts for subnodes having different resolvers\n @param ensAddress The address of the ENS contract\n @param node The ENS node hash"
            },
            "id": 17873,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "useChainlinkWithENS",
            "nameLocation": "10144:19:55",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17830,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17827,
                  "mutability": "mutable",
                  "name": "ensAddress",
                  "nameLocation": "10172:10:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17873,
                  "src": "10164:18:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17826,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10164:7:55",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17829,
                  "mutability": "mutable",
                  "name": "node",
                  "nameLocation": "10192:4:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17873,
                  "src": "10184:12:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17828,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10184:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10163:34:55"
            },
            "returnParameters": {
              "id": 17831,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10207:0:55"
            },
            "scope": 17961,
            "src": "10135:398:55",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17904,
              "nodeType": "Block",
              "src": "10776:238:55",
              "statements": [
                {
                  "assignments": [
                    17878
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17878,
                      "mutability": "mutable",
                      "name": "oracleSubnode",
                      "nameLocation": "10790:13:55",
                      "nodeType": "VariableDeclaration",
                      "scope": 17904,
                      "src": "10782:21:55",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 17877,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "10782:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 17886,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 17882,
                            "name": "s_ensNode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17421,
                            "src": "10833:9:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "id": 17883,
                            "name": "ENS_ORACLE_SUBNAME",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17413,
                            "src": "10844:18:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "id": 17880,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "10816:3:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17881,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "src": "10816:16:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 17884,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10816:47:55",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17879,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "10806:9:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 17885,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10806:58:55",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10782:82:55"
                },
                {
                  "assignments": [
                    17889
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17889,
                      "mutability": "mutable",
                      "name": "resolver",
                      "nameLocation": "10892:8:55",
                      "nodeType": "VariableDeclaration",
                      "scope": 17904,
                      "src": "10870:30:55",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ENSResolver_$25982",
                        "typeString": "contract ENSResolver"
                      },
                      "typeName": {
                        "id": 17888,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 17887,
                          "name": "ENSResolver_Chainlink",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 25982,
                          "src": "10870:21:55"
                        },
                        "referencedDeclaration": 25982,
                        "src": "10870:21:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ENSResolver_$25982",
                          "typeString": "contract ENSResolver"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 17896,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 17893,
                            "name": "oracleSubnode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17878,
                            "src": "10940:13:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "id": 17891,
                            "name": "s_ens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17419,
                            "src": "10925:5:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENSInterface_$25789",
                              "typeString": "contract ENSInterface"
                            }
                          },
                          "id": 17892,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "resolver",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25781,
                          "src": "10925:14:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32) view external returns (address)"
                          }
                        },
                        "id": 17894,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10925:29:55",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 17890,
                      "name": "ENSResolver_Chainlink",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 25982,
                      "src": "10903:21:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_ENSResolver_$25982_$",
                        "typeString": "type(contract ENSResolver)"
                      }
                    },
                    "id": 17895,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10903:52:55",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENSResolver_$25982",
                      "typeString": "contract ENSResolver"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10870:85:55"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 17900,
                            "name": "oracleSubnode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17878,
                            "src": "10994:13:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "id": 17898,
                            "name": "resolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17889,
                            "src": "10980:8:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENSResolver_$25982",
                              "typeString": "contract ENSResolver"
                            }
                          },
                          "id": 17899,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "addr",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25981,
                          "src": "10980:13:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32) view external returns (address)"
                          }
                        },
                        "id": 17901,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10980:28:55",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 17897,
                      "name": "setChainlinkOracle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17756,
                      "src": "10961:18:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 17902,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10961:48:55",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17903,
                  "nodeType": "ExpressionStatement",
                  "src": "10961:48:55"
                }
              ]
            },
            "documentation": {
              "id": 17874,
              "nodeType": "StructuredDocumentation",
              "src": "10537:187:55",
              "text": " @notice Sets the stored oracle contract with the address resolved by ENS\n @dev This may be called on its own as long as `useChainlinkWithENS` has been called previously"
            },
            "id": 17905,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "updateChainlinkOracleWithENS",
            "nameLocation": "10736:28:55",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17875,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10764:2:55"
            },
            "returnParameters": {
              "id": 17876,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10776:0:55"
            },
            "scope": 17961,
            "src": "10727:287:55",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17914,
              "nodeType": "Block",
              "src": "11402:6:55",
              "statements": []
            },
            "documentation": {
              "id": 17906,
              "nodeType": "StructuredDocumentation",
              "src": "11018:223:55",
              "text": " @notice Ensures that the fulfillment is valid for this contract\n @dev Use if the contract developer prefers methods instead of modifiers for validation\n @param requestId The request ID for fulfillment"
            },
            "id": 17915,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 17911,
                    "name": "requestId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17908,
                    "src": "11342:9:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 17912,
                "modifierName": {
                  "id": 17910,
                  "name": "recordChainlinkFulfillment",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 17941,
                  "src": "11315:26:55"
                },
                "nodeType": "ModifierInvocation",
                "src": "11315:37:55"
              }
            ],
            "name": "validateChainlinkCallback",
            "nameLocation": "11253:25:55",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17909,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17908,
                  "mutability": "mutable",
                  "name": "requestId",
                  "nameLocation": "11287:9:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17915,
                  "src": "11279:17:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17907,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11279:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11278:19:55"
            },
            "returnParameters": {
              "id": 17913,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11402:0:55"
            },
            "scope": 17961,
            "src": "11244:164:55",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17940,
              "nodeType": "Block",
              "src": "11635:194:55",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 17926,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 17921,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "11649:3:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 17922,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "11649:10:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "baseExpression": {
                            "id": 17923,
                            "name": "s_pendingRequests",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17434,
                            "src": "11663:17:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                              "typeString": "mapping(bytes32 => address)"
                            }
                          },
                          "id": 17925,
                          "indexExpression": {
                            "id": 17924,
                            "name": "requestId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17918,
                            "src": "11681:9:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11663:28:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "11649:42:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "536f75726365206d75737420626520746865206f7261636c65206f66207468652072657175657374",
                        "id": 17927,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11693:42:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d5cafe2745dab6273b51cca76f8727c7664db74ede49af049a5b5ca6a3b184e4",
                          "typeString": "literal_string \"Source must be the oracle of the request\""
                        },
                        "value": "Source must be the oracle of the request"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d5cafe2745dab6273b51cca76f8727c7664db74ede49af049a5b5ca6a3b184e4",
                          "typeString": "literal_string \"Source must be the oracle of the request\""
                        }
                      ],
                      "id": 17920,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "11641:7:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17928,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11641:95:55",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17929,
                  "nodeType": "ExpressionStatement",
                  "src": "11641:95:55"
                },
                {
                  "expression": {
                    "id": 17933,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "11742:35:55",
                    "subExpression": {
                      "baseExpression": {
                        "id": 17930,
                        "name": "s_pendingRequests",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17434,
                        "src": "11749:17:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 17932,
                      "indexExpression": {
                        "id": 17931,
                        "name": "requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17918,
                        "src": "11767:9:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "11749:28:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17934,
                  "nodeType": "ExpressionStatement",
                  "src": "11742:35:55"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 17936,
                        "name": "requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17918,
                        "src": "11807:9:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 17935,
                      "name": "ChainlinkFulfilled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17442,
                      "src": "11788:18:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 17937,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11788:29:55",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17938,
                  "nodeType": "EmitStatement",
                  "src": "11783:34:55"
                },
                {
                  "id": 17939,
                  "nodeType": "PlaceholderStatement",
                  "src": "11823:1:55"
                }
              ]
            },
            "documentation": {
              "id": 17916,
              "nodeType": "StructuredDocumentation",
              "src": "11412:165:55",
              "text": " @dev Reverts if the sender is not the oracle of the request.\n Emits ChainlinkFulfilled event.\n @param requestId The request ID for fulfillment"
            },
            "id": 17941,
            "name": "recordChainlinkFulfillment",
            "nameLocation": "11589:26:55",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 17919,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17918,
                  "mutability": "mutable",
                  "name": "requestId",
                  "nameLocation": "11624:9:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17941,
                  "src": "11616:17:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17917,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11616:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11615:19:55"
            },
            "src": "11580:249:55",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17959,
              "nodeType": "Block",
              "src": "11996:99:55",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 17954,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "baseExpression": {
                            "id": 17947,
                            "name": "s_pendingRequests",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17434,
                            "src": "12010:17:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                              "typeString": "mapping(bytes32 => address)"
                            }
                          },
                          "id": 17949,
                          "indexExpression": {
                            "id": 17948,
                            "name": "requestId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17944,
                            "src": "12028:9:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12010:28:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 17952,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12050:1:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 17951,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "12042:7:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 17950,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "12042:7:55",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 17953,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12042:10:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "12010:42:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5265717565737420697320616c72656164792070656e64696e67",
                        "id": 17955,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12054:28:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_efa688de2ca2442cd2f76ca864c7a15bdcb24ac77ed3de01d4cf9f6afd58c7aa",
                          "typeString": "literal_string \"Request is already pending\""
                        },
                        "value": "Request is already pending"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_efa688de2ca2442cd2f76ca864c7a15bdcb24ac77ed3de01d4cf9f6afd58c7aa",
                          "typeString": "literal_string \"Request is already pending\""
                        }
                      ],
                      "id": 17946,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "12002:7:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17956,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12002:81:55",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17957,
                  "nodeType": "ExpressionStatement",
                  "src": "12002:81:55"
                },
                {
                  "id": 17958,
                  "nodeType": "PlaceholderStatement",
                  "src": "12089:1:55"
                }
              ]
            },
            "documentation": {
              "id": 17942,
              "nodeType": "StructuredDocumentation",
              "src": "11833:114:55",
              "text": " @dev Reverts if the request is already pending\n @param requestId The request ID for fulfillment"
            },
            "id": 17960,
            "name": "notPendingRequest",
            "nameLocation": "11959:17:55",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 17945,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17944,
                  "mutability": "mutable",
                  "name": "requestId",
                  "nameLocation": "11985:9:55",
                  "nodeType": "VariableDeclaration",
                  "scope": 17960,
                  "src": "11977:17:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17943,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11977:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11976:19:55"
            },
            "src": "11950:145:55",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 17962,
        "src": "549:11548:55"
      }
    ],
    "src": "32:12066:55"
  },
  "bytecode": "",
  "bytecodeSha1": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
  "compiler": {
    "evm_version": "istanbul",
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "version": "0.8.2+commit.661d1103"
  },
  "contractName": "ChainlinkClient",
  "coverageMap": {
    "branches": {},
    "statements": {}
  },
  "dependencies": [
    "smartcontractkit/chainlink@1.6.0/BufferChainlink",
    "smartcontractkit/chainlink@1.6.0/CBORChainlink",
    "smartcontractkit/chainlink@1.6.0/Chainlink",
    "smartcontractkit/chainlink@1.6.0/ChainlinkRequestInterface",
    "smartcontractkit/chainlink@1.6.0/ENSInterface",
    "smartcontractkit/chainlink@1.6.0/ENSResolver",
    "smartcontractkit/chainlink@1.6.0/LinkTokenInterface",
    "smartcontractkit/chainlink@1.6.0/OperatorInterface",
    "smartcontractkit/chainlink@1.6.0/OracleInterface",
    "smartcontractkit/chainlink@1.6.0/PointerInterface"
  ],
  "deployedBytecode": "",
  "deployedSourceMap": "",
  "language": "Solidity",
  "natspec": {
    "kind": "dev",
    "methods": {},
    "notice": "Contract writers can inherit this contract in order to create requests for the Chainlink network",
    "title": "The ChainlinkClient contract",
    "version": 1
  },
  "offset": [
    549,
    12097
  ],
  "opcodes": "",
  "pcMap": {},
  "sha1": "ecbc289685c0276b7dfeaef704bac1a029f45d82",
  "source": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport \"./Chainlink.sol\";\nimport \"./interfaces/ENSInterface.sol\";\nimport \"./interfaces/LinkTokenInterface.sol\";\nimport \"./interfaces/ChainlinkRequestInterface.sol\";\nimport \"./interfaces/OperatorInterface.sol\";\nimport \"./interfaces/PointerInterface.sol\";\nimport {ENSResolver as ENSResolver_Chainlink} from \"./vendor/ENSResolver.sol\";\n\n/**\n * @title The ChainlinkClient contract\n * @notice Contract writers can inherit this contract in order to create requests for the\n * Chainlink network\n */\nabstract contract ChainlinkClient {\n  using Chainlink for Chainlink.Request;\n\n  uint256 internal constant LINK_DIVISIBILITY = 10**18;\n  uint256 private constant AMOUNT_OVERRIDE = 0;\n  address private constant SENDER_OVERRIDE = address(0);\n  uint256 private constant ORACLE_ARGS_VERSION = 1;\n  uint256 private constant OPERATOR_ARGS_VERSION = 2;\n  bytes32 private constant ENS_TOKEN_SUBNAME = keccak256(\"link\");\n  bytes32 private constant ENS_ORACLE_SUBNAME = keccak256(\"oracle\");\n  address private constant LINK_TOKEN_POINTER = 0xC89bD4E1632D3A43CB03AAAd5262cbe4038Bc571;\n\n  ENSInterface private s_ens;\n  bytes32 private s_ensNode;\n  LinkTokenInterface private s_link;\n  OperatorInterface private s_oracle;\n  uint256 private s_requestCount = 1;\n  mapping(bytes32 => address) private s_pendingRequests;\n\n  event ChainlinkRequested(bytes32 indexed id);\n  event ChainlinkFulfilled(bytes32 indexed id);\n  event ChainlinkCancelled(bytes32 indexed id);\n\n  /**\n   * @notice Creates a request that can hold additional parameters\n   * @param specId The Job Specification ID that the request will be created for\n   * @param callbackAddr address to operate the callback on\n   * @param callbackFunctionSignature function signature to use for the callback\n   * @return A Chainlink Request struct in memory\n   */\n  function buildChainlinkRequest(\n    bytes32 specId,\n    address callbackAddr,\n    bytes4 callbackFunctionSignature\n  ) internal pure returns (Chainlink.Request memory) {\n    Chainlink.Request memory req;\n    return req.initialize(specId, callbackAddr, callbackFunctionSignature);\n  }\n\n  /**\n   * @notice Creates a request that can hold additional parameters\n   * @param specId The Job Specification ID that the request will be created for\n   * @param callbackFunctionSignature function signature to use for the callback\n   * @return A Chainlink Request struct in memory\n   */\n  function buildOperatorRequest(bytes32 specId, bytes4 callbackFunctionSignature)\n    internal\n    view\n    returns (Chainlink.Request memory)\n  {\n    Chainlink.Request memory req;\n    return req.initialize(specId, address(this), callbackFunctionSignature);\n  }\n\n  /**\n   * @notice Creates a Chainlink request to the stored oracle address\n   * @dev Calls `chainlinkRequestTo` with the stored oracle address\n   * @param req The initialized Chainlink Request\n   * @param payment The amount of LINK to send for the request\n   * @return requestId The request ID\n   */\n  function sendChainlinkRequest(Chainlink.Request memory req, uint256 payment) internal returns (bytes32) {\n    return sendChainlinkRequestTo(address(s_oracle), req, payment);\n  }\n\n  /**\n   * @notice Creates a Chainlink request to the specified oracle address\n   * @dev Generates and stores a request ID, increments the local nonce, and uses `transferAndCall` to\n   * send LINK which creates a request on the target oracle contract.\n   * Emits ChainlinkRequested event.\n   * @param oracleAddress The address of the oracle for the request\n   * @param req The initialized Chainlink Request\n   * @param payment The amount of LINK to send for the request\n   * @return requestId The request ID\n   */\n  function sendChainlinkRequestTo(\n    address oracleAddress,\n    Chainlink.Request memory req,\n    uint256 payment\n  ) internal returns (bytes32 requestId) {\n    uint256 nonce = s_requestCount;\n    s_requestCount = nonce + 1;\n    bytes memory encodedRequest = abi.encodeWithSelector(\n      ChainlinkRequestInterface.oracleRequest.selector,\n      SENDER_OVERRIDE, // Sender value - overridden by onTokenTransfer by the requesting contract's address\n      AMOUNT_OVERRIDE, // Amount value - overridden by onTokenTransfer by the actual amount of LINK sent\n      req.id,\n      address(this),\n      req.callbackFunctionId,\n      nonce,\n      ORACLE_ARGS_VERSION,\n      req.buf.buf\n    );\n    return _rawRequest(oracleAddress, nonce, payment, encodedRequest);\n  }\n\n  /**\n   * @notice Creates a Chainlink request to the stored oracle address\n   * @dev This function supports multi-word response\n   * @dev Calls `sendOperatorRequestTo` with the stored oracle address\n   * @param req The initialized Chainlink Request\n   * @param payment The amount of LINK to send for the request\n   * @return requestId The request ID\n   */\n  function sendOperatorRequest(Chainlink.Request memory req, uint256 payment) internal returns (bytes32) {\n    return sendOperatorRequestTo(address(s_oracle), req, payment);\n  }\n\n  /**\n   * @notice Creates a Chainlink request to the specified oracle address\n   * @dev This function supports multi-word response\n   * @dev Generates and stores a request ID, increments the local nonce, and uses `transferAndCall` to\n   * send LINK which creates a request on the target oracle contract.\n   * Emits ChainlinkRequested event.\n   * @param oracleAddress The address of the oracle for the request\n   * @param req The initialized Chainlink Request\n   * @param payment The amount of LINK to send for the request\n   * @return requestId The request ID\n   */\n  function sendOperatorRequestTo(\n    address oracleAddress,\n    Chainlink.Request memory req,\n    uint256 payment\n  ) internal returns (bytes32 requestId) {\n    uint256 nonce = s_requestCount;\n    s_requestCount = nonce + 1;\n    bytes memory encodedRequest = abi.encodeWithSelector(\n      OperatorInterface.operatorRequest.selector,\n      SENDER_OVERRIDE, // Sender value - overridden by onTokenTransfer by the requesting contract's address\n      AMOUNT_OVERRIDE, // Amount value - overridden by onTokenTransfer by the actual amount of LINK sent\n      req.id,\n      req.callbackFunctionId,\n      nonce,\n      OPERATOR_ARGS_VERSION,\n      req.buf.buf\n    );\n    return _rawRequest(oracleAddress, nonce, payment, encodedRequest);\n  }\n\n  /**\n   * @notice Make a request to an oracle\n   * @param oracleAddress The address of the oracle for the request\n   * @param nonce used to generate the request ID\n   * @param payment The amount of LINK to send for the request\n   * @param encodedRequest data encoded for request type specific format\n   * @return requestId The request ID\n   */\n  function _rawRequest(\n    address oracleAddress,\n    uint256 nonce,\n    uint256 payment,\n    bytes memory encodedRequest\n  ) private returns (bytes32 requestId) {\n    requestId = keccak256(abi.encodePacked(this, nonce));\n    s_pendingRequests[requestId] = oracleAddress;\n    emit ChainlinkRequested(requestId);\n    require(s_link.transferAndCall(oracleAddress, payment, encodedRequest), \"unable to transferAndCall to oracle\");\n  }\n\n  /**\n   * @notice Allows a request to be cancelled if it has not been fulfilled\n   * @dev Requires keeping track of the expiration value emitted from the oracle contract.\n   * Deletes the request from the `pendingRequests` mapping.\n   * Emits ChainlinkCancelled event.\n   * @param requestId The request ID\n   * @param payment The amount of LINK sent for the request\n   * @param callbackFunc The callback function specified for the request\n   * @param expiration The time of the expiration for the request\n   */\n  function cancelChainlinkRequest(\n    bytes32 requestId,\n    uint256 payment,\n    bytes4 callbackFunc,\n    uint256 expiration\n  ) internal {\n    OperatorInterface requested = OperatorInterface(s_pendingRequests[requestId]);\n    delete s_pendingRequests[requestId];\n    emit ChainlinkCancelled(requestId);\n    requested.cancelOracleRequest(requestId, payment, callbackFunc, expiration);\n  }\n\n  /**\n   * @notice the next request count to be used in generating a nonce\n   * @dev starts at 1 in order to ensure consistent gas cost\n   * @return returns the next request count to be used in a nonce\n   */\n  function getNextRequestCount() internal view returns (uint256) {\n    return s_requestCount;\n  }\n\n  /**\n   * @notice Sets the stored oracle address\n   * @param oracleAddress The address of the oracle contract\n   */\n  function setChainlinkOracle(address oracleAddress) internal {\n    s_oracle = OperatorInterface(oracleAddress);\n  }\n\n  /**\n   * @notice Sets the LINK token address\n   * @param linkAddress The address of the LINK token contract\n   */\n  function setChainlinkToken(address linkAddress) internal {\n    s_link = LinkTokenInterface(linkAddress);\n  }\n\n  /**\n   * @notice Sets the Chainlink token address for the public\n   * network as given by the Pointer contract\n   */\n  function setPublicChainlinkToken() internal {\n    setChainlinkToken(PointerInterface(LINK_TOKEN_POINTER).getAddress());\n  }\n\n  /**\n   * @notice Retrieves the stored address of the LINK token\n   * @return The address of the LINK token\n   */\n  function chainlinkTokenAddress() internal view returns (address) {\n    return address(s_link);\n  }\n\n  /**\n   * @notice Retrieves the stored address of the oracle contract\n   * @return The address of the oracle contract\n   */\n  function chainlinkOracleAddress() internal view returns (address) {\n    return address(s_oracle);\n  }\n\n  /**\n   * @notice Allows for a request which was created on another contract to be fulfilled\n   * on this contract\n   * @param oracleAddress The address of the oracle contract that will fulfill the request\n   * @param requestId The request ID used for the response\n   */\n  function addChainlinkExternalRequest(address oracleAddress, bytes32 requestId) internal notPendingRequest(requestId) {\n    s_pendingRequests[requestId] = oracleAddress;\n  }\n\n  /**\n   * @notice Sets the stored oracle and LINK token contracts with the addresses resolved by ENS\n   * @dev Accounts for subnodes having different resolvers\n   * @param ensAddress The address of the ENS contract\n   * @param node The ENS node hash\n   */\n  function useChainlinkWithENS(address ensAddress, bytes32 node) internal {\n    s_ens = ENSInterface(ensAddress);\n    s_ensNode = node;\n    bytes32 linkSubnode = keccak256(abi.encodePacked(s_ensNode, ENS_TOKEN_SUBNAME));\n    ENSResolver_Chainlink resolver = ENSResolver_Chainlink(s_ens.resolver(linkSubnode));\n    setChainlinkToken(resolver.addr(linkSubnode));\n    updateChainlinkOracleWithENS();\n  }\n\n  /**\n   * @notice Sets the stored oracle contract with the address resolved by ENS\n   * @dev This may be called on its own as long as `useChainlinkWithENS` has been called previously\n   */\n  function updateChainlinkOracleWithENS() internal {\n    bytes32 oracleSubnode = keccak256(abi.encodePacked(s_ensNode, ENS_ORACLE_SUBNAME));\n    ENSResolver_Chainlink resolver = ENSResolver_Chainlink(s_ens.resolver(oracleSubnode));\n    setChainlinkOracle(resolver.addr(oracleSubnode));\n  }\n\n  /**\n   * @notice Ensures that the fulfillment is valid for this contract\n   * @dev Use if the contract developer prefers methods instead of modifiers for validation\n   * @param requestId The request ID for fulfillment\n   */\n  function validateChainlinkCallback(bytes32 requestId)\n    internal\n    recordChainlinkFulfillment(requestId)\n  // solhint-disable-next-line no-empty-blocks\n  {\n\n  }\n\n  /**\n   * @dev Reverts if the sender is not the oracle of the request.\n   * Emits ChainlinkFulfilled event.\n   * @param requestId The request ID for fulfillment\n   */\n  modifier recordChainlinkFulfillment(bytes32 requestId) {\n    require(msg.sender == s_pendingRequests[requestId], \"Source must be the oracle of the request\");\n    delete s_pendingRequests[requestId];\n    emit ChainlinkFulfilled(requestId);\n    _;\n  }\n\n  /**\n   * @dev Reverts if the request is already pending\n   * @param requestId The request ID for fulfillment\n   */\n  modifier notPendingRequest(bytes32 requestId) {\n    require(s_pendingRequests[requestId] == address(0), \"Request is already pending\");\n    _;\n  }\n}\n",
  "sourceMap": "",
  "sourcePath": "/home/vscode/.brownie/packages/smartcontractkit/chainlink@1.6.0/contracts/src/v0.8/ChainlinkClient.sol",
  "type": "contract"
}