{
  "id": "e085bbcd66a6802c8635159e2d0f8305",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.6.10",
  "solcLongVersion": "0.6.10+commit.00c0fcaf",
  "input": {
    "language": "Solidity",
    "sources": {
      "contracts/mocks/external/GaugeControllerMock.sol": {
        "content": "/*\n    Copyright 2020 Set Labs Inc.\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n\n    SPDX-License-Identifier: Apache License, Version 2.0\n*/\n\npragma solidity 0.6.10;\n\n/**\n * @title GaugeControllerMock\n * @author Set Protocol\n *\n * Mocks similar behaviour of the Curve GaugeController contract\n */\ncontract GaugeControllerMock {\n\n    mapping(address => int128) internal types;\n\n    function addGaugeType(address _gauge, int128 _type) external {\n        types[_gauge] = _type + 1;\n    }\n\n    function gauge_types(address _gauge) external view returns (int128) {\n        int128 gaugeType = types[_gauge];\n\n        require(gaugeType != 0, \"Not valid\");\n        return gaugeType - 1;\n    }\n}\n"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": true,
        "runs": 200
      },
      "outputSelection": {
        "*": {
          "*": [
            "abi",
            "evm.bytecode",
            "evm.deployedBytecode",
            "evm.methodIdentifiers"
          ],
          "": [
            "ast"
          ]
        }
      }
    }
  },
  "output": {
    "contracts": {
      "contracts/mocks/external/GaugeControllerMock.sol": {
        "GaugeControllerMock": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_gauge",
                  "type": "address"
                },
                {
                  "internalType": "int128",
                  "name": "_type",
                  "type": "int128"
                }
              ],
              "name": "addGaugeType",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_gauge",
                  "type": "address"
                }
              ],
              "name": "gauge_types",
              "outputs": [
                {
                  "internalType": "int128",
                  "name": "",
                  "type": "int128"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b5061019c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80633f9095b71461003b578063a12f4e5b1461007a575b600080fd5b6100616004803603602081101561005157600080fd5b50356001600160a01b03166100ab565b60408051600f92830b90920b8252519081900360200190f35b6100a96004803603604081101561009057600080fd5b506001600160a01b038135169060200135600f0b610114565b005b6001600160a01b038116600090815260208190526040812054600f90810b9081900b61010a576040805162461bcd60e51b8152602060048201526009602482015268139bdd081d985b1a5960ba1b604482015290519081900360640190fd5b6000190192915050565b6001600160a01b03909116600090815260208190526040902080546001909201600f0b6fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1990921691909117905556fea26469706673582212204743a63168a0259aed3c76f17e21c94732ecd37468656545c9725d2e15a8dbe764736f6c634300060a0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19C DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3F9095B7 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xA12F4E5B EQ PUSH2 0x7A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x61 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xF SWAP3 DUP4 SIGNEXTEND SWAP1 SWAP3 SIGNEXTEND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0xF SIGNEXTEND PUSH2 0x114 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xF SWAP1 DUP2 SIGNEXTEND SWAP1 DUP2 SWAP1 SIGNEXTEND PUSH2 0x10A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH9 0x139BDD081D985B1A59 PUSH1 0xBA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 NOT ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP3 ADD PUSH1 0xF SIGNEXTEND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SELFBALANCE NUMBER 0xA6 BALANCE PUSH9 0xA0259AED3C76F17E21 0xC9 SELFBALANCE ORIGIN 0xEC 0xD3 PUSH21 0x68656545C9725D2E15A8DBE764736F6C634300060A STOP CALLER ",
              "sourceMap": "810:389:0:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100365760003560e01c80633f9095b71461003b578063a12f4e5b1461007a575b600080fd5b6100616004803603602081101561005157600080fd5b50356001600160a01b03166100ab565b60408051600f92830b90920b8252519081900360200190f35b6100a96004803603604081101561009057600080fd5b506001600160a01b038135169060200135600f0b610114565b005b6001600160a01b038116600090815260208190526040812054600f90810b9081900b61010a576040805162461bcd60e51b8152602060048201526009602482015268139bdd081d985b1a5960ba1b604482015290519081900360640190fd5b6000190192915050565b6001600160a01b03909116600090815260208190526040902080546001909201600f0b6fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1990921691909117905556fea26469706673582212204743a63168a0259aed3c76f17e21c94732ecd37468656545c9725d2e15a8dbe764736f6c634300060a0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3F9095B7 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xA12F4E5B EQ PUSH2 0x7A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x61 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xF SWAP3 DUP4 SIGNEXTEND SWAP1 SWAP3 SIGNEXTEND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0xF SIGNEXTEND PUSH2 0x114 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xF SWAP1 DUP2 SIGNEXTEND SWAP1 DUP2 SWAP1 SIGNEXTEND PUSH2 0x10A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH9 0x139BDD081D985B1A59 PUSH1 0xBA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 NOT ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP3 ADD PUSH1 0xF SIGNEXTEND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SELFBALANCE NUMBER 0xA6 BALANCE PUSH9 0xA0259AED3C76F17E21 0xC9 SELFBALANCE ORIGIN 0xEC 0xD3 PUSH21 0x68656545C9725D2E15A8DBE764736F6C634300060A STOP CALLER ",
              "sourceMap": "810:389:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1003:194;;;;;;;;;;;;;;;;-1:-1:-1;1003:194:0;-1:-1:-1;;;;;1003:194:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;894:103;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;894:103:0;;;;;;;;;;:::i;:::-;;1003:194;-1:-1:-1;;;;;1100:13:0;;1063:6;1100:13;;;;;;;;;;;;;;;;1132:14;;;1124:36;;;;;-1:-1:-1;;;1124:36:0;;;;;;;;;;;;-1:-1:-1;;;1124:36:0;;;;;;;;;;;;;;;-1:-1:-1;;1177:13:0;;1003:194;-1:-1:-1;;1003:194:0:o;894:103::-;-1:-1:-1;;;;;965:13:0;;;:5;:13;;;;;;;;;;:25;;989:1;981:9;;;965:25;;;;-1:-1:-1;;965:25:0;;;;;;;;;894:103::o"
            },
            "methodIdentifiers": {
              "addGaugeType(address,int128)": "a12f4e5b",
              "gauge_types(address)": "3f9095b7"
            }
          }
        }
      }
    },
    "sources": {
      "contracts/mocks/external/GaugeControllerMock.sol": {
        "ast": {
          "absolutePath": "contracts/mocks/external/GaugeControllerMock.sol",
          "exportedSymbols": {
            "GaugeControllerMock": [
              48
            ]
          },
          "id": 49,
          "license": "Apache License",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1,
              "literals": [
                "solidity",
                "0.6",
                ".10"
              ],
              "nodeType": "PragmaDirective",
              "src": "655:23:0"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 2,
                "nodeType": "StructuredDocumentation",
                "src": "680:129:0",
                "text": " @title GaugeControllerMock\n @author Set Protocol\n Mocks similar behaviour of the Curve GaugeController contract"
              },
              "fullyImplemented": true,
              "id": 48,
              "linearizedBaseContracts": [
                48
              ],
              "name": "GaugeControllerMock",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 6,
                  "mutability": "mutable",
                  "name": "types",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 48,
                  "src": "846:41:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_int128_$",
                    "typeString": "mapping(address => int128)"
                  },
                  "typeName": {
                    "id": 5,
                    "keyType": {
                      "id": 3,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "854:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "846:26:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_int128_$",
                      "typeString": "mapping(address => int128)"
                    },
                    "valueType": {
                      "id": 4,
                      "name": "int128",
                      "nodeType": "ElementaryTypeName",
                      "src": "865:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int128",
                        "typeString": "int128"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21,
                    "nodeType": "Block",
                    "src": "955:42:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 19,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 13,
                              "name": "types",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6,
                              "src": "965:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_int128_$",
                                "typeString": "mapping(address => int128)"
                              }
                            },
                            "id": 15,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 14,
                              "name": "_gauge",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8,
                              "src": "971:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "965:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int128",
                              "typeString": "int128"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_int128",
                              "typeString": "int128"
                            },
                            "id": 18,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 16,
                              "name": "_type",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10,
                              "src": "981:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int128",
                                "typeString": "int128"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 17,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "989:1:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "981:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int128",
                              "typeString": "int128"
                            }
                          },
                          "src": "965:25:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int128",
                            "typeString": "int128"
                          }
                        },
                        "id": 20,
                        "nodeType": "ExpressionStatement",
                        "src": "965:25:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "a12f4e5b",
                  "id": 22,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "addGaugeType",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 11,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8,
                        "mutability": "mutable",
                        "name": "_gauge",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22,
                        "src": "916:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "916:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10,
                        "mutability": "mutable",
                        "name": "_type",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22,
                        "src": "932:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int128",
                          "typeString": "int128"
                        },
                        "typeName": {
                          "id": 9,
                          "name": "int128",
                          "nodeType": "ElementaryTypeName",
                          "src": "932:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int128",
                            "typeString": "int128"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "915:30:0"
                  },
                  "returnParameters": {
                    "id": 12,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "955:0:0"
                  },
                  "scope": 48,
                  "src": "894:103:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 46,
                    "nodeType": "Block",
                    "src": "1071:126:0",
                    "statements": [
                      {
                        "assignments": [
                          30
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 30,
                            "mutability": "mutable",
                            "name": "gaugeType",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 46,
                            "src": "1081:16:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int128",
                              "typeString": "int128"
                            },
                            "typeName": {
                              "id": 29,
                              "name": "int128",
                              "nodeType": "ElementaryTypeName",
                              "src": "1081:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int128",
                                "typeString": "int128"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 34,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 31,
                            "name": "types",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6,
                            "src": "1100:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_int128_$",
                              "typeString": "mapping(address => int128)"
                            }
                          },
                          "id": 33,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 32,
                            "name": "_gauge",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24,
                            "src": "1106:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1100:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int128",
                            "typeString": "int128"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1081:32:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_int128",
                                "typeString": "int128"
                              },
                              "id": 38,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 36,
                                "name": "gaugeType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 30,
                                "src": "1132:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int128",
                                  "typeString": "int128"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 37,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1145:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1132:14:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4e6f742076616c6964",
                              "id": 39,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1148:11:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b24dfe339af2106ffa94388d46518fe6b9952c00e100a2f386405bb891055efe",
                                "typeString": "literal_string \"Not valid\""
                              },
                              "value": "Not valid"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b24dfe339af2106ffa94388d46518fe6b9952c00e100a2f386405bb891055efe",
                                "typeString": "literal_string \"Not valid\""
                              }
                            ],
                            "id": 35,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1124:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 40,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1124:36:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 41,
                        "nodeType": "ExpressionStatement",
                        "src": "1124:36:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int128",
                            "typeString": "int128"
                          },
                          "id": 44,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 42,
                            "name": "gaugeType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30,
                            "src": "1177:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int128",
                              "typeString": "int128"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 43,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1189:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "1177:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int128",
                            "typeString": "int128"
                          }
                        },
                        "functionReturnParameters": 28,
                        "id": 45,
                        "nodeType": "Return",
                        "src": "1170:20:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "3f9095b7",
                  "id": 47,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "gauge_types",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 25,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24,
                        "mutability": "mutable",
                        "name": "_gauge",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 47,
                        "src": "1024:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1024:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1023:16:0"
                  },
                  "returnParameters": {
                    "id": 28,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 47,
                        "src": "1063:6:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int128",
                          "typeString": "int128"
                        },
                        "typeName": {
                          "id": 26,
                          "name": "int128",
                          "nodeType": "ElementaryTypeName",
                          "src": "1063:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int128",
                            "typeString": "int128"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1062:8:0"
                  },
                  "scope": 48,
                  "src": "1003:194:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 49,
              "src": "810:389:0"
            }
          ],
          "src": "655:545:0"
        },
        "id": 0
      }
    }
  }
}
