{
  "abi": [],
  "allSourcePaths": {
    "111": "node_modules/@openzeppelin/contracts/utils/structs/EnumerableSet.sol"
  },
  "ast": {
    "absolutePath": "node_modules/@openzeppelin/contracts/utils/structs/EnumerableSet.sol",
    "exportedSymbols": {
      "EnumerableSet": [
        17393
      ]
    },
    "id": 17394,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 16796,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "100:23:111"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": {
          "id": 16797,
          "nodeType": "StructuredDocumentation",
          "src": "125:686:111",
          "text": " @dev Library for managing\n https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n types.\n Sets have the following properties:\n - Elements are added, removed, and checked for existence in constant time\n (O(1)).\n - Elements are enumerated in O(n). No guarantees are made on the ordering.\n ```\n contract Example {\n     // Add the library methods\n     using EnumerableSet for EnumerableSet.AddressSet;\n     // Declare a set state variable\n     EnumerableSet.AddressSet private mySet;\n }\n ```\n As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n and `uint256` (`UintSet`) are supported."
        },
        "fullyImplemented": true,
        "id": 17393,
        "linearizedBaseContracts": [
          17393
        ],
        "name": "EnumerableSet",
        "nameLocation": "820:13:111",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "EnumerableSet.Set",
            "id": 16805,
            "members": [
              {
                "constant": false,
                "id": 16800,
                "mutability": "mutable",
                "name": "_values",
                "nameLocation": "1344:7:111",
                "nodeType": "VariableDeclaration",
                "scope": 16805,
                "src": "1334:17:111",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                  "typeString": "bytes32[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 16798,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1334:7:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 16799,
                  "nodeType": "ArrayTypeName",
                  "src": "1334:9:111",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                    "typeString": "bytes32[]"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 16804,
                "mutability": "mutable",
                "name": "_indexes",
                "nameLocation": "1512:8:111",
                "nodeType": "VariableDeclaration",
                "scope": 16805,
                "src": "1484:36:111",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                  "typeString": "mapping(bytes32 => uint256)"
                },
                "typeName": {
                  "id": 16803,
                  "keyType": {
                    "id": 16801,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1492:7:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1484:27:111",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                    "typeString": "mapping(bytes32 => uint256)"
                  },
                  "valueType": {
                    "id": 16802,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1503:7:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "Set",
            "nameLocation": "1287:3:111",
            "nodeType": "StructDefinition",
            "scope": 17393,
            "src": "1280:247:111",
            "visibility": "public"
          },
          {
            "body": {
              "id": 16846,
              "nodeType": "Block",
              "src": "1766:335:111",
              "statements": [
                {
                  "condition": {
                    "id": 16820,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "1780:22:111",
                    "subExpression": {
                      "arguments": [
                        {
                          "id": 16817,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16809,
                          "src": "1791:3:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$16805_storage_ptr",
                            "typeString": "struct EnumerableSet.Set storage pointer"
                          }
                        },
                        {
                          "id": 16818,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16811,
                          "src": "1796:5:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Set_$16805_storage_ptr",
                            "typeString": "struct EnumerableSet.Set storage pointer"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 16816,
                        "name": "_contains",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16950,
                        "src": "1781:9:111",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$16805_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                          "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"
                        }
                      },
                      "id": 16819,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1781:21:111",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 16844,
                    "nodeType": "Block",
                    "src": "2058:37:111",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "66616c7365",
                          "id": 16842,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2079:5:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 16815,
                        "id": 16843,
                        "nodeType": "Return",
                        "src": "2072:12:111"
                      }
                    ]
                  },
                  "id": 16845,
                  "nodeType": "IfStatement",
                  "src": "1776:319:111",
                  "trueBody": {
                    "id": 16841,
                    "nodeType": "Block",
                    "src": "1804:248:111",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 16826,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16811,
                              "src": "1835:5:111",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "expression": {
                                "id": 16821,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16809,
                                "src": "1818:3:111",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$16805_storage_ptr",
                                  "typeString": "struct EnumerableSet.Set storage pointer"
                                }
                              },
                              "id": 16824,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_values",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16800,
                              "src": "1818:11:111",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                "typeString": "bytes32[] storage ref"
                              }
                            },
                            "id": 16825,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "src": "1818:16:111",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$_t_bytes32_$returns$__$bound_to$_t_array$_t_bytes32_$dyn_storage_ptr_$",
                              "typeString": "function (bytes32[] storage pointer,bytes32)"
                            }
                          },
                          "id": 16827,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1818:23:111",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16828,
                        "nodeType": "ExpressionStatement",
                        "src": "1818:23:111"
                      },
                      {
                        "expression": {
                          "id": 16837,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "expression": {
                                "id": 16829,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16809,
                                "src": "1976:3:111",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$16805_storage_ptr",
                                  "typeString": "struct EnumerableSet.Set storage pointer"
                                }
                              },
                              "id": 16832,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_indexes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16804,
                              "src": "1976:12:111",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 16833,
                            "indexExpression": {
                              "id": 16831,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16811,
                              "src": "1989:5:111",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1976:19:111",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 16834,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16809,
                                "src": "1998:3:111",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$16805_storage_ptr",
                                  "typeString": "struct EnumerableSet.Set storage pointer"
                                }
                              },
                              "id": 16835,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_values",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16800,
                              "src": "1998:11:111",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                "typeString": "bytes32[] storage ref"
                              }
                            },
                            "id": 16836,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "1998:18:111",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1976:40:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16838,
                        "nodeType": "ExpressionStatement",
                        "src": "1976:40:111"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 16839,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2037:4:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 16815,
                        "id": 16840,
                        "nodeType": "Return",
                        "src": "2030:11:111"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 16806,
              "nodeType": "StructuredDocumentation",
              "src": "1533:159:111",
              "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."
            },
            "id": 16847,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_add",
            "nameLocation": "1706:4:111",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16812,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16809,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "1723:3:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 16847,
                  "src": "1711:15:111",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$16805_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  },
                  "typeName": {
                    "id": 16808,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 16807,
                      "name": "Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 16805,
                      "src": "1711:3:111"
                    },
                    "referencedDeclaration": 16805,
                    "src": "1711:3:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$16805_storage_ptr",
                      "typeString": "struct EnumerableSet.Set"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16811,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "1736:5:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 16847,
                  "src": "1728:13:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16810,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1728:7:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1710:32:111"
            },
            "returnParameters": {
              "id": 16815,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16814,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 16847,
                  "src": "1760:4:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16813,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1760:4:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1759:6:111"
            },
            "scope": 17393,
            "src": "1697:404:111",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 16930,
              "nodeType": "Block",
              "src": "2341:1316:111",
              "statements": [
                {
                  "assignments": [
                    16859
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 16859,
                      "mutability": "mutable",
                      "name": "valueIndex",
                      "nameLocation": "2459:10:111",
                      "nodeType": "VariableDeclaration",
                      "scope": 16930,
                      "src": "2451:18:111",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 16858,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2451:7:111",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 16864,
                  "initialValue": {
                    "baseExpression": {
                      "expression": {
                        "id": 16860,
                        "name": "set",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16851,
                        "src": "2472:3:111",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$16805_storage_ptr",
                          "typeString": "struct EnumerableSet.Set storage pointer"
                        }
                      },
                      "id": 16861,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_indexes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16804,
                      "src": "2472:12:111",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      }
                    },
                    "id": 16863,
                    "indexExpression": {
                      "id": 16862,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16853,
                      "src": "2485:5:111",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2472:19:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2451:40:111"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 16867,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 16865,
                      "name": "valueIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16859,
                      "src": "2506:10:111",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 16866,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2520:1:111",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2506:15:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 16928,
                    "nodeType": "Block",
                    "src": "3614:37:111",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "66616c7365",
                          "id": 16926,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3635:5:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 16857,
                        "id": 16927,
                        "nodeType": "Return",
                        "src": "3628:12:111"
                      }
                    ]
                  },
                  "id": 16929,
                  "nodeType": "IfStatement",
                  "src": "2502:1149:111",
                  "trueBody": {
                    "id": 16925,
                    "nodeType": "Block",
                    "src": "2523:1085:111",
                    "statements": [
                      {
                        "assignments": [
                          16869
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16869,
                            "mutability": "mutable",
                            "name": "toDeleteIndex",
                            "nameLocation": "2883:13:111",
                            "nodeType": "VariableDeclaration",
                            "scope": 16925,
                            "src": "2875:21:111",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 16868,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2875:7:111",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16873,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16872,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 16870,
                            "name": "valueIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16859,
                            "src": "2899:10:111",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 16871,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2912:1:111",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "2899:14:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2875:38:111"
                      },
                      {
                        "assignments": [
                          16875
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16875,
                            "mutability": "mutable",
                            "name": "lastIndex",
                            "nameLocation": "2935:9:111",
                            "nodeType": "VariableDeclaration",
                            "scope": 16925,
                            "src": "2927:17:111",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 16874,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2927:7:111",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16881,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16880,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "expression": {
                                "id": 16876,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16851,
                                "src": "2947:3:111",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$16805_storage_ptr",
                                  "typeString": "struct EnumerableSet.Set storage pointer"
                                }
                              },
                              "id": 16877,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_values",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16800,
                              "src": "2947:11:111",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                "typeString": "bytes32[] storage ref"
                              }
                            },
                            "id": 16878,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "2947:18:111",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 16879,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2968:1:111",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "2947:22:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2927:42:111"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16884,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 16882,
                            "name": "lastIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16875,
                            "src": "2988:9:111",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 16883,
                            "name": "toDeleteIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16869,
                            "src": "3001:13:111",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2988:26:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 16909,
                        "nodeType": "IfStatement",
                        "src": "2984:398:111",
                        "trueBody": {
                          "id": 16908,
                          "nodeType": "Block",
                          "src": "3016:366:111",
                          "statements": [
                            {
                              "assignments": [
                                16886
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 16886,
                                  "mutability": "mutable",
                                  "name": "lastvalue",
                                  "nameLocation": "3042:9:111",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 16908,
                                  "src": "3034:17:111",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "typeName": {
                                    "id": 16885,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3034:7:111",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 16891,
                              "initialValue": {
                                "baseExpression": {
                                  "expression": {
                                    "id": 16887,
                                    "name": "set",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16851,
                                    "src": "3054:3:111",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Set_$16805_storage_ptr",
                                      "typeString": "struct EnumerableSet.Set storage pointer"
                                    }
                                  },
                                  "id": 16888,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "_values",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 16800,
                                  "src": "3054:11:111",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                    "typeString": "bytes32[] storage ref"
                                  }
                                },
                                "id": 16890,
                                "indexExpression": {
                                  "id": 16889,
                                  "name": "lastIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16875,
                                  "src": "3066:9:111",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3054:22:111",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3034:42:111"
                            },
                            {
                              "expression": {
                                "id": 16898,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "expression": {
                                      "id": 16892,
                                      "name": "set",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16851,
                                      "src": "3176:3:111",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Set_$16805_storage_ptr",
                                        "typeString": "struct EnumerableSet.Set storage pointer"
                                      }
                                    },
                                    "id": 16895,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "_values",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 16800,
                                    "src": "3176:11:111",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                      "typeString": "bytes32[] storage ref"
                                    }
                                  },
                                  "id": 16896,
                                  "indexExpression": {
                                    "id": 16894,
                                    "name": "toDeleteIndex",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16869,
                                    "src": "3188:13:111",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3176:26:111",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 16897,
                                  "name": "lastvalue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16886,
                                  "src": "3205:9:111",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "3176:38:111",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 16899,
                              "nodeType": "ExpressionStatement",
                              "src": "3176:38:111"
                            },
                            {
                              "expression": {
                                "id": 16906,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "expression": {
                                      "id": 16900,
                                      "name": "set",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16851,
                                      "src": "3288:3:111",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Set_$16805_storage_ptr",
                                        "typeString": "struct EnumerableSet.Set storage pointer"
                                      }
                                    },
                                    "id": 16903,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "_indexes",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 16804,
                                    "src": "3288:12:111",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                      "typeString": "mapping(bytes32 => uint256)"
                                    }
                                  },
                                  "id": 16904,
                                  "indexExpression": {
                                    "id": 16902,
                                    "name": "lastvalue",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16886,
                                    "src": "3301:9:111",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3288:23:111",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 16905,
                                  "name": "valueIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16859,
                                  "src": "3314:10:111",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3288:36:111",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 16907,
                              "nodeType": "ExpressionStatement",
                              "src": "3288:36:111"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "expression": {
                                "id": 16910,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16851,
                                "src": "3460:3:111",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$16805_storage_ptr",
                                  "typeString": "struct EnumerableSet.Set storage pointer"
                                }
                              },
                              "id": 16913,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_values",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16800,
                              "src": "3460:11:111",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                                "typeString": "bytes32[] storage ref"
                              }
                            },
                            "id": 16914,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "pop",
                            "nodeType": "MemberAccess",
                            "src": "3460:15:111",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypop_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$returns$__$bound_to$_t_array$_t_bytes32_$dyn_storage_ptr_$",
                              "typeString": "function (bytes32[] storage pointer)"
                            }
                          },
                          "id": 16915,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3460:17:111",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16916,
                        "nodeType": "ExpressionStatement",
                        "src": "3460:17:111"
                      },
                      {
                        "expression": {
                          "id": 16921,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "3545:26:111",
                          "subExpression": {
                            "baseExpression": {
                              "expression": {
                                "id": 16917,
                                "name": "set",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16851,
                                "src": "3552:3:111",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Set_$16805_storage_ptr",
                                  "typeString": "struct EnumerableSet.Set storage pointer"
                                }
                              },
                              "id": 16918,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_indexes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 16804,
                              "src": "3552:12:111",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 16920,
                            "indexExpression": {
                              "id": 16919,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16853,
                              "src": "3565:5:111",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3552:19:111",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16922,
                        "nodeType": "ExpressionStatement",
                        "src": "3545:26:111"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 16923,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3593:4:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 16857,
                        "id": 16924,
                        "nodeType": "Return",
                        "src": "3586:11:111"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 16848,
              "nodeType": "StructuredDocumentation",
              "src": "2107:157:111",
              "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."
            },
            "id": 16931,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_remove",
            "nameLocation": "2278:7:111",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16854,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16851,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "2298:3:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 16931,
                  "src": "2286:15:111",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$16805_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  },
                  "typeName": {
                    "id": 16850,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 16849,
                      "name": "Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 16805,
                      "src": "2286:3:111"
                    },
                    "referencedDeclaration": 16805,
                    "src": "2286:3:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$16805_storage_ptr",
                      "typeString": "struct EnumerableSet.Set"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16853,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "2311:5:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 16931,
                  "src": "2303:13:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16852,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2303:7:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2285:32:111"
            },
            "returnParameters": {
              "id": 16857,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16856,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 16931,
                  "src": "2335:4:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16855,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2335:4:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2334:6:111"
            },
            "scope": 17393,
            "src": "2269:1388:111",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 16949,
              "nodeType": "Block",
              "src": "3817:48:111",
              "statements": [
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 16947,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "baseExpression": {
                        "expression": {
                          "id": 16942,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16935,
                          "src": "3834:3:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Set_$16805_storage_ptr",
                            "typeString": "struct EnumerableSet.Set storage pointer"
                          }
                        },
                        "id": 16943,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_indexes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16804,
                        "src": "3834:12:111",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                          "typeString": "mapping(bytes32 => uint256)"
                        }
                      },
                      "id": 16945,
                      "indexExpression": {
                        "id": 16944,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16937,
                        "src": "3847:5:111",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "3834:19:111",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 16946,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3857:1:111",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3834:24:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 16941,
                  "id": 16948,
                  "nodeType": "Return",
                  "src": "3827:31:111"
                }
              ]
            },
            "documentation": {
              "id": 16932,
              "nodeType": "StructuredDocumentation",
              "src": "3663:70:111",
              "text": " @dev Returns true if the value is in the set. O(1)."
            },
            "id": 16950,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_contains",
            "nameLocation": "3747:9:111",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16938,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16935,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "3769:3:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 16950,
                  "src": "3757:15:111",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$16805_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  },
                  "typeName": {
                    "id": 16934,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 16933,
                      "name": "Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 16805,
                      "src": "3757:3:111"
                    },
                    "referencedDeclaration": 16805,
                    "src": "3757:3:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$16805_storage_ptr",
                      "typeString": "struct EnumerableSet.Set"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16937,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "3782:5:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 16950,
                  "src": "3774:13:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16936,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3774:7:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3756:32:111"
            },
            "returnParameters": {
              "id": 16941,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16940,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 16950,
                  "src": "3811:4:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16939,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3811:4:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3810:6:111"
            },
            "scope": 17393,
            "src": "3738:127:111",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 16963,
              "nodeType": "Block",
              "src": "4011:42:111",
              "statements": [
                {
                  "expression": {
                    "expression": {
                      "expression": {
                        "id": 16959,
                        "name": "set",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16954,
                        "src": "4028:3:111",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$16805_storage_ptr",
                          "typeString": "struct EnumerableSet.Set storage pointer"
                        }
                      },
                      "id": 16960,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_values",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16800,
                      "src": "4028:11:111",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                        "typeString": "bytes32[] storage ref"
                      }
                    },
                    "id": 16961,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "4028:18:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 16958,
                  "id": 16962,
                  "nodeType": "Return",
                  "src": "4021:25:111"
                }
              ]
            },
            "documentation": {
              "id": 16951,
              "nodeType": "StructuredDocumentation",
              "src": "3871:70:111",
              "text": " @dev Returns the number of values on the set. O(1)."
            },
            "id": 16964,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_length",
            "nameLocation": "3955:7:111",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16955,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16954,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "3975:3:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 16964,
                  "src": "3963:15:111",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$16805_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  },
                  "typeName": {
                    "id": 16953,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 16952,
                      "name": "Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 16805,
                      "src": "3963:3:111"
                    },
                    "referencedDeclaration": 16805,
                    "src": "3963:3:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$16805_storage_ptr",
                      "typeString": "struct EnumerableSet.Set"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3962:17:111"
            },
            "returnParameters": {
              "id": 16958,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16957,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 16964,
                  "src": "4002:7:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16956,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4002:7:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4001:9:111"
            },
            "scope": 17393,
            "src": "3946:107:111",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 16980,
              "nodeType": "Block",
              "src": "4471:42:111",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "expression": {
                        "id": 16975,
                        "name": "set",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16968,
                        "src": "4488:3:111",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$16805_storage_ptr",
                          "typeString": "struct EnumerableSet.Set storage pointer"
                        }
                      },
                      "id": 16976,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_values",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16800,
                      "src": "4488:11:111",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                        "typeString": "bytes32[] storage ref"
                      }
                    },
                    "id": 16978,
                    "indexExpression": {
                      "id": 16977,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16970,
                      "src": "4500:5:111",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4488:18:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 16974,
                  "id": 16979,
                  "nodeType": "Return",
                  "src": "4481:25:111"
                }
              ]
            },
            "documentation": {
              "id": 16965,
              "nodeType": "StructuredDocumentation",
              "src": "4059:331:111",
              "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."
            },
            "id": 16981,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_at",
            "nameLocation": "4404:3:111",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16971,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16968,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "4420:3:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 16981,
                  "src": "4408:15:111",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$16805_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  },
                  "typeName": {
                    "id": 16967,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 16966,
                      "name": "Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 16805,
                      "src": "4408:3:111"
                    },
                    "referencedDeclaration": 16805,
                    "src": "4408:3:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$16805_storage_ptr",
                      "typeString": "struct EnumerableSet.Set"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16970,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "4433:5:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 16981,
                  "src": "4425:13:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16969,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4425:7:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4407:32:111"
            },
            "returnParameters": {
              "id": 16974,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16973,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 16981,
                  "src": "4462:7:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16972,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4462:7:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4461:9:111"
            },
            "scope": 17393,
            "src": "4395:118:111",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 16994,
              "nodeType": "Block",
              "src": "5127:35:111",
              "statements": [
                {
                  "expression": {
                    "expression": {
                      "id": 16991,
                      "name": "set",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16985,
                      "src": "5144:3:111",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Set_$16805_storage_ptr",
                        "typeString": "struct EnumerableSet.Set storage pointer"
                      }
                    },
                    "id": 16992,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "_values",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 16800,
                    "src": "5144:11:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
                      "typeString": "bytes32[] storage ref"
                    }
                  },
                  "functionReturnParameters": 16990,
                  "id": 16993,
                  "nodeType": "Return",
                  "src": "5137:18:111"
                }
              ]
            },
            "documentation": {
              "id": 16982,
              "nodeType": "StructuredDocumentation",
              "src": "4519:529:111",
              "text": " @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block."
            },
            "id": 16995,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_values",
            "nameLocation": "5062:7:111",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 16986,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16985,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "5082:3:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 16995,
                  "src": "5070:15:111",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$16805_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  },
                  "typeName": {
                    "id": 16984,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 16983,
                      "name": "Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 16805,
                      "src": "5070:3:111"
                    },
                    "referencedDeclaration": 16805,
                    "src": "5070:3:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Set_$16805_storage_ptr",
                      "typeString": "struct EnumerableSet.Set"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5069:17:111"
            },
            "returnParameters": {
              "id": 16990,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16989,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 16995,
                  "src": "5109:16:111",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 16987,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "5109:7:111",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 16988,
                    "nodeType": "ArrayTypeName",
                    "src": "5109:9:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5108:18:111"
            },
            "scope": 17393,
            "src": "5053:109:111",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "canonicalName": "EnumerableSet.Bytes32Set",
            "id": 16999,
            "members": [
              {
                "constant": false,
                "id": 16998,
                "mutability": "mutable",
                "name": "_inner",
                "nameLocation": "5219:6:111",
                "nodeType": "VariableDeclaration",
                "scope": 16999,
                "src": "5215:10:111",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Set_$16805_storage_ptr",
                  "typeString": "struct EnumerableSet.Set"
                },
                "typeName": {
                  "id": 16997,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 16996,
                    "name": "Set",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 16805,
                    "src": "5215:3:111"
                  },
                  "referencedDeclaration": 16805,
                  "src": "5215:3:111",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$16805_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "Bytes32Set",
            "nameLocation": "5194:10:111",
            "nodeType": "StructDefinition",
            "scope": 17393,
            "src": "5187:45:111",
            "visibility": "public"
          },
          {
            "body": {
              "id": 17016,
              "nodeType": "Block",
              "src": "5478:47:111",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 17011,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17003,
                          "src": "5500:3:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Set_$16999_storage_ptr",
                            "typeString": "struct EnumerableSet.Bytes32Set storage pointer"
                          }
                        },
                        "id": 17012,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16998,
                        "src": "5500:10:111",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$16805_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "id": 17013,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17005,
                        "src": "5512:5:111",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$16805_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 17010,
                      "name": "_add",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16847,
                      "src": "5495:4:111",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$16805_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"
                      }
                    },
                    "id": 17014,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5495:23:111",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 17009,
                  "id": 17015,
                  "nodeType": "Return",
                  "src": "5488:30:111"
                }
              ]
            },
            "documentation": {
              "id": 17000,
              "nodeType": "StructuredDocumentation",
              "src": "5238:159:111",
              "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."
            },
            "id": 17017,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "add",
            "nameLocation": "5411:3:111",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17006,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17003,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "5434:3:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 17017,
                  "src": "5415:22:111",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes32Set_$16999_storage_ptr",
                    "typeString": "struct EnumerableSet.Bytes32Set"
                  },
                  "typeName": {
                    "id": 17002,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 17001,
                      "name": "Bytes32Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 16999,
                      "src": "5415:10:111"
                    },
                    "referencedDeclaration": 16999,
                    "src": "5415:10:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes32Set_$16999_storage_ptr",
                      "typeString": "struct EnumerableSet.Bytes32Set"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17005,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "5447:5:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 17017,
                  "src": "5439:13:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17004,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5439:7:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5414:39:111"
            },
            "returnParameters": {
              "id": 17009,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17008,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17017,
                  "src": "5472:4:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17007,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5472:4:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5471:6:111"
            },
            "scope": 17393,
            "src": "5402:123:111",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17034,
              "nodeType": "Block",
              "src": "5772:50:111",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 17029,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17021,
                          "src": "5797:3:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Set_$16999_storage_ptr",
                            "typeString": "struct EnumerableSet.Bytes32Set storage pointer"
                          }
                        },
                        "id": 17030,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16998,
                        "src": "5797:10:111",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$16805_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "id": 17031,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17023,
                        "src": "5809:5:111",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$16805_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 17028,
                      "name": "_remove",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16931,
                      "src": "5789:7:111",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$16805_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"
                      }
                    },
                    "id": 17032,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5789:26:111",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 17027,
                  "id": 17033,
                  "nodeType": "Return",
                  "src": "5782:33:111"
                }
              ]
            },
            "documentation": {
              "id": 17018,
              "nodeType": "StructuredDocumentation",
              "src": "5531:157:111",
              "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."
            },
            "id": 17035,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "remove",
            "nameLocation": "5702:6:111",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17024,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17021,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "5728:3:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 17035,
                  "src": "5709:22:111",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes32Set_$16999_storage_ptr",
                    "typeString": "struct EnumerableSet.Bytes32Set"
                  },
                  "typeName": {
                    "id": 17020,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 17019,
                      "name": "Bytes32Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 16999,
                      "src": "5709:10:111"
                    },
                    "referencedDeclaration": 16999,
                    "src": "5709:10:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes32Set_$16999_storage_ptr",
                      "typeString": "struct EnumerableSet.Bytes32Set"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17023,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "5741:5:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 17035,
                  "src": "5733:13:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17022,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5733:7:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5708:39:111"
            },
            "returnParameters": {
              "id": 17027,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17026,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17035,
                  "src": "5766:4:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17025,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5766:4:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5765:6:111"
            },
            "scope": 17393,
            "src": "5693:129:111",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17052,
              "nodeType": "Block",
              "src": "5989:52:111",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 17047,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17039,
                          "src": "6016:3:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Set_$16999_storage_ptr",
                            "typeString": "struct EnumerableSet.Bytes32Set storage pointer"
                          }
                        },
                        "id": 17048,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16998,
                        "src": "6016:10:111",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$16805_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "id": 17049,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17041,
                        "src": "6028:5:111",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$16805_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 17046,
                      "name": "_contains",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16950,
                      "src": "6006:9:111",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$16805_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"
                      }
                    },
                    "id": 17050,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6006:28:111",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 17045,
                  "id": 17051,
                  "nodeType": "Return",
                  "src": "5999:35:111"
                }
              ]
            },
            "documentation": {
              "id": 17036,
              "nodeType": "StructuredDocumentation",
              "src": "5828:70:111",
              "text": " @dev Returns true if the value is in the set. O(1)."
            },
            "id": 17053,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "contains",
            "nameLocation": "5912:8:111",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17042,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17039,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "5940:3:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 17053,
                  "src": "5921:22:111",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes32Set_$16999_storage_ptr",
                    "typeString": "struct EnumerableSet.Bytes32Set"
                  },
                  "typeName": {
                    "id": 17038,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 17037,
                      "name": "Bytes32Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 16999,
                      "src": "5921:10:111"
                    },
                    "referencedDeclaration": 16999,
                    "src": "5921:10:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes32Set_$16999_storage_ptr",
                      "typeString": "struct EnumerableSet.Bytes32Set"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17041,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "5953:5:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 17053,
                  "src": "5945:13:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17040,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5945:7:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5920:39:111"
            },
            "returnParameters": {
              "id": 17045,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17044,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17053,
                  "src": "5983:4:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17043,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5983:4:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5982:6:111"
            },
            "scope": 17393,
            "src": "5903:138:111",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17067,
              "nodeType": "Block",
              "src": "6194:43:111",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 17063,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17057,
                          "src": "6219:3:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Set_$16999_storage_ptr",
                            "typeString": "struct EnumerableSet.Bytes32Set storage pointer"
                          }
                        },
                        "id": 17064,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16998,
                        "src": "6219:10:111",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$16805_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$16805_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      ],
                      "id": 17062,
                      "name": "_length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16964,
                      "src": "6211:7:111",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$16805_storage_ptr_$returns$_t_uint256_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 17065,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6211:19:111",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 17061,
                  "id": 17066,
                  "nodeType": "Return",
                  "src": "6204:26:111"
                }
              ]
            },
            "documentation": {
              "id": 17054,
              "nodeType": "StructuredDocumentation",
              "src": "6047:70:111",
              "text": " @dev Returns the number of values in the set. O(1)."
            },
            "id": 17068,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "length",
            "nameLocation": "6131:6:111",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17058,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17057,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "6157:3:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 17068,
                  "src": "6138:22:111",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes32Set_$16999_storage_ptr",
                    "typeString": "struct EnumerableSet.Bytes32Set"
                  },
                  "typeName": {
                    "id": 17056,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 17055,
                      "name": "Bytes32Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 16999,
                      "src": "6138:10:111"
                    },
                    "referencedDeclaration": 16999,
                    "src": "6138:10:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes32Set_$16999_storage_ptr",
                      "typeString": "struct EnumerableSet.Bytes32Set"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6137:24:111"
            },
            "returnParameters": {
              "id": 17061,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17060,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17068,
                  "src": "6185:7:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17059,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6185:7:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6184:9:111"
            },
            "scope": 17393,
            "src": "6122:115:111",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17085,
              "nodeType": "Block",
              "src": "6662:46:111",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 17080,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17072,
                          "src": "6683:3:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Set_$16999_storage_ptr",
                            "typeString": "struct EnumerableSet.Bytes32Set storage pointer"
                          }
                        },
                        "id": 17081,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16998,
                        "src": "6683:10:111",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$16805_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "id": 17082,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17074,
                        "src": "6695:5:111",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$16805_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 17079,
                      "name": "_at",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16981,
                      "src": "6679:3:111",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$16805_storage_ptr_$_t_uint256_$returns$_t_bytes32_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)"
                      }
                    },
                    "id": 17083,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6679:22:111",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 17078,
                  "id": 17084,
                  "nodeType": "Return",
                  "src": "6672:29:111"
                }
              ]
            },
            "documentation": {
              "id": 17069,
              "nodeType": "StructuredDocumentation",
              "src": "6243:331:111",
              "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."
            },
            "id": 17086,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "at",
            "nameLocation": "6588:2:111",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17075,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17072,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "6610:3:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 17086,
                  "src": "6591:22:111",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes32Set_$16999_storage_ptr",
                    "typeString": "struct EnumerableSet.Bytes32Set"
                  },
                  "typeName": {
                    "id": 17071,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 17070,
                      "name": "Bytes32Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 16999,
                      "src": "6591:10:111"
                    },
                    "referencedDeclaration": 16999,
                    "src": "6591:10:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes32Set_$16999_storage_ptr",
                      "typeString": "struct EnumerableSet.Bytes32Set"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17074,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "6623:5:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 17086,
                  "src": "6615:13:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17073,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6615:7:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6590:39:111"
            },
            "returnParameters": {
              "id": 17078,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17077,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17086,
                  "src": "6653:7:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17076,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6653:7:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6652:9:111"
            },
            "scope": 17393,
            "src": "6579:129:111",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17101,
              "nodeType": "Block",
              "src": "7329:43:111",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 17097,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17090,
                          "src": "7354:3:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Set_$16999_storage_ptr",
                            "typeString": "struct EnumerableSet.Bytes32Set storage pointer"
                          }
                        },
                        "id": 17098,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 16998,
                        "src": "7354:10:111",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$16805_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$16805_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      ],
                      "id": 17096,
                      "name": "_values",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16995,
                      "src": "7346:7:111",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$16805_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (bytes32[] memory)"
                      }
                    },
                    "id": 17099,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7346:19:111",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "functionReturnParameters": 17095,
                  "id": 17100,
                  "nodeType": "Return",
                  "src": "7339:26:111"
                }
              ]
            },
            "documentation": {
              "id": 17087,
              "nodeType": "StructuredDocumentation",
              "src": "6714:529:111",
              "text": " @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block."
            },
            "id": 17102,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "values",
            "nameLocation": "7257:6:111",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17091,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17090,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "7283:3:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 17102,
                  "src": "7264:22:111",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Bytes32Set_$16999_storage_ptr",
                    "typeString": "struct EnumerableSet.Bytes32Set"
                  },
                  "typeName": {
                    "id": 17089,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 17088,
                      "name": "Bytes32Set",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 16999,
                      "src": "7264:10:111"
                    },
                    "referencedDeclaration": 16999,
                    "src": "7264:10:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Bytes32Set_$16999_storage_ptr",
                      "typeString": "struct EnumerableSet.Bytes32Set"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7263:24:111"
            },
            "returnParameters": {
              "id": 17095,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17094,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17102,
                  "src": "7311:16:111",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 17092,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "7311:7:111",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 17093,
                    "nodeType": "ArrayTypeName",
                    "src": "7311:9:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7310:18:111"
            },
            "scope": 17393,
            "src": "7248:124:111",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "canonicalName": "EnumerableSet.AddressSet",
            "id": 17106,
            "members": [
              {
                "constant": false,
                "id": 17105,
                "mutability": "mutable",
                "name": "_inner",
                "nameLocation": "7429:6:111",
                "nodeType": "VariableDeclaration",
                "scope": 17106,
                "src": "7425:10:111",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Set_$16805_storage_ptr",
                  "typeString": "struct EnumerableSet.Set"
                },
                "typeName": {
                  "id": 17104,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 17103,
                    "name": "Set",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 16805,
                    "src": "7425:3:111"
                  },
                  "referencedDeclaration": 16805,
                  "src": "7425:3:111",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$16805_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "AddressSet",
            "nameLocation": "7404:10:111",
            "nodeType": "StructDefinition",
            "scope": 17393,
            "src": "7397:45:111",
            "visibility": "public"
          },
          {
            "body": {
              "id": 17132,
              "nodeType": "Block",
              "src": "7688:74:111",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 17118,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17110,
                          "src": "7710:3:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$17106_storage_ptr",
                            "typeString": "struct EnumerableSet.AddressSet storage pointer"
                          }
                        },
                        "id": 17119,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17105,
                        "src": "7710:10:111",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$16805_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 17126,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17112,
                                    "src": "7746:5:111",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 17125,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7738:7:111",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 17124,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7738:7:111",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 17127,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7738:14:111",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "id": 17123,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7730:7:111",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 17122,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "7730:7:111",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 17128,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7730:23:111",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 17121,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7722:7:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 17120,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "7722:7:111",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 17129,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7722:32:111",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$16805_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 17117,
                      "name": "_add",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16847,
                      "src": "7705:4:111",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$16805_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"
                      }
                    },
                    "id": 17130,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7705:50:111",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 17116,
                  "id": 17131,
                  "nodeType": "Return",
                  "src": "7698:57:111"
                }
              ]
            },
            "documentation": {
              "id": 17107,
              "nodeType": "StructuredDocumentation",
              "src": "7448:159:111",
              "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."
            },
            "id": 17133,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "add",
            "nameLocation": "7621:3:111",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17113,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17110,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "7644:3:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 17133,
                  "src": "7625:22:111",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AddressSet_$17106_storage_ptr",
                    "typeString": "struct EnumerableSet.AddressSet"
                  },
                  "typeName": {
                    "id": 17109,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 17108,
                      "name": "AddressSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17106,
                      "src": "7625:10:111"
                    },
                    "referencedDeclaration": 17106,
                    "src": "7625:10:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AddressSet_$17106_storage_ptr",
                      "typeString": "struct EnumerableSet.AddressSet"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17112,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "7657:5:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 17133,
                  "src": "7649:13:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17111,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7649:7:111",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7624:39:111"
            },
            "returnParameters": {
              "id": 17116,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17115,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17133,
                  "src": "7682:4:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17114,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7682:4:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7681:6:111"
            },
            "scope": 17393,
            "src": "7612:150:111",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17159,
              "nodeType": "Block",
              "src": "8009:77:111",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 17145,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17137,
                          "src": "8034:3:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$17106_storage_ptr",
                            "typeString": "struct EnumerableSet.AddressSet storage pointer"
                          }
                        },
                        "id": 17146,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17105,
                        "src": "8034:10:111",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$16805_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 17153,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17139,
                                    "src": "8070:5:111",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 17152,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8062:7:111",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 17151,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8062:7:111",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 17154,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8062:14:111",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "id": 17150,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8054:7:111",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 17149,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "8054:7:111",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 17155,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8054:23:111",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 17148,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8046:7:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 17147,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "8046:7:111",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 17156,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8046:32:111",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$16805_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 17144,
                      "name": "_remove",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16931,
                      "src": "8026:7:111",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$16805_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"
                      }
                    },
                    "id": 17157,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8026:53:111",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 17143,
                  "id": 17158,
                  "nodeType": "Return",
                  "src": "8019:60:111"
                }
              ]
            },
            "documentation": {
              "id": 17134,
              "nodeType": "StructuredDocumentation",
              "src": "7768:157:111",
              "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."
            },
            "id": 17160,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "remove",
            "nameLocation": "7939:6:111",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17140,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17137,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "7965:3:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 17160,
                  "src": "7946:22:111",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AddressSet_$17106_storage_ptr",
                    "typeString": "struct EnumerableSet.AddressSet"
                  },
                  "typeName": {
                    "id": 17136,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 17135,
                      "name": "AddressSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17106,
                      "src": "7946:10:111"
                    },
                    "referencedDeclaration": 17106,
                    "src": "7946:10:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AddressSet_$17106_storage_ptr",
                      "typeString": "struct EnumerableSet.AddressSet"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17139,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "7978:5:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 17160,
                  "src": "7970:13:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17138,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7970:7:111",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7945:39:111"
            },
            "returnParameters": {
              "id": 17143,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17142,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17160,
                  "src": "8003:4:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17141,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8003:4:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8002:6:111"
            },
            "scope": 17393,
            "src": "7930:156:111",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17186,
              "nodeType": "Block",
              "src": "8253:79:111",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 17172,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17164,
                          "src": "8280:3:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$17106_storage_ptr",
                            "typeString": "struct EnumerableSet.AddressSet storage pointer"
                          }
                        },
                        "id": 17173,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17105,
                        "src": "8280:10:111",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$16805_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 17180,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17166,
                                    "src": "8316:5:111",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 17179,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8308:7:111",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 17178,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8308:7:111",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 17181,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8308:14:111",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "id": 17177,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8300:7:111",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 17176,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "8300:7:111",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 17182,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8300:23:111",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 17175,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8292:7:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 17174,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "8292:7:111",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 17183,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8292:32:111",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$16805_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 17171,
                      "name": "_contains",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16950,
                      "src": "8270:9:111",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$16805_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"
                      }
                    },
                    "id": 17184,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8270:55:111",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 17170,
                  "id": 17185,
                  "nodeType": "Return",
                  "src": "8263:62:111"
                }
              ]
            },
            "documentation": {
              "id": 17161,
              "nodeType": "StructuredDocumentation",
              "src": "8092:70:111",
              "text": " @dev Returns true if the value is in the set. O(1)."
            },
            "id": 17187,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "contains",
            "nameLocation": "8176:8:111",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17167,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17164,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "8204:3:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 17187,
                  "src": "8185:22:111",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AddressSet_$17106_storage_ptr",
                    "typeString": "struct EnumerableSet.AddressSet"
                  },
                  "typeName": {
                    "id": 17163,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 17162,
                      "name": "AddressSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17106,
                      "src": "8185:10:111"
                    },
                    "referencedDeclaration": 17106,
                    "src": "8185:10:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AddressSet_$17106_storage_ptr",
                      "typeString": "struct EnumerableSet.AddressSet"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17166,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "8217:5:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 17187,
                  "src": "8209:13:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17165,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8209:7:111",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8184:39:111"
            },
            "returnParameters": {
              "id": 17170,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17169,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17187,
                  "src": "8247:4:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17168,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8247:4:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8246:6:111"
            },
            "scope": 17393,
            "src": "8167:165:111",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17201,
              "nodeType": "Block",
              "src": "8485:43:111",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 17197,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17191,
                          "src": "8510:3:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$17106_storage_ptr",
                            "typeString": "struct EnumerableSet.AddressSet storage pointer"
                          }
                        },
                        "id": 17198,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17105,
                        "src": "8510:10:111",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$16805_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$16805_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      ],
                      "id": 17196,
                      "name": "_length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16964,
                      "src": "8502:7:111",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$16805_storage_ptr_$returns$_t_uint256_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 17199,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8502:19:111",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 17195,
                  "id": 17200,
                  "nodeType": "Return",
                  "src": "8495:26:111"
                }
              ]
            },
            "documentation": {
              "id": 17188,
              "nodeType": "StructuredDocumentation",
              "src": "8338:70:111",
              "text": " @dev Returns the number of values in the set. O(1)."
            },
            "id": 17202,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "length",
            "nameLocation": "8422:6:111",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17192,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17191,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "8448:3:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 17202,
                  "src": "8429:22:111",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AddressSet_$17106_storage_ptr",
                    "typeString": "struct EnumerableSet.AddressSet"
                  },
                  "typeName": {
                    "id": 17190,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 17189,
                      "name": "AddressSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17106,
                      "src": "8429:10:111"
                    },
                    "referencedDeclaration": 17106,
                    "src": "8429:10:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AddressSet_$17106_storage_ptr",
                      "typeString": "struct EnumerableSet.AddressSet"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8428:24:111"
            },
            "returnParameters": {
              "id": 17195,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17194,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17202,
                  "src": "8476:7:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17193,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8476:7:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8475:9:111"
            },
            "scope": 17393,
            "src": "8413:115:111",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17228,
              "nodeType": "Block",
              "src": "8953:73:111",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 17220,
                                      "name": "set",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17206,
                                      "src": "8998:3:111",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AddressSet_$17106_storage_ptr",
                                        "typeString": "struct EnumerableSet.AddressSet storage pointer"
                                      }
                                    },
                                    "id": 17221,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "_inner",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17105,
                                    "src": "8998:10:111",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Set_$16805_storage",
                                      "typeString": "struct EnumerableSet.Set storage ref"
                                    }
                                  },
                                  {
                                    "id": 17222,
                                    "name": "index",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17208,
                                    "src": "9010:5:111",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_Set_$16805_storage",
                                      "typeString": "struct EnumerableSet.Set storage ref"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 17219,
                                  "name": "_at",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16981,
                                  "src": "8994:3:111",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$16805_storage_ptr_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)"
                                  }
                                },
                                "id": 17223,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8994:22:111",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 17218,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8986:7:111",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 17217,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "8986:7:111",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 17224,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8986:31:111",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 17216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8978:7:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint160_$",
                            "typeString": "type(uint160)"
                          },
                          "typeName": {
                            "id": 17215,
                            "name": "uint160",
                            "nodeType": "ElementaryTypeName",
                            "src": "8978:7:111",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 17225,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8978:40:111",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      ],
                      "id": 17214,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "8970:7:111",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 17213,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8970:7:111",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 17226,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8970:49:111",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 17212,
                  "id": 17227,
                  "nodeType": "Return",
                  "src": "8963:56:111"
                }
              ]
            },
            "documentation": {
              "id": 17203,
              "nodeType": "StructuredDocumentation",
              "src": "8534:331:111",
              "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."
            },
            "id": 17229,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "at",
            "nameLocation": "8879:2:111",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17209,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17206,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "8901:3:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 17229,
                  "src": "8882:22:111",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AddressSet_$17106_storage_ptr",
                    "typeString": "struct EnumerableSet.AddressSet"
                  },
                  "typeName": {
                    "id": 17205,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 17204,
                      "name": "AddressSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17106,
                      "src": "8882:10:111"
                    },
                    "referencedDeclaration": 17106,
                    "src": "8882:10:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AddressSet_$17106_storage_ptr",
                      "typeString": "struct EnumerableSet.AddressSet"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17208,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "8914:5:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 17229,
                  "src": "8906:13:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17207,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8906:7:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8881:39:111"
            },
            "returnParameters": {
              "id": 17212,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17211,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17229,
                  "src": "8944:7:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17210,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8944:7:111",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8943:9:111"
            },
            "scope": 17393,
            "src": "8870:156:111",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17258,
              "nodeType": "Block",
              "src": "9647:176:111",
              "statements": [
                {
                  "assignments": [
                    17243
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17243,
                      "mutability": "mutable",
                      "name": "store",
                      "nameLocation": "9674:5:111",
                      "nodeType": "VariableDeclaration",
                      "scope": 17258,
                      "src": "9657:22:111",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 17241,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "9657:7:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 17242,
                        "nodeType": "ArrayTypeName",
                        "src": "9657:9:111",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 17248,
                  "initialValue": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 17245,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17233,
                          "src": "9690:3:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$17106_storage_ptr",
                            "typeString": "struct EnumerableSet.AddressSet storage pointer"
                          }
                        },
                        "id": 17246,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17105,
                        "src": "9690:10:111",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$16805_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$16805_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      ],
                      "id": 17244,
                      "name": "_values",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16995,
                      "src": "9682:7:111",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$16805_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (bytes32[] memory)"
                      }
                    },
                    "id": 17247,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9682:19:111",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9657:44:111"
                },
                {
                  "assignments": [
                    17253
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17253,
                      "mutability": "mutable",
                      "name": "result",
                      "nameLocation": "9728:6:111",
                      "nodeType": "VariableDeclaration",
                      "scope": 17258,
                      "src": "9711:23:111",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 17251,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9711:7:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 17252,
                        "nodeType": "ArrayTypeName",
                        "src": "9711:9:111",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 17254,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9711:23:111"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "9754:39:111",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "9768:15:111",
                        "value": {
                          "name": "store",
                          "nodeType": "YulIdentifier",
                          "src": "9778:5:111"
                        },
                        "variableNames": [
                          {
                            "name": "result",
                            "nodeType": "YulIdentifier",
                            "src": "9768:6:111"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 17253,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "9768:6:111",
                      "valueSize": 1
                    },
                    {
                      "declaration": 17243,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "9778:5:111",
                      "valueSize": 1
                    }
                  ],
                  "id": 17255,
                  "nodeType": "InlineAssembly",
                  "src": "9745:48:111"
                },
                {
                  "expression": {
                    "id": 17256,
                    "name": "result",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17253,
                    "src": "9810:6:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 17238,
                  "id": 17257,
                  "nodeType": "Return",
                  "src": "9803:13:111"
                }
              ]
            },
            "documentation": {
              "id": 17230,
              "nodeType": "StructuredDocumentation",
              "src": "9032:529:111",
              "text": " @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block."
            },
            "id": 17259,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "values",
            "nameLocation": "9575:6:111",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17234,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17233,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "9601:3:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 17259,
                  "src": "9582:22:111",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AddressSet_$17106_storage_ptr",
                    "typeString": "struct EnumerableSet.AddressSet"
                  },
                  "typeName": {
                    "id": 17232,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 17231,
                      "name": "AddressSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17106,
                      "src": "9582:10:111"
                    },
                    "referencedDeclaration": 17106,
                    "src": "9582:10:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AddressSet_$17106_storage_ptr",
                      "typeString": "struct EnumerableSet.AddressSet"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9581:24:111"
            },
            "returnParameters": {
              "id": 17238,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17237,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17259,
                  "src": "9629:16:111",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 17235,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "9629:7:111",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 17236,
                    "nodeType": "ArrayTypeName",
                    "src": "9629:9:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9628:18:111"
            },
            "scope": 17393,
            "src": "9566:257:111",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "canonicalName": "EnumerableSet.UintSet",
            "id": 17263,
            "members": [
              {
                "constant": false,
                "id": 17262,
                "mutability": "mutable",
                "name": "_inner",
                "nameLocation": "9874:6:111",
                "nodeType": "VariableDeclaration",
                "scope": 17263,
                "src": "9870:10:111",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Set_$16805_storage_ptr",
                  "typeString": "struct EnumerableSet.Set"
                },
                "typeName": {
                  "id": 17261,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 17260,
                    "name": "Set",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 16805,
                    "src": "9870:3:111"
                  },
                  "referencedDeclaration": 16805,
                  "src": "9870:3:111",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Set_$16805_storage_ptr",
                    "typeString": "struct EnumerableSet.Set"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "UintSet",
            "nameLocation": "9852:7:111",
            "nodeType": "StructDefinition",
            "scope": 17393,
            "src": "9845:42:111",
            "visibility": "public"
          },
          {
            "body": {
              "id": 17283,
              "nodeType": "Block",
              "src": "10130:56:111",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 17275,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17267,
                          "src": "10152:3:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintSet_$17263_storage_ptr",
                            "typeString": "struct EnumerableSet.UintSet storage pointer"
                          }
                        },
                        "id": 17276,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17262,
                        "src": "10152:10:111",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$16805_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 17279,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17269,
                            "src": "10172:5:111",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 17278,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "10164:7:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 17277,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "10164:7:111",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 17280,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10164:14:111",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$16805_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 17274,
                      "name": "_add",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16847,
                      "src": "10147:4:111",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$16805_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"
                      }
                    },
                    "id": 17281,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10147:32:111",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 17273,
                  "id": 17282,
                  "nodeType": "Return",
                  "src": "10140:39:111"
                }
              ]
            },
            "documentation": {
              "id": 17264,
              "nodeType": "StructuredDocumentation",
              "src": "9893:159:111",
              "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."
            },
            "id": 17284,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "add",
            "nameLocation": "10066:3:111",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17270,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17267,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "10086:3:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 17284,
                  "src": "10070:19:111",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintSet_$17263_storage_ptr",
                    "typeString": "struct EnumerableSet.UintSet"
                  },
                  "typeName": {
                    "id": 17266,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 17265,
                      "name": "UintSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17263,
                      "src": "10070:7:111"
                    },
                    "referencedDeclaration": 17263,
                    "src": "10070:7:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintSet_$17263_storage_ptr",
                      "typeString": "struct EnumerableSet.UintSet"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17269,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "10099:5:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 17284,
                  "src": "10091:13:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17268,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10091:7:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10069:36:111"
            },
            "returnParameters": {
              "id": 17273,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17272,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17284,
                  "src": "10124:4:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17271,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10124:4:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10123:6:111"
            },
            "scope": 17393,
            "src": "10057:129:111",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17304,
              "nodeType": "Block",
              "src": "10430:59:111",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 17296,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17288,
                          "src": "10455:3:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintSet_$17263_storage_ptr",
                            "typeString": "struct EnumerableSet.UintSet storage pointer"
                          }
                        },
                        "id": 17297,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17262,
                        "src": "10455:10:111",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$16805_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 17300,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17290,
                            "src": "10475:5:111",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 17299,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "10467:7:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 17298,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "10467:7:111",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 17301,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10467:14:111",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$16805_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 17295,
                      "name": "_remove",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16931,
                      "src": "10447:7:111",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$16805_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)"
                      }
                    },
                    "id": 17302,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10447:35:111",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 17294,
                  "id": 17303,
                  "nodeType": "Return",
                  "src": "10440:42:111"
                }
              ]
            },
            "documentation": {
              "id": 17285,
              "nodeType": "StructuredDocumentation",
              "src": "10192:157:111",
              "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."
            },
            "id": 17305,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "remove",
            "nameLocation": "10363:6:111",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17291,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17288,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "10386:3:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 17305,
                  "src": "10370:19:111",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintSet_$17263_storage_ptr",
                    "typeString": "struct EnumerableSet.UintSet"
                  },
                  "typeName": {
                    "id": 17287,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 17286,
                      "name": "UintSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17263,
                      "src": "10370:7:111"
                    },
                    "referencedDeclaration": 17263,
                    "src": "10370:7:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintSet_$17263_storage_ptr",
                      "typeString": "struct EnumerableSet.UintSet"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17290,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "10399:5:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 17305,
                  "src": "10391:13:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17289,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10391:7:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10369:36:111"
            },
            "returnParameters": {
              "id": 17294,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17293,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17305,
                  "src": "10424:4:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17292,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10424:4:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10423:6:111"
            },
            "scope": 17393,
            "src": "10354:135:111",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17325,
              "nodeType": "Block",
              "src": "10653:61:111",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 17317,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17309,
                          "src": "10680:3:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintSet_$17263_storage_ptr",
                            "typeString": "struct EnumerableSet.UintSet storage pointer"
                          }
                        },
                        "id": 17318,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17262,
                        "src": "10680:10:111",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$16805_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 17321,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17311,
                            "src": "10700:5:111",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 17320,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "10692:7:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": {
                            "id": 17319,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "10692:7:111",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 17322,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10692:14:111",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$16805_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 17316,
                      "name": "_contains",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16950,
                      "src": "10670:9:111",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$16805_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)"
                      }
                    },
                    "id": 17323,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10670:37:111",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 17315,
                  "id": 17324,
                  "nodeType": "Return",
                  "src": "10663:44:111"
                }
              ]
            },
            "documentation": {
              "id": 17306,
              "nodeType": "StructuredDocumentation",
              "src": "10495:70:111",
              "text": " @dev Returns true if the value is in the set. O(1)."
            },
            "id": 17326,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "contains",
            "nameLocation": "10579:8:111",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17312,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17309,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "10604:3:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 17326,
                  "src": "10588:19:111",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintSet_$17263_storage_ptr",
                    "typeString": "struct EnumerableSet.UintSet"
                  },
                  "typeName": {
                    "id": 17308,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 17307,
                      "name": "UintSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17263,
                      "src": "10588:7:111"
                    },
                    "referencedDeclaration": 17263,
                    "src": "10588:7:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintSet_$17263_storage_ptr",
                      "typeString": "struct EnumerableSet.UintSet"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17311,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "10617:5:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 17326,
                  "src": "10609:13:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17310,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10609:7:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10587:36:111"
            },
            "returnParameters": {
              "id": 17315,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17314,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17326,
                  "src": "10647:4:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17313,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10647:4:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10646:6:111"
            },
            "scope": 17393,
            "src": "10570:144:111",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17340,
              "nodeType": "Block",
              "src": "10864:43:111",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 17336,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17330,
                          "src": "10889:3:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintSet_$17263_storage_ptr",
                            "typeString": "struct EnumerableSet.UintSet storage pointer"
                          }
                        },
                        "id": 17337,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17262,
                        "src": "10889:10:111",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$16805_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$16805_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      ],
                      "id": 17335,
                      "name": "_length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16964,
                      "src": "10881:7:111",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$16805_storage_ptr_$returns$_t_uint256_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 17338,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10881:19:111",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 17334,
                  "id": 17339,
                  "nodeType": "Return",
                  "src": "10874:26:111"
                }
              ]
            },
            "documentation": {
              "id": 17327,
              "nodeType": "StructuredDocumentation",
              "src": "10720:70:111",
              "text": " @dev Returns the number of values on the set. O(1)."
            },
            "id": 17341,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "length",
            "nameLocation": "10804:6:111",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17331,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17330,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "10827:3:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 17341,
                  "src": "10811:19:111",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintSet_$17263_storage_ptr",
                    "typeString": "struct EnumerableSet.UintSet"
                  },
                  "typeName": {
                    "id": 17329,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 17328,
                      "name": "UintSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17263,
                      "src": "10811:7:111"
                    },
                    "referencedDeclaration": 17263,
                    "src": "10811:7:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintSet_$17263_storage_ptr",
                      "typeString": "struct EnumerableSet.UintSet"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10810:21:111"
            },
            "returnParameters": {
              "id": 17334,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17333,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17341,
                  "src": "10855:7:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17332,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10855:7:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10854:9:111"
            },
            "scope": 17393,
            "src": "10795:112:111",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17361,
              "nodeType": "Block",
              "src": "11329:55:111",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "expression": {
                              "id": 17355,
                              "name": "set",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17345,
                              "src": "11358:3:111",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_UintSet_$17263_storage_ptr",
                                "typeString": "struct EnumerableSet.UintSet storage pointer"
                              }
                            },
                            "id": 17356,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_inner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17262,
                            "src": "11358:10:111",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Set_$16805_storage",
                              "typeString": "struct EnumerableSet.Set storage ref"
                            }
                          },
                          {
                            "id": 17357,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17347,
                            "src": "11370:5:111",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_Set_$16805_storage",
                              "typeString": "struct EnumerableSet.Set storage ref"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 17354,
                          "name": "_at",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16981,
                          "src": "11354:3:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$16805_storage_ptr_$_t_uint256_$returns$_t_bytes32_$",
                            "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)"
                          }
                        },
                        "id": 17358,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11354:22:111",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 17353,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "11346:7:111",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint256_$",
                        "typeString": "type(uint256)"
                      },
                      "typeName": {
                        "id": 17352,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11346:7:111",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 17359,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11346:31:111",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 17351,
                  "id": 17360,
                  "nodeType": "Return",
                  "src": "11339:38:111"
                }
              ]
            },
            "documentation": {
              "id": 17342,
              "nodeType": "StructuredDocumentation",
              "src": "10913:331:111",
              "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."
            },
            "id": 17362,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "at",
            "nameLocation": "11258:2:111",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17348,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17345,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "11277:3:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 17362,
                  "src": "11261:19:111",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintSet_$17263_storage_ptr",
                    "typeString": "struct EnumerableSet.UintSet"
                  },
                  "typeName": {
                    "id": 17344,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 17343,
                      "name": "UintSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17263,
                      "src": "11261:7:111"
                    },
                    "referencedDeclaration": 17263,
                    "src": "11261:7:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintSet_$17263_storage_ptr",
                      "typeString": "struct EnumerableSet.UintSet"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17347,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "11290:5:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 17362,
                  "src": "11282:13:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17346,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11282:7:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11260:36:111"
            },
            "returnParameters": {
              "id": 17351,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17350,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17362,
                  "src": "11320:7:111",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17349,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11320:7:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11319:9:111"
            },
            "scope": 17393,
            "src": "11249:135:111",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17391,
              "nodeType": "Block",
              "src": "12002:176:111",
              "statements": [
                {
                  "assignments": [
                    17376
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17376,
                      "mutability": "mutable",
                      "name": "store",
                      "nameLocation": "12029:5:111",
                      "nodeType": "VariableDeclaration",
                      "scope": 17391,
                      "src": "12012:22:111",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 17374,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "12012:7:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 17375,
                        "nodeType": "ArrayTypeName",
                        "src": "12012:9:111",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 17381,
                  "initialValue": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 17378,
                          "name": "set",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17366,
                          "src": "12045:3:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UintSet_$17263_storage_ptr",
                            "typeString": "struct EnumerableSet.UintSet storage pointer"
                          }
                        },
                        "id": 17379,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "_inner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17262,
                        "src": "12045:10:111",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Set_$16805_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Set_$16805_storage",
                          "typeString": "struct EnumerableSet.Set storage ref"
                        }
                      ],
                      "id": 17377,
                      "name": "_values",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16995,
                      "src": "12037:7:111",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$16805_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                        "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (bytes32[] memory)"
                      }
                    },
                    "id": 17380,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12037:19:111",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12012:44:111"
                },
                {
                  "assignments": [
                    17386
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17386,
                      "mutability": "mutable",
                      "name": "result",
                      "nameLocation": "12083:6:111",
                      "nodeType": "VariableDeclaration",
                      "scope": 17391,
                      "src": "12066:23:111",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 17384,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12066:7:111",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17385,
                        "nodeType": "ArrayTypeName",
                        "src": "12066:9:111",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 17387,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12066:23:111"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "12109:39:111",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "12123:15:111",
                        "value": {
                          "name": "store",
                          "nodeType": "YulIdentifier",
                          "src": "12133:5:111"
                        },
                        "variableNames": [
                          {
                            "name": "result",
                            "nodeType": "YulIdentifier",
                            "src": "12123:6:111"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 17386,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "12123:6:111",
                      "valueSize": 1
                    },
                    {
                      "declaration": 17376,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "12133:5:111",
                      "valueSize": 1
                    }
                  ],
                  "id": 17388,
                  "nodeType": "InlineAssembly",
                  "src": "12100:48:111"
                },
                {
                  "expression": {
                    "id": 17389,
                    "name": "result",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17386,
                    "src": "12165:6:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  },
                  "functionReturnParameters": 17371,
                  "id": 17390,
                  "nodeType": "Return",
                  "src": "12158:13:111"
                }
              ]
            },
            "documentation": {
              "id": 17363,
              "nodeType": "StructuredDocumentation",
              "src": "11390:529:111",
              "text": " @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block."
            },
            "id": 17392,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "values",
            "nameLocation": "11933:6:111",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17367,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17366,
                  "mutability": "mutable",
                  "name": "set",
                  "nameLocation": "11956:3:111",
                  "nodeType": "VariableDeclaration",
                  "scope": 17392,
                  "src": "11940:19:111",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UintSet_$17263_storage_ptr",
                    "typeString": "struct EnumerableSet.UintSet"
                  },
                  "typeName": {
                    "id": 17365,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 17364,
                      "name": "UintSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17263,
                      "src": "11940:7:111"
                    },
                    "referencedDeclaration": 17263,
                    "src": "11940:7:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UintSet_$17263_storage_ptr",
                      "typeString": "struct EnumerableSet.UintSet"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11939:21:111"
            },
            "returnParameters": {
              "id": 17371,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17370,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17392,
                  "src": "11984:16:111",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 17368,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "11984:7:111",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 17369,
                    "nodeType": "ArrayTypeName",
                    "src": "11984:9:111",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11983:18:111"
            },
            "scope": 17393,
            "src": "11924:254:111",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 17394,
        "src": "812:11368:111",
        "usedErrors": []
      }
    ],
    "src": "100:12081:111"
  },
  "bytecode": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122033ab13a99f3507aa3ec8c07848f3690c2a93631101dd2cb7b6ae5d6a2a8dc94564736f6c63430008060033",
  "bytecodeSha1": "1ce946f6a4eaa185320328620ccf999b9e86db7c",
  "compiler": {
    "evm_version": "istanbul",
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "version": "0.8.6+commit.11564f7e"
  },
  "contractName": "EnumerableSet",
  "coverageMap": {
    "branches": {
      "111": {}
    },
    "statements": {
      "111": {}
    }
  },
  "dependencies": [],
  "deployedBytecode": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122033ab13a99f3507aa3ec8c07848f3690c2a93631101dd2cb7b6ae5d6a2a8dc94564736f6c63430008060033",
  "deployedSourceMap": "812:11368:111:-:0;;;;;;;;",
  "language": "Solidity",
  "natspec": {
    "details": "Library for managing https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive types. Sets have the following properties: - Elements are added, removed, and checked for existence in constant time (O(1)). - Elements are enumerated in O(n). No guarantees are made on the ordering. ``` contract Example {     // Add the library methods     using EnumerableSet for EnumerableSet.AddressSet;     // Declare a set state variable     EnumerableSet.AddressSet private mySet; } ``` As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`) and `uint256` (`UintSet`) are supported.",
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "offset": [
    812,
    12180
  ],
  "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLER 0xAB SGT 0xA9 SWAP16 CALLDATALOAD SMOD 0xAA RETURNDATACOPY 0xC8 0xC0 PUSH25 0x48F3690C2A93631101DD2CB7B6AE5D6A2A8DC94564736F6C63 NUMBER STOP ADDMOD MOD STOP CALLER ",
  "pcMap": {
    "0": {
      "offset": [
        812,
        12180
      ],
      "op": "PUSH20",
      "path": "111",
      "value": "0x0"
    },
    "21": {
      "fn": null,
      "offset": [
        812,
        12180
      ],
      "op": "ADDRESS",
      "path": "111"
    },
    "22": {
      "fn": null,
      "offset": [
        812,
        12180
      ],
      "op": "EQ",
      "path": "111"
    },
    "23": {
      "fn": null,
      "offset": [
        812,
        12180
      ],
      "op": "PUSH1",
      "path": "111",
      "value": "0x80"
    },
    "25": {
      "fn": null,
      "offset": [
        812,
        12180
      ],
      "op": "PUSH1",
      "path": "111",
      "value": "0x40"
    },
    "27": {
      "fn": null,
      "offset": [
        812,
        12180
      ],
      "op": "MSTORE",
      "path": "111"
    },
    "28": {
      "fn": null,
      "offset": [
        812,
        12180
      ],
      "op": "PUSH1",
      "path": "111",
      "value": "0x0"
    },
    "30": {
      "fn": null,
      "offset": [
        812,
        12180
      ],
      "op": "DUP1",
      "path": "111"
    },
    "31": {
      "fn": null,
      "offset": [
        812,
        12180
      ],
      "op": "REVERT",
      "path": "111"
    }
  },
  "sha1": "bbdfe36feba8fe99c567ef2348d4e3b0686d65b2",
  "source": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/structs/EnumerableSet.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for managing\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n * types.\n *\n * Sets have the following properties:\n *\n * - Elements are added, removed, and checked for existence in constant time\n * (O(1)).\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\n *\n * ```\n * contract Example {\n *     // Add the library methods\n *     using EnumerableSet for EnumerableSet.AddressSet;\n *\n *     // Declare a set state variable\n *     EnumerableSet.AddressSet private mySet;\n * }\n * ```\n *\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n * and `uint256` (`UintSet`) are supported.\n */\nlibrary EnumerableSet {\n    // To implement this library for multiple types with as little code\n    // repetition as possible, we write it in terms of a generic Set type with\n    // bytes32 values.\n    // The Set implementation uses private functions, and user-facing\n    // implementations (such as AddressSet) are just wrappers around the\n    // underlying Set.\n    // This means that we can only create new EnumerableSets for types that fit\n    // in bytes32.\n\n    struct Set {\n        // Storage of set values\n        bytes32[] _values;\n        // Position of the value in the `values` array, plus 1 because index 0\n        // means a value is not in the set.\n        mapping(bytes32 => uint256) _indexes;\n    }\n\n    /**\n     * @dev Add a value to a set. O(1).\n     *\n     * Returns true if the value was added to the set, that is if it was not\n     * already present.\n     */\n    function _add(Set storage set, bytes32 value) private returns (bool) {\n        if (!_contains(set, value)) {\n            set._values.push(value);\n            // The value is stored at length-1, but we add 1 to all indexes\n            // and use 0 as a sentinel value\n            set._indexes[value] = set._values.length;\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    /**\n     * @dev Removes a value from a set. O(1).\n     *\n     * Returns true if the value was removed from the set, that is if it was\n     * present.\n     */\n    function _remove(Set storage set, bytes32 value) private returns (bool) {\n        // We read and store the value's index to prevent multiple reads from the same storage slot\n        uint256 valueIndex = set._indexes[value];\n\n        if (valueIndex != 0) {\n            // Equivalent to contains(set, value)\n            // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\n            // the array, and then remove the last element (sometimes called as 'swap and pop').\n            // This modifies the order of the array, as noted in {at}.\n\n            uint256 toDeleteIndex = valueIndex - 1;\n            uint256 lastIndex = set._values.length - 1;\n\n            if (lastIndex != toDeleteIndex) {\n                bytes32 lastvalue = set._values[lastIndex];\n\n                // Move the last value to the index where the value to delete is\n                set._values[toDeleteIndex] = lastvalue;\n                // Update the index for the moved value\n                set._indexes[lastvalue] = valueIndex; // Replace lastvalue's index to valueIndex\n            }\n\n            // Delete the slot where the moved value was stored\n            set._values.pop();\n\n            // Delete the index for the deleted slot\n            delete set._indexes[value];\n\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    /**\n     * @dev Returns true if the value is in the set. O(1).\n     */\n    function _contains(Set storage set, bytes32 value) private view returns (bool) {\n        return set._indexes[value] != 0;\n    }\n\n    /**\n     * @dev Returns the number of values on the set. O(1).\n     */\n    function _length(Set storage set) private view returns (uint256) {\n        return set._values.length;\n    }\n\n    /**\n     * @dev Returns the value stored at position `index` in the set. O(1).\n     *\n     * Note that there are no guarantees on the ordering of values inside the\n     * array, and it may change when more values are added or removed.\n     *\n     * Requirements:\n     *\n     * - `index` must be strictly less than {length}.\n     */\n    function _at(Set storage set, uint256 index) private view returns (bytes32) {\n        return set._values[index];\n    }\n\n    /**\n     * @dev Return the entire set in an array\n     *\n     * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n     * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n     * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n     * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n     */\n    function _values(Set storage set) private view returns (bytes32[] memory) {\n        return set._values;\n    }\n\n    // Bytes32Set\n\n    struct Bytes32Set {\n        Set _inner;\n    }\n\n    /**\n     * @dev Add a value to a set. O(1).\n     *\n     * Returns true if the value was added to the set, that is if it was not\n     * already present.\n     */\n    function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n        return _add(set._inner, value);\n    }\n\n    /**\n     * @dev Removes a value from a set. O(1).\n     *\n     * Returns true if the value was removed from the set, that is if it was\n     * present.\n     */\n    function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n        return _remove(set._inner, value);\n    }\n\n    /**\n     * @dev Returns true if the value is in the set. O(1).\n     */\n    function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\n        return _contains(set._inner, value);\n    }\n\n    /**\n     * @dev Returns the number of values in the set. O(1).\n     */\n    function length(Bytes32Set storage set) internal view returns (uint256) {\n        return _length(set._inner);\n    }\n\n    /**\n     * @dev Returns the value stored at position `index` in the set. O(1).\n     *\n     * Note that there are no guarantees on the ordering of values inside the\n     * array, and it may change when more values are added or removed.\n     *\n     * Requirements:\n     *\n     * - `index` must be strictly less than {length}.\n     */\n    function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\n        return _at(set._inner, index);\n    }\n\n    /**\n     * @dev Return the entire set in an array\n     *\n     * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n     * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n     * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n     * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n     */\n    function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {\n        return _values(set._inner);\n    }\n\n    // AddressSet\n\n    struct AddressSet {\n        Set _inner;\n    }\n\n    /**\n     * @dev Add a value to a set. O(1).\n     *\n     * Returns true if the value was added to the set, that is if it was not\n     * already present.\n     */\n    function add(AddressSet storage set, address value) internal returns (bool) {\n        return _add(set._inner, bytes32(uint256(uint160(value))));\n    }\n\n    /**\n     * @dev Removes a value from a set. O(1).\n     *\n     * Returns true if the value was removed from the set, that is if it was\n     * present.\n     */\n    function remove(AddressSet storage set, address value) internal returns (bool) {\n        return _remove(set._inner, bytes32(uint256(uint160(value))));\n    }\n\n    /**\n     * @dev Returns true if the value is in the set. O(1).\n     */\n    function contains(AddressSet storage set, address value) internal view returns (bool) {\n        return _contains(set._inner, bytes32(uint256(uint160(value))));\n    }\n\n    /**\n     * @dev Returns the number of values in the set. O(1).\n     */\n    function length(AddressSet storage set) internal view returns (uint256) {\n        return _length(set._inner);\n    }\n\n    /**\n     * @dev Returns the value stored at position `index` in the set. O(1).\n     *\n     * Note that there are no guarantees on the ordering of values inside the\n     * array, and it may change when more values are added or removed.\n     *\n     * Requirements:\n     *\n     * - `index` must be strictly less than {length}.\n     */\n    function at(AddressSet storage set, uint256 index) internal view returns (address) {\n        return address(uint160(uint256(_at(set._inner, index))));\n    }\n\n    /**\n     * @dev Return the entire set in an array\n     *\n     * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n     * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n     * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n     * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n     */\n    function values(AddressSet storage set) internal view returns (address[] memory) {\n        bytes32[] memory store = _values(set._inner);\n        address[] memory result;\n\n        assembly {\n            result := store\n        }\n\n        return result;\n    }\n\n    // UintSet\n\n    struct UintSet {\n        Set _inner;\n    }\n\n    /**\n     * @dev Add a value to a set. O(1).\n     *\n     * Returns true if the value was added to the set, that is if it was not\n     * already present.\n     */\n    function add(UintSet storage set, uint256 value) internal returns (bool) {\n        return _add(set._inner, bytes32(value));\n    }\n\n    /**\n     * @dev Removes a value from a set. O(1).\n     *\n     * Returns true if the value was removed from the set, that is if it was\n     * present.\n     */\n    function remove(UintSet storage set, uint256 value) internal returns (bool) {\n        return _remove(set._inner, bytes32(value));\n    }\n\n    /**\n     * @dev Returns true if the value is in the set. O(1).\n     */\n    function contains(UintSet storage set, uint256 value) internal view returns (bool) {\n        return _contains(set._inner, bytes32(value));\n    }\n\n    /**\n     * @dev Returns the number of values on the set. O(1).\n     */\n    function length(UintSet storage set) internal view returns (uint256) {\n        return _length(set._inner);\n    }\n\n    /**\n     * @dev Returns the value stored at position `index` in the set. O(1).\n     *\n     * Note that there are no guarantees on the ordering of values inside the\n     * array, and it may change when more values are added or removed.\n     *\n     * Requirements:\n     *\n     * - `index` must be strictly less than {length}.\n     */\n    function at(UintSet storage set, uint256 index) internal view returns (uint256) {\n        return uint256(_at(set._inner, index));\n    }\n\n    /**\n     * @dev Return the entire set in an array\n     *\n     * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n     * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n     * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n     * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n     */\n    function values(UintSet storage set) internal view returns (uint256[] memory) {\n        bytes32[] memory store = _values(set._inner);\n        uint256[] memory result;\n\n        assembly {\n            result := store\n        }\n\n        return result;\n    }\n}\n",
  "sourceMap": "812:11368:111:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;812:11368:111;;;;;;;;;;;;;;;;;",
  "sourcePath": "node_modules/@openzeppelin/contracts/utils/structs/EnumerableSet.sol",
  "type": "library"
}