{
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "previousAdminRole",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "newAdminRole",
          "type": "bytes32"
        }
      ],
      "name": "RoleAdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleRevoked",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "ORACLE_PROVIDER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PRODUCT_OWNER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "RISKPOOL_KEEPER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "addRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getDefaultAdminRole",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getOracleProviderRole",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getProductOwnerRole",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getRiskpoolKeeperRole",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getRoleMember",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleMemberCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "principal",
          "type": "address"
        }
      ],
      "name": "grantRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "principal",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "registry",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "invalidateRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "principal",
          "type": "address"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "principal",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "defaultAdmin",
          "type": "address"
        }
      ],
      "name": "setDefaultAdminRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "validRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "allSourcePaths": {
    "0": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/access/AccessControl.sol",
    "1": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/access/AccessControlEnumerable.sol",
    "10": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/proxy/utils/Initializable.sol",
    "2": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/access/IAccessControl.sol",
    "21": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/Address.sol",
    "22": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/Context.sol",
    "24": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/Strings.sol",
    "25": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/introspection/ERC165.sol",
    "26": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/introspection/IERC165.sol",
    "27": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/structs/EnumerableSet.sol",
    "3": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/access/IAccessControlEnumerable.sol",
    "37": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/modules/IAccess.sol",
    "44": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/modules/IRegistry.sol",
    "73": "contracts/modules/AccessController.sol",
    "88": "contracts/shared/CoreController.sol"
  },
  "ast": {
    "absolutePath": "contracts/modules/AccessController.sol",
    "exportedSymbols": {
      "AccessControl": [
        18281
      ],
      "AccessControlEnumerable": [
        21875
      ],
      "AccessController": [
        4246
      ],
      "Address": [
        26374
      ],
      "Context": [
        24074
      ],
      "CoreController": [
        14924
      ],
      "ERC165": [
        26079
      ],
      "EnumerableSet": [
        19390
      ],
      "IAccess": [
        21938
      ],
      "IAccessControl": [
        26055
      ],
      "IAccessControlEnumerable": [
        27191
      ],
      "IERC165": [
        27203
      ],
      "IRegistry": [
        21750
      ],
      "Initializable": [
        18432
      ],
      "Strings": [
        23075
      ]
    },
    "id": 4247,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 3989,
        "literals": [
          "solidity",
          "0.8",
          ".2"
        ],
        "nodeType": "PragmaDirective",
        "src": "39:22:73"
      },
      {
        "absolutePath": "contracts/shared/CoreController.sol",
        "file": "../shared/CoreController.sol",
        "id": 3990,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 4247,
        "sourceUnit": 14925,
        "src": "63:38:73",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/modules/IAccess.sol",
        "file": "@etherisc/gif-interface/contracts/modules/IAccess.sol",
        "id": 3991,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 4247,
        "sourceUnit": 21939,
        "src": "103:63:73",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/access/AccessControlEnumerable.sol",
        "file": "@openzeppelin/contracts/access/AccessControlEnumerable.sol",
        "id": 3992,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 4247,
        "sourceUnit": 21876,
        "src": "168:68:73",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/proxy/utils/Initializable.sol",
        "file": "@openzeppelin/contracts/proxy/utils/Initializable.sol",
        "id": 3993,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 4247,
        "sourceUnit": 18433,
        "src": "237:63:73",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 3994,
              "name": "IAccess",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 21938,
              "src": "337:7:73"
            },
            "id": 3995,
            "nodeType": "InheritanceSpecifier",
            "src": "337:7:73"
          },
          {
            "baseName": {
              "id": 3996,
              "name": "CoreController",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 14924,
              "src": "351:14:73"
            },
            "id": 3997,
            "nodeType": "InheritanceSpecifier",
            "src": "351:14:73"
          },
          {
            "baseName": {
              "id": 3998,
              "name": "AccessControlEnumerable",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 21875,
              "src": "371:23:73"
            },
            "id": 3999,
            "nodeType": "InheritanceSpecifier",
            "src": "371:23:73"
          }
        ],
        "contractDependencies": [
          14924,
          18281,
          18432,
          21875,
          21938,
          24074,
          26055,
          26079,
          27191,
          27203
        ],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 4246,
        "linearizedBaseContracts": [
          4246,
          21875,
          18281,
          26079,
          27203,
          27191,
          26055,
          14924,
          18432,
          24074,
          21938
        ],
        "name": "AccessController",
        "nameLocation": "312:16:73",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "functionSelector": "6c137ea9",
            "id": 4004,
            "mutability": "constant",
            "name": "PRODUCT_OWNER_ROLE",
            "nameLocation": "501:18:73",
            "nodeType": "VariableDeclaration",
            "scope": 4246,
            "src": "477:76:73",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 4000,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "477:7:73",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "arguments": [
                {
                  "hexValue": "50524f445543545f4f574e45525f524f4c45",
                  "id": 4002,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "532:20:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_e984cfd1d1fa34f80e24ddb2a60c8300359d79eee44555bc35c106eb020394cd",
                    "typeString": "literal_string \"PRODUCT_OWNER_ROLE\""
                  },
                  "value": "PRODUCT_OWNER_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_e984cfd1d1fa34f80e24ddb2a60c8300359d79eee44555bc35c106eb020394cd",
                    "typeString": "literal_string \"PRODUCT_OWNER_ROLE\""
                  }
                ],
                "id": 4001,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": -8,
                "src": "522:9:73",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                  "typeString": "function (bytes memory) pure returns (bytes32)"
                }
              },
              "id": 4003,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "522:31:73",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "functionSelector": "79a863f5",
            "id": 4009,
            "mutability": "constant",
            "name": "ORACLE_PROVIDER_ROLE",
            "nameLocation": "658:20:73",
            "nodeType": "VariableDeclaration",
            "scope": 4246,
            "src": "634:80:73",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 4005,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "634:7:73",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "arguments": [
                {
                  "hexValue": "4f5241434c455f50524f56494445525f524f4c45",
                  "id": 4007,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "691:22:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_d26b4cd59ffa91e4599f3d18b02fcd5ffb06e03216f3ee5f25f68dc75cbbbaa2",
                    "typeString": "literal_string \"ORACLE_PROVIDER_ROLE\""
                  },
                  "value": "ORACLE_PROVIDER_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_d26b4cd59ffa91e4599f3d18b02fcd5ffb06e03216f3ee5f25f68dc75cbbbaa2",
                    "typeString": "literal_string \"ORACLE_PROVIDER_ROLE\""
                  }
                ],
                "id": 4006,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": -8,
                "src": "681:9:73",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                  "typeString": "function (bytes memory) pure returns (bytes32)"
                }
              },
              "id": 4008,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "681:33:73",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "functionSelector": "68232c69",
            "id": 4014,
            "mutability": "constant",
            "name": "RISKPOOL_KEEPER_ROLE",
            "nameLocation": "819:20:73",
            "nodeType": "VariableDeclaration",
            "scope": 4246,
            "src": "795:80:73",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 4010,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "795:7:73",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "arguments": [
                {
                  "hexValue": "5249534b504f4f4c5f4b45455045525f524f4c45",
                  "id": 4012,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "852:22:73",
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_3c4cdb47519f2f89924ebeb1ee7a8a43b8b00120826915726460bb24576012fd",
                    "typeString": "literal_string \"RISKPOOL_KEEPER_ROLE\""
                  },
                  "value": "RISKPOOL_KEEPER_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_3c4cdb47519f2f89924ebeb1ee7a8a43b8b00120826915726460bb24576012fd",
                    "typeString": "literal_string \"RISKPOOL_KEEPER_ROLE\""
                  }
                ],
                "id": 4011,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": -8,
                "src": "842:9:73",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                  "typeString": "function (bytes memory) pure returns (bytes32)"
                }
              },
              "id": 4013,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "842:33:73",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "12f9a85e",
            "id": 4018,
            "mutability": "mutable",
            "name": "validRole",
            "nameLocation": "914:9:73",
            "nodeType": "VariableDeclaration",
            "scope": 4246,
            "src": "882:41:73",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
              "typeString": "mapping(bytes32 => bool)"
            },
            "typeName": {
              "id": 4017,
              "keyType": {
                "id": 4015,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "890:7:73",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "882:24:73",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                "typeString": "mapping(bytes32 => bool)"
              },
              "valueType": {
                "id": 4016,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "901:4:73",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 4020,
            "mutability": "mutable",
            "name": "_defaultAdminSet",
            "nameLocation": "943:16:73",
            "nodeType": "VariableDeclaration",
            "scope": 4246,
            "src": "930:29:73",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 4019,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "930:4:73",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "visibility": "private"
          },
          {
            "baseFunctions": [
              14898
            ],
            "body": {
              "id": 4027,
              "nodeType": "Block",
              "src": "1012:110:73",
              "statements": [
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 4024,
                      "name": "_populateValidRoles",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4245,
                      "src": "1094:19:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 4025,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1094:21:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4026,
                  "nodeType": "ExpressionStatement",
                  "src": "1094:21:73"
                }
              ]
            },
            "id": 4028,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_afterInitialize",
            "nameLocation": "975:16:73",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 4022,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1003:8:73"
            },
            "parameters": {
              "id": 4021,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "991:2:73"
            },
            "returnParameters": {
              "id": 4023,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1012:0:73"
            },
            "scope": 4246,
            "src": "966:156:73",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              14892
            ],
            "body": {
              "id": 4036,
              "nodeType": "Block",
              "src": "1188:20:73",
              "statements": [
                {
                  "expression": {
                    "hexValue": "416363657373",
                    "id": 4034,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1197:8:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_662ef9f10158779adc6a36d83dac352a0d38be4aaefa069e4f4fdcebe6a5d3ee",
                      "typeString": "literal_string \"Access\""
                    },
                    "value": "Access"
                  },
                  "functionReturnParameters": 4033,
                  "id": 4035,
                  "nodeType": "Return",
                  "src": "1190:15:73"
                }
              ]
            },
            "id": 4037,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_getName",
            "nameLocation": "1137:8:73",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 4030,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1157:8:73"
            },
            "parameters": {
              "id": 4029,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1145:2:73"
            },
            "returnParameters": {
              "id": 4033,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4032,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 4037,
                  "src": "1179:7:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4031,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1179:7:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1178:9:73"
            },
            "scope": 4246,
            "src": "1128:80:73",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4057,
              "nodeType": "Block",
              "src": "1493:171:73",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 4044,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "1511:17:73",
                        "subExpression": {
                          "id": 4043,
                          "name": "_defaultAdminSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4020,
                          "src": "1512:16:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552524f523a41434c2d3030313a41444d494e5f524f4c455f414c52454144595f534554",
                        "id": 4045,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1530:38:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9f9877d18dbbe1b61e60abbc0b78cf763130d8a58767ec78a5fe18c4bab672fb",
                          "typeString": "literal_string \"ERROR:ACL-001:ADMIN_ROLE_ALREADY_SET\""
                        },
                        "value": "ERROR:ACL-001:ADMIN_ROLE_ALREADY_SET"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9f9877d18dbbe1b61e60abbc0b78cf763130d8a58767ec78a5fe18c4bab672fb",
                          "typeString": "literal_string \"ERROR:ACL-001:ADMIN_ROLE_ALREADY_SET\""
                        }
                      ],
                      "id": 4042,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1503:7:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4046,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1503:66:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4047,
                  "nodeType": "ExpressionStatement",
                  "src": "1503:66:73"
                },
                {
                  "expression": {
                    "id": 4050,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 4048,
                      "name": "_defaultAdminSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4020,
                      "src": "1579:16:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "74727565",
                      "id": 4049,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1598:4:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "1579:23:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4051,
                  "nodeType": "ExpressionStatement",
                  "src": "1579:23:73"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 4053,
                        "name": "DEFAULT_ADMIN_ROLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17989,
                        "src": "1624:18:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 4054,
                        "name": "defaultAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4039,
                        "src": "1644:12:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 4052,
                      "name": "_grantRole",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        21850
                      ],
                      "referencedDeclaration": 21850,
                      "src": "1613:10:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 4055,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1613:44:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4056,
                  "nodeType": "ExpressionStatement",
                  "src": "1613:44:73"
                }
              ]
            },
            "functionSelector": "c19010a7",
            "id": 4058,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setDefaultAdminRole",
            "nameLocation": "1428:19:73",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4040,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4039,
                  "mutability": "mutable",
                  "name": "defaultAdmin",
                  "nameLocation": "1456:12:73",
                  "nodeType": "VariableDeclaration",
                  "scope": 4058,
                  "src": "1448:20:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4038,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1448:7:73",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1447:22:73"
            },
            "returnParameters": {
              "id": 4041,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1493:0:73"
            },
            "scope": 4246,
            "src": "1419:245:73",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              21913,
              26038
            ],
            "body": {
              "id": 4084,
              "nodeType": "Block",
              "src": "1896:132:73",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "baseExpression": {
                          "id": 4071,
                          "name": "validRole",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4018,
                          "src": "1914:9:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                            "typeString": "mapping(bytes32 => bool)"
                          }
                        },
                        "id": 4073,
                        "indexExpression": {
                          "id": 4072,
                          "name": "role",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4060,
                          "src": "1924:4:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1914:15:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552524f523a41434c2d3030323a524f4c455f554e4b4e4f574e5f4f525f494e56414c4944",
                        "id": 4074,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1931:39:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b44ca75bdc42e96be4c16ee432e64fdbf40464ed8da793481d44f5ac59f98005",
                          "typeString": "literal_string \"ERROR:ACL-002:ROLE_UNKNOWN_OR_INVALID\""
                        },
                        "value": "ERROR:ACL-002:ROLE_UNKNOWN_OR_INVALID"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b44ca75bdc42e96be4c16ee432e64fdbf40464ed8da793481d44f5ac59f98005",
                          "typeString": "literal_string \"ERROR:ACL-002:ROLE_UNKNOWN_OR_INVALID\""
                        }
                      ],
                      "id": 4070,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1906:7:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4075,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1906:65:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4076,
                  "nodeType": "ExpressionStatement",
                  "src": "1906:65:73"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 4080,
                        "name": "role",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4060,
                        "src": "2005:4:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 4081,
                        "name": "principal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4062,
                        "src": "2011:9:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 4077,
                        "name": "AccessControl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18281,
                        "src": "1981:13:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AccessControl_$18281_$",
                          "typeString": "type(contract AccessControl)"
                        }
                      },
                      "id": 4079,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "grantRole",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 18132,
                      "src": "1981:23:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 4082,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1981:40:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4083,
                  "nodeType": "ExpressionStatement",
                  "src": "1981:40:73"
                }
              ]
            },
            "functionSelector": "2f2ff15d",
            "id": 4085,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 4068,
                "modifierName": {
                  "id": 4067,
                  "name": "onlyInstanceOperator",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 14825,
                  "src": "1870:20:73"
                },
                "nodeType": "ModifierInvocation",
                "src": "1870:20:73"
              }
            ],
            "name": "grantRole",
            "nameLocation": "1759:9:73",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 4066,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "id": 4064,
                  "name": "IAccessControl",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 26055,
                  "src": "1836:14:73"
                },
                {
                  "id": 4065,
                  "name": "IAccess",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 21938,
                  "src": "1852:7:73"
                }
              ],
              "src": "1827:33:73"
            },
            "parameters": {
              "id": 4063,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4060,
                  "mutability": "mutable",
                  "name": "role",
                  "nameLocation": "1777:4:73",
                  "nodeType": "VariableDeclaration",
                  "scope": 4085,
                  "src": "1769:12:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4059,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1769:7:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4062,
                  "mutability": "mutable",
                  "name": "principal",
                  "nameLocation": "1791:9:73",
                  "nodeType": "VariableDeclaration",
                  "scope": 4085,
                  "src": "1783:17:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4061,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1783:7:73",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1768:33:73"
            },
            "returnParameters": {
              "id": 4069,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1896:0:73"
            },
            "scope": 4246,
            "src": "1750:278:73",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              21920,
              26046
            ],
            "body": {
              "id": 4104,
              "nodeType": "Block",
              "src": "2181:58:73",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 4100,
                        "name": "role",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4087,
                        "src": "2216:4:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 4101,
                        "name": "principal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4089,
                        "src": "2222:9:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 4097,
                        "name": "AccessControl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18281,
                        "src": "2191:13:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AccessControl_$18281_$",
                          "typeString": "type(contract AccessControl)"
                        }
                      },
                      "id": 4099,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "revokeRole",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 18152,
                      "src": "2191:24:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 4102,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2191:41:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4103,
                  "nodeType": "ExpressionStatement",
                  "src": "2191:41:73"
                }
              ]
            },
            "functionSelector": "d547741f",
            "id": 4105,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 4095,
                "modifierName": {
                  "id": 4094,
                  "name": "onlyInstanceOperator",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 14825,
                  "src": "2155:20:73"
                },
                "nodeType": "ModifierInvocation",
                "src": "2155:20:73"
              }
            ],
            "name": "revokeRole",
            "nameLocation": "2043:10:73",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 4093,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "id": 4091,
                  "name": "IAccessControl",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 26055,
                  "src": "2121:14:73"
                },
                {
                  "id": 4092,
                  "name": "IAccess",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 21938,
                  "src": "2137:7:73"
                }
              ],
              "src": "2112:33:73"
            },
            "parameters": {
              "id": 4090,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4087,
                  "mutability": "mutable",
                  "name": "role",
                  "nameLocation": "2062:4:73",
                  "nodeType": "VariableDeclaration",
                  "scope": 4105,
                  "src": "2054:12:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4086,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2054:7:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4089,
                  "mutability": "mutable",
                  "name": "principal",
                  "nameLocation": "2076:9:73",
                  "nodeType": "VariableDeclaration",
                  "scope": 4105,
                  "src": "2068:17:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4088,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2068:7:73",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2053:33:73"
            },
            "returnParameters": {
              "id": 4096,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2181:0:73"
            },
            "scope": 4246,
            "src": "2034:205:73",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              21927,
              26054
            ],
            "body": {
              "id": 4122,
              "nodeType": "Block",
              "src": "2364:60:73",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 4118,
                        "name": "role",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4107,
                        "src": "2401:4:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 4119,
                        "name": "principal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4109,
                        "src": "2407:9:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 4115,
                        "name": "AccessControl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18281,
                        "src": "2374:13:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AccessControl_$18281_$",
                          "typeString": "type(contract AccessControl)"
                        }
                      },
                      "id": 4117,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "renounceRole",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 18175,
                      "src": "2374:26:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 4120,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2374:43:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4121,
                  "nodeType": "ExpressionStatement",
                  "src": "2374:43:73"
                }
              ]
            },
            "functionSelector": "36568abe",
            "id": 4123,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "renounceRole",
            "nameLocation": "2254:12:73",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 4113,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "id": 4111,
                  "name": "IAccessControl",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 26055,
                  "src": "2334:14:73"
                },
                {
                  "id": 4112,
                  "name": "IAccess",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 21938,
                  "src": "2350:7:73"
                }
              ],
              "src": "2325:33:73"
            },
            "parameters": {
              "id": 4110,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4107,
                  "mutability": "mutable",
                  "name": "role",
                  "nameLocation": "2275:4:73",
                  "nodeType": "VariableDeclaration",
                  "scope": 4123,
                  "src": "2267:12:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4106,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2267:7:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4109,
                  "mutability": "mutable",
                  "name": "principal",
                  "nameLocation": "2289:9:73",
                  "nodeType": "VariableDeclaration",
                  "scope": 4123,
                  "src": "2281:17:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4108,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2281:7:73",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2266:33:73"
            },
            "returnParameters": {
              "id": 4114,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2364:0:73"
            },
            "scope": 4246,
            "src": "2245:179:73",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              21932
            ],
            "body": {
              "id": 4145,
              "nodeType": "Block",
              "src": "2604:115:73",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 4135,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "2622:16:73",
                        "subExpression": {
                          "baseExpression": {
                            "id": 4132,
                            "name": "validRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4018,
                            "src": "2623:9:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                              "typeString": "mapping(bytes32 => bool)"
                            }
                          },
                          "id": 4134,
                          "indexExpression": {
                            "id": 4133,
                            "name": "role",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4125,
                            "src": "2633:4:73",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2623:15:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552524f523a41434c2d3030333a524f4c455f4558495354494e475f414e445f56414c4944",
                        "id": 4136,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2640:39:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ee0f5f51d1b211cfb0cb0e99e7ae5223d02dd767fa6a6f61a7de5feac9760754",
                          "typeString": "literal_string \"ERROR:ACL-003:ROLE_EXISTING_AND_VALID\""
                        },
                        "value": "ERROR:ACL-003:ROLE_EXISTING_AND_VALID"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ee0f5f51d1b211cfb0cb0e99e7ae5223d02dd767fa6a6f61a7de5feac9760754",
                          "typeString": "literal_string \"ERROR:ACL-003:ROLE_EXISTING_AND_VALID\""
                        }
                      ],
                      "id": 4131,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2614:7:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4137,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2614:66:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4138,
                  "nodeType": "ExpressionStatement",
                  "src": "2614:66:73"
                },
                {
                  "expression": {
                    "id": 4143,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 4139,
                        "name": "validRole",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4018,
                        "src": "2690:9:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                          "typeString": "mapping(bytes32 => bool)"
                        }
                      },
                      "id": 4141,
                      "indexExpression": {
                        "id": 4140,
                        "name": "role",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4125,
                        "src": "2700:4:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2690:15:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "74727565",
                      "id": 4142,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2708:4:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "2690:22:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4144,
                  "nodeType": "ExpressionStatement",
                  "src": "2690:22:73"
                }
              ]
            },
            "functionSelector": "274b02a7",
            "id": 4146,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 4129,
                "modifierName": {
                  "id": 4128,
                  "name": "onlyInstanceOperator",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 14825,
                  "src": "2578:20:73"
                },
                "nodeType": "ModifierInvocation",
                "src": "2578:20:73"
              }
            ],
            "name": "addRole",
            "nameLocation": "2523:7:73",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 4127,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2561:8:73"
            },
            "parameters": {
              "id": 4126,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4125,
                  "mutability": "mutable",
                  "name": "role",
                  "nameLocation": "2539:4:73",
                  "nodeType": "VariableDeclaration",
                  "scope": 4146,
                  "src": "2531:12:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4124,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2531:7:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2530:14:73"
            },
            "returnParameters": {
              "id": 4130,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2604:0:73"
            },
            "scope": 4246,
            "src": "2514:205:73",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              21937
            ],
            "body": {
              "id": 4167,
              "nodeType": "Block",
              "src": "2821:115:73",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "baseExpression": {
                          "id": 4155,
                          "name": "validRole",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4018,
                          "src": "2839:9:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                            "typeString": "mapping(bytes32 => bool)"
                          }
                        },
                        "id": 4157,
                        "indexExpression": {
                          "id": 4156,
                          "name": "role",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4148,
                          "src": "2849:4:73",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2839:15:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552524f523a41434c2d3030343a524f4c455f554e4b4e4f574e5f4f525f494e56414c4944",
                        "id": 4158,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2856:39:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a62f7cd2c33f4a0b1b1970f9fec462b3e3054faeb7b054bebcfcfab7f5ebf5bb",
                          "typeString": "literal_string \"ERROR:ACL-004:ROLE_UNKNOWN_OR_INVALID\""
                        },
                        "value": "ERROR:ACL-004:ROLE_UNKNOWN_OR_INVALID"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a62f7cd2c33f4a0b1b1970f9fec462b3e3054faeb7b054bebcfcfab7f5ebf5bb",
                          "typeString": "literal_string \"ERROR:ACL-004:ROLE_UNKNOWN_OR_INVALID\""
                        }
                      ],
                      "id": 4154,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2831:7:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4159,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2831:65:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4160,
                  "nodeType": "ExpressionStatement",
                  "src": "2831:65:73"
                },
                {
                  "expression": {
                    "id": 4165,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 4161,
                        "name": "validRole",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4018,
                        "src": "2906:9:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                          "typeString": "mapping(bytes32 => bool)"
                        }
                      },
                      "id": 4163,
                      "indexExpression": {
                        "id": 4162,
                        "name": "role",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4148,
                        "src": "2916:4:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2906:15:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "66616c7365",
                      "id": 4164,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2924:5:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "2906:23:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4166,
                  "nodeType": "ExpressionStatement",
                  "src": "2906:23:73"
                }
              ]
            },
            "functionSelector": "d17d0233",
            "id": 4168,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 4152,
                "modifierName": {
                  "id": 4151,
                  "name": "onlyInstanceOperator",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 14825,
                  "src": "2795:20:73"
                },
                "nodeType": "ModifierInvocation",
                "src": "2795:20:73"
              }
            ],
            "name": "invalidateRole",
            "nameLocation": "2734:14:73",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 4150,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2778:8:73"
            },
            "parameters": {
              "id": 4149,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4148,
                  "mutability": "mutable",
                  "name": "role",
                  "nameLocation": "2757:4:73",
                  "nodeType": "VariableDeclaration",
                  "scope": 4168,
                  "src": "2749:12:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4147,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2749:7:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2748:14:73"
            },
            "returnParameters": {
              "id": 4153,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2821:0:73"
            },
            "scope": 4246,
            "src": "2725:211:73",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              21906,
              26022
            ],
            "body": {
              "id": 4186,
              "nodeType": "Block",
              "src": "3083:54:73",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 4182,
                        "name": "role",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4170,
                        "src": "3114:4:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 4183,
                        "name": "principal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4172,
                        "src": "3120:9:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 4180,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -25,
                        "src": "3100:5:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_super$_AccessController_$4246_$",
                          "typeString": "type(contract super AccessController)"
                        }
                      },
                      "id": 4181,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "hasRole",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 18041,
                      "src": "3100:13:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                        "typeString": "function (bytes32,address) view returns (bool)"
                      }
                    },
                    "id": 4184,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3100:30:73",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 4179,
                  "id": 4185,
                  "nodeType": "Return",
                  "src": "3093:37:73"
                }
              ]
            },
            "functionSelector": "91d14854",
            "id": 4187,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "hasRole",
            "nameLocation": "2951:7:73",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 4176,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "id": 4174,
                  "name": "IAccessControl",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 26055,
                  "src": "3031:14:73"
                },
                {
                  "id": 4175,
                  "name": "IAccess",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 21938,
                  "src": "3047:7:73"
                }
              ],
              "src": "3022:33:73"
            },
            "parameters": {
              "id": 4173,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4170,
                  "mutability": "mutable",
                  "name": "role",
                  "nameLocation": "2967:4:73",
                  "nodeType": "VariableDeclaration",
                  "scope": 4187,
                  "src": "2959:12:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4169,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2959:7:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4172,
                  "mutability": "mutable",
                  "name": "principal",
                  "nameLocation": "2981:9:73",
                  "nodeType": "VariableDeclaration",
                  "scope": 4187,
                  "src": "2973:17:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4171,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2973:7:73",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2958:33:73"
            },
            "returnParameters": {
              "id": 4179,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4178,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 4187,
                  "src": "3073:4:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4177,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3073:4:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3072:6:73"
            },
            "scope": 4246,
            "src": "2942:195:73",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              21882
            ],
            "body": {
              "id": 4195,
              "nodeType": "Block",
              "src": "3212:42:73",
              "statements": [
                {
                  "expression": {
                    "id": 4193,
                    "name": "DEFAULT_ADMIN_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17989,
                    "src": "3229:18:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 4192,
                  "id": 4194,
                  "nodeType": "Return",
                  "src": "3222:25:73"
                }
              ]
            },
            "functionSelector": "52a9c8d7",
            "id": 4196,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getDefaultAdminRole",
            "nameLocation": "3152:19:73",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 4189,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3186:8:73"
            },
            "parameters": {
              "id": 4188,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3171:2:73"
            },
            "returnParameters": {
              "id": 4192,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4191,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 4196,
                  "src": "3203:7:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4190,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3203:7:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3202:9:73"
            },
            "scope": 4246,
            "src": "3143:111:73",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              21887
            ],
            "body": {
              "id": 4204,
              "nodeType": "Block",
              "src": "3329:42:73",
              "statements": [
                {
                  "expression": {
                    "id": 4202,
                    "name": "PRODUCT_OWNER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4004,
                    "src": "3346:18:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 4201,
                  "id": 4203,
                  "nodeType": "Return",
                  "src": "3339:25:73"
                }
              ]
            },
            "functionSelector": "775a4048",
            "id": 4205,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getProductOwnerRole",
            "nameLocation": "3269:19:73",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 4198,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3303:8:73"
            },
            "parameters": {
              "id": 4197,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3288:2:73"
            },
            "returnParameters": {
              "id": 4201,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4200,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 4205,
                  "src": "3320:7:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4199,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3320:7:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3319:9:73"
            },
            "scope": 4246,
            "src": "3260:111:73",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              21892
            ],
            "body": {
              "id": 4213,
              "nodeType": "Block",
              "src": "3448:44:73",
              "statements": [
                {
                  "expression": {
                    "id": 4211,
                    "name": "ORACLE_PROVIDER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4009,
                    "src": "3465:20:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 4210,
                  "id": 4212,
                  "nodeType": "Return",
                  "src": "3458:27:73"
                }
              ]
            },
            "functionSelector": "d49d21c0",
            "id": 4214,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getOracleProviderRole",
            "nameLocation": "3386:21:73",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 4207,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3422:8:73"
            },
            "parameters": {
              "id": 4206,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3407:2:73"
            },
            "returnParameters": {
              "id": 4210,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4209,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 4214,
                  "src": "3439:7:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4208,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3439:7:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3438:9:73"
            },
            "scope": 4246,
            "src": "3377:115:73",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              21897
            ],
            "body": {
              "id": 4222,
              "nodeType": "Block",
              "src": "3569:44:73",
              "statements": [
                {
                  "expression": {
                    "id": 4220,
                    "name": "RISKPOOL_KEEPER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4014,
                    "src": "3586:20:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 4219,
                  "id": 4221,
                  "nodeType": "Return",
                  "src": "3579:27:73"
                }
              ]
            },
            "functionSelector": "3ffdd2f3",
            "id": 4223,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getRiskpoolKeeperRole",
            "nameLocation": "3507:21:73",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 4216,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3543:8:73"
            },
            "parameters": {
              "id": 4215,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3528:2:73"
            },
            "returnParameters": {
              "id": 4219,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4218,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 4223,
                  "src": "3560:7:73",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4217,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3560:7:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3559:9:73"
            },
            "scope": 4246,
            "src": "3498:115:73",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4244,
              "nodeType": "Block",
              "src": "3658:149:73",
              "statements": [
                {
                  "expression": {
                    "id": 4230,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 4226,
                        "name": "validRole",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4018,
                        "src": "3668:9:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                          "typeString": "mapping(bytes32 => bool)"
                        }
                      },
                      "id": 4228,
                      "indexExpression": {
                        "id": 4227,
                        "name": "PRODUCT_OWNER_ROLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4004,
                        "src": "3678:18:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3668:29:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "74727565",
                      "id": 4229,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3700:4:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "3668:36:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4231,
                  "nodeType": "ExpressionStatement",
                  "src": "3668:36:73"
                },
                {
                  "expression": {
                    "id": 4236,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 4232,
                        "name": "validRole",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4018,
                        "src": "3714:9:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                          "typeString": "mapping(bytes32 => bool)"
                        }
                      },
                      "id": 4234,
                      "indexExpression": {
                        "id": 4233,
                        "name": "ORACLE_PROVIDER_ROLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4009,
                        "src": "3724:20:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3714:31:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "74727565",
                      "id": 4235,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3748:4:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "3714:38:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4237,
                  "nodeType": "ExpressionStatement",
                  "src": "3714:38:73"
                },
                {
                  "expression": {
                    "id": 4242,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 4238,
                        "name": "validRole",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4018,
                        "src": "3762:9:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
                          "typeString": "mapping(bytes32 => bool)"
                        }
                      },
                      "id": 4240,
                      "indexExpression": {
                        "id": 4239,
                        "name": "RISKPOOL_KEEPER_ROLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4014,
                        "src": "3772:20:73",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3762:31:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "74727565",
                      "id": 4241,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3796:4:73",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "3762:38:73",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4243,
                  "nodeType": "ExpressionStatement",
                  "src": "3762:38:73"
                }
              ]
            },
            "id": 4245,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_populateValidRoles",
            "nameLocation": "3628:19:73",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4224,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3647:2:73"
            },
            "returnParameters": {
              "id": 4225,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3658:0:73"
            },
            "scope": 4246,
            "src": "3619:188:73",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          }
        ],
        "scope": 4247,
        "src": "303:3506:73"
      }
    ],
    "src": "39:3771:73"
  },
  "bytecode": "608060405234801561001057600080fd5b5061001961001e565b6100de565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156100dc576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b611548806100ed6000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c8063775a4048116100b8578063c19010a71161007c578063c19010a714610301578063c4d66de814610314578063ca15c87314610327578063d17d02331461033a578063d49d21c01461034d578063d547741f1461037357610137565b8063775a40481461026e57806379a863f5146102945780639010d07c146102bb57806391d14854146102e6578063a217fddf146102f957610137565b806336568abe116100ff57806336568abe146101e05780633ffdd2f3146101f357806352a9c8d71461021957806368232c69146102205780636c137ea91461024757610137565b806301ffc9a71461013c57806312f9a85e14610164578063248a9ca314610187578063274b02a7146101b85780632f2ff15d146101cd575b600080fd5b61014f61014a366004611305565b610386565b60405190151581526020015b60405180910390f35b61014f61017236600461129d565b60046020526000908152604090205460ff1681565b6101aa61019536600461129d565b60009081526002602052604090206001015490565b60405190815260200161015b565b6101cb6101c636600461129d565b6103b3565b005b6101cb6101db3660046112b5565b6104ea565b6101cb6101ee3660046112b5565b61060a565b7f3c4cdb47519f2f89924ebeb1ee7a8a43b8b00120826915726460bb24576012fd6101aa565b60006101aa565b6101aa7f3c4cdb47519f2f89924ebeb1ee7a8a43b8b00120826915726460bb24576012fd81565b6101aa7fe984cfd1d1fa34f80e24ddb2a60c8300359d79eee44555bc35c106eb020394cd81565b7fe984cfd1d1fa34f80e24ddb2a60c8300359d79eee44555bc35c106eb020394cd6101aa565b6101aa7fd26b4cd59ffa91e4599f3d18b02fcd5ffb06e03216f3ee5f25f68dc75cbbbaa281565b6102ce6102c93660046112e4565b610614565b6040516001600160a01b03909116815260200161015b565b61014f6102f43660046112b5565b610635565b6101aa600081565b6101cb61030f366004611245565b610660565b6101cb610322366004611245565b6106da565b6101aa61033536600461129d565b610909565b6101cb61034836600461129d565b610920565b7fd26b4cd59ffa91e4599f3d18b02fcd5ffb06e03216f3ee5f25f68dc75cbbbaa26101aa565b6101cb6103813660046112b5565b610a4a565b60006001600160e01b03198216635a05180f60e01b14806103ab57506103ab82610afa565b90505b919050565b6000546201000090046001600160a01b0316632ca65a796103d13390565b6040518263ffffffff1660e01b81526004016103ed91906113a2565b60206040518083038186803b15801561040557600080fd5b505afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d919061127d565b6104625760405162461bcd60e51b81526004016104599061140f565b60405180910390fd5b60008181526004602052604090205460ff16156104cf5760405162461bcd60e51b815260206004820152602560248201527f4552524f523a41434c2d3030333a524f4c455f4558495354494e475f414e445f604482015264159053125160da1b6064820152608401610459565b6000908152600460205260409020805460ff19166001179055565b6000546201000090046001600160a01b0316632ca65a796105083390565b6040518263ffffffff1660e01b815260040161052491906113a2565b60206040518083038186803b15801561053c57600080fd5b505afa158015610550573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610574919061127d565b6105905760405162461bcd60e51b81526004016104599061140f565b60008281526004602052604090205460ff166105fc5760405162461bcd60e51b815260206004820152602560248201527f4552524f523a41434c2d3030323a524f4c455f554e4b4e4f574e5f4f525f494e604482015264159053125160da1b6064820152608401610459565b6106068282610b2f565b5050565b6106068282610b59565b600082815260036020526040812061062c9083610bd3565b90505b92915050565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff1661062c565b60055460ff16156106bf5760405162461bcd60e51b8152602060048201526024808201527f4552524f523a41434c2d3030313a41444d494e5f524f4c455f414c524541445960448201526317d4d15560e21b6064820152608401610459565b6005805460ff191660011790556106d7600082610bdf565b50565b600054610100900460ff16158080156106fa5750600054600160ff909116105b806107145750303b158015610714575060005460ff166001145b6107775760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610459565b6000805460ff19166001179055801561079a576000805461ff0019166101001790555b6000805462010000600160b01b031916620100006001600160a01b038516021790556107cc6541636365737360d01b90565b6541636365737360d01b1461080e576107ed6541636365737360d01b610c01565b600180546001600160a01b0319166001600160a01b03929092169190911790555b6108c060046020527fef04f7ed48b33f0d9d7de17461a6b9fbfc99345543bcd1fd6722a181717386398054600160ff1991821681179092557f0d0f3851d150b47a1a07ba8d8da619d3d280e2d8c7ebd5a88c0ddf69c9320ac580548216831790557f3c4cdb47519f2f89924ebeb1ee7a8a43b8b00120826915726460bb24576012fd6000527f8ba76ee23aef2d48c27cf0a3d52ee681c660d5a027be0ef9cc9edc5ce9889bac80549091169091179055565b8015610606576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60008181526003602052604081206103ab90610ce9565b6000546201000090046001600160a01b0316632ca65a7961093e3390565b6040518263ffffffff1660e01b815260040161095a91906113a2565b60206040518083038186803b15801561097257600080fd5b505afa158015610986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109aa919061127d565b6109c65760405162461bcd60e51b81526004016104599061140f565b60008181526004602052604090205460ff16610a325760405162461bcd60e51b815260206004820152602560248201527f4552524f523a41434c2d3030343a524f4c455f554e4b4e4f574e5f4f525f494e604482015264159053125160da1b6064820152608401610459565b6000908152600460205260409020805460ff19169055565b6000546201000090046001600160a01b0316632ca65a79610a683390565b6040518263ffffffff1660e01b8152600401610a8491906113a2565b60206040518083038186803b158015610a9c57600080fd5b505afa158015610ab0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad4919061127d565b610af05760405162461bcd60e51b81526004016104599061140f565b6106068282610cf3565b60006001600160e01b03198216637965db0b60e01b14806103ab57506301ffc9a760e01b6001600160e01b03198316146103ab565b600082815260026020526040902060010154610b4a81610d18565b610b548383610bdf565b505050565b6001600160a01b0381163314610bc95760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610459565b6106068282610d22565b600061062c8383610d44565b610be98282610d7c565b6000828152600360205260409020610b549082610e02565b60008054604051631c2d8fb360e31b815260048101849052620100009091046001600160a01b03169063e16c7d989060240160206040518083038186803b158015610c4b57600080fd5b505afa158015610c5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c839190611261565b90506001600160a01b0381166103ae5760405162461bcd60e51b815260206004820152602560248201527f4552524f523a4352432d3030343a434f4e54524143545f4e4f545f5245474953604482015264151154915160da1b6064820152608401610459565b60006103ab825490565b600082815260026020526040902060010154610d0e81610d18565b610b548383610d22565b6106d78133610e17565b610d2c8282610e7b565b6000828152600360205260409020610b549082610ee2565b6000826000018281548110610d6957634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b610d868282610635565b6106065760008281526002602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610dbe3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600061062c836001600160a01b038416610ef7565b610e218282610635565b61060657610e39816001600160a01b03166014610f46565b610e44836020610f46565b604051602001610e5592919061132d565b60408051601f198184030181529082905262461bcd60e51b8252610459916004016113dc565b610e858282610635565b156106065760008281526002602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600061062c836001600160a01b038416611128565b6000818152600183016020526040812054610f3e5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561062f565b50600061062f565b60606000610f5583600261146a565b610f60906002611452565b67ffffffffffffffff811115610f8657634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015610fb0576020820181803683370190505b509050600360fc1b81600081518110610fd957634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061101657634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600061103a84600261146a565b611045906001611452565b90505b60018111156110d9576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061108757634e487b7160e01b600052603260045260246000fd5b1a60f81b8282815181106110ab57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c936110d2816114d0565b9050611048565b50831561062c5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610459565b6000818152600183016020526040812054801561123b57600061114c600183611489565b855490915060009061116090600190611489565b90508181146111e157600086600001828154811061118e57634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050808760000184815481106111bf57634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255918252600188019052604090208390555b855486908061120057634e487b7160e01b600052603160045260246000fd5b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061062f565b600091505061062f565b600060208284031215611256578081fd5b813561062c816114fd565b600060208284031215611272578081fd5b815161062c816114fd565b60006020828403121561128e578081fd5b8151801515811461062c578182fd5b6000602082840312156112ae578081fd5b5035919050565b600080604083850312156112c7578081fd5b8235915060208301356112d9816114fd565b809150509250929050565b600080604083850312156112f6578182fd5b50508035926020909101359150565b600060208284031215611316578081fd5b81356001600160e01b03198116811461062c578182fd5b60007f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000825283516113658160178501602088016114a0565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516113968160288401602088016114a0565b01602801949350505050565b6001600160a01b039190911681527f496e7374616e63654f70657261746f7253657276696365000000000000000000602082015260400190565b60006020825282518060208401526113fb8160408501602087016114a0565b601f01601f19169190910160400192915050565b60208082526023908201527f4552524f523a4352432d3030313a4e4f545f494e5354414e43455f4f504552416040820152622a27a960e91b606082015260800190565b60008219821115611465576114656114e7565b500190565b6000816000190483118215151615611484576114846114e7565b500290565b60008282101561149b5761149b6114e7565b500390565b60005b838110156114bb5781810151838201526020016114a3565b838111156114ca576000848401525b50505050565b6000816114df576114df6114e7565b506000190190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146106d757600080fdfea2646970667358221220b42825768d6d1bd9517d4cf4ae17b3399da47e7b56ede4ffb42cff6305f0c6e564736f6c63430008020033",
  "bytecodeSha1": "52564c2bc876b30dcc16040f3499497756873b78",
  "compiler": {
    "evm_version": "istanbul",
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "version": "0.8.2+commit.661d1103"
  },
  "contractName": "AccessController",
  "coverageMap": {
    "branches": {
      "0": {
        "AccessControl._checkRole": {
          "72": [
            3806,
            3828,
            false
          ]
        },
        "AccessControl._grantRole": {
          "71": [
            7557,
            7579,
            false
          ]
        },
        "AccessControl._revokeRole": {
          "73": [
            7961,
            7983,
            false
          ]
        },
        "AccessControl.renounceRole": {
          "70": [
            6020,
            6043,
            true
          ]
        }
      },
      "1": {},
      "10": {},
      "2": {},
      "21": {},
      "22": {},
      "24": {
        "Strings.toHexString": {
          "79": [
            2008,
            2018,
            true
          ]
        }
      },
      "25": {},
      "26": {},
      "27": {
        "EnumerableSet._remove": {
          "77": [
            2922,
            2937,
            false
          ],
          "78": [
            3404,
            3430,
            false
          ]
        }
      },
      "3": {},
      "37": {},
      "44": {},
      "73": {
        "AccessController.addRole": {
          "66": [
            2622,
            2638,
            true
          ]
        },
        "AccessController.grantRole": {
          "67": [
            1914,
            1929,
            true
          ]
        },
        "AccessController.invalidateRole": {
          "69": [
            2839,
            2854,
            true
          ]
        },
        "AccessController.setDefaultAdminRole": {
          "68": [
            1511,
            1528,
            true
          ]
        }
      },
      "88": {
        "Context._msgSender": {
          "75": [
            564,
            627,
            true
          ]
        },
        "CoreController._getContractAddress": {
          "76": [
            1724,
            1753,
            true
          ]
        },
        "CoreController.initialize": {
          "74": [
            1255,
            1277,
            false
          ]
        }
      }
    },
    "statements": {
      "0": {
        "AccessControl._checkRole": {
          "38": [
            3400,
            3430
          ],
          "45": [
            3844,
            4193
          ]
        },
        "AccessControl._grantRole": {
          "42": [
            7595,
            7631
          ],
          "43": [
            7645,
            7690
          ]
        },
        "AccessControl._revokeRole": {
          "46": [
            7999,
            8036
          ],
          "47": [
            8050,
            8095
          ]
        },
        "AccessControl.getRoleAdmin": {
          "0": [
            4484,
            4513
          ]
        },
        "AccessControl.grantRole": {
          "27": [
            4929,
            4954
          ]
        },
        "AccessControl.hasRole": {
          "9": [
            2997,
            3033
          ]
        },
        "AccessControl.renounceRole": {
          "28": [
            6012,
            6095
          ],
          "29": [
            6106,
            6132
          ]
        },
        "AccessControl.revokeRole": {
          "37": [
            5355,
            5381
          ]
        },
        "AccessControl.supportsInterface": {
          "25": [
            2707,
            2801
          ]
        }
      },
      "1": {
        "AccessControlEnumerable._grantRole": {
          "31": [
            2065,
            2096
          ],
          "32": [
            2106,
            2137
          ]
        },
        "AccessControlEnumerable._revokeRole": {
          "39": [
            2321,
            2353
          ],
          "40": [
            2363,
            2397
          ]
        },
        "AccessControlEnumerable.getRoleMember": {
          "8": [
            1540,
            1575
          ]
        },
        "AccessControlEnumerable.getRoleMemberCount": {
          "21": [
            1849,
            1883
          ]
        },
        "AccessControlEnumerable.supportsInterface": {
          "1": [
            735,
            839
          ]
        }
      },
      "10": {},
      "2": {},
      "21": {
        "Address.isContract": {
          "14": [
            1458,
            1488
          ]
        }
      },
      "22": {
        "Context._msgSender": {
          "2": [
            712,
            729
          ]
        }
      },
      "24": {
        "Strings.toHexString": {
          "54": [
            1809,
            1824
          ],
          "55": [
            1834,
            1849
          ],
          "56": [
            1918,
            1955
          ],
          "57": [
            1969,
            1980
          ],
          "58": [
            1899,
            1902
          ],
          "59": [
            2000,
            2055
          ]
        }
      },
      "25": {
        "ERC165.supportsInterface": {
          "26": [
            930,
            977
          ]
        }
      },
      "26": {},
      "27": {
        "EnumerableSet._add": {
          "50": [
            2234,
            2257
          ],
          "51": [
            2392,
            2432
          ],
          "52": [
            2446,
            2457
          ],
          "53": [
            2488,
            2500
          ]
        },
        "EnumerableSet._at": {
          "41": [
            4897,
            4922
          ]
        },
        "EnumerableSet._contains": {
          "49": [
            4243,
            4274
          ]
        },
        "EnumerableSet._length": {
          "36": [
            4437,
            4462
          ]
        },
        "EnumerableSet._remove": {
          "60": [
            3592,
            3630
          ],
          "61": [
            3704,
            3740
          ],
          "62": [
            3876,
            3893
          ],
          "63": [
            3961,
            3987
          ],
          "64": [
            4002,
            4013
          ],
          "65": [
            4044,
            4056
          ]
        },
        "EnumerableSet.add": {
          "44": [
            8114,
            8171
          ]
        },
        "EnumerableSet.at": {
          "30": [
            9379,
            9435
          ]
        },
        "EnumerableSet.length": {
          "35": [
            8911,
            8937
          ]
        },
        "EnumerableSet.remove": {
          "48": [
            8435,
            8495
          ]
        }
      },
      "3": {},
      "37": {},
      "44": {},
      "73": {
        "AccessController._populateValidRoles": {
          "18": [
            3668,
            3704
          ],
          "19": [
            3714,
            3752
          ],
          "20": [
            3762,
            3800
          ]
        },
        "AccessController.addRole": {
          "3": [
            2614,
            2680
          ],
          "4": [
            2690,
            2712
          ]
        },
        "AccessController.grantRole": {
          "5": [
            1906,
            1971
          ],
          "6": [
            1981,
            2021
          ]
        },
        "AccessController.hasRole": {
          "10": [
            3093,
            3130
          ]
        },
        "AccessController.invalidateRole": {
          "22": [
            2831,
            2896
          ],
          "23": [
            2906,
            2929
          ]
        },
        "AccessController.renounceRole": {
          "7": [
            2374,
            2417
          ]
        },
        "AccessController.revokeRole": {
          "24": [
            2191,
            2232
          ]
        },
        "AccessController.setDefaultAdminRole": {
          "11": [
            1503,
            1569
          ],
          "12": [
            1579,
            1602
          ],
          "13": [
            1613,
            1657
          ]
        }
      },
      "88": {
        "CoreController._getContractAddress": {
          "33": [
            1640,
            1693
          ],
          "34": [
            1703,
            1816
          ]
        },
        "CoreController.initialize": {
          "15": [
            1210,
            1241
          ],
          "16": [
            1281,
            1329
          ],
          "17": [
            1350,
            1368
          ]
        }
      }
    }
  },
  "dependencies": [
    "OpenZeppelin/openzeppelin-contracts@4.7.3/AccessControl",
    "OpenZeppelin/openzeppelin-contracts@4.7.3/AccessControlEnumerable",
    "OpenZeppelin/openzeppelin-contracts@4.7.3/Address",
    "OpenZeppelin/openzeppelin-contracts@4.7.3/Context",
    "CoreController",
    "OpenZeppelin/openzeppelin-contracts@4.7.3/ERC165",
    "OpenZeppelin/openzeppelin-contracts@4.7.3/EnumerableSet",
    "etherisc/gif-interface@3b0002a/IAccess",
    "OpenZeppelin/openzeppelin-contracts@4.7.3/IAccessControl",
    "OpenZeppelin/openzeppelin-contracts@4.7.3/IAccessControlEnumerable",
    "OpenZeppelin/openzeppelin-contracts@4.7.3/IERC165",
    "etherisc/gif-interface@3b0002a/IRegistry",
    "OpenZeppelin/openzeppelin-contracts@4.7.3/Initializable",
    "OpenZeppelin/openzeppelin-contracts@4.7.3/Strings"
  ],
  "deployedBytecode": "608060405234801561001057600080fd5b50600436106101375760003560e01c8063775a4048116100b8578063c19010a71161007c578063c19010a714610301578063c4d66de814610314578063ca15c87314610327578063d17d02331461033a578063d49d21c01461034d578063d547741f1461037357610137565b8063775a40481461026e57806379a863f5146102945780639010d07c146102bb57806391d14854146102e6578063a217fddf146102f957610137565b806336568abe116100ff57806336568abe146101e05780633ffdd2f3146101f357806352a9c8d71461021957806368232c69146102205780636c137ea91461024757610137565b806301ffc9a71461013c57806312f9a85e14610164578063248a9ca314610187578063274b02a7146101b85780632f2ff15d146101cd575b600080fd5b61014f61014a366004611305565b610386565b60405190151581526020015b60405180910390f35b61014f61017236600461129d565b60046020526000908152604090205460ff1681565b6101aa61019536600461129d565b60009081526002602052604090206001015490565b60405190815260200161015b565b6101cb6101c636600461129d565b6103b3565b005b6101cb6101db3660046112b5565b6104ea565b6101cb6101ee3660046112b5565b61060a565b7f3c4cdb47519f2f89924ebeb1ee7a8a43b8b00120826915726460bb24576012fd6101aa565b60006101aa565b6101aa7f3c4cdb47519f2f89924ebeb1ee7a8a43b8b00120826915726460bb24576012fd81565b6101aa7fe984cfd1d1fa34f80e24ddb2a60c8300359d79eee44555bc35c106eb020394cd81565b7fe984cfd1d1fa34f80e24ddb2a60c8300359d79eee44555bc35c106eb020394cd6101aa565b6101aa7fd26b4cd59ffa91e4599f3d18b02fcd5ffb06e03216f3ee5f25f68dc75cbbbaa281565b6102ce6102c93660046112e4565b610614565b6040516001600160a01b03909116815260200161015b565b61014f6102f43660046112b5565b610635565b6101aa600081565b6101cb61030f366004611245565b610660565b6101cb610322366004611245565b6106da565b6101aa61033536600461129d565b610909565b6101cb61034836600461129d565b610920565b7fd26b4cd59ffa91e4599f3d18b02fcd5ffb06e03216f3ee5f25f68dc75cbbbaa26101aa565b6101cb6103813660046112b5565b610a4a565b60006001600160e01b03198216635a05180f60e01b14806103ab57506103ab82610afa565b90505b919050565b6000546201000090046001600160a01b0316632ca65a796103d13390565b6040518263ffffffff1660e01b81526004016103ed91906113a2565b60206040518083038186803b15801561040557600080fd5b505afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d919061127d565b6104625760405162461bcd60e51b81526004016104599061140f565b60405180910390fd5b60008181526004602052604090205460ff16156104cf5760405162461bcd60e51b815260206004820152602560248201527f4552524f523a41434c2d3030333a524f4c455f4558495354494e475f414e445f604482015264159053125160da1b6064820152608401610459565b6000908152600460205260409020805460ff19166001179055565b6000546201000090046001600160a01b0316632ca65a796105083390565b6040518263ffffffff1660e01b815260040161052491906113a2565b60206040518083038186803b15801561053c57600080fd5b505afa158015610550573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610574919061127d565b6105905760405162461bcd60e51b81526004016104599061140f565b60008281526004602052604090205460ff166105fc5760405162461bcd60e51b815260206004820152602560248201527f4552524f523a41434c2d3030323a524f4c455f554e4b4e4f574e5f4f525f494e604482015264159053125160da1b6064820152608401610459565b6106068282610b2f565b5050565b6106068282610b59565b600082815260036020526040812061062c9083610bd3565b90505b92915050565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff1661062c565b60055460ff16156106bf5760405162461bcd60e51b8152602060048201526024808201527f4552524f523a41434c2d3030313a41444d494e5f524f4c455f414c524541445960448201526317d4d15560e21b6064820152608401610459565b6005805460ff191660011790556106d7600082610bdf565b50565b600054610100900460ff16158080156106fa5750600054600160ff909116105b806107145750303b158015610714575060005460ff166001145b6107775760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610459565b6000805460ff19166001179055801561079a576000805461ff0019166101001790555b6000805462010000600160b01b031916620100006001600160a01b038516021790556107cc6541636365737360d01b90565b6541636365737360d01b1461080e576107ed6541636365737360d01b610c01565b600180546001600160a01b0319166001600160a01b03929092169190911790555b6108c060046020527fef04f7ed48b33f0d9d7de17461a6b9fbfc99345543bcd1fd6722a181717386398054600160ff1991821681179092557f0d0f3851d150b47a1a07ba8d8da619d3d280e2d8c7ebd5a88c0ddf69c9320ac580548216831790557f3c4cdb47519f2f89924ebeb1ee7a8a43b8b00120826915726460bb24576012fd6000527f8ba76ee23aef2d48c27cf0a3d52ee681c660d5a027be0ef9cc9edc5ce9889bac80549091169091179055565b8015610606576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60008181526003602052604081206103ab90610ce9565b6000546201000090046001600160a01b0316632ca65a7961093e3390565b6040518263ffffffff1660e01b815260040161095a91906113a2565b60206040518083038186803b15801561097257600080fd5b505afa158015610986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109aa919061127d565b6109c65760405162461bcd60e51b81526004016104599061140f565b60008181526004602052604090205460ff16610a325760405162461bcd60e51b815260206004820152602560248201527f4552524f523a41434c2d3030343a524f4c455f554e4b4e4f574e5f4f525f494e604482015264159053125160da1b6064820152608401610459565b6000908152600460205260409020805460ff19169055565b6000546201000090046001600160a01b0316632ca65a79610a683390565b6040518263ffffffff1660e01b8152600401610a8491906113a2565b60206040518083038186803b158015610a9c57600080fd5b505afa158015610ab0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad4919061127d565b610af05760405162461bcd60e51b81526004016104599061140f565b6106068282610cf3565b60006001600160e01b03198216637965db0b60e01b14806103ab57506301ffc9a760e01b6001600160e01b03198316146103ab565b600082815260026020526040902060010154610b4a81610d18565b610b548383610bdf565b505050565b6001600160a01b0381163314610bc95760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610459565b6106068282610d22565b600061062c8383610d44565b610be98282610d7c565b6000828152600360205260409020610b549082610e02565b60008054604051631c2d8fb360e31b815260048101849052620100009091046001600160a01b03169063e16c7d989060240160206040518083038186803b158015610c4b57600080fd5b505afa158015610c5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c839190611261565b90506001600160a01b0381166103ae5760405162461bcd60e51b815260206004820152602560248201527f4552524f523a4352432d3030343a434f4e54524143545f4e4f545f5245474953604482015264151154915160da1b6064820152608401610459565b60006103ab825490565b600082815260026020526040902060010154610d0e81610d18565b610b548383610d22565b6106d78133610e17565b610d2c8282610e7b565b6000828152600360205260409020610b549082610ee2565b6000826000018281548110610d6957634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b610d868282610635565b6106065760008281526002602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610dbe3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600061062c836001600160a01b038416610ef7565b610e218282610635565b61060657610e39816001600160a01b03166014610f46565b610e44836020610f46565b604051602001610e5592919061132d565b60408051601f198184030181529082905262461bcd60e51b8252610459916004016113dc565b610e858282610635565b156106065760008281526002602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600061062c836001600160a01b038416611128565b6000818152600183016020526040812054610f3e5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561062f565b50600061062f565b60606000610f5583600261146a565b610f60906002611452565b67ffffffffffffffff811115610f8657634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015610fb0576020820181803683370190505b509050600360fc1b81600081518110610fd957634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061101657634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600061103a84600261146a565b611045906001611452565b90505b60018111156110d9576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061108757634e487b7160e01b600052603260045260246000fd5b1a60f81b8282815181106110ab57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c936110d2816114d0565b9050611048565b50831561062c5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610459565b6000818152600183016020526040812054801561123b57600061114c600183611489565b855490915060009061116090600190611489565b90508181146111e157600086600001828154811061118e57634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050808760000184815481106111bf57634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255918252600188019052604090208390555b855486908061120057634e487b7160e01b600052603160045260246000fd5b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061062f565b600091505061062f565b600060208284031215611256578081fd5b813561062c816114fd565b600060208284031215611272578081fd5b815161062c816114fd565b60006020828403121561128e578081fd5b8151801515811461062c578182fd5b6000602082840312156112ae578081fd5b5035919050565b600080604083850312156112c7578081fd5b8235915060208301356112d9816114fd565b809150509250929050565b600080604083850312156112f6578182fd5b50508035926020909101359150565b600060208284031215611316578081fd5b81356001600160e01b03198116811461062c578182fd5b60007f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000825283516113658160178501602088016114a0565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516113968160288401602088016114a0565b01602801949350505050565b6001600160a01b039190911681527f496e7374616e63654f70657261746f7253657276696365000000000000000000602082015260400190565b60006020825282518060208401526113fb8160408501602087016114a0565b601f01601f19169190910160400192915050565b60208082526023908201527f4552524f523a4352432d3030313a4e4f545f494e5354414e43455f4f504552416040820152622a27a960e91b606082015260800190565b60008219821115611465576114656114e7565b500190565b6000816000190483118215151615611484576114846114e7565b500290565b60008282101561149b5761149b6114e7565b500390565b60005b838110156114bb5781810151838201526020016114a3565b838111156114ca576000848401525b50505050565b6000816114df576114df6114e7565b506000190190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146106d757600080fdfea2646970667358221220b42825768d6d1bd9517d4cf4ae17b3399da47e7b56ede4ffb42cff6305f0c6e564736f6c63430008020033",
  "deployedSourceMap": "303:3506:73:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;634:212:1;;;;;;:::i;:::-;;:::i;:::-;;;3468:14:103;;3461:22;3443:41;;3431:2;3416:18;634:212:1;;;;;;;;882:41:73;;;;;;:::i;:::-;;;;;;;;;;;;;;;;4391:129:0;;;;;;:::i;:::-;4465:7;4491:12;;;:6;:12;;;;;:22;;;;4391:129;;;;3641:25:103;;;3629:2;3614:18;4391:129:0;3596:76:103;2514:205:73;;;;;;:::i;:::-;;:::i;:::-;;1750:278;;;;;;:::i;:::-;;:::i;2245:179::-;;;;;;:::i;:::-;;:::i;3498:115::-;842:33;3498:115;;3143:111;3203:7;3143:111;;795:80;;842:33;795:80;;477:76;;522:31;477:76;;3260:111;522:31;3260:111;;634:80;;681:33;634:80;;1431:151:1;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2898:32:103;;;2880:51;;2868:2;2853:18;1431:151:1;2835:102:103;2942:195:73;;;;;;:::i;:::-;;:::i;2027:49:0:-;;2072:4;2027:49;;1419:245:73;;;;;;:::i;:::-;;:::i;1143:232:88:-;;;;;;:::i;:::-;;:::i;1750:140:1:-;;;;;;:::i;:::-;;:::i;2725:211:73:-;;;;;;:::i;:::-;;:::i;3377:115::-;681:33;3377:115;;2034:205;;;;;;:::i;:::-;;:::i;634:212:1:-;719:4;-1:-1:-1;;;;;;742:57:1;;-1:-1:-1;;;742:57:1;;:97;;;803:36;827:11;803:23;:36::i;:::-;735:104;;634:212;;;;:::o;2514:205:73:-;564:9:88;;;;;-1:-1:-1;;;;;564:9:88;:22;587:12;719:10:22;640:96;;587:12:88;564:63;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;543:136;;;;-1:-1:-1;;;543:136:88;;;;;;;:::i;:::-;;;;;;;;;2623:15:73::1;::::0;;;:9:::1;:15;::::0;;;;;::::1;;2622:16;2614:66;;;::::0;-1:-1:-1;;;2614:66:73;;7269:2:103;2614:66:73::1;::::0;::::1;7251:21:103::0;7308:2;7288:18;;;7281:30;7347:34;7327:18;;;7320:62;-1:-1:-1;;;7398:18:103;;;7391:35;7443:19;;2614:66:73::1;7241:227:103::0;2614:66:73::1;2690:15;::::0;;;:9:::1;:15;::::0;;;;:22;;-1:-1:-1;;2690:22:73::1;2708:4;2690:22;::::0;;2514:205::o;1750:278::-;564:9:88;;;;;-1:-1:-1;;;;;564:9:88;:22;587:12;719:10:22;640:96;;587:12:88;564:63;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;543:136;;;;-1:-1:-1;;;543:136:88;;;;;;;:::i;:::-;1914:15:73::1;::::0;;;:9:::1;:15;::::0;;;;;::::1;;1906:65;;;::::0;-1:-1:-1;;;1906:65:73;;6459:2:103;1906:65:73::1;::::0;::::1;6441:21:103::0;6498:2;6478:18;;;6471:30;6537:34;6517:18;;;6510:62;-1:-1:-1;;;6588:18:103;;;6581:35;6633:19;;1906:65:73::1;6431:227:103::0;1906:65:73::1;1981:40;2005:4;2011:9;1981:23;:40::i;:::-;1750:278:::0;;:::o;2245:179::-;2374:43;2401:4;2407:9;2374:26;:43::i;1431:151:1:-;1521:7;1547:18;;;:12;:18;;;;;:28;;1569:5;1547:21;:28::i;:::-;1540:35;;1431:151;;;;;:::o;2942:195:73:-;3073:4;3004:12:0;;;:6;:12;;;;;;;;-1:-1:-1;;;;;3004:29:0;;;;;;;;;;;;3100:30:73;2895:145:0;1419:245:73;1512:16;;;;1511:17;1503:66;;;;-1:-1:-1;;;1503:66:73;;5648:2:103;1503:66:73;;;5630:21:103;5687:2;5667:18;;;5660:30;5726:34;5706:18;;;5699:62;-1:-1:-1;;;5777:18:103;;;5770:34;5821:19;;1503:66:73;5620:226:103;1503:66:73;1579:16;:23;;-1:-1:-1;;1579:23:73;1598:4;1579:23;;;1613:44;1579:16;1644:12;1613:10;:44::i;:::-;1419:245;:::o;1143:232:88:-;3100:19:10;3123:13;;;;;;3122:14;;3168:34;;;;-1:-1:-1;3186:12:10;;3201:1;3186:12;;;;:16;3168:34;3167:97;;;-1:-1:-1;3236:4:10;1465:19:21;:23;;;3208:55:10;;-1:-1:-1;3246:12:10;;;;;:17;3208:55;3146:190;;;;-1:-1:-1;;;3146:190:10;;5233:2:103;3146:190:10;;;5215:21:103;5272:2;5252:18;;;5245:30;5311:34;5291:18;;;5284:62;-1:-1:-1;;;5362:18:103;;;5355:44;5416:19;;3146:190:10;5205:236:103;3146:190:10;3346:12;:16;;-1:-1:-1;;3346:16:10;3361:1;3346:16;;;3372:65;;;;3406:13;:20;;-1:-1:-1;;3406:20:10;;;;;3372:65;1210:9:88::1;:31:::0;;-1:-1:-1;;;;;;1210:31:88::1;::::0;-1:-1:-1;;;;;1210:31:88;::::1;;;::::0;;1255:10:::1;-1:-1:-1::0;;;1128:80:73;;1255:10:88::1;-1:-1:-1::0;;;1255:22:88::1;1251:81;;1299:29;-1:-1:-1::0;;;1299:19:88::1;:29::i;:::-;1281:7;:48:::0;;-1:-1:-1;;;;;;1281:48:88::1;-1:-1:-1::0;;;;;1281:48:88;;;::::1;::::0;;;::::1;::::0;;1251:81:::1;1350:18;3668:9:73::0;:29;;;:36;;3700:4;-1:-1:-1;;3668:36:73;;;;;;;;3714:31;:38;;;;;;;;842:33;-1:-1:-1;3762:31:73;;:38;;;;;;;;;;966:156;1350:18:88::1;3461:14:10::0;3457:99;;;3507:5;3491:21;;-1:-1:-1;;3491:21:10;;;3531:14;;-1:-1:-1;3829:36:103;;3531:14:10;;3817:2:103;3802:18;3531:14:10;;;;;;;1143:232:88;;:::o;1750:140:1:-;1830:7;1856:18;;;:12;:18;;;;;:27;;:25;:27::i;2725:211:73:-;564:9:88;;;;;-1:-1:-1;;;;;564:9:88;:22;587:12;719:10:22;640:96;;587:12:88;564:63;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;543:136;;;;-1:-1:-1;;;543:136:88;;;;;;;:::i;:::-;2839:15:73::1;::::0;;;:9:::1;:15;::::0;;;;;::::1;;2831:65;;;::::0;-1:-1:-1;;;2831:65:73;;6053:2:103;2831:65:73::1;::::0;::::1;6035:21:103::0;6092:2;6072:18;;;6065:30;6131:34;6111:18;;;6104:62;-1:-1:-1;;;6182:18:103;;;6175:35;6227:19;;2831:65:73::1;6025:227:103::0;2831:65:73::1;2924:5;2906:15:::0;;;:9:::1;:15;::::0;;;;:23;;-1:-1:-1;;2906:23:73::1;::::0;;2725:211::o;2034:205::-;564:9:88;;;;;-1:-1:-1;;;;;564:9:88;:22;587:12;719:10:22;640:96;;587:12:88;564:63;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;543:136;;;;-1:-1:-1;;;543:136:88;;;;;;;:::i;:::-;2191:41:73::1;2216:4;2222:9;2191:24;:41::i;2606:202:0:-:0;2691:4;-1:-1:-1;;;;;;2714:47:0;;-1:-1:-1;;;2714:47:0;;:87;;-1:-1:-1;;;;;;;;;;937:40:25;;;2765:36:0;829:155:25;4816:145:0;4465:7;4491:12;;;:6;:12;;;;;:22;;;2505:16;2516:4;2505:10;:16::i;:::-;4929:25:::1;4940:4;4946:7;4929:10;:25::i;:::-;4816:145:::0;;;:::o;5925:214::-;-1:-1:-1;;;;;6020:23:0;;719:10:22;6020:23:0;6012:83;;;;-1:-1:-1;;;6012:83:0;;7675:2:103;6012:83:0;;;7657:21:103;7714:2;7694:18;;;7687:30;7753:34;7733:18;;;7726:62;-1:-1:-1;;;7804:18:103;;;7797:45;7859:19;;6012:83:0;7647:237:103;6012:83:0;6106:26;6118:4;6124:7;6106:11;:26::i;9286:156:27:-;9360:7;9410:22;9414:3;9426:5;9410:3;:22::i;1978:166:1:-;2065:31;2082:4;2088:7;2065:16;:31::i;:::-;2106:18;;;;:12;:18;;;;;:31;;2129:7;2106:22;:31::i;1530:293:88:-;1604:23;1658:9;;:35;;-1:-1:-1;;;1658:35:88;;;;;3641:25:103;;;1658:9:88;;;;-1:-1:-1;;;;;1658:9:88;;:21;;3614:18:103;;1658:35:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1640:53;-1:-1:-1;;;;;;1724:29:88;;1703:113;;;;-1:-1:-1;;;1703:113:88;;4827:2:103;1703:113:88;;;4809:21:103;4866:2;4846:18;;;4839:30;4905:34;4885:18;;;4878:62;-1:-1:-1;;;4956:18:103;;;4949:35;5001:19;;1703:113:88;4799:227:103;8829:115:27;8892:7;8918:19;8926:3;4444:18;;4362:107;5241:147:0;4465:7;4491:12;;;:6;:12;;;;;:22;;;2505:16;2516:4;2505:10;:16::i;:::-;5355:26:::1;5367:4;5373:7;5355:11;:26::i;3334:103::-:0;3400:30;3411:4;719:10:22;3400::0;:30::i;2233:171:1:-;2321:32;2339:4;2345:7;2321:17;:32::i;:::-;2363:18;;;;:12;:18;;;;;:34;;2389:7;2363:25;:34::i;4811:118:27:-;4878:7;4904:3;:11;;4916:5;4904:18;;;;;;-1:-1:-1;;;4904:18:27;;;;;;;;;;;;;;;;;4897:25;;4811:118;;;;:::o;7474:233:0:-;7557:22;7565:4;7571:7;7557;:22::i;:::-;7552:149;;7595:12;;;;:6;:12;;;;;;;;-1:-1:-1;;;;;7595:29:0;;;;;;;;;:36;;-1:-1:-1;;7595:36:0;7627:4;7595:36;;;7677:12;719:10:22;640:96;;7677:12:0;-1:-1:-1;;;;;7650:40:0;7668:7;-1:-1:-1;;;;;7650:40:0;7662:4;7650:40;;;;;;;;;;7474:233;;:::o;8028:150:27:-;8098:4;8121:50;8126:3;-1:-1:-1;;;;;8146:23:27;;8121:4;:50::i;3718:492:0:-;3806:22;3814:4;3820:7;3806;:22::i;:::-;3801:403;;3989:41;4017:7;-1:-1:-1;;;;;3989:41:0;4027:2;3989:19;:41::i;:::-;4101:38;4129:4;4136:2;4101:19;:38::i;:::-;3896:265;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;3896:265:0;;;;;;;;;;-1:-1:-1;;;3844:349:0;;;;;;;:::i;7878:234::-;7961:22;7969:4;7975:7;7961;:22::i;:::-;7957:149;;;8031:5;7999:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;7999:29:0;;;;;;;;;;:37;;-1:-1:-1;;7999:37:0;;;8055:40;719:10:22;;7999:12:0;;8055:40;;8031:5;8055:40;7878:234;;:::o;8346:156:27:-;8419:4;8442:53;8450:3;-1:-1:-1;;;;;8470:23:27;;8442:7;:53::i;2113:404::-;2176:4;4250:19;;;:12;;;:19;;;;;;2192:319;;-1:-1:-1;2234:23:27;;;;;;;;:11;:23;;;;;;;;;;;;;2414:18;;2392:19;;;:12;;;:19;;;;;;:40;;;;2446:11;;2192:319;-1:-1:-1;2495:5:27;2488:12;;1652:441:24;1727:13;1752:19;1784:10;1788:6;1784:1;:10;:::i;:::-;:14;;1797:1;1784:14;:::i;:::-;1774:25;;;;;;-1:-1:-1;;;1774:25:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1774:25:24;;1752:47;;-1:-1:-1;;;1809:6:24;1816:1;1809:9;;;;;;-1:-1:-1;;;1809:9:24;;;;;;;;;;;;:15;-1:-1:-1;;;;;1809:15:24;;;;;;;;;-1:-1:-1;;;1834:6:24;1841:1;1834:9;;;;;;-1:-1:-1;;;1834:9:24;;;;;;;;;;;;:15;-1:-1:-1;;;;;1834:15:24;;;;;;;;-1:-1:-1;1864:9:24;1876:10;1880:6;1876:1;:10;:::i;:::-;:14;;1889:1;1876:14;:::i;:::-;1864:26;;1859:132;1896:1;1892;:5;1859:132;;;-1:-1:-1;;;1943:5:24;1951:3;1943:11;1930:25;;;;;-1:-1:-1;;;1930:25:24;;;;;;;;;;;;1918:6;1925:1;1918:9;;;;;;-1:-1:-1;;;1918:9:24;;;;;;;;;;;;:37;-1:-1:-1;;;;;1918:37:24;;;;;;;;-1:-1:-1;1979:1:24;1969:11;;;;;1899:3;;;:::i;:::-;;;1859:132;;;-1:-1:-1;2008:10:24;;2000:55;;;;-1:-1:-1;;;2000:55:24;;4466:2:103;2000:55:24;;;4448:21:103;;;4485:18;;;4478:30;4544:34;4524:18;;;4517:62;4596:18;;2000:55:24;4438:182:103;2685:1388:27;2751:4;2888:19;;;:12;;;:19;;;;;;2922:15;;2918:1149;;3291:21;3315:14;3328:1;3315:10;:14;:::i;:::-;3363:18;;3291:38;;-1:-1:-1;3343:17:27;;3363:22;;3384:1;;3363:22;:::i;:::-;3343:42;;3417:13;3404:9;:26;3400:398;;3450:17;3470:3;:11;;3482:9;3470:22;;;;;;-1:-1:-1;;;3470:22:27;;;;;;;;;;;;;;;;;3450:42;;3621:9;3592:3;:11;;3604:13;3592:26;;;;;;-1:-1:-1;;;3592:26:27;;;;;;;;;;;;;;;;;;;;:38;;;;3704:23;;;:12;;;:23;;;;;:36;;;3400:398;3876:17;;:3;;:17;;;-1:-1:-1;;;3876:17:27;;;;;;;;;;;;;;;;;;;;;;;;;;3968:3;:12;;:19;3981:5;3968:19;;;;;;;;;;;3961:26;;;4009:4;4002:11;;;;;;;2918:1149;4051:5;4044:12;;;;;14:257:103;;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:31;235:5;210:31;:::i;276:261::-;;399:2;387:9;378:7;374:23;370:32;367:2;;;420:6;412;405:22;367:2;457:9;451:16;476:31;501:5;476:31;:::i;542:297::-;;662:2;650:9;641:7;637:23;633:32;630:2;;;683:6;675;668:22;630:2;720:9;714:16;773:5;766:13;759:21;752:5;749:32;739:2;;800:6;792;785:22;844:190;;956:2;944:9;935:7;931:23;927:32;924:2;;;977:6;969;962:22;924:2;-1:-1:-1;1005:23:103;;914:120;-1:-1:-1;914:120:103:o;1039:325::-;;;1168:2;1156:9;1147:7;1143:23;1139:32;1136:2;;;1189:6;1181;1174:22;1136:2;1230:9;1217:23;1207:33;;1290:2;1279:9;1275:18;1262:32;1303:31;1328:5;1303:31;:::i;:::-;1353:5;1343:15;;;1126:238;;;;;:::o;1369:258::-;;;1498:2;1486:9;1477:7;1473:23;1469:32;1466:2;;;1519:6;1511;1504:22;1466:2;-1:-1:-1;;1547:23:103;;;1617:2;1602:18;;;1589:32;;-1:-1:-1;1456:171:103:o;1632:306::-;;1743:2;1731:9;1722:7;1718:23;1714:32;1711:2;;;1764:6;1756;1749:22;1711:2;1795:23;;-1:-1:-1;;;;;;1847:32:103;;1837:43;;1827:2;;1899:6;1891;1884:22;1943:786;;2354:25;2349:3;2342:38;2409:6;2403:13;2425:62;2480:6;2475:2;2470:3;2466:12;2459:4;2451:6;2447:17;2425:62;:::i;:::-;-1:-1:-1;;;2546:2:103;2506:16;;;2538:11;;;2531:40;2596:13;;2618:63;2596:13;2667:2;2659:11;;2652:4;2640:17;;2618:63;:::i;:::-;2701:17;2720:2;2697:26;;2332:397;-1:-1:-1;;;;2332:397:103:o;2942:356::-;-1:-1:-1;;;;;3197:32:103;;;;3179:51;;3266:25;3261:2;3246:18;;3239:53;3167:2;3152:18;;3134:164::o;3876:383::-;;4025:2;4014:9;4007:21;4057:6;4051:13;4100:6;4095:2;4084:9;4080:18;4073:34;4116:66;4175:6;4170:2;4159:9;4155:18;4150:2;4142:6;4138:15;4116:66;:::i;:::-;4243:2;4222:15;-1:-1:-1;;4218:29:103;4203:45;;;;4250:2;4199:54;;3997:262;-1:-1:-1;;3997:262:103:o;6663:399::-;6865:2;6847:21;;;6904:2;6884:18;;;6877:30;6943:34;6938:2;6923:18;;6916:62;-1:-1:-1;;;7009:2:103;6994:18;;6987:33;7052:3;7037:19;;6837:225::o;8071:128::-;;8142:1;8138:6;8135:1;8132:13;8129:2;;;8148:18;;:::i;:::-;-1:-1:-1;8184:9:103;;8119:80::o;8204:168::-;;8310:1;8306;8302:6;8298:14;8295:1;8292:21;8287:1;8280:9;8273:17;8269:45;8266:2;;;8317:18;;:::i;:::-;-1:-1:-1;8357:9:103;;8256:116::o;8377:125::-;;8445:1;8442;8439:8;8436:2;;;8450:18;;:::i;:::-;-1:-1:-1;8487:9:103;;8426:76::o;8507:258::-;8579:1;8589:113;8603:6;8600:1;8597:13;8589:113;;;8679:11;;;8673:18;8660:11;;;8653:39;8625:2;8618:10;8589:113;;;8720:6;8717:1;8714:13;8711:2;;;8755:1;8746:6;8741:3;8737:16;8730:27;8711:2;;8560:205;;;:::o;8770:136::-;;8837:5;8827:2;;8846:18;;:::i;:::-;-1:-1:-1;;;8882:18:103;;8817:89::o;8911:127::-;8972:10;8967:3;8963:20;8960:1;8953:31;9003:4;9000:1;8993:15;9027:4;9024:1;9017:15;9043:131;-1:-1:-1;;;;;9118:31:103;;9108:42;;9098:2;;9164:1;9161;9154:12",
  "language": "Solidity",
  "natspec": {
    "kind": "dev",
    "methods": {
      "getRoleAdmin(bytes32)": {
        "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."
      },
      "getRoleMember(bytes32,uint256)": {
        "details": "Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information."
      },
      "getRoleMemberCount(bytes32)": {
        "details": "Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role."
      },
      "supportsInterface(bytes4)": {
        "details": "See {IERC165-supportsInterface}."
      }
    },
    "version": 1
  },
  "offset": [
    303,
    3809
  ],
  "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x137 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x775A4048 GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0xC19010A7 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xC19010A7 EQ PUSH2 0x301 JUMPI DUP1 PUSH4 0xC4D66DE8 EQ PUSH2 0x314 JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0x327 JUMPI DUP1 PUSH4 0xD17D0233 EQ PUSH2 0x33A JUMPI DUP1 PUSH4 0xD49D21C0 EQ PUSH2 0x34D JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x373 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x775A4048 EQ PUSH2 0x26E JUMPI DUP1 PUSH4 0x79A863F5 EQ PUSH2 0x294 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x2E6 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x2F9 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x36568ABE GT PUSH2 0xFF JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x1E0 JUMPI DUP1 PUSH4 0x3FFDD2F3 EQ PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x52A9C8D7 EQ PUSH2 0x219 JUMPI DUP1 PUSH4 0x68232C69 EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0x6C137EA9 EQ PUSH2 0x247 JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x12F9A85E EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0x274B02A7 EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x1CD JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F PUSH2 0x14A CALLDATASIZE PUSH1 0x4 PUSH2 0x1305 JUMP JUMPDEST PUSH2 0x386 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x14F PUSH2 0x172 CALLDATASIZE PUSH1 0x4 PUSH2 0x129D JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x1AA PUSH2 0x195 CALLDATASIZE PUSH1 0x4 PUSH2 0x129D JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x15B JUMP JUMPDEST PUSH2 0x1CB PUSH2 0x1C6 CALLDATASIZE PUSH1 0x4 PUSH2 0x129D JUMP JUMPDEST PUSH2 0x3B3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1CB PUSH2 0x1DB CALLDATASIZE PUSH1 0x4 PUSH2 0x12B5 JUMP JUMPDEST PUSH2 0x4EA JUMP JUMPDEST PUSH2 0x1CB PUSH2 0x1EE CALLDATASIZE PUSH1 0x4 PUSH2 0x12B5 JUMP JUMPDEST PUSH2 0x60A JUMP JUMPDEST PUSH32 0x3C4CDB47519F2F89924EBEB1EE7A8A43B8B00120826915726460BB24576012FD PUSH2 0x1AA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AA JUMP JUMPDEST PUSH2 0x1AA PUSH32 0x3C4CDB47519F2F89924EBEB1EE7A8A43B8B00120826915726460BB24576012FD DUP2 JUMP JUMPDEST PUSH2 0x1AA PUSH32 0xE984CFD1D1FA34F80E24DDB2A60C8300359D79EEE44555BC35C106EB020394CD DUP2 JUMP JUMPDEST PUSH32 0xE984CFD1D1FA34F80E24DDB2A60C8300359D79EEE44555BC35C106EB020394CD PUSH2 0x1AA JUMP JUMPDEST PUSH2 0x1AA PUSH32 0xD26B4CD59FFA91E4599F3D18B02FCD5FFB06E03216F3EE5F25F68DC75CBBBAA2 DUP2 JUMP JUMPDEST PUSH2 0x2CE PUSH2 0x2C9 CALLDATASIZE PUSH1 0x4 PUSH2 0x12E4 JUMP JUMPDEST PUSH2 0x614 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x15B JUMP JUMPDEST PUSH2 0x14F PUSH2 0x2F4 CALLDATASIZE PUSH1 0x4 PUSH2 0x12B5 JUMP JUMPDEST PUSH2 0x635 JUMP JUMPDEST PUSH2 0x1AA PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH2 0x1CB PUSH2 0x30F CALLDATASIZE PUSH1 0x4 PUSH2 0x1245 JUMP JUMPDEST PUSH2 0x660 JUMP JUMPDEST PUSH2 0x1CB PUSH2 0x322 CALLDATASIZE PUSH1 0x4 PUSH2 0x1245 JUMP JUMPDEST PUSH2 0x6DA JUMP JUMPDEST PUSH2 0x1AA PUSH2 0x335 CALLDATASIZE PUSH1 0x4 PUSH2 0x129D JUMP JUMPDEST PUSH2 0x909 JUMP JUMPDEST PUSH2 0x1CB PUSH2 0x348 CALLDATASIZE PUSH1 0x4 PUSH2 0x129D JUMP JUMPDEST PUSH2 0x920 JUMP JUMPDEST PUSH32 0xD26B4CD59FFA91E4599F3D18B02FCD5FFB06E03216F3EE5F25F68DC75CBBBAA2 PUSH2 0x1AA JUMP JUMPDEST PUSH2 0x1CB PUSH2 0x381 CALLDATASIZE PUSH1 0x4 PUSH2 0x12B5 JUMP JUMPDEST PUSH2 0xA4A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5A05180F PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x3AB JUMPI POP PUSH2 0x3AB DUP3 PUSH2 0xAFA JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2CA65A79 PUSH2 0x3D1 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3ED SWAP2 SWAP1 PUSH2 0x13A2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x405 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x419 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x43D SWAP2 SWAP1 PUSH2 0x127D JUMP JUMPDEST PUSH2 0x462 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x459 SWAP1 PUSH2 0x140F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x4CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552524F523A41434C2D3030333A524F4C455F4558495354494E475F414E445F PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x1590531251 PUSH1 0xDA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x459 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2CA65A79 PUSH2 0x508 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x524 SWAP2 SWAP1 PUSH2 0x13A2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x53C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x550 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x574 SWAP2 SWAP1 PUSH2 0x127D JUMP JUMPDEST PUSH2 0x590 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x459 SWAP1 PUSH2 0x140F JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x5FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552524F523A41434C2D3030323A524F4C455F554E4B4E4F574E5F4F525F494E PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x1590531251 PUSH1 0xDA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x459 JUMP JUMPDEST PUSH2 0x606 DUP3 DUP3 PUSH2 0xB2F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x606 DUP3 DUP3 PUSH2 0xB59 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x62C SWAP1 DUP4 PUSH2 0xBD3 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x62C JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x6BF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552524F523A41434C2D3030313A41444D494E5F524F4C455F414C5245414459 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x17D4D155 PUSH1 0xE2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x459 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x6D7 PUSH1 0x0 DUP3 PUSH2 0xBDF JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 DUP1 ISZERO PUSH2 0x6FA JUMPI POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xFF SWAP1 SWAP2 AND LT JUMPDEST DUP1 PUSH2 0x714 JUMPI POP ADDRESS EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x714 JUMPI POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH1 0x1 EQ JUMPDEST PUSH2 0x777 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561 PUSH1 0x44 DUP3 ADD MSTORE PUSH14 0x191E481A5B9A5D1A585B1A5E9959 PUSH1 0x92 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x459 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x79A JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH3 0x10000 PUSH1 0x1 PUSH1 0xB0 SHL SUB NOT AND PUSH3 0x10000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND MUL OR SWAP1 SSTORE PUSH2 0x7CC PUSH6 0x416363657373 PUSH1 0xD0 SHL SWAP1 JUMP JUMPDEST PUSH6 0x416363657373 PUSH1 0xD0 SHL EQ PUSH2 0x80E JUMPI PUSH2 0x7ED PUSH6 0x416363657373 PUSH1 0xD0 SHL PUSH2 0xC01 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH2 0x8C0 PUSH1 0x4 PUSH1 0x20 MSTORE PUSH32 0xEF04F7ED48B33F0D9D7DE17461A6B9FBFC99345543BCD1FD6722A18171738639 DUP1 SLOAD PUSH1 0x1 PUSH1 0xFF NOT SWAP2 DUP3 AND DUP2 OR SWAP1 SWAP3 SSTORE PUSH32 0xD0F3851D150B47A1A07BA8D8DA619D3D280E2D8C7EBD5A88C0DDF69C9320AC5 DUP1 SLOAD DUP3 AND DUP4 OR SWAP1 SSTORE PUSH32 0x3C4CDB47519F2F89924EBEB1EE7A8A43B8B00120826915726460BB24576012FD PUSH1 0x0 MSTORE PUSH32 0x8BA76EE23AEF2D48C27CF0A3D52EE681C660D5A027BE0EF9CC9EDC5CE9889BAC DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP1 ISZERO PUSH2 0x606 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF00 NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x3AB SWAP1 PUSH2 0xCE9 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2CA65A79 PUSH2 0x93E CALLER SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x95A SWAP2 SWAP1 PUSH2 0x13A2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x972 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x986 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9AA SWAP2 SWAP1 PUSH2 0x127D JUMP JUMPDEST PUSH2 0x9C6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x459 SWAP1 PUSH2 0x140F JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xA32 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552524F523A41434C2D3030343A524F4C455F554E4B4E4F574E5F4F525F494E PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x1590531251 PUSH1 0xDA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x459 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2CA65A79 PUSH2 0xA68 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA84 SWAP2 SWAP1 PUSH2 0x13A2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAB0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAD4 SWAP2 SWAP1 PUSH2 0x127D JUMP JUMPDEST PUSH2 0xAF0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x459 SWAP1 PUSH2 0x140F JUMP JUMPDEST PUSH2 0x606 DUP3 DUP3 PUSH2 0xCF3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x3AB JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x3AB JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0xB4A DUP2 PUSH2 0xD18 JUMP JUMPDEST PUSH2 0xB54 DUP4 DUP4 PUSH2 0xBDF JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0xBC9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2063616E206F6E6C792072656E6F756E6365 PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x103937B632B9903337B91039B2B633 PUSH1 0x89 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x459 JUMP JUMPDEST PUSH2 0x606 DUP3 DUP3 PUSH2 0xD22 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x62C DUP4 DUP4 PUSH2 0xD44 JUMP JUMPDEST PUSH2 0xBE9 DUP3 DUP3 PUSH2 0xD7C JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xB54 SWAP1 DUP3 PUSH2 0xE02 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x1C2D8FB3 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH3 0x10000 SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xE16C7D98 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC5F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC83 SWAP2 SWAP1 PUSH2 0x1261 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3AE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552524F523A4352432D3030343A434F4E54524143545F4E4F545F5245474953 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x1511549151 PUSH1 0xDA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x459 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3AB DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0xD0E DUP2 PUSH2 0xD18 JUMP JUMPDEST PUSH2 0xB54 DUP4 DUP4 PUSH2 0xD22 JUMP JUMPDEST PUSH2 0x6D7 DUP2 CALLER PUSH2 0xE17 JUMP JUMPDEST PUSH2 0xD2C DUP3 DUP3 PUSH2 0xE7B JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xB54 SWAP1 DUP3 PUSH2 0xEE2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xD69 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xD86 DUP3 DUP3 PUSH2 0x635 JUMP JUMPDEST PUSH2 0x606 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0xDBE CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x62C DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xEF7 JUMP JUMPDEST PUSH2 0xE21 DUP3 DUP3 PUSH2 0x635 JUMP JUMPDEST PUSH2 0x606 JUMPI PUSH2 0xE39 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x14 PUSH2 0xF46 JUMP JUMPDEST PUSH2 0xE44 DUP4 PUSH1 0x20 PUSH2 0xF46 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xE55 SWAP3 SWAP2 SWAP1 PUSH2 0x132D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH3 0x461BCD PUSH1 0xE5 SHL DUP3 MSTORE PUSH2 0x459 SWAP2 PUSH1 0x4 ADD PUSH2 0x13DC JUMP JUMPDEST PUSH2 0xE85 DUP3 DUP3 PUSH2 0x635 JUMP JUMPDEST ISZERO PUSH2 0x606 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP6 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x62C DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1128 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH2 0xF3E JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP5 SWAP1 SSTORE DUP5 SLOAD DUP5 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x62F JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x62F JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xF55 DUP4 PUSH1 0x2 PUSH2 0x146A JUMP JUMPDEST PUSH2 0xF60 SWAP1 PUSH1 0x2 PUSH2 0x1452 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF86 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xFB0 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x3 PUSH1 0xFC SHL DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xFD9 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xF PUSH1 0xFB SHL DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1016 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x0 PUSH2 0x103A DUP5 PUSH1 0x2 PUSH2 0x146A JUMP JUMPDEST PUSH2 0x1045 SWAP1 PUSH1 0x1 PUSH2 0x1452 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x10D9 JUMPI PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL DUP6 PUSH1 0xF AND PUSH1 0x10 DUP2 LT PUSH2 0x1087 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST BYTE PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x10AB JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x4 SWAP5 SWAP1 SWAP5 SHR SWAP4 PUSH2 0x10D2 DUP2 PUSH2 0x14D0 JUMP JUMPDEST SWAP1 POP PUSH2 0x1048 JUMP JUMPDEST POP DUP4 ISZERO PUSH2 0x62C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x537472696E67733A20686578206C656E67746820696E73756666696369656E74 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x459 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x123B JUMPI PUSH1 0x0 PUSH2 0x114C PUSH1 0x1 DUP4 PUSH2 0x1489 JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x1160 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x1489 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 EQ PUSH2 0x11E1 JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x118E JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP8 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x11BF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE PUSH1 0x1 DUP9 ADD SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP4 SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH2 0x1200 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 SWAP4 POP POP POP POP PUSH2 0x62F JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x62F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1256 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x62C DUP2 PUSH2 0x14FD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1272 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x62C DUP2 PUSH2 0x14FD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x128E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x62C JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x12AE JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x12C7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x12D9 DUP2 PUSH2 0x14FD JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x12F6 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1316 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x62C JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH32 0x416363657373436F6E74726F6C3A206163636F756E7420000000000000000000 DUP3 MSTORE DUP4 MLOAD PUSH2 0x1365 DUP2 PUSH1 0x17 DUP6 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x14A0 JUMP JUMPDEST PUSH17 0x1034B99036B4B9B9B4B733903937B6329 PUSH1 0x7D SHL PUSH1 0x17 SWAP2 DUP5 ADD SWAP2 DUP3 ADD MSTORE DUP4 MLOAD PUSH2 0x1396 DUP2 PUSH1 0x28 DUP5 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x14A0 JUMP JUMPDEST ADD PUSH1 0x28 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH32 0x496E7374616E63654F70657261746F7253657276696365000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x13FB DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x14A0 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552524F523A4352432D3030313A4E4F545F494E5354414E43455F4F50455241 PUSH1 0x40 DUP3 ADD MSTORE PUSH3 0x2A27A9 PUSH1 0xE9 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x1465 JUMPI PUSH2 0x1465 PUSH2 0x14E7 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x1484 JUMPI PUSH2 0x1484 PUSH2 0x14E7 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x149B JUMPI PUSH2 0x149B PUSH2 0x14E7 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x14BB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x14A3 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x14CA JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x14DF JUMPI PUSH2 0x14DF PUSH2 0x14E7 JUMP JUMPDEST POP PUSH1 0x0 NOT ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x6D7 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB4 0x28 0x25 PUSH23 0x8D6D1BD9517D4CF4AE17B3399DA47E7B56EDE4FFB42CFF PUSH4 0x5F0C6E5 PUSH5 0x736F6C6343 STOP ADDMOD MUL STOP CALLER ",
  "pcMap": {
    "0": {
      "offset": [
        303,
        3809
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x80"
    },
    "2": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x40"
    },
    "4": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "MSTORE",
      "path": "73"
    },
    "5": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "CALLVALUE",
      "path": "73"
    },
    "6": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "DUP1",
      "path": "73"
    },
    "7": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "ISZERO",
      "path": "73"
    },
    "8": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x10"
    },
    "11": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "JUMPI",
      "path": "73"
    },
    "12": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x0"
    },
    "14": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "DUP1",
      "path": "73"
    },
    "15": {
      "dev": "Cannot send ether to nonpayable function",
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "REVERT",
      "path": "73"
    },
    "16": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "17": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "POP",
      "path": "73"
    },
    "18": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x4"
    },
    "20": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "CALLDATASIZE",
      "path": "73"
    },
    "21": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "LT",
      "path": "73"
    },
    "22": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x137"
    },
    "25": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "JUMPI",
      "path": "73"
    },
    "26": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x0"
    },
    "28": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "CALLDATALOAD",
      "path": "73"
    },
    "29": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0xE0"
    },
    "31": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "SHR",
      "path": "73"
    },
    "32": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "DUP1",
      "path": "73"
    },
    "33": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH4",
      "path": "73",
      "value": "0x775A4048"
    },
    "38": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "GT",
      "path": "73"
    },
    "39": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0xB8"
    },
    "42": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "JUMPI",
      "path": "73"
    },
    "43": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "DUP1",
      "path": "73"
    },
    "44": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH4",
      "path": "73",
      "value": "0xC19010A7"
    },
    "49": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "GT",
      "path": "73"
    },
    "50": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x7C"
    },
    "53": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "JUMPI",
      "path": "73"
    },
    "54": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "DUP1",
      "path": "73"
    },
    "55": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH4",
      "path": "73",
      "value": "0xC19010A7"
    },
    "60": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "EQ",
      "path": "73"
    },
    "61": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x301"
    },
    "64": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "JUMPI",
      "path": "73"
    },
    "65": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "DUP1",
      "path": "73"
    },
    "66": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH4",
      "path": "73",
      "value": "0xC4D66DE8"
    },
    "71": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "EQ",
      "path": "73"
    },
    "72": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x314"
    },
    "75": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "JUMPI",
      "path": "73"
    },
    "76": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "DUP1",
      "path": "73"
    },
    "77": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH4",
      "path": "73",
      "value": "0xCA15C873"
    },
    "82": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "EQ",
      "path": "73"
    },
    "83": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x327"
    },
    "86": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "JUMPI",
      "path": "73"
    },
    "87": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "DUP1",
      "path": "73"
    },
    "88": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH4",
      "path": "73",
      "value": "0xD17D0233"
    },
    "93": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "EQ",
      "path": "73"
    },
    "94": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x33A"
    },
    "97": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "JUMPI",
      "path": "73"
    },
    "98": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "DUP1",
      "path": "73"
    },
    "99": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH4",
      "path": "73",
      "value": "0xD49D21C0"
    },
    "104": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "EQ",
      "path": "73"
    },
    "105": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x34D"
    },
    "108": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "JUMPI",
      "path": "73"
    },
    "109": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "DUP1",
      "path": "73"
    },
    "110": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH4",
      "path": "73",
      "value": "0xD547741F"
    },
    "115": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "EQ",
      "path": "73"
    },
    "116": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x373"
    },
    "119": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "JUMPI",
      "path": "73"
    },
    "120": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x137"
    },
    "123": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "JUMP",
      "path": "73"
    },
    "124": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "125": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "DUP1",
      "path": "73"
    },
    "126": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH4",
      "path": "73",
      "value": "0x775A4048"
    },
    "131": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "EQ",
      "path": "73"
    },
    "132": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x26E"
    },
    "135": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "JUMPI",
      "path": "73"
    },
    "136": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "DUP1",
      "path": "73"
    },
    "137": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH4",
      "path": "73",
      "value": "0x79A863F5"
    },
    "142": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "EQ",
      "path": "73"
    },
    "143": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x294"
    },
    "146": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "JUMPI",
      "path": "73"
    },
    "147": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "DUP1",
      "path": "73"
    },
    "148": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH4",
      "path": "73",
      "value": "0x9010D07C"
    },
    "153": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "EQ",
      "path": "73"
    },
    "154": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x2BB"
    },
    "157": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "JUMPI",
      "path": "73"
    },
    "158": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "DUP1",
      "path": "73"
    },
    "159": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH4",
      "path": "73",
      "value": "0x91D14854"
    },
    "164": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "EQ",
      "path": "73"
    },
    "165": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x2E6"
    },
    "168": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "JUMPI",
      "path": "73"
    },
    "169": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "DUP1",
      "path": "73"
    },
    "170": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH4",
      "path": "73",
      "value": "0xA217FDDF"
    },
    "175": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "EQ",
      "path": "73"
    },
    "176": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x2F9"
    },
    "179": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "JUMPI",
      "path": "73"
    },
    "180": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x137"
    },
    "183": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "JUMP",
      "path": "73"
    },
    "184": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "185": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "DUP1",
      "path": "73"
    },
    "186": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH4",
      "path": "73",
      "value": "0x36568ABE"
    },
    "191": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "GT",
      "path": "73"
    },
    "192": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0xFF"
    },
    "195": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "JUMPI",
      "path": "73"
    },
    "196": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "DUP1",
      "path": "73"
    },
    "197": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH4",
      "path": "73",
      "value": "0x36568ABE"
    },
    "202": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "EQ",
      "path": "73"
    },
    "203": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x1E0"
    },
    "206": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "JUMPI",
      "path": "73"
    },
    "207": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "DUP1",
      "path": "73"
    },
    "208": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH4",
      "path": "73",
      "value": "0x3FFDD2F3"
    },
    "213": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "EQ",
      "path": "73"
    },
    "214": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x1F3"
    },
    "217": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "JUMPI",
      "path": "73"
    },
    "218": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "DUP1",
      "path": "73"
    },
    "219": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH4",
      "path": "73",
      "value": "0x52A9C8D7"
    },
    "224": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "EQ",
      "path": "73"
    },
    "225": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x219"
    },
    "228": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "JUMPI",
      "path": "73"
    },
    "229": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "DUP1",
      "path": "73"
    },
    "230": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH4",
      "path": "73",
      "value": "0x68232C69"
    },
    "235": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "EQ",
      "path": "73"
    },
    "236": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x220"
    },
    "239": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "JUMPI",
      "path": "73"
    },
    "240": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "DUP1",
      "path": "73"
    },
    "241": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH4",
      "path": "73",
      "value": "0x6C137EA9"
    },
    "246": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "EQ",
      "path": "73"
    },
    "247": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x247"
    },
    "250": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "JUMPI",
      "path": "73"
    },
    "251": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x137"
    },
    "254": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "JUMP",
      "path": "73"
    },
    "255": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "256": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "DUP1",
      "path": "73"
    },
    "257": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH4",
      "path": "73",
      "value": "0x1FFC9A7"
    },
    "262": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "EQ",
      "path": "73"
    },
    "263": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x13C"
    },
    "266": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "JUMPI",
      "path": "73"
    },
    "267": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "DUP1",
      "path": "73"
    },
    "268": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH4",
      "path": "73",
      "value": "0x12F9A85E"
    },
    "273": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "EQ",
      "path": "73"
    },
    "274": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x164"
    },
    "277": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "JUMPI",
      "path": "73"
    },
    "278": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "DUP1",
      "path": "73"
    },
    "279": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH4",
      "path": "73",
      "value": "0x248A9CA3"
    },
    "284": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "EQ",
      "path": "73"
    },
    "285": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x187"
    },
    "288": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "JUMPI",
      "path": "73"
    },
    "289": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "DUP1",
      "path": "73"
    },
    "290": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH4",
      "path": "73",
      "value": "0x274B02A7"
    },
    "295": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "EQ",
      "path": "73"
    },
    "296": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x1B8"
    },
    "299": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "JUMPI",
      "path": "73"
    },
    "300": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "DUP1",
      "path": "73"
    },
    "301": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH4",
      "path": "73",
      "value": "0x2F2FF15D"
    },
    "306": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "EQ",
      "path": "73"
    },
    "307": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x1CD"
    },
    "310": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "JUMPI",
      "path": "73"
    },
    "311": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "312": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x0"
    },
    "314": {
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "DUP1",
      "path": "73"
    },
    "315": {
      "first_revert": true,
      "fn": null,
      "offset": [
        303,
        3809
      ],
      "op": "REVERT",
      "path": "73"
    },
    "316": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        634,
        846
      ],
      "op": "JUMPDEST",
      "path": "1"
    },
    "317": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        634,
        846
      ],
      "op": "PUSH2",
      "path": "1",
      "value": "0x14F"
    },
    "320": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        634,
        846
      ],
      "op": "PUSH2",
      "path": "1",
      "value": "0x14A"
    },
    "323": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        634,
        846
      ],
      "op": "CALLDATASIZE",
      "path": "1"
    },
    "324": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        634,
        846
      ],
      "op": "PUSH1",
      "path": "1",
      "value": "0x4"
    },
    "326": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        634,
        846
      ],
      "op": "PUSH2",
      "path": "1",
      "value": "0x1305"
    },
    "329": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "jump": "i",
      "offset": [
        634,
        846
      ],
      "op": "JUMP",
      "path": "1"
    },
    "330": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        634,
        846
      ],
      "op": "JUMPDEST",
      "path": "1"
    },
    "331": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        634,
        846
      ],
      "op": "PUSH2",
      "path": "1",
      "value": "0x386"
    },
    "334": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "jump": "i",
      "offset": [
        634,
        846
      ],
      "op": "JUMP",
      "path": "1"
    },
    "335": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        634,
        846
      ],
      "op": "JUMPDEST",
      "path": "1"
    },
    "336": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        634,
        846
      ],
      "op": "PUSH1",
      "path": "1",
      "value": "0x40"
    },
    "338": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        634,
        846
      ],
      "op": "MLOAD",
      "path": "1"
    },
    "339": {
      "op": "SWAP1"
    },
    "340": {
      "op": "ISZERO"
    },
    "341": {
      "op": "ISZERO"
    },
    "342": {
      "op": "DUP2"
    },
    "343": {
      "op": "MSTORE"
    },
    "344": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "346": {
      "op": "ADD"
    },
    "347": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        634,
        846
      ],
      "op": "JUMPDEST",
      "path": "1"
    },
    "348": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        634,
        846
      ],
      "op": "PUSH1",
      "path": "1",
      "value": "0x40"
    },
    "350": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        634,
        846
      ],
      "op": "MLOAD",
      "path": "1"
    },
    "351": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        634,
        846
      ],
      "op": "DUP1",
      "path": "1"
    },
    "352": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        634,
        846
      ],
      "op": "SWAP2",
      "path": "1"
    },
    "353": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        634,
        846
      ],
      "op": "SUB",
      "path": "1"
    },
    "354": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        634,
        846
      ],
      "op": "SWAP1",
      "path": "1"
    },
    "355": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        634,
        846
      ],
      "op": "RETURN",
      "path": "1"
    },
    "356": {
      "offset": [
        882,
        923
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "357": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        882,
        923
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x14F"
    },
    "360": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        882,
        923
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x172"
    },
    "363": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        882,
        923
      ],
      "op": "CALLDATASIZE",
      "path": "73"
    },
    "364": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        882,
        923
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x4"
    },
    "366": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        882,
        923
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x129D"
    },
    "369": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "jump": "i",
      "offset": [
        882,
        923
      ],
      "op": "JUMP",
      "path": "73"
    },
    "370": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        882,
        923
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "371": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        882,
        923
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x4"
    },
    "373": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        882,
        923
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x20"
    },
    "375": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        882,
        923
      ],
      "op": "MSTORE",
      "path": "73"
    },
    "376": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        882,
        923
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x0"
    },
    "378": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        882,
        923
      ],
      "op": "SWAP1",
      "path": "73"
    },
    "379": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        882,
        923
      ],
      "op": "DUP2",
      "path": "73"
    },
    "380": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        882,
        923
      ],
      "op": "MSTORE",
      "path": "73"
    },
    "381": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        882,
        923
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x40"
    },
    "383": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        882,
        923
      ],
      "op": "SWAP1",
      "path": "73"
    },
    "384": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        882,
        923
      ],
      "op": "KECCAK256",
      "path": "73"
    },
    "385": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        882,
        923
      ],
      "op": "SLOAD",
      "path": "73"
    },
    "386": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        882,
        923
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0xFF"
    },
    "388": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        882,
        923
      ],
      "op": "AND",
      "path": "73"
    },
    "389": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        882,
        923
      ],
      "op": "DUP2",
      "path": "73"
    },
    "390": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        882,
        923
      ],
      "op": "JUMP",
      "path": "73"
    },
    "391": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4391,
        4520
      ],
      "op": "JUMPDEST",
      "path": "0"
    },
    "392": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4391,
        4520
      ],
      "op": "PUSH2",
      "path": "0",
      "value": "0x1AA"
    },
    "395": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4391,
        4520
      ],
      "op": "PUSH2",
      "path": "0",
      "value": "0x195"
    },
    "398": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4391,
        4520
      ],
      "op": "CALLDATASIZE",
      "path": "0"
    },
    "399": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4391,
        4520
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x4"
    },
    "401": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4391,
        4520
      ],
      "op": "PUSH2",
      "path": "0",
      "value": "0x129D"
    },
    "404": {
      "fn": "AccessControl.getRoleAdmin",
      "jump": "i",
      "offset": [
        4391,
        4520
      ],
      "op": "JUMP",
      "path": "0"
    },
    "405": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4391,
        4520
      ],
      "op": "JUMPDEST",
      "path": "0"
    },
    "406": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4465,
        4472
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x0"
    },
    "408": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4503
      ],
      "op": "SWAP1",
      "path": "0",
      "statement": 0
    },
    "409": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4503
      ],
      "op": "DUP2",
      "path": "0"
    },
    "410": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4503
      ],
      "op": "MSTORE",
      "path": "0"
    },
    "411": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4497
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x2"
    },
    "413": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4503
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x20"
    },
    "415": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4503
      ],
      "op": "MSTORE",
      "path": "0"
    },
    "416": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4503
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x40"
    },
    "418": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4503
      ],
      "op": "SWAP1",
      "path": "0"
    },
    "419": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4503
      ],
      "op": "KECCAK256",
      "path": "0"
    },
    "420": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4513
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x1"
    },
    "422": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4513
      ],
      "op": "ADD",
      "path": "0"
    },
    "423": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4513
      ],
      "op": "SLOAD",
      "path": "0"
    },
    "424": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4513
      ],
      "op": "SWAP1",
      "path": "0"
    },
    "425": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4391,
        4520
      ],
      "op": "JUMP",
      "path": "0"
    },
    "426": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4391,
        4520
      ],
      "op": "JUMPDEST",
      "path": "0"
    },
    "427": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4391,
        4520
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x40"
    },
    "429": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4391,
        4520
      ],
      "op": "MLOAD",
      "path": "0"
    },
    "430": {
      "op": "SWAP1"
    },
    "431": {
      "op": "DUP2"
    },
    "432": {
      "op": "MSTORE"
    },
    "433": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "435": {
      "op": "ADD"
    },
    "436": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4391,
        4520
      ],
      "op": "PUSH2",
      "path": "0",
      "value": "0x15B"
    },
    "439": {
      "op": "JUMP"
    },
    "440": {
      "fn": "AccessController.addRole",
      "offset": [
        2514,
        2719
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "441": {
      "fn": "AccessController.addRole",
      "offset": [
        2514,
        2719
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x1CB"
    },
    "444": {
      "fn": "AccessController.addRole",
      "offset": [
        2514,
        2719
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x1C6"
    },
    "447": {
      "fn": "AccessController.addRole",
      "offset": [
        2514,
        2719
      ],
      "op": "CALLDATASIZE",
      "path": "73"
    },
    "448": {
      "fn": "AccessController.addRole",
      "offset": [
        2514,
        2719
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x4"
    },
    "450": {
      "fn": "AccessController.addRole",
      "offset": [
        2514,
        2719
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x129D"
    },
    "453": {
      "fn": "AccessController.addRole",
      "jump": "i",
      "offset": [
        2514,
        2719
      ],
      "op": "JUMP",
      "path": "73"
    },
    "454": {
      "fn": "AccessController.addRole",
      "offset": [
        2514,
        2719
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "455": {
      "fn": "AccessController.addRole",
      "offset": [
        2514,
        2719
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x3B3"
    },
    "458": {
      "fn": "AccessController.addRole",
      "jump": "i",
      "offset": [
        2514,
        2719
      ],
      "op": "JUMP",
      "path": "73"
    },
    "459": {
      "fn": "AccessController.addRole",
      "offset": [
        2514,
        2719
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "460": {
      "fn": "AccessController.addRole",
      "offset": [
        2514,
        2719
      ],
      "op": "STOP",
      "path": "73"
    },
    "461": {
      "fn": "AccessController.grantRole",
      "offset": [
        1750,
        2028
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "462": {
      "fn": "AccessController.grantRole",
      "offset": [
        1750,
        2028
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x1CB"
    },
    "465": {
      "fn": "AccessController.grantRole",
      "offset": [
        1750,
        2028
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x1DB"
    },
    "468": {
      "fn": "AccessController.grantRole",
      "offset": [
        1750,
        2028
      ],
      "op": "CALLDATASIZE",
      "path": "73"
    },
    "469": {
      "fn": "AccessController.grantRole",
      "offset": [
        1750,
        2028
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x4"
    },
    "471": {
      "fn": "AccessController.grantRole",
      "offset": [
        1750,
        2028
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x12B5"
    },
    "474": {
      "fn": "AccessController.grantRole",
      "jump": "i",
      "offset": [
        1750,
        2028
      ],
      "op": "JUMP",
      "path": "73"
    },
    "475": {
      "fn": "AccessController.grantRole",
      "offset": [
        1750,
        2028
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "476": {
      "fn": "AccessController.grantRole",
      "offset": [
        1750,
        2028
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x4EA"
    },
    "479": {
      "fn": "AccessController.grantRole",
      "jump": "i",
      "offset": [
        1750,
        2028
      ],
      "op": "JUMP",
      "path": "73"
    },
    "480": {
      "fn": "AccessController.renounceRole",
      "offset": [
        2245,
        2424
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "481": {
      "fn": "AccessController.renounceRole",
      "offset": [
        2245,
        2424
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x1CB"
    },
    "484": {
      "fn": "AccessController.renounceRole",
      "offset": [
        2245,
        2424
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x1EE"
    },
    "487": {
      "fn": "AccessController.renounceRole",
      "offset": [
        2245,
        2424
      ],
      "op": "CALLDATASIZE",
      "path": "73"
    },
    "488": {
      "fn": "AccessController.renounceRole",
      "offset": [
        2245,
        2424
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x4"
    },
    "490": {
      "fn": "AccessController.renounceRole",
      "offset": [
        2245,
        2424
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x12B5"
    },
    "493": {
      "fn": "AccessController.renounceRole",
      "jump": "i",
      "offset": [
        2245,
        2424
      ],
      "op": "JUMP",
      "path": "73"
    },
    "494": {
      "fn": "AccessController.renounceRole",
      "offset": [
        2245,
        2424
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "495": {
      "fn": "AccessController.renounceRole",
      "offset": [
        2245,
        2424
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x60A"
    },
    "498": {
      "fn": "AccessController.renounceRole",
      "jump": "i",
      "offset": [
        2245,
        2424
      ],
      "op": "JUMP",
      "path": "73"
    },
    "499": {
      "fn": "AccessController.getRiskpoolKeeperRole",
      "offset": [
        3498,
        3613
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "500": {
      "offset": [
        842,
        875
      ],
      "op": "PUSH32",
      "path": "73",
      "value": "0x3C4CDB47519F2F89924EBEB1EE7A8A43B8B00120826915726460BB24576012FD"
    },
    "533": {
      "fn": "AccessController.getRiskpoolKeeperRole",
      "offset": [
        3498,
        3613
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x1AA"
    },
    "536": {
      "fn": "AccessController.getRiskpoolKeeperRole",
      "offset": [
        3498,
        3613
      ],
      "op": "JUMP",
      "path": "73"
    },
    "537": {
      "fn": "AccessController.getDefaultAdminRole",
      "offset": [
        3143,
        3254
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "538": {
      "fn": "AccessController.getDefaultAdminRole",
      "offset": [
        3203,
        3210
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x0"
    },
    "540": {
      "fn": "AccessController.getDefaultAdminRole",
      "offset": [
        3143,
        3254
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x1AA"
    },
    "543": {
      "fn": "AccessController.getDefaultAdminRole",
      "offset": [
        3143,
        3254
      ],
      "op": "JUMP",
      "path": "73"
    },
    "544": {
      "offset": [
        795,
        875
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "545": {
      "fn": "AccessController.getDefaultAdminRole",
      "offset": [
        795,
        875
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x1AA"
    },
    "548": {
      "offset": [
        842,
        875
      ],
      "op": "PUSH32",
      "path": "73",
      "value": "0x3C4CDB47519F2F89924EBEB1EE7A8A43B8B00120826915726460BB24576012FD"
    },
    "581": {
      "offset": [
        795,
        875
      ],
      "op": "DUP2",
      "path": "73"
    },
    "582": {
      "fn": "AccessController.getDefaultAdminRole",
      "offset": [
        795,
        875
      ],
      "op": "JUMP",
      "path": "73"
    },
    "583": {
      "offset": [
        477,
        553
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "584": {
      "fn": "AccessController.getDefaultAdminRole",
      "offset": [
        477,
        553
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x1AA"
    },
    "587": {
      "offset": [
        522,
        553
      ],
      "op": "PUSH32",
      "path": "73",
      "value": "0xE984CFD1D1FA34F80E24DDB2A60C8300359D79EEE44555BC35C106EB020394CD"
    },
    "620": {
      "offset": [
        477,
        553
      ],
      "op": "DUP2",
      "path": "73"
    },
    "621": {
      "fn": "AccessController.getDefaultAdminRole",
      "offset": [
        477,
        553
      ],
      "op": "JUMP",
      "path": "73"
    },
    "622": {
      "fn": "AccessController.getProductOwnerRole",
      "offset": [
        3260,
        3371
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "623": {
      "offset": [
        522,
        553
      ],
      "op": "PUSH32",
      "path": "73",
      "value": "0xE984CFD1D1FA34F80E24DDB2A60C8300359D79EEE44555BC35C106EB020394CD"
    },
    "656": {
      "fn": "AccessController.getProductOwnerRole",
      "offset": [
        3260,
        3371
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x1AA"
    },
    "659": {
      "fn": "AccessController.getProductOwnerRole",
      "offset": [
        3260,
        3371
      ],
      "op": "JUMP",
      "path": "73"
    },
    "660": {
      "offset": [
        634,
        714
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "661": {
      "fn": "AccessController.getProductOwnerRole",
      "offset": [
        634,
        714
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x1AA"
    },
    "664": {
      "offset": [
        681,
        714
      ],
      "op": "PUSH32",
      "path": "73",
      "value": "0xD26B4CD59FFA91E4599F3D18B02FCD5FFB06E03216F3EE5F25F68DC75CBBBAA2"
    },
    "697": {
      "offset": [
        634,
        714
      ],
      "op": "DUP2",
      "path": "73"
    },
    "698": {
      "fn": "AccessController.getProductOwnerRole",
      "offset": [
        634,
        714
      ],
      "op": "JUMP",
      "path": "73"
    },
    "699": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1431,
        1582
      ],
      "op": "JUMPDEST",
      "path": "1"
    },
    "700": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1431,
        1582
      ],
      "op": "PUSH2",
      "path": "1",
      "value": "0x2CE"
    },
    "703": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1431,
        1582
      ],
      "op": "PUSH2",
      "path": "1",
      "value": "0x2C9"
    },
    "706": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1431,
        1582
      ],
      "op": "CALLDATASIZE",
      "path": "1"
    },
    "707": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1431,
        1582
      ],
      "op": "PUSH1",
      "path": "1",
      "value": "0x4"
    },
    "709": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1431,
        1582
      ],
      "op": "PUSH2",
      "path": "1",
      "value": "0x12E4"
    },
    "712": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "jump": "i",
      "offset": [
        1431,
        1582
      ],
      "op": "JUMP",
      "path": "1"
    },
    "713": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1431,
        1582
      ],
      "op": "JUMPDEST",
      "path": "1"
    },
    "714": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1431,
        1582
      ],
      "op": "PUSH2",
      "path": "1",
      "value": "0x614"
    },
    "717": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "jump": "i",
      "offset": [
        1431,
        1582
      ],
      "op": "JUMP",
      "path": "1"
    },
    "718": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1431,
        1582
      ],
      "op": "JUMPDEST",
      "path": "1"
    },
    "719": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1431,
        1582
      ],
      "op": "PUSH1",
      "path": "1",
      "value": "0x40"
    },
    "721": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1431,
        1582
      ],
      "op": "MLOAD",
      "path": "1"
    },
    "722": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "724": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "726": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "728": {
      "op": "SHL"
    },
    "729": {
      "op": "SUB"
    },
    "730": {
      "op": "SWAP1"
    },
    "731": {
      "op": "SWAP2"
    },
    "732": {
      "op": "AND"
    },
    "733": {
      "op": "DUP2"
    },
    "734": {
      "op": "MSTORE"
    },
    "735": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "737": {
      "op": "ADD"
    },
    "738": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1431,
        1582
      ],
      "op": "PUSH2",
      "path": "1",
      "value": "0x15B"
    },
    "741": {
      "op": "JUMP"
    },
    "742": {
      "fn": "AccessController.hasRole",
      "offset": [
        2942,
        3137
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "743": {
      "fn": "AccessController.hasRole",
      "offset": [
        2942,
        3137
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x14F"
    },
    "746": {
      "fn": "AccessController.hasRole",
      "offset": [
        2942,
        3137
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x2F4"
    },
    "749": {
      "fn": "AccessController.hasRole",
      "offset": [
        2942,
        3137
      ],
      "op": "CALLDATASIZE",
      "path": "73"
    },
    "750": {
      "fn": "AccessController.hasRole",
      "offset": [
        2942,
        3137
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x4"
    },
    "752": {
      "fn": "AccessController.hasRole",
      "offset": [
        2942,
        3137
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x12B5"
    },
    "755": {
      "fn": "AccessController.hasRole",
      "jump": "i",
      "offset": [
        2942,
        3137
      ],
      "op": "JUMP",
      "path": "73"
    },
    "756": {
      "fn": "AccessController.hasRole",
      "offset": [
        2942,
        3137
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "757": {
      "fn": "AccessController.hasRole",
      "offset": [
        2942,
        3137
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x635"
    },
    "760": {
      "fn": "AccessController.hasRole",
      "jump": "i",
      "offset": [
        2942,
        3137
      ],
      "op": "JUMP",
      "path": "73"
    },
    "761": {
      "offset": [
        2027,
        2076
      ],
      "op": "JUMPDEST",
      "path": "0"
    },
    "762": {
      "fn": "AccessController.hasRole",
      "offset": [
        2027,
        2076
      ],
      "op": "PUSH2",
      "path": "0",
      "value": "0x1AA"
    },
    "765": {
      "offset": [
        2072,
        2076
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x0"
    },
    "767": {
      "offset": [
        2027,
        2076
      ],
      "op": "DUP2",
      "path": "0"
    },
    "768": {
      "fn": "AccessController.hasRole",
      "offset": [
        2027,
        2076
      ],
      "op": "JUMP",
      "path": "0"
    },
    "769": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1419,
        1664
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "770": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1419,
        1664
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x1CB"
    },
    "773": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1419,
        1664
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x30F"
    },
    "776": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1419,
        1664
      ],
      "op": "CALLDATASIZE",
      "path": "73"
    },
    "777": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1419,
        1664
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x4"
    },
    "779": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1419,
        1664
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x1245"
    },
    "782": {
      "fn": "AccessController.setDefaultAdminRole",
      "jump": "i",
      "offset": [
        1419,
        1664
      ],
      "op": "JUMP",
      "path": "73"
    },
    "783": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1419,
        1664
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "784": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1419,
        1664
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x660"
    },
    "787": {
      "fn": "AccessController.setDefaultAdminRole",
      "jump": "i",
      "offset": [
        1419,
        1664
      ],
      "op": "JUMP",
      "path": "73"
    },
    "788": {
      "fn": "CoreController.initialize",
      "offset": [
        1143,
        1375
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "789": {
      "fn": "CoreController.initialize",
      "offset": [
        1143,
        1375
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x1CB"
    },
    "792": {
      "fn": "CoreController.initialize",
      "offset": [
        1143,
        1375
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x322"
    },
    "795": {
      "fn": "CoreController.initialize",
      "offset": [
        1143,
        1375
      ],
      "op": "CALLDATASIZE",
      "path": "88"
    },
    "796": {
      "fn": "CoreController.initialize",
      "offset": [
        1143,
        1375
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x4"
    },
    "798": {
      "fn": "CoreController.initialize",
      "offset": [
        1143,
        1375
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x1245"
    },
    "801": {
      "fn": "CoreController.initialize",
      "jump": "i",
      "offset": [
        1143,
        1375
      ],
      "op": "JUMP",
      "path": "88"
    },
    "802": {
      "fn": "CoreController.initialize",
      "offset": [
        1143,
        1375
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "803": {
      "fn": "CoreController.initialize",
      "offset": [
        1143,
        1375
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x6DA"
    },
    "806": {
      "fn": "CoreController.initialize",
      "jump": "i",
      "offset": [
        1143,
        1375
      ],
      "op": "JUMP",
      "path": "88"
    },
    "807": {
      "fn": "AccessControlEnumerable.getRoleMemberCount",
      "offset": [
        1750,
        1890
      ],
      "op": "JUMPDEST",
      "path": "1"
    },
    "808": {
      "fn": "AccessControlEnumerable.getRoleMemberCount",
      "offset": [
        1750,
        1890
      ],
      "op": "PUSH2",
      "path": "1",
      "value": "0x1AA"
    },
    "811": {
      "fn": "AccessControlEnumerable.getRoleMemberCount",
      "offset": [
        1750,
        1890
      ],
      "op": "PUSH2",
      "path": "1",
      "value": "0x335"
    },
    "814": {
      "fn": "AccessControlEnumerable.getRoleMemberCount",
      "offset": [
        1750,
        1890
      ],
      "op": "CALLDATASIZE",
      "path": "1"
    },
    "815": {
      "fn": "AccessControlEnumerable.getRoleMemberCount",
      "offset": [
        1750,
        1890
      ],
      "op": "PUSH1",
      "path": "1",
      "value": "0x4"
    },
    "817": {
      "fn": "AccessControlEnumerable.getRoleMemberCount",
      "offset": [
        1750,
        1890
      ],
      "op": "PUSH2",
      "path": "1",
      "value": "0x129D"
    },
    "820": {
      "fn": "AccessControlEnumerable.getRoleMemberCount",
      "jump": "i",
      "offset": [
        1750,
        1890
      ],
      "op": "JUMP",
      "path": "1"
    },
    "821": {
      "fn": "AccessControlEnumerable.getRoleMemberCount",
      "offset": [
        1750,
        1890
      ],
      "op": "JUMPDEST",
      "path": "1"
    },
    "822": {
      "fn": "AccessControlEnumerable.getRoleMemberCount",
      "offset": [
        1750,
        1890
      ],
      "op": "PUSH2",
      "path": "1",
      "value": "0x909"
    },
    "825": {
      "fn": "AccessControlEnumerable.getRoleMemberCount",
      "jump": "i",
      "offset": [
        1750,
        1890
      ],
      "op": "JUMP",
      "path": "1"
    },
    "826": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2725,
        2936
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "827": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2725,
        2936
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x1CB"
    },
    "830": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2725,
        2936
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x348"
    },
    "833": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2725,
        2936
      ],
      "op": "CALLDATASIZE",
      "path": "73"
    },
    "834": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2725,
        2936
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x4"
    },
    "836": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2725,
        2936
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x129D"
    },
    "839": {
      "fn": "AccessController.invalidateRole",
      "jump": "i",
      "offset": [
        2725,
        2936
      ],
      "op": "JUMP",
      "path": "73"
    },
    "840": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2725,
        2936
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "841": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2725,
        2936
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x920"
    },
    "844": {
      "fn": "AccessController.invalidateRole",
      "jump": "i",
      "offset": [
        2725,
        2936
      ],
      "op": "JUMP",
      "path": "73"
    },
    "845": {
      "fn": "AccessController.getOracleProviderRole",
      "offset": [
        3377,
        3492
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "846": {
      "offset": [
        681,
        714
      ],
      "op": "PUSH32",
      "path": "73",
      "value": "0xD26B4CD59FFA91E4599F3D18B02FCD5FFB06E03216F3EE5F25F68DC75CBBBAA2"
    },
    "879": {
      "fn": "AccessController.getOracleProviderRole",
      "offset": [
        3377,
        3492
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x1AA"
    },
    "882": {
      "fn": "AccessController.getOracleProviderRole",
      "offset": [
        3377,
        3492
      ],
      "op": "JUMP",
      "path": "73"
    },
    "883": {
      "fn": "AccessController.revokeRole",
      "offset": [
        2034,
        2239
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "884": {
      "fn": "AccessController.revokeRole",
      "offset": [
        2034,
        2239
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x1CB"
    },
    "887": {
      "fn": "AccessController.revokeRole",
      "offset": [
        2034,
        2239
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x381"
    },
    "890": {
      "fn": "AccessController.revokeRole",
      "offset": [
        2034,
        2239
      ],
      "op": "CALLDATASIZE",
      "path": "73"
    },
    "891": {
      "fn": "AccessController.revokeRole",
      "offset": [
        2034,
        2239
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x4"
    },
    "893": {
      "fn": "AccessController.revokeRole",
      "offset": [
        2034,
        2239
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x12B5"
    },
    "896": {
      "fn": "AccessController.revokeRole",
      "jump": "i",
      "offset": [
        2034,
        2239
      ],
      "op": "JUMP",
      "path": "73"
    },
    "897": {
      "fn": "AccessController.revokeRole",
      "offset": [
        2034,
        2239
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "898": {
      "fn": "AccessController.revokeRole",
      "offset": [
        2034,
        2239
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0xA4A"
    },
    "901": {
      "fn": "AccessController.revokeRole",
      "jump": "i",
      "offset": [
        2034,
        2239
      ],
      "op": "JUMP",
      "path": "73"
    },
    "902": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        634,
        846
      ],
      "op": "JUMPDEST",
      "path": "1"
    },
    "903": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        719,
        723
      ],
      "op": "PUSH1",
      "path": "1",
      "value": "0x0"
    },
    "905": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "907": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "909": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "911": {
      "op": "SHL"
    },
    "912": {
      "op": "SUB"
    },
    "913": {
      "op": "NOT"
    },
    "914": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        742,
        799
      ],
      "op": "DUP3",
      "path": "1",
      "statement": 1
    },
    "915": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        742,
        799
      ],
      "op": "AND",
      "path": "1"
    },
    "916": {
      "op": "PUSH4",
      "value": "0x5A05180F"
    },
    "921": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "923": {
      "op": "SHL"
    },
    "924": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        742,
        799
      ],
      "op": "EQ",
      "path": "1"
    },
    "925": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        742,
        799
      ],
      "op": "DUP1",
      "path": "1"
    },
    "926": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        742,
        839
      ],
      "op": "PUSH2",
      "path": "1",
      "value": "0x3AB"
    },
    "929": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        742,
        839
      ],
      "op": "JUMPI",
      "path": "1"
    },
    "930": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        742,
        839
      ],
      "op": "POP",
      "path": "1"
    },
    "931": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        803,
        839
      ],
      "op": "PUSH2",
      "path": "1",
      "value": "0x3AB"
    },
    "934": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        827,
        838
      ],
      "op": "DUP3",
      "path": "1"
    },
    "935": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        803,
        826
      ],
      "op": "PUSH2",
      "path": "1",
      "value": "0xAFA"
    },
    "938": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "jump": "i",
      "offset": [
        803,
        839
      ],
      "op": "JUMP",
      "path": "1"
    },
    "939": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        803,
        839
      ],
      "op": "JUMPDEST",
      "path": "1"
    },
    "940": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        735,
        839
      ],
      "op": "SWAP1",
      "path": "1"
    },
    "941": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        735,
        839
      ],
      "op": "POP",
      "path": "1"
    },
    "942": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        634,
        846
      ],
      "op": "JUMPDEST",
      "path": "1"
    },
    "943": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        634,
        846
      ],
      "op": "SWAP2",
      "path": "1"
    },
    "944": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        634,
        846
      ],
      "op": "SWAP1",
      "path": "1"
    },
    "945": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "offset": [
        634,
        846
      ],
      "op": "POP",
      "path": "1"
    },
    "946": {
      "fn": "AccessControlEnumerable.supportsInterface",
      "jump": "o",
      "offset": [
        634,
        846
      ],
      "op": "JUMP",
      "path": "1"
    },
    "947": {
      "fn": "AccessController.addRole",
      "offset": [
        2514,
        2719
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "948": {
      "offset": [
        564,
        573
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x0"
    },
    "950": {
      "fn": "AccessController.addRole",
      "offset": [
        564,
        573
      ],
      "op": "SLOAD",
      "path": "88"
    },
    "951": {
      "fn": "AccessController.addRole",
      "offset": [
        564,
        573
      ],
      "op": "PUSH3",
      "path": "88",
      "value": "0x10000"
    },
    "955": {
      "fn": "AccessController.addRole",
      "offset": [
        564,
        573
      ],
      "op": "SWAP1",
      "path": "88"
    },
    "956": {
      "fn": "AccessController.addRole",
      "offset": [
        564,
        573
      ],
      "op": "DIV",
      "path": "88"
    },
    "957": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "959": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "961": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "963": {
      "op": "SHL"
    },
    "964": {
      "op": "SUB"
    },
    "965": {
      "offset": [
        564,
        573
      ],
      "op": "AND",
      "path": "88"
    },
    "966": {
      "offset": [
        564,
        586
      ],
      "op": "PUSH4",
      "path": "88",
      "value": "0x2CA65A79"
    },
    "971": {
      "offset": [
        587,
        599
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x3D1"
    },
    "974": {
      "fn": "Context._msgSender",
      "offset": [
        719,
        729
      ],
      "op": "CALLER",
      "path": "22",
      "statement": 2
    },
    "975": {
      "fn": "Context._msgSender",
      "offset": [
        640,
        736
      ],
      "op": "SWAP1",
      "path": "22"
    },
    "976": {
      "fn": "Context._msgSender",
      "offset": [
        640,
        736
      ],
      "op": "JUMP",
      "path": "22"
    },
    "977": {
      "offset": [
        587,
        599
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "978": {
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x40"
    },
    "980": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "MLOAD",
      "path": "88"
    },
    "981": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP3",
      "path": "88"
    },
    "982": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH4",
      "path": "88",
      "value": "0xFFFFFFFF"
    },
    "987": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "AND",
      "path": "88"
    },
    "988": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0xE0"
    },
    "990": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "SHL",
      "path": "88"
    },
    "991": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP2",
      "path": "88"
    },
    "992": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "MSTORE",
      "path": "88"
    },
    "993": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x4"
    },
    "995": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "ADD",
      "path": "88"
    },
    "996": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x3ED"
    },
    "999": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "SWAP2",
      "path": "88"
    },
    "1000": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "SWAP1",
      "path": "88"
    },
    "1001": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x13A2"
    },
    "1004": {
      "fn": "Context._msgSender",
      "jump": "i",
      "offset": [
        564,
        627
      ],
      "op": "JUMP",
      "path": "88"
    },
    "1005": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "1006": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x20"
    },
    "1008": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x40"
    },
    "1010": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "MLOAD",
      "path": "88"
    },
    "1011": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP1",
      "path": "88"
    },
    "1012": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP4",
      "path": "88"
    },
    "1013": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "SUB",
      "path": "88"
    },
    "1014": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP2",
      "path": "88"
    },
    "1015": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP7",
      "path": "88"
    },
    "1016": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP1",
      "path": "88"
    },
    "1017": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "EXTCODESIZE",
      "path": "88"
    },
    "1018": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "ISZERO",
      "path": "88"
    },
    "1019": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP1",
      "path": "88"
    },
    "1020": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "ISZERO",
      "path": "88"
    },
    "1021": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x405"
    },
    "1024": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "JUMPI",
      "path": "88"
    },
    "1025": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x0"
    },
    "1027": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP1",
      "path": "88"
    },
    "1028": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "REVERT",
      "optimizer_revert": true,
      "path": "88"
    },
    "1029": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "1030": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "POP",
      "path": "88"
    },
    "1031": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "GAS",
      "path": "88"
    },
    "1032": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "STATICCALL",
      "path": "88"
    },
    "1033": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "ISZERO",
      "path": "88"
    },
    "1034": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP1",
      "path": "88"
    },
    "1035": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "ISZERO",
      "path": "88"
    },
    "1036": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x419"
    },
    "1039": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "JUMPI",
      "path": "88"
    },
    "1040": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "RETURNDATASIZE",
      "path": "88"
    },
    "1041": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x0"
    },
    "1043": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP1",
      "path": "88"
    },
    "1044": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "RETURNDATACOPY",
      "path": "88"
    },
    "1045": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "RETURNDATASIZE",
      "path": "88"
    },
    "1046": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x0"
    },
    "1048": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "REVERT",
      "path": "88"
    },
    "1049": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "1050": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "POP",
      "path": "88"
    },
    "1051": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "POP",
      "path": "88"
    },
    "1052": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "POP",
      "path": "88"
    },
    "1053": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "POP",
      "path": "88"
    },
    "1054": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x40"
    },
    "1056": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "MLOAD",
      "path": "88"
    },
    "1057": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "RETURNDATASIZE",
      "path": "88"
    },
    "1058": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x1F"
    },
    "1060": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "NOT",
      "path": "88"
    },
    "1061": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x1F"
    },
    "1063": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP3",
      "path": "88"
    },
    "1064": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "ADD",
      "path": "88"
    },
    "1065": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "AND",
      "path": "88"
    },
    "1066": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP3",
      "path": "88"
    },
    "1067": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "ADD",
      "path": "88"
    },
    "1068": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP1",
      "path": "88"
    },
    "1069": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x40"
    },
    "1071": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "MSTORE",
      "path": "88"
    },
    "1072": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "POP",
      "path": "88"
    },
    "1073": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP2",
      "path": "88"
    },
    "1074": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "ADD",
      "path": "88"
    },
    "1075": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "SWAP1",
      "path": "88"
    },
    "1076": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x43D"
    },
    "1079": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "SWAP2",
      "path": "88"
    },
    "1080": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "SWAP1",
      "path": "88"
    },
    "1081": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x127D"
    },
    "1084": {
      "fn": "Context._msgSender",
      "jump": "i",
      "offset": [
        564,
        627
      ],
      "op": "JUMP",
      "path": "88"
    },
    "1085": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "1086": {
      "offset": [
        543,
        679
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x462"
    },
    "1089": {
      "offset": [
        543,
        679
      ],
      "op": "JUMPI",
      "path": "88"
    },
    "1090": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x40"
    },
    "1092": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "MLOAD",
      "path": "88"
    },
    "1093": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1097": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1099": {
      "op": "SHL"
    },
    "1100": {
      "offset": [
        543,
        679
      ],
      "op": "DUP2",
      "path": "88"
    },
    "1101": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "MSTORE",
      "path": "88"
    },
    "1102": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x4"
    },
    "1104": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "ADD",
      "path": "88"
    },
    "1105": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x459"
    },
    "1108": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "SWAP1",
      "path": "88"
    },
    "1109": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x140F"
    },
    "1112": {
      "fn": "Context._msgSender",
      "jump": "i",
      "offset": [
        543,
        679
      ],
      "op": "JUMP",
      "path": "88"
    },
    "1113": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "1114": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x40"
    },
    "1116": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "MLOAD",
      "path": "88"
    },
    "1117": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "DUP1",
      "path": "88"
    },
    "1118": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "SWAP2",
      "path": "88"
    },
    "1119": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "SUB",
      "path": "88"
    },
    "1120": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "SWAP1",
      "path": "88"
    },
    "1121": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "REVERT",
      "path": "88"
    },
    "1122": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "1123": {
      "fn": "AccessController.addRole",
      "offset": [
        2623,
        2638
      ],
      "op": "PUSH1",
      "path": "73",
      "statement": 3,
      "value": "0x0"
    },
    "1125": {
      "fn": "AccessController.addRole",
      "offset": [
        2623,
        2638
      ],
      "op": "DUP2",
      "path": "73"
    },
    "1126": {
      "fn": "AccessController.addRole",
      "offset": [
        2623,
        2638
      ],
      "op": "DUP2",
      "path": "73"
    },
    "1127": {
      "fn": "AccessController.addRole",
      "offset": [
        2623,
        2638
      ],
      "op": "MSTORE",
      "path": "73"
    },
    "1128": {
      "fn": "AccessController.addRole",
      "offset": [
        2623,
        2632
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x4"
    },
    "1130": {
      "fn": "AccessController.addRole",
      "offset": [
        2623,
        2638
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x20"
    },
    "1132": {
      "fn": "AccessController.addRole",
      "offset": [
        2623,
        2638
      ],
      "op": "MSTORE",
      "path": "73"
    },
    "1133": {
      "fn": "AccessController.addRole",
      "offset": [
        2623,
        2638
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x40"
    },
    "1135": {
      "fn": "AccessController.addRole",
      "offset": [
        2623,
        2638
      ],
      "op": "SWAP1",
      "path": "73"
    },
    "1136": {
      "fn": "AccessController.addRole",
      "offset": [
        2623,
        2638
      ],
      "op": "KECCAK256",
      "path": "73"
    },
    "1137": {
      "fn": "AccessController.addRole",
      "offset": [
        2623,
        2638
      ],
      "op": "SLOAD",
      "path": "73"
    },
    "1138": {
      "fn": "AccessController.addRole",
      "offset": [
        2623,
        2638
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0xFF"
    },
    "1140": {
      "fn": "AccessController.addRole",
      "offset": [
        2623,
        2638
      ],
      "op": "AND",
      "path": "73"
    },
    "1141": {
      "branch": 66,
      "fn": "AccessController.addRole",
      "offset": [
        2622,
        2638
      ],
      "op": "ISZERO",
      "path": "73"
    },
    "1142": {
      "fn": "AccessController.addRole",
      "offset": [
        2614,
        2680
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x4CF"
    },
    "1145": {
      "branch": 66,
      "fn": "AccessController.addRole",
      "offset": [
        2614,
        2680
      ],
      "op": "JUMPI",
      "path": "73"
    },
    "1146": {
      "fn": "AccessController.addRole",
      "offset": [
        2614,
        2680
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x40"
    },
    "1148": {
      "fn": "AccessController.addRole",
      "offset": [
        2614,
        2680
      ],
      "op": "MLOAD",
      "path": "73"
    },
    "1149": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1153": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1155": {
      "op": "SHL"
    },
    "1156": {
      "fn": "AccessController.addRole",
      "offset": [
        2614,
        2680
      ],
      "op": "DUP2",
      "path": "73"
    },
    "1157": {
      "fn": "AccessController.addRole",
      "offset": [
        2614,
        2680
      ],
      "op": "MSTORE",
      "path": "73"
    },
    "1158": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1160": {
      "fn": "AccessController.addRole",
      "offset": [
        2614,
        2680
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x4"
    },
    "1162": {
      "fn": "AccessController.addRole",
      "offset": [
        2614,
        2680
      ],
      "op": "DUP3",
      "path": "73"
    },
    "1163": {
      "fn": "AccessController.addRole",
      "offset": [
        2614,
        2680
      ],
      "op": "ADD",
      "path": "73"
    },
    "1164": {
      "op": "MSTORE"
    },
    "1165": {
      "op": "PUSH1",
      "value": "0x25"
    },
    "1167": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "1169": {
      "op": "DUP3"
    },
    "1170": {
      "op": "ADD"
    },
    "1171": {
      "op": "MSTORE"
    },
    "1172": {
      "op": "PUSH32",
      "value": "0x4552524F523A41434C2D3030333A524F4C455F4558495354494E475F414E445F"
    },
    "1205": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "1207": {
      "op": "DUP3"
    },
    "1208": {
      "op": "ADD"
    },
    "1209": {
      "op": "MSTORE"
    },
    "1210": {
      "op": "PUSH5",
      "value": "0x1590531251"
    },
    "1216": {
      "op": "PUSH1",
      "value": "0xDA"
    },
    "1218": {
      "op": "SHL"
    },
    "1219": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "1221": {
      "op": "DUP3"
    },
    "1222": {
      "op": "ADD"
    },
    "1223": {
      "op": "MSTORE"
    },
    "1224": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "1226": {
      "op": "ADD"
    },
    "1227": {
      "fn": "AccessController.addRole",
      "offset": [
        2614,
        2680
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x459"
    },
    "1230": {
      "op": "JUMP"
    },
    "1231": {
      "fn": "AccessController.addRole",
      "offset": [
        2614,
        2680
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "1232": {
      "fn": "AccessController.addRole",
      "offset": [
        2690,
        2705
      ],
      "op": "PUSH1",
      "path": "73",
      "statement": 4,
      "value": "0x0"
    },
    "1234": {
      "fn": "AccessController.addRole",
      "offset": [
        2690,
        2705
      ],
      "op": "SWAP1",
      "path": "73"
    },
    "1235": {
      "fn": "AccessController.addRole",
      "offset": [
        2690,
        2705
      ],
      "op": "DUP2",
      "path": "73"
    },
    "1236": {
      "fn": "AccessController.addRole",
      "offset": [
        2690,
        2705
      ],
      "op": "MSTORE",
      "path": "73"
    },
    "1237": {
      "fn": "AccessController.addRole",
      "offset": [
        2690,
        2699
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x4"
    },
    "1239": {
      "fn": "AccessController.addRole",
      "offset": [
        2690,
        2705
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x20"
    },
    "1241": {
      "fn": "AccessController.addRole",
      "offset": [
        2690,
        2705
      ],
      "op": "MSTORE",
      "path": "73"
    },
    "1242": {
      "fn": "AccessController.addRole",
      "offset": [
        2690,
        2705
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x40"
    },
    "1244": {
      "fn": "AccessController.addRole",
      "offset": [
        2690,
        2705
      ],
      "op": "SWAP1",
      "path": "73"
    },
    "1245": {
      "fn": "AccessController.addRole",
      "offset": [
        2690,
        2705
      ],
      "op": "KECCAK256",
      "path": "73"
    },
    "1246": {
      "fn": "AccessController.addRole",
      "offset": [
        2690,
        2712
      ],
      "op": "DUP1",
      "path": "73"
    },
    "1247": {
      "fn": "AccessController.addRole",
      "offset": [
        2690,
        2712
      ],
      "op": "SLOAD",
      "path": "73"
    },
    "1248": {
      "op": "PUSH1",
      "value": "0xFF"
    },
    "1250": {
      "op": "NOT"
    },
    "1251": {
      "fn": "AccessController.addRole",
      "offset": [
        2690,
        2712
      ],
      "op": "AND",
      "path": "73"
    },
    "1252": {
      "fn": "AccessController.addRole",
      "offset": [
        2708,
        2712
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x1"
    },
    "1254": {
      "fn": "AccessController.addRole",
      "offset": [
        2690,
        2712
      ],
      "op": "OR",
      "path": "73"
    },
    "1255": {
      "fn": "AccessController.addRole",
      "offset": [
        2690,
        2712
      ],
      "op": "SWAP1",
      "path": "73"
    },
    "1256": {
      "fn": "AccessController.addRole",
      "offset": [
        2690,
        2712
      ],
      "op": "SSTORE",
      "path": "73"
    },
    "1257": {
      "fn": "AccessController.addRole",
      "jump": "o",
      "offset": [
        2514,
        2719
      ],
      "op": "JUMP",
      "path": "73"
    },
    "1258": {
      "fn": "AccessController.grantRole",
      "offset": [
        1750,
        2028
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "1259": {
      "offset": [
        564,
        573
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x0"
    },
    "1261": {
      "fn": "AccessController.grantRole",
      "offset": [
        564,
        573
      ],
      "op": "SLOAD",
      "path": "88"
    },
    "1262": {
      "fn": "AccessController.grantRole",
      "offset": [
        564,
        573
      ],
      "op": "PUSH3",
      "path": "88",
      "value": "0x10000"
    },
    "1266": {
      "fn": "AccessController.grantRole",
      "offset": [
        564,
        573
      ],
      "op": "SWAP1",
      "path": "88"
    },
    "1267": {
      "fn": "AccessController.grantRole",
      "offset": [
        564,
        573
      ],
      "op": "DIV",
      "path": "88"
    },
    "1268": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1270": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1272": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1274": {
      "op": "SHL"
    },
    "1275": {
      "op": "SUB"
    },
    "1276": {
      "offset": [
        564,
        573
      ],
      "op": "AND",
      "path": "88"
    },
    "1277": {
      "offset": [
        564,
        586
      ],
      "op": "PUSH4",
      "path": "88",
      "value": "0x2CA65A79"
    },
    "1282": {
      "offset": [
        587,
        599
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x508"
    },
    "1285": {
      "fn": "Context._msgSender",
      "offset": [
        719,
        729
      ],
      "op": "CALLER",
      "path": "22"
    },
    "1286": {
      "fn": "Context._msgSender",
      "offset": [
        640,
        736
      ],
      "op": "SWAP1",
      "path": "22"
    },
    "1287": {
      "fn": "Context._msgSender",
      "offset": [
        640,
        736
      ],
      "op": "JUMP",
      "path": "22"
    },
    "1288": {
      "offset": [
        587,
        599
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "1289": {
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x40"
    },
    "1291": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "MLOAD",
      "path": "88"
    },
    "1292": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP3",
      "path": "88"
    },
    "1293": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH4",
      "path": "88",
      "value": "0xFFFFFFFF"
    },
    "1298": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "AND",
      "path": "88"
    },
    "1299": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0xE0"
    },
    "1301": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "SHL",
      "path": "88"
    },
    "1302": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP2",
      "path": "88"
    },
    "1303": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "MSTORE",
      "path": "88"
    },
    "1304": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x4"
    },
    "1306": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "ADD",
      "path": "88"
    },
    "1307": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x524"
    },
    "1310": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "SWAP2",
      "path": "88"
    },
    "1311": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "SWAP1",
      "path": "88"
    },
    "1312": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x13A2"
    },
    "1315": {
      "fn": "Context._msgSender",
      "jump": "i",
      "offset": [
        564,
        627
      ],
      "op": "JUMP",
      "path": "88"
    },
    "1316": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "1317": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x20"
    },
    "1319": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x40"
    },
    "1321": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "MLOAD",
      "path": "88"
    },
    "1322": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP1",
      "path": "88"
    },
    "1323": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP4",
      "path": "88"
    },
    "1324": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "SUB",
      "path": "88"
    },
    "1325": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP2",
      "path": "88"
    },
    "1326": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP7",
      "path": "88"
    },
    "1327": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP1",
      "path": "88"
    },
    "1328": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "EXTCODESIZE",
      "path": "88"
    },
    "1329": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "ISZERO",
      "path": "88"
    },
    "1330": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP1",
      "path": "88"
    },
    "1331": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "ISZERO",
      "path": "88"
    },
    "1332": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x53C"
    },
    "1335": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "JUMPI",
      "path": "88"
    },
    "1336": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x0"
    },
    "1338": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP1",
      "path": "88"
    },
    "1339": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "REVERT",
      "path": "88"
    },
    "1340": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "1341": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "POP",
      "path": "88"
    },
    "1342": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "GAS",
      "path": "88"
    },
    "1343": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "STATICCALL",
      "path": "88"
    },
    "1344": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "ISZERO",
      "path": "88"
    },
    "1345": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP1",
      "path": "88"
    },
    "1346": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "ISZERO",
      "path": "88"
    },
    "1347": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x550"
    },
    "1350": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "JUMPI",
      "path": "88"
    },
    "1351": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "RETURNDATASIZE",
      "path": "88"
    },
    "1352": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x0"
    },
    "1354": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP1",
      "path": "88"
    },
    "1355": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "RETURNDATACOPY",
      "path": "88"
    },
    "1356": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "RETURNDATASIZE",
      "path": "88"
    },
    "1357": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x0"
    },
    "1359": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "REVERT",
      "path": "88"
    },
    "1360": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "1361": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "POP",
      "path": "88"
    },
    "1362": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "POP",
      "path": "88"
    },
    "1363": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "POP",
      "path": "88"
    },
    "1364": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "POP",
      "path": "88"
    },
    "1365": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x40"
    },
    "1367": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "MLOAD",
      "path": "88"
    },
    "1368": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "RETURNDATASIZE",
      "path": "88"
    },
    "1369": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x1F"
    },
    "1371": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "NOT",
      "path": "88"
    },
    "1372": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x1F"
    },
    "1374": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP3",
      "path": "88"
    },
    "1375": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "ADD",
      "path": "88"
    },
    "1376": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "AND",
      "path": "88"
    },
    "1377": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP3",
      "path": "88"
    },
    "1378": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "ADD",
      "path": "88"
    },
    "1379": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP1",
      "path": "88"
    },
    "1380": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x40"
    },
    "1382": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "MSTORE",
      "path": "88"
    },
    "1383": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "POP",
      "path": "88"
    },
    "1384": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP2",
      "path": "88"
    },
    "1385": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "ADD",
      "path": "88"
    },
    "1386": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "SWAP1",
      "path": "88"
    },
    "1387": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x574"
    },
    "1390": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "SWAP2",
      "path": "88"
    },
    "1391": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "SWAP1",
      "path": "88"
    },
    "1392": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x127D"
    },
    "1395": {
      "fn": "Context._msgSender",
      "jump": "i",
      "offset": [
        564,
        627
      ],
      "op": "JUMP",
      "path": "88"
    },
    "1396": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "1397": {
      "offset": [
        543,
        679
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x590"
    },
    "1400": {
      "offset": [
        543,
        679
      ],
      "op": "JUMPI",
      "path": "88"
    },
    "1401": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x40"
    },
    "1403": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "MLOAD",
      "path": "88"
    },
    "1404": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1408": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1410": {
      "op": "SHL"
    },
    "1411": {
      "offset": [
        543,
        679
      ],
      "op": "DUP2",
      "path": "88"
    },
    "1412": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "MSTORE",
      "path": "88"
    },
    "1413": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x4"
    },
    "1415": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "ADD",
      "path": "88"
    },
    "1416": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x459"
    },
    "1419": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "SWAP1",
      "path": "88"
    },
    "1420": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x140F"
    },
    "1423": {
      "fn": "Context._msgSender",
      "jump": "i",
      "offset": [
        543,
        679
      ],
      "op": "JUMP",
      "path": "88"
    },
    "1424": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "1425": {
      "fn": "AccessController.grantRole",
      "offset": [
        1914,
        1929
      ],
      "op": "PUSH1",
      "path": "73",
      "statement": 5,
      "value": "0x0"
    },
    "1427": {
      "fn": "AccessController.grantRole",
      "offset": [
        1914,
        1929
      ],
      "op": "DUP3",
      "path": "73"
    },
    "1428": {
      "fn": "AccessController.grantRole",
      "offset": [
        1914,
        1929
      ],
      "op": "DUP2",
      "path": "73"
    },
    "1429": {
      "fn": "AccessController.grantRole",
      "offset": [
        1914,
        1929
      ],
      "op": "MSTORE",
      "path": "73"
    },
    "1430": {
      "fn": "AccessController.grantRole",
      "offset": [
        1914,
        1923
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x4"
    },
    "1432": {
      "fn": "AccessController.grantRole",
      "offset": [
        1914,
        1929
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x20"
    },
    "1434": {
      "fn": "AccessController.grantRole",
      "offset": [
        1914,
        1929
      ],
      "op": "MSTORE",
      "path": "73"
    },
    "1435": {
      "fn": "AccessController.grantRole",
      "offset": [
        1914,
        1929
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x40"
    },
    "1437": {
      "fn": "AccessController.grantRole",
      "offset": [
        1914,
        1929
      ],
      "op": "SWAP1",
      "path": "73"
    },
    "1438": {
      "fn": "AccessController.grantRole",
      "offset": [
        1914,
        1929
      ],
      "op": "KECCAK256",
      "path": "73"
    },
    "1439": {
      "fn": "AccessController.grantRole",
      "offset": [
        1914,
        1929
      ],
      "op": "SLOAD",
      "path": "73"
    },
    "1440": {
      "fn": "AccessController.grantRole",
      "offset": [
        1914,
        1929
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0xFF"
    },
    "1442": {
      "branch": 67,
      "fn": "AccessController.grantRole",
      "offset": [
        1914,
        1929
      ],
      "op": "AND",
      "path": "73"
    },
    "1443": {
      "fn": "AccessController.grantRole",
      "offset": [
        1906,
        1971
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x5FC"
    },
    "1446": {
      "branch": 67,
      "fn": "AccessController.grantRole",
      "offset": [
        1906,
        1971
      ],
      "op": "JUMPI",
      "path": "73"
    },
    "1447": {
      "fn": "AccessController.grantRole",
      "offset": [
        1906,
        1971
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x40"
    },
    "1449": {
      "fn": "AccessController.grantRole",
      "offset": [
        1906,
        1971
      ],
      "op": "MLOAD",
      "path": "73"
    },
    "1450": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1454": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1456": {
      "op": "SHL"
    },
    "1457": {
      "fn": "AccessController.grantRole",
      "offset": [
        1906,
        1971
      ],
      "op": "DUP2",
      "path": "73"
    },
    "1458": {
      "fn": "AccessController.grantRole",
      "offset": [
        1906,
        1971
      ],
      "op": "MSTORE",
      "path": "73"
    },
    "1459": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1461": {
      "fn": "AccessController.grantRole",
      "offset": [
        1906,
        1971
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x4"
    },
    "1463": {
      "fn": "AccessController.grantRole",
      "offset": [
        1906,
        1971
      ],
      "op": "DUP3",
      "path": "73"
    },
    "1464": {
      "fn": "AccessController.grantRole",
      "offset": [
        1906,
        1971
      ],
      "op": "ADD",
      "path": "73"
    },
    "1465": {
      "op": "MSTORE"
    },
    "1466": {
      "op": "PUSH1",
      "value": "0x25"
    },
    "1468": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "1470": {
      "op": "DUP3"
    },
    "1471": {
      "op": "ADD"
    },
    "1472": {
      "op": "MSTORE"
    },
    "1473": {
      "op": "PUSH32",
      "value": "0x4552524F523A41434C2D3030323A524F4C455F554E4B4E4F574E5F4F525F494E"
    },
    "1506": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "1508": {
      "op": "DUP3"
    },
    "1509": {
      "op": "ADD"
    },
    "1510": {
      "op": "MSTORE"
    },
    "1511": {
      "op": "PUSH5",
      "value": "0x1590531251"
    },
    "1517": {
      "op": "PUSH1",
      "value": "0xDA"
    },
    "1519": {
      "op": "SHL"
    },
    "1520": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "1522": {
      "op": "DUP3"
    },
    "1523": {
      "op": "ADD"
    },
    "1524": {
      "op": "MSTORE"
    },
    "1525": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "1527": {
      "op": "ADD"
    },
    "1528": {
      "fn": "AccessController.grantRole",
      "offset": [
        1906,
        1971
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x459"
    },
    "1531": {
      "op": "JUMP"
    },
    "1532": {
      "fn": "AccessController.grantRole",
      "offset": [
        1906,
        1971
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "1533": {
      "fn": "AccessController.grantRole",
      "offset": [
        1981,
        2021
      ],
      "op": "PUSH2",
      "path": "73",
      "statement": 6,
      "value": "0x606"
    },
    "1536": {
      "fn": "AccessController.grantRole",
      "offset": [
        2005,
        2009
      ],
      "op": "DUP3",
      "path": "73"
    },
    "1537": {
      "fn": "AccessController.grantRole",
      "offset": [
        2011,
        2020
      ],
      "op": "DUP3",
      "path": "73"
    },
    "1538": {
      "fn": "AccessController.grantRole",
      "offset": [
        1981,
        2004
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0xB2F"
    },
    "1541": {
      "fn": "AccessController.grantRole",
      "jump": "i",
      "offset": [
        1981,
        2021
      ],
      "op": "JUMP",
      "path": "73"
    },
    "1542": {
      "fn": "AccessController.grantRole",
      "offset": [
        1981,
        2021
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "1543": {
      "fn": "AccessController.grantRole",
      "offset": [
        1750,
        2028
      ],
      "op": "POP",
      "path": "73"
    },
    "1544": {
      "fn": "AccessController.grantRole",
      "offset": [
        1750,
        2028
      ],
      "op": "POP",
      "path": "73"
    },
    "1545": {
      "fn": "AccessController.grantRole",
      "jump": "o",
      "offset": [
        1750,
        2028
      ],
      "op": "JUMP",
      "path": "73"
    },
    "1546": {
      "fn": "AccessController.renounceRole",
      "offset": [
        2245,
        2424
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "1547": {
      "fn": "AccessController.renounceRole",
      "offset": [
        2374,
        2417
      ],
      "op": "PUSH2",
      "path": "73",
      "statement": 7,
      "value": "0x606"
    },
    "1550": {
      "fn": "AccessController.renounceRole",
      "offset": [
        2401,
        2405
      ],
      "op": "DUP3",
      "path": "73"
    },
    "1551": {
      "fn": "AccessController.renounceRole",
      "offset": [
        2407,
        2416
      ],
      "op": "DUP3",
      "path": "73"
    },
    "1552": {
      "fn": "AccessController.renounceRole",
      "offset": [
        2374,
        2400
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0xB59"
    },
    "1555": {
      "fn": "AccessController.renounceRole",
      "jump": "i",
      "offset": [
        2374,
        2417
      ],
      "op": "JUMP",
      "path": "73"
    },
    "1556": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1431,
        1582
      ],
      "op": "JUMPDEST",
      "path": "1"
    },
    "1557": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1521,
        1528
      ],
      "op": "PUSH1",
      "path": "1",
      "value": "0x0"
    },
    "1559": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1547,
        1565
      ],
      "op": "DUP3",
      "path": "1",
      "statement": 8
    },
    "1560": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1547,
        1565
      ],
      "op": "DUP2",
      "path": "1"
    },
    "1561": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1547,
        1565
      ],
      "op": "MSTORE",
      "path": "1"
    },
    "1562": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1547,
        1559
      ],
      "op": "PUSH1",
      "path": "1",
      "value": "0x3"
    },
    "1564": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1547,
        1565
      ],
      "op": "PUSH1",
      "path": "1",
      "value": "0x20"
    },
    "1566": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1547,
        1565
      ],
      "op": "MSTORE",
      "path": "1"
    },
    "1567": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1547,
        1565
      ],
      "op": "PUSH1",
      "path": "1",
      "value": "0x40"
    },
    "1569": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1547,
        1565
      ],
      "op": "DUP2",
      "path": "1"
    },
    "1570": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1547,
        1565
      ],
      "op": "KECCAK256",
      "path": "1"
    },
    "1571": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1547,
        1575
      ],
      "op": "PUSH2",
      "path": "1",
      "value": "0x62C"
    },
    "1574": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1547,
        1575
      ],
      "op": "SWAP1",
      "path": "1"
    },
    "1575": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1569,
        1574
      ],
      "op": "DUP4",
      "path": "1"
    },
    "1576": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1547,
        1568
      ],
      "op": "PUSH2",
      "path": "1",
      "value": "0xBD3"
    },
    "1579": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "jump": "i",
      "offset": [
        1547,
        1575
      ],
      "op": "JUMP",
      "path": "1"
    },
    "1580": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1547,
        1575
      ],
      "op": "JUMPDEST",
      "path": "1"
    },
    "1581": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1540,
        1575
      ],
      "op": "SWAP1",
      "path": "1"
    },
    "1582": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1540,
        1575
      ],
      "op": "POP",
      "path": "1"
    },
    "1583": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1431,
        1582
      ],
      "op": "JUMPDEST",
      "path": "1"
    },
    "1584": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1431,
        1582
      ],
      "op": "SWAP3",
      "path": "1"
    },
    "1585": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1431,
        1582
      ],
      "op": "SWAP2",
      "path": "1"
    },
    "1586": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1431,
        1582
      ],
      "op": "POP",
      "path": "1"
    },
    "1587": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "offset": [
        1431,
        1582
      ],
      "op": "POP",
      "path": "1"
    },
    "1588": {
      "fn": "AccessControlEnumerable.getRoleMember",
      "jump": "o",
      "offset": [
        1431,
        1582
      ],
      "op": "JUMP",
      "path": "1"
    },
    "1589": {
      "fn": "AccessController.hasRole",
      "offset": [
        2942,
        3137
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "1590": {
      "fn": "AccessController.hasRole",
      "offset": [
        3073,
        3077
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x0"
    },
    "1592": {
      "fn": "AccessControl.hasRole",
      "offset": [
        3004,
        3016
      ],
      "op": "DUP3",
      "path": "0",
      "statement": 9
    },
    "1593": {
      "fn": "AccessControl.hasRole",
      "offset": [
        3004,
        3016
      ],
      "op": "DUP2",
      "path": "0"
    },
    "1594": {
      "fn": "AccessControl.hasRole",
      "offset": [
        3004,
        3016
      ],
      "op": "MSTORE",
      "path": "0"
    },
    "1595": {
      "fn": "AccessControl.hasRole",
      "offset": [
        3004,
        3010
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x2"
    },
    "1597": {
      "fn": "AccessControl.hasRole",
      "offset": [
        3004,
        3016
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x20"
    },
    "1599": {
      "fn": "AccessControl.hasRole",
      "offset": [
        3004,
        3016
      ],
      "op": "SWAP1",
      "path": "0"
    },
    "1600": {
      "fn": "AccessControl.hasRole",
      "offset": [
        3004,
        3016
      ],
      "op": "DUP2",
      "path": "0"
    },
    "1601": {
      "fn": "AccessControl.hasRole",
      "offset": [
        3004,
        3016
      ],
      "op": "MSTORE",
      "path": "0"
    },
    "1602": {
      "fn": "AccessControl.hasRole",
      "offset": [
        3004,
        3016
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x40"
    },
    "1604": {
      "fn": "AccessControl.hasRole",
      "offset": [
        3004,
        3016
      ],
      "op": "DUP1",
      "path": "0"
    },
    "1605": {
      "fn": "AccessControl.hasRole",
      "offset": [
        3004,
        3016
      ],
      "op": "DUP4",
      "path": "0"
    },
    "1606": {
      "fn": "AccessControl.hasRole",
      "offset": [
        3004,
        3016
      ],
      "op": "KECCAK256",
      "path": "0"
    },
    "1607": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1609": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1611": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1613": {
      "op": "SHL"
    },
    "1614": {
      "op": "SUB"
    },
    "1615": {
      "fn": "AccessControl.hasRole",
      "offset": [
        3004,
        3033
      ],
      "op": "DUP6",
      "path": "0"
    },
    "1616": {
      "fn": "AccessControl.hasRole",
      "offset": [
        3004,
        3033
      ],
      "op": "AND",
      "path": "0"
    },
    "1617": {
      "fn": "AccessControl.hasRole",
      "offset": [
        3004,
        3033
      ],
      "op": "DUP5",
      "path": "0"
    },
    "1618": {
      "fn": "AccessControl.hasRole",
      "offset": [
        3004,
        3033
      ],
      "op": "MSTORE",
      "path": "0"
    },
    "1619": {
      "fn": "AccessControl.hasRole",
      "offset": [
        3004,
        3033
      ],
      "op": "SWAP1",
      "path": "0"
    },
    "1620": {
      "fn": "AccessControl.hasRole",
      "offset": [
        3004,
        3033
      ],
      "op": "SWAP2",
      "path": "0"
    },
    "1621": {
      "fn": "AccessControl.hasRole",
      "offset": [
        3004,
        3033
      ],
      "op": "MSTORE",
      "path": "0"
    },
    "1622": {
      "fn": "AccessControl.hasRole",
      "offset": [
        3004,
        3033
      ],
      "op": "DUP2",
      "path": "0"
    },
    "1623": {
      "fn": "AccessControl.hasRole",
      "offset": [
        3004,
        3033
      ],
      "op": "KECCAK256",
      "path": "0"
    },
    "1624": {
      "fn": "AccessControl.hasRole",
      "offset": [
        3004,
        3033
      ],
      "op": "SLOAD",
      "path": "0"
    },
    "1625": {
      "fn": "AccessControl.hasRole",
      "offset": [
        3004,
        3033
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0xFF"
    },
    "1627": {
      "fn": "AccessControl.hasRole",
      "offset": [
        3004,
        3033
      ],
      "op": "AND",
      "path": "0"
    },
    "1628": {
      "fn": "AccessController.hasRole",
      "offset": [
        3100,
        3130
      ],
      "op": "PUSH2",
      "path": "73",
      "statement": 10,
      "value": "0x62C"
    },
    "1631": {
      "fn": "AccessControl.hasRole",
      "offset": [
        2895,
        3040
      ],
      "op": "JUMP",
      "path": "0"
    },
    "1632": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1419,
        1664
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "1633": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1512,
        1528
      ],
      "op": "PUSH1",
      "path": "73",
      "statement": 11,
      "value": "0x5"
    },
    "1635": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1512,
        1528
      ],
      "op": "SLOAD",
      "path": "73"
    },
    "1636": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1512,
        1528
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0xFF"
    },
    "1638": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1512,
        1528
      ],
      "op": "AND",
      "path": "73"
    },
    "1639": {
      "branch": 68,
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1511,
        1528
      ],
      "op": "ISZERO",
      "path": "73"
    },
    "1640": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1503,
        1569
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x6BF"
    },
    "1643": {
      "branch": 68,
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1503,
        1569
      ],
      "op": "JUMPI",
      "path": "73"
    },
    "1644": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1503,
        1569
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x40"
    },
    "1646": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1503,
        1569
      ],
      "op": "MLOAD",
      "path": "73"
    },
    "1647": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1651": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1653": {
      "op": "SHL"
    },
    "1654": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1503,
        1569
      ],
      "op": "DUP2",
      "path": "73"
    },
    "1655": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1503,
        1569
      ],
      "op": "MSTORE",
      "path": "73"
    },
    "1656": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1658": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1503,
        1569
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x4"
    },
    "1660": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1503,
        1569
      ],
      "op": "DUP3",
      "path": "73"
    },
    "1661": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1503,
        1569
      ],
      "op": "ADD",
      "path": "73"
    },
    "1662": {
      "op": "MSTORE"
    },
    "1663": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "1665": {
      "op": "DUP1"
    },
    "1666": {
      "op": "DUP3"
    },
    "1667": {
      "op": "ADD"
    },
    "1668": {
      "op": "MSTORE"
    },
    "1669": {
      "op": "PUSH32",
      "value": "0x4552524F523A41434C2D3030313A41444D494E5F524F4C455F414C5245414459"
    },
    "1702": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "1704": {
      "op": "DUP3"
    },
    "1705": {
      "op": "ADD"
    },
    "1706": {
      "op": "MSTORE"
    },
    "1707": {
      "op": "PUSH4",
      "value": "0x17D4D155"
    },
    "1712": {
      "op": "PUSH1",
      "value": "0xE2"
    },
    "1714": {
      "op": "SHL"
    },
    "1715": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "1717": {
      "op": "DUP3"
    },
    "1718": {
      "op": "ADD"
    },
    "1719": {
      "op": "MSTORE"
    },
    "1720": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "1722": {
      "op": "ADD"
    },
    "1723": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1503,
        1569
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x459"
    },
    "1726": {
      "op": "JUMP"
    },
    "1727": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1503,
        1569
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "1728": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1579,
        1595
      ],
      "op": "PUSH1",
      "path": "73",
      "statement": 12,
      "value": "0x5"
    },
    "1730": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1579,
        1602
      ],
      "op": "DUP1",
      "path": "73"
    },
    "1731": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1579,
        1602
      ],
      "op": "SLOAD",
      "path": "73"
    },
    "1732": {
      "op": "PUSH1",
      "value": "0xFF"
    },
    "1734": {
      "op": "NOT"
    },
    "1735": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1579,
        1602
      ],
      "op": "AND",
      "path": "73"
    },
    "1736": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1598,
        1602
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x1"
    },
    "1738": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1579,
        1602
      ],
      "op": "OR",
      "path": "73"
    },
    "1739": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1579,
        1602
      ],
      "op": "SWAP1",
      "path": "73"
    },
    "1740": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1579,
        1602
      ],
      "op": "SSTORE",
      "path": "73"
    },
    "1741": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1613,
        1657
      ],
      "op": "PUSH2",
      "path": "73",
      "statement": 13,
      "value": "0x6D7"
    },
    "1744": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1579,
        1595
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x0"
    },
    "1746": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1644,
        1656
      ],
      "op": "DUP3",
      "path": "73"
    },
    "1747": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1613,
        1623
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0xBDF"
    },
    "1750": {
      "fn": "AccessController.setDefaultAdminRole",
      "jump": "i",
      "offset": [
        1613,
        1657
      ],
      "op": "JUMP",
      "path": "73"
    },
    "1751": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1613,
        1657
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "1752": {
      "fn": "AccessController.setDefaultAdminRole",
      "offset": [
        1419,
        1664
      ],
      "op": "POP",
      "path": "73"
    },
    "1753": {
      "fn": "AccessController.setDefaultAdminRole",
      "jump": "o",
      "offset": [
        1419,
        1664
      ],
      "op": "JUMP",
      "path": "73"
    },
    "1754": {
      "fn": "CoreController.initialize",
      "offset": [
        1143,
        1375
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "1755": {
      "offset": [
        3100,
        3119
      ],
      "op": "PUSH1",
      "path": "10",
      "value": "0x0"
    },
    "1757": {
      "offset": [
        3123,
        3136
      ],
      "op": "SLOAD",
      "path": "10"
    },
    "1758": {
      "fn": "CoreController.initialize",
      "offset": [
        3123,
        3136
      ],
      "op": "PUSH2",
      "path": "10",
      "value": "0x100"
    },
    "1761": {
      "fn": "CoreController.initialize",
      "offset": [
        3123,
        3136
      ],
      "op": "SWAP1",
      "path": "10"
    },
    "1762": {
      "fn": "CoreController.initialize",
      "offset": [
        3123,
        3136
      ],
      "op": "DIV",
      "path": "10"
    },
    "1763": {
      "fn": "CoreController.initialize",
      "offset": [
        3123,
        3136
      ],
      "op": "PUSH1",
      "path": "10",
      "value": "0xFF"
    },
    "1765": {
      "fn": "CoreController.initialize",
      "offset": [
        3123,
        3136
      ],
      "op": "AND",
      "path": "10"
    },
    "1766": {
      "offset": [
        3122,
        3136
      ],
      "op": "ISZERO",
      "path": "10"
    },
    "1767": {
      "fn": "CoreController.initialize",
      "offset": [
        3122,
        3136
      ],
      "op": "DUP1",
      "path": "10"
    },
    "1768": {
      "offset": [
        3168,
        3202
      ],
      "op": "DUP1",
      "path": "10"
    },
    "1769": {
      "fn": "CoreController.initialize",
      "offset": [
        3168,
        3202
      ],
      "op": "ISZERO",
      "path": "10"
    },
    "1770": {
      "fn": "CoreController.initialize",
      "offset": [
        3168,
        3202
      ],
      "op": "PUSH2",
      "path": "10",
      "value": "0x6FA"
    },
    "1773": {
      "fn": "CoreController.initialize",
      "offset": [
        3168,
        3202
      ],
      "op": "JUMPI",
      "path": "10"
    },
    "1774": {
      "op": "POP"
    },
    "1775": {
      "offset": [
        3186,
        3198
      ],
      "op": "PUSH1",
      "path": "10",
      "value": "0x0"
    },
    "1777": {
      "fn": "CoreController.initialize",
      "offset": [
        3186,
        3198
      ],
      "op": "SLOAD",
      "path": "10"
    },
    "1778": {
      "offset": [
        3201,
        3202
      ],
      "op": "PUSH1",
      "path": "10",
      "value": "0x1"
    },
    "1780": {
      "offset": [
        3186,
        3198
      ],
      "op": "PUSH1",
      "path": "10",
      "value": "0xFF"
    },
    "1782": {
      "fn": "CoreController.initialize",
      "offset": [
        3186,
        3198
      ],
      "op": "SWAP1",
      "path": "10"
    },
    "1783": {
      "fn": "CoreController.initialize",
      "offset": [
        3186,
        3198
      ],
      "op": "SWAP2",
      "path": "10"
    },
    "1784": {
      "fn": "CoreController.initialize",
      "offset": [
        3186,
        3198
      ],
      "op": "AND",
      "path": "10"
    },
    "1785": {
      "offset": [
        3186,
        3202
      ],
      "op": "LT",
      "path": "10"
    },
    "1786": {
      "offset": [
        3168,
        3202
      ],
      "op": "JUMPDEST",
      "path": "10"
    },
    "1787": {
      "offset": [
        3167,
        3264
      ],
      "op": "DUP1",
      "path": "10"
    },
    "1788": {
      "fn": "CoreController.initialize",
      "offset": [
        3167,
        3264
      ],
      "op": "PUSH2",
      "path": "10",
      "value": "0x714"
    },
    "1791": {
      "offset": [
        3167,
        3264
      ],
      "op": "JUMPI",
      "path": "10"
    },
    "1792": {
      "op": "POP"
    },
    "1793": {
      "offset": [
        3236,
        3240
      ],
      "op": "ADDRESS",
      "path": "10"
    },
    "1794": {
      "fn": "Address.isContract",
      "offset": [
        1465,
        1484
      ],
      "op": "EXTCODESIZE",
      "path": "21",
      "statement": 14
    },
    "1795": {
      "fn": "Address.isContract",
      "offset": [
        1465,
        1488
      ],
      "op": "ISZERO",
      "path": "21"
    },
    "1796": {
      "fn": "Address.isContract",
      "offset": [
        1465,
        1488
      ],
      "op": "DUP1",
      "path": "21"
    },
    "1797": {
      "fn": "Address.isContract",
      "offset": [
        1465,
        1488
      ],
      "op": "ISZERO",
      "path": "21"
    },
    "1798": {
      "offset": [
        3208,
        3263
      ],
      "op": "PUSH2",
      "path": "10",
      "value": "0x714"
    },
    "1801": {
      "fn": "Address.isContract",
      "offset": [
        3208,
        3263
      ],
      "op": "JUMPI",
      "path": "10"
    },
    "1802": {
      "op": "POP"
    },
    "1803": {
      "offset": [
        3246,
        3258
      ],
      "op": "PUSH1",
      "path": "10",
      "value": "0x0"
    },
    "1805": {
      "fn": "Address.isContract",
      "offset": [
        3246,
        3258
      ],
      "op": "SLOAD",
      "path": "10"
    },
    "1806": {
      "fn": "Address.isContract",
      "offset": [
        3246,
        3258
      ],
      "op": "PUSH1",
      "path": "10",
      "value": "0xFF"
    },
    "1808": {
      "fn": "Address.isContract",
      "offset": [
        3246,
        3258
      ],
      "op": "AND",
      "path": "10"
    },
    "1809": {
      "fn": "Address.isContract",
      "offset": [
        3246,
        3258
      ],
      "op": "PUSH1",
      "path": "10",
      "value": "0x1"
    },
    "1811": {
      "offset": [
        3246,
        3263
      ],
      "op": "EQ",
      "path": "10"
    },
    "1812": {
      "offset": [
        3208,
        3263
      ],
      "op": "JUMPDEST",
      "path": "10"
    },
    "1813": {
      "offset": [
        3146,
        3336
      ],
      "op": "PUSH2",
      "path": "10",
      "value": "0x777"
    },
    "1816": {
      "offset": [
        3146,
        3336
      ],
      "op": "JUMPI",
      "path": "10"
    },
    "1817": {
      "fn": "Address.isContract",
      "offset": [
        3146,
        3336
      ],
      "op": "PUSH1",
      "path": "10",
      "value": "0x40"
    },
    "1819": {
      "fn": "Address.isContract",
      "offset": [
        3146,
        3336
      ],
      "op": "MLOAD",
      "path": "10"
    },
    "1820": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1824": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1826": {
      "op": "SHL"
    },
    "1827": {
      "offset": [
        3146,
        3336
      ],
      "op": "DUP2",
      "path": "10"
    },
    "1828": {
      "fn": "Address.isContract",
      "offset": [
        3146,
        3336
      ],
      "op": "MSTORE",
      "path": "10"
    },
    "1829": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1831": {
      "offset": [
        3146,
        3336
      ],
      "op": "PUSH1",
      "path": "10",
      "value": "0x4"
    },
    "1833": {
      "fn": "Address.isContract",
      "offset": [
        3146,
        3336
      ],
      "op": "DUP3",
      "path": "10"
    },
    "1834": {
      "fn": "Address.isContract",
      "offset": [
        3146,
        3336
      ],
      "op": "ADD",
      "path": "10"
    },
    "1835": {
      "op": "MSTORE"
    },
    "1836": {
      "op": "PUSH1",
      "value": "0x2E"
    },
    "1838": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "1840": {
      "op": "DUP3"
    },
    "1841": {
      "op": "ADD"
    },
    "1842": {
      "op": "MSTORE"
    },
    "1843": {
      "op": "PUSH32",
      "value": "0x496E697469616C697A61626C653A20636F6E747261637420697320616C726561"
    },
    "1876": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "1878": {
      "op": "DUP3"
    },
    "1879": {
      "op": "ADD"
    },
    "1880": {
      "op": "MSTORE"
    },
    "1881": {
      "op": "PUSH14",
      "value": "0x191E481A5B9A5D1A585B1A5E9959"
    },
    "1896": {
      "op": "PUSH1",
      "value": "0x92"
    },
    "1898": {
      "op": "SHL"
    },
    "1899": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "1901": {
      "op": "DUP3"
    },
    "1902": {
      "op": "ADD"
    },
    "1903": {
      "op": "MSTORE"
    },
    "1904": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "1906": {
      "op": "ADD"
    },
    "1907": {
      "offset": [
        3146,
        3336
      ],
      "op": "PUSH2",
      "path": "10",
      "value": "0x459"
    },
    "1910": {
      "op": "JUMP"
    },
    "1911": {
      "offset": [
        3146,
        3336
      ],
      "op": "JUMPDEST",
      "path": "10"
    },
    "1912": {
      "offset": [
        3346,
        3358
      ],
      "op": "PUSH1",
      "path": "10",
      "value": "0x0"
    },
    "1914": {
      "offset": [
        3346,
        3362
      ],
      "op": "DUP1",
      "path": "10"
    },
    "1915": {
      "fn": "Address.isContract",
      "offset": [
        3346,
        3362
      ],
      "op": "SLOAD",
      "path": "10"
    },
    "1916": {
      "op": "PUSH1",
      "value": "0xFF"
    },
    "1918": {
      "op": "NOT"
    },
    "1919": {
      "offset": [
        3346,
        3362
      ],
      "op": "AND",
      "path": "10"
    },
    "1920": {
      "offset": [
        3361,
        3362
      ],
      "op": "PUSH1",
      "path": "10",
      "value": "0x1"
    },
    "1922": {
      "offset": [
        3346,
        3362
      ],
      "op": "OR",
      "path": "10"
    },
    "1923": {
      "fn": "Address.isContract",
      "offset": [
        3346,
        3362
      ],
      "op": "SWAP1",
      "path": "10"
    },
    "1924": {
      "fn": "Address.isContract",
      "offset": [
        3346,
        3362
      ],
      "op": "SSTORE",
      "path": "10"
    },
    "1925": {
      "offset": [
        3372,
        3437
      ],
      "op": "DUP1",
      "path": "10"
    },
    "1926": {
      "fn": "Address.isContract",
      "offset": [
        3372,
        3437
      ],
      "op": "ISZERO",
      "path": "10"
    },
    "1927": {
      "fn": "Address.isContract",
      "offset": [
        3372,
        3437
      ],
      "op": "PUSH2",
      "path": "10",
      "value": "0x79A"
    },
    "1930": {
      "fn": "Address.isContract",
      "offset": [
        3372,
        3437
      ],
      "op": "JUMPI",
      "path": "10"
    },
    "1931": {
      "offset": [
        3406,
        3419
      ],
      "op": "PUSH1",
      "path": "10",
      "value": "0x0"
    },
    "1933": {
      "offset": [
        3406,
        3426
      ],
      "op": "DUP1",
      "path": "10"
    },
    "1934": {
      "fn": "Address.isContract",
      "offset": [
        3406,
        3426
      ],
      "op": "SLOAD",
      "path": "10"
    },
    "1935": {
      "op": "PUSH2",
      "value": "0xFF00"
    },
    "1938": {
      "op": "NOT"
    },
    "1939": {
      "offset": [
        3406,
        3426
      ],
      "op": "AND",
      "path": "10"
    },
    "1940": {
      "fn": "Address.isContract",
      "offset": [
        3406,
        3426
      ],
      "op": "PUSH2",
      "path": "10",
      "value": "0x100"
    },
    "1943": {
      "fn": "Address.isContract",
      "offset": [
        3406,
        3426
      ],
      "op": "OR",
      "path": "10"
    },
    "1944": {
      "fn": "Address.isContract",
      "offset": [
        3406,
        3426
      ],
      "op": "SWAP1",
      "path": "10"
    },
    "1945": {
      "fn": "Address.isContract",
      "offset": [
        3406,
        3426
      ],
      "op": "SSTORE",
      "path": "10"
    },
    "1946": {
      "offset": [
        3372,
        3437
      ],
      "op": "JUMPDEST",
      "path": "10"
    },
    "1947": {
      "fn": "CoreController.initialize",
      "offset": [
        1210,
        1219
      ],
      "op": "PUSH1",
      "path": "88",
      "statement": 15,
      "value": "0x0"
    },
    "1949": {
      "fn": "CoreController.initialize",
      "offset": [
        1210,
        1241
      ],
      "op": "DUP1",
      "path": "88"
    },
    "1950": {
      "fn": "CoreController.initialize",
      "offset": [
        1210,
        1241
      ],
      "op": "SLOAD",
      "path": "88"
    },
    "1951": {
      "op": "PUSH3",
      "value": "0x10000"
    },
    "1955": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1957": {
      "op": "PUSH1",
      "value": "0xB0"
    },
    "1959": {
      "op": "SHL"
    },
    "1960": {
      "op": "SUB"
    },
    "1961": {
      "op": "NOT"
    },
    "1962": {
      "fn": "CoreController.initialize",
      "offset": [
        1210,
        1241
      ],
      "op": "AND",
      "path": "88"
    },
    "1963": {
      "fn": "CoreController.initialize",
      "offset": [
        1210,
        1241
      ],
      "op": "PUSH3",
      "path": "88",
      "value": "0x10000"
    },
    "1967": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1969": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1971": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1973": {
      "op": "SHL"
    },
    "1974": {
      "op": "SUB"
    },
    "1975": {
      "fn": "CoreController.initialize",
      "offset": [
        1210,
        1241
      ],
      "op": "DUP6",
      "path": "88"
    },
    "1976": {
      "fn": "CoreController.initialize",
      "offset": [
        1210,
        1241
      ],
      "op": "AND",
      "path": "88"
    },
    "1977": {
      "fn": "CoreController.initialize",
      "offset": [
        1210,
        1241
      ],
      "op": "MUL",
      "path": "88"
    },
    "1978": {
      "fn": "CoreController.initialize",
      "offset": [
        1210,
        1241
      ],
      "op": "OR",
      "path": "88"
    },
    "1979": {
      "fn": "CoreController.initialize",
      "offset": [
        1210,
        1241
      ],
      "op": "SWAP1",
      "path": "88"
    },
    "1980": {
      "fn": "CoreController.initialize",
      "offset": [
        1210,
        1241
      ],
      "op": "SSTORE",
      "path": "88"
    },
    "1981": {
      "fn": "CoreController.initialize",
      "offset": [
        1255,
        1265
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x7CC"
    },
    "1984": {
      "op": "PUSH6",
      "value": "0x416363657373"
    },
    "1991": {
      "op": "PUSH1",
      "value": "0xD0"
    },
    "1993": {
      "op": "SHL"
    },
    "1994": {
      "fn": "AccessController._getName",
      "offset": [
        1128,
        1208
      ],
      "op": "SWAP1",
      "path": "73"
    },
    "1995": {
      "fn": "AccessController._getName",
      "offset": [
        1128,
        1208
      ],
      "op": "JUMP",
      "path": "73"
    },
    "1996": {
      "fn": "CoreController.initialize",
      "offset": [
        1255,
        1265
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "1997": {
      "op": "PUSH6",
      "value": "0x416363657373"
    },
    "2004": {
      "op": "PUSH1",
      "value": "0xD0"
    },
    "2006": {
      "op": "SHL"
    },
    "2007": {
      "branch": 74,
      "fn": "CoreController.initialize",
      "offset": [
        1255,
        1277
      ],
      "op": "EQ",
      "path": "88"
    },
    "2008": {
      "fn": "CoreController.initialize",
      "offset": [
        1251,
        1332
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x80E"
    },
    "2011": {
      "branch": 74,
      "fn": "CoreController.initialize",
      "offset": [
        1251,
        1332
      ],
      "op": "JUMPI",
      "path": "88"
    },
    "2012": {
      "fn": "CoreController.initialize",
      "offset": [
        1299,
        1328
      ],
      "op": "PUSH2",
      "path": "88",
      "statement": 16,
      "value": "0x7ED"
    },
    "2015": {
      "op": "PUSH6",
      "value": "0x416363657373"
    },
    "2022": {
      "op": "PUSH1",
      "value": "0xD0"
    },
    "2024": {
      "op": "SHL"
    },
    "2025": {
      "fn": "CoreController.initialize",
      "offset": [
        1299,
        1318
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0xC01"
    },
    "2028": {
      "fn": "CoreController.initialize",
      "jump": "i",
      "offset": [
        1299,
        1328
      ],
      "op": "JUMP",
      "path": "88"
    },
    "2029": {
      "fn": "CoreController.initialize",
      "offset": [
        1299,
        1328
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "2030": {
      "fn": "CoreController.initialize",
      "offset": [
        1281,
        1288
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x1"
    },
    "2032": {
      "fn": "CoreController.initialize",
      "offset": [
        1281,
        1329
      ],
      "op": "DUP1",
      "path": "88"
    },
    "2033": {
      "fn": "CoreController.initialize",
      "offset": [
        1281,
        1329
      ],
      "op": "SLOAD",
      "path": "88"
    },
    "2034": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2036": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2038": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2040": {
      "op": "SHL"
    },
    "2041": {
      "op": "SUB"
    },
    "2042": {
      "op": "NOT"
    },
    "2043": {
      "fn": "CoreController.initialize",
      "offset": [
        1281,
        1329
      ],
      "op": "AND",
      "path": "88"
    },
    "2044": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2046": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2048": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2050": {
      "op": "SHL"
    },
    "2051": {
      "op": "SUB"
    },
    "2052": {
      "fn": "CoreController.initialize",
      "offset": [
        1281,
        1329
      ],
      "op": "SWAP3",
      "path": "88"
    },
    "2053": {
      "fn": "CoreController.initialize",
      "offset": [
        1281,
        1329
      ],
      "op": "SWAP1",
      "path": "88"
    },
    "2054": {
      "fn": "CoreController.initialize",
      "offset": [
        1281,
        1329
      ],
      "op": "SWAP3",
      "path": "88"
    },
    "2055": {
      "fn": "CoreController.initialize",
      "offset": [
        1281,
        1329
      ],
      "op": "AND",
      "path": "88"
    },
    "2056": {
      "fn": "CoreController.initialize",
      "offset": [
        1281,
        1329
      ],
      "op": "SWAP2",
      "path": "88"
    },
    "2057": {
      "fn": "CoreController.initialize",
      "offset": [
        1281,
        1329
      ],
      "op": "SWAP1",
      "path": "88"
    },
    "2058": {
      "fn": "CoreController.initialize",
      "offset": [
        1281,
        1329
      ],
      "op": "SWAP2",
      "path": "88"
    },
    "2059": {
      "fn": "CoreController.initialize",
      "offset": [
        1281,
        1329
      ],
      "op": "OR",
      "path": "88"
    },
    "2060": {
      "fn": "CoreController.initialize",
      "offset": [
        1281,
        1329
      ],
      "op": "SWAP1",
      "path": "88"
    },
    "2061": {
      "fn": "CoreController.initialize",
      "offset": [
        1281,
        1329
      ],
      "op": "SSTORE",
      "path": "88"
    },
    "2062": {
      "fn": "CoreController.initialize",
      "offset": [
        1251,
        1332
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "2063": {
      "fn": "CoreController.initialize",
      "offset": [
        1350,
        1368
      ],
      "op": "PUSH2",
      "path": "88",
      "statement": 17,
      "value": "0x8C0"
    },
    "2066": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3668,
        3677
      ],
      "op": "PUSH1",
      "path": "73",
      "statement": 18,
      "value": "0x4"
    },
    "2068": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3668,
        3697
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x20"
    },
    "2070": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3668,
        3697
      ],
      "op": "MSTORE",
      "path": "73"
    },
    "2071": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3668,
        3697
      ],
      "op": "PUSH32",
      "path": "73",
      "value": "0xEF04F7ED48B33F0D9D7DE17461A6B9FBFC99345543BCD1FD6722A18171738639"
    },
    "2104": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3668,
        3704
      ],
      "op": "DUP1",
      "path": "73"
    },
    "2105": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3668,
        3704
      ],
      "op": "SLOAD",
      "path": "73"
    },
    "2106": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3700,
        3704
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x1"
    },
    "2108": {
      "op": "PUSH1",
      "value": "0xFF"
    },
    "2110": {
      "op": "NOT"
    },
    "2111": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3668,
        3704
      ],
      "op": "SWAP2",
      "path": "73"
    },
    "2112": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3668,
        3704
      ],
      "op": "DUP3",
      "path": "73"
    },
    "2113": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3668,
        3704
      ],
      "op": "AND",
      "path": "73"
    },
    "2114": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3668,
        3704
      ],
      "op": "DUP2",
      "path": "73"
    },
    "2115": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3668,
        3704
      ],
      "op": "OR",
      "path": "73"
    },
    "2116": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3668,
        3704
      ],
      "op": "SWAP1",
      "path": "73"
    },
    "2117": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3668,
        3704
      ],
      "op": "SWAP3",
      "path": "73"
    },
    "2118": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3668,
        3704
      ],
      "op": "SSTORE",
      "path": "73"
    },
    "2119": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3714,
        3745
      ],
      "op": "PUSH32",
      "path": "73",
      "statement": 19,
      "value": "0xD0F3851D150B47A1A07BA8D8DA619D3D280E2D8C7EBD5A88C0DDF69C9320AC5"
    },
    "2152": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3714,
        3752
      ],
      "op": "DUP1",
      "path": "73"
    },
    "2153": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3714,
        3752
      ],
      "op": "SLOAD",
      "path": "73"
    },
    "2154": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3714,
        3752
      ],
      "op": "DUP3",
      "path": "73"
    },
    "2155": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3714,
        3752
      ],
      "op": "AND",
      "path": "73"
    },
    "2156": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3714,
        3752
      ],
      "op": "DUP4",
      "path": "73"
    },
    "2157": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3714,
        3752
      ],
      "op": "OR",
      "path": "73"
    },
    "2158": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3714,
        3752
      ],
      "op": "SWAP1",
      "path": "73"
    },
    "2159": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3714,
        3752
      ],
      "op": "SSTORE",
      "path": "73"
    },
    "2160": {
      "offset": [
        842,
        875
      ],
      "op": "PUSH32",
      "path": "73",
      "value": "0x3C4CDB47519F2F89924EBEB1EE7A8A43B8B00120826915726460BB24576012FD"
    },
    "2193": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "2195": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3762,
        3793
      ],
      "op": "MSTORE",
      "path": "73",
      "statement": 20
    },
    "2196": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3762,
        3793
      ],
      "op": "PUSH32",
      "path": "73",
      "value": "0x8BA76EE23AEF2D48C27CF0A3D52EE681C660D5A027BE0EF9CC9EDC5CE9889BAC"
    },
    "2229": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3762,
        3800
      ],
      "op": "DUP1",
      "path": "73"
    },
    "2230": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3762,
        3800
      ],
      "op": "SLOAD",
      "path": "73"
    },
    "2231": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3762,
        3800
      ],
      "op": "SWAP1",
      "path": "73"
    },
    "2232": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3762,
        3800
      ],
      "op": "SWAP2",
      "path": "73"
    },
    "2233": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3762,
        3800
      ],
      "op": "AND",
      "path": "73"
    },
    "2234": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3762,
        3800
      ],
      "op": "SWAP1",
      "path": "73"
    },
    "2235": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3762,
        3800
      ],
      "op": "SWAP2",
      "path": "73"
    },
    "2236": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3762,
        3800
      ],
      "op": "OR",
      "path": "73"
    },
    "2237": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3762,
        3800
      ],
      "op": "SWAP1",
      "path": "73"
    },
    "2238": {
      "fn": "AccessController._populateValidRoles",
      "offset": [
        3762,
        3800
      ],
      "op": "SSTORE",
      "path": "73"
    },
    "2239": {
      "fn": "AccessController._afterInitialize",
      "offset": [
        966,
        1122
      ],
      "op": "JUMP",
      "path": "73"
    },
    "2240": {
      "fn": "CoreController.initialize",
      "offset": [
        1350,
        1368
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "2241": {
      "offset": [
        3461,
        3475
      ],
      "op": "DUP1",
      "path": "10"
    },
    "2242": {
      "offset": [
        3457,
        3556
      ],
      "op": "ISZERO",
      "path": "10"
    },
    "2243": {
      "fn": "CoreController.initialize",
      "offset": [
        3457,
        3556
      ],
      "op": "PUSH2",
      "path": "10",
      "value": "0x606"
    },
    "2246": {
      "offset": [
        3457,
        3556
      ],
      "op": "JUMPI",
      "path": "10"
    },
    "2247": {
      "offset": [
        3507,
        3512
      ],
      "op": "PUSH1",
      "path": "10",
      "value": "0x0"
    },
    "2249": {
      "offset": [
        3491,
        3512
      ],
      "op": "DUP1",
      "path": "10"
    },
    "2250": {
      "fn": "CoreController.initialize",
      "offset": [
        3491,
        3512
      ],
      "op": "SLOAD",
      "path": "10"
    },
    "2251": {
      "op": "PUSH2",
      "value": "0xFF00"
    },
    "2254": {
      "op": "NOT"
    },
    "2255": {
      "offset": [
        3491,
        3512
      ],
      "op": "AND",
      "path": "10"
    },
    "2256": {
      "fn": "CoreController.initialize",
      "offset": [
        3491,
        3512
      ],
      "op": "SWAP1",
      "path": "10"
    },
    "2257": {
      "fn": "CoreController.initialize",
      "offset": [
        3491,
        3512
      ],
      "op": "SSTORE",
      "path": "10"
    },
    "2258": {
      "offset": [
        3531,
        3545
      ],
      "op": "PUSH1",
      "path": "10",
      "value": "0x40"
    },
    "2260": {
      "fn": "CoreController.initialize",
      "offset": [
        3531,
        3545
      ],
      "op": "MLOAD",
      "path": "10"
    },
    "2261": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2263": {
      "op": "DUP2"
    },
    "2264": {
      "op": "MSTORE"
    },
    "2265": {
      "offset": [
        3531,
        3545
      ],
      "op": "PUSH32",
      "path": "10",
      "value": "0x7F26B83FF96E1F2B6A682F133852F6798A09C465DA95921460CEFB3847402498"
    },
    "2298": {
      "fn": "CoreController.initialize",
      "offset": [
        3531,
        3545
      ],
      "op": "SWAP1",
      "path": "10"
    },
    "2299": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "2301": {
      "op": "ADD"
    },
    "2302": {
      "offset": [
        3531,
        3545
      ],
      "op": "PUSH1",
      "path": "10",
      "value": "0x40"
    },
    "2304": {
      "fn": "CoreController.initialize",
      "offset": [
        3531,
        3545
      ],
      "op": "MLOAD",
      "path": "10"
    },
    "2305": {
      "fn": "CoreController.initialize",
      "offset": [
        3531,
        3545
      ],
      "op": "DUP1",
      "path": "10"
    },
    "2306": {
      "fn": "CoreController.initialize",
      "offset": [
        3531,
        3545
      ],
      "op": "SWAP2",
      "path": "10"
    },
    "2307": {
      "fn": "CoreController.initialize",
      "offset": [
        3531,
        3545
      ],
      "op": "SUB",
      "path": "10"
    },
    "2308": {
      "fn": "CoreController.initialize",
      "offset": [
        3531,
        3545
      ],
      "op": "SWAP1",
      "path": "10"
    },
    "2309": {
      "fn": "CoreController.initialize",
      "offset": [
        3531,
        3545
      ],
      "op": "LOG1",
      "path": "10"
    },
    "2310": {
      "fn": "CoreController.initialize",
      "offset": [
        1143,
        1375
      ],
      "op": "POP",
      "path": "88"
    },
    "2311": {
      "fn": "CoreController.initialize",
      "offset": [
        1143,
        1375
      ],
      "op": "POP",
      "path": "88"
    },
    "2312": {
      "fn": "CoreController.initialize",
      "jump": "o",
      "offset": [
        1143,
        1375
      ],
      "op": "JUMP",
      "path": "88"
    },
    "2313": {
      "fn": "AccessControlEnumerable.getRoleMemberCount",
      "offset": [
        1750,
        1890
      ],
      "op": "JUMPDEST",
      "path": "1"
    },
    "2314": {
      "fn": "AccessControlEnumerable.getRoleMemberCount",
      "offset": [
        1830,
        1837
      ],
      "op": "PUSH1",
      "path": "1",
      "value": "0x0"
    },
    "2316": {
      "fn": "AccessControlEnumerable.getRoleMemberCount",
      "offset": [
        1856,
        1874
      ],
      "op": "DUP2",
      "path": "1",
      "statement": 21
    },
    "2317": {
      "fn": "AccessControlEnumerable.getRoleMemberCount",
      "offset": [
        1856,
        1874
      ],
      "op": "DUP2",
      "path": "1"
    },
    "2318": {
      "fn": "AccessControlEnumerable.getRoleMemberCount",
      "offset": [
        1856,
        1874
      ],
      "op": "MSTORE",
      "path": "1"
    },
    "2319": {
      "fn": "AccessControlEnumerable.getRoleMemberCount",
      "offset": [
        1856,
        1868
      ],
      "op": "PUSH1",
      "path": "1",
      "value": "0x3"
    },
    "2321": {
      "fn": "AccessControlEnumerable.getRoleMemberCount",
      "offset": [
        1856,
        1874
      ],
      "op": "PUSH1",
      "path": "1",
      "value": "0x20"
    },
    "2323": {
      "fn": "AccessControlEnumerable.getRoleMemberCount",
      "offset": [
        1856,
        1874
      ],
      "op": "MSTORE",
      "path": "1"
    },
    "2324": {
      "fn": "AccessControlEnumerable.getRoleMemberCount",
      "offset": [
        1856,
        1874
      ],
      "op": "PUSH1",
      "path": "1",
      "value": "0x40"
    },
    "2326": {
      "fn": "AccessControlEnumerable.getRoleMemberCount",
      "offset": [
        1856,
        1874
      ],
      "op": "DUP2",
      "path": "1"
    },
    "2327": {
      "fn": "AccessControlEnumerable.getRoleMemberCount",
      "offset": [
        1856,
        1874
      ],
      "op": "KECCAK256",
      "path": "1"
    },
    "2328": {
      "fn": "AccessControlEnumerable.getRoleMemberCount",
      "offset": [
        1856,
        1883
      ],
      "op": "PUSH2",
      "path": "1",
      "value": "0x3AB"
    },
    "2331": {
      "fn": "AccessControlEnumerable.getRoleMemberCount",
      "offset": [
        1856,
        1883
      ],
      "op": "SWAP1",
      "path": "1"
    },
    "2332": {
      "fn": "AccessControlEnumerable.getRoleMemberCount",
      "offset": [
        1856,
        1881
      ],
      "op": "PUSH2",
      "path": "1",
      "value": "0xCE9"
    },
    "2335": {
      "fn": "AccessControlEnumerable.getRoleMemberCount",
      "jump": "i",
      "offset": [
        1856,
        1883
      ],
      "op": "JUMP",
      "path": "1"
    },
    "2336": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2725,
        2936
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "2337": {
      "offset": [
        564,
        573
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x0"
    },
    "2339": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        564,
        573
      ],
      "op": "SLOAD",
      "path": "88"
    },
    "2340": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        564,
        573
      ],
      "op": "PUSH3",
      "path": "88",
      "value": "0x10000"
    },
    "2344": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        564,
        573
      ],
      "op": "SWAP1",
      "path": "88"
    },
    "2345": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        564,
        573
      ],
      "op": "DIV",
      "path": "88"
    },
    "2346": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2348": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2350": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2352": {
      "op": "SHL"
    },
    "2353": {
      "op": "SUB"
    },
    "2354": {
      "offset": [
        564,
        573
      ],
      "op": "AND",
      "path": "88"
    },
    "2355": {
      "offset": [
        564,
        586
      ],
      "op": "PUSH4",
      "path": "88",
      "value": "0x2CA65A79"
    },
    "2360": {
      "offset": [
        587,
        599
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x93E"
    },
    "2363": {
      "fn": "Context._msgSender",
      "offset": [
        719,
        729
      ],
      "op": "CALLER",
      "path": "22"
    },
    "2364": {
      "fn": "Context._msgSender",
      "offset": [
        640,
        736
      ],
      "op": "SWAP1",
      "path": "22"
    },
    "2365": {
      "fn": "Context._msgSender",
      "offset": [
        640,
        736
      ],
      "op": "JUMP",
      "path": "22"
    },
    "2366": {
      "offset": [
        587,
        599
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "2367": {
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x40"
    },
    "2369": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "MLOAD",
      "path": "88"
    },
    "2370": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP3",
      "path": "88"
    },
    "2371": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH4",
      "path": "88",
      "value": "0xFFFFFFFF"
    },
    "2376": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "AND",
      "path": "88"
    },
    "2377": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0xE0"
    },
    "2379": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "SHL",
      "path": "88"
    },
    "2380": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP2",
      "path": "88"
    },
    "2381": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "MSTORE",
      "path": "88"
    },
    "2382": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x4"
    },
    "2384": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "ADD",
      "path": "88"
    },
    "2385": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x95A"
    },
    "2388": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "SWAP2",
      "path": "88"
    },
    "2389": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "SWAP1",
      "path": "88"
    },
    "2390": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x13A2"
    },
    "2393": {
      "fn": "Context._msgSender",
      "jump": "i",
      "offset": [
        564,
        627
      ],
      "op": "JUMP",
      "path": "88"
    },
    "2394": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "2395": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x20"
    },
    "2397": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x40"
    },
    "2399": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "MLOAD",
      "path": "88"
    },
    "2400": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP1",
      "path": "88"
    },
    "2401": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP4",
      "path": "88"
    },
    "2402": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "SUB",
      "path": "88"
    },
    "2403": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP2",
      "path": "88"
    },
    "2404": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP7",
      "path": "88"
    },
    "2405": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP1",
      "path": "88"
    },
    "2406": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "EXTCODESIZE",
      "path": "88"
    },
    "2407": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "ISZERO",
      "path": "88"
    },
    "2408": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP1",
      "path": "88"
    },
    "2409": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "ISZERO",
      "path": "88"
    },
    "2410": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x972"
    },
    "2413": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "JUMPI",
      "path": "88"
    },
    "2414": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x0"
    },
    "2416": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP1",
      "path": "88"
    },
    "2417": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "REVERT",
      "path": "88"
    },
    "2418": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "2419": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "POP",
      "path": "88"
    },
    "2420": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "GAS",
      "path": "88"
    },
    "2421": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "STATICCALL",
      "path": "88"
    },
    "2422": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "ISZERO",
      "path": "88"
    },
    "2423": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP1",
      "path": "88"
    },
    "2424": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "ISZERO",
      "path": "88"
    },
    "2425": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x986"
    },
    "2428": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "JUMPI",
      "path": "88"
    },
    "2429": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "RETURNDATASIZE",
      "path": "88"
    },
    "2430": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x0"
    },
    "2432": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP1",
      "path": "88"
    },
    "2433": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "RETURNDATACOPY",
      "path": "88"
    },
    "2434": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "RETURNDATASIZE",
      "path": "88"
    },
    "2435": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x0"
    },
    "2437": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "REVERT",
      "path": "88"
    },
    "2438": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "2439": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "POP",
      "path": "88"
    },
    "2440": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "POP",
      "path": "88"
    },
    "2441": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "POP",
      "path": "88"
    },
    "2442": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "POP",
      "path": "88"
    },
    "2443": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x40"
    },
    "2445": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "MLOAD",
      "path": "88"
    },
    "2446": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "RETURNDATASIZE",
      "path": "88"
    },
    "2447": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x1F"
    },
    "2449": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "NOT",
      "path": "88"
    },
    "2450": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x1F"
    },
    "2452": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP3",
      "path": "88"
    },
    "2453": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "ADD",
      "path": "88"
    },
    "2454": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "AND",
      "path": "88"
    },
    "2455": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP3",
      "path": "88"
    },
    "2456": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "ADD",
      "path": "88"
    },
    "2457": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP1",
      "path": "88"
    },
    "2458": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x40"
    },
    "2460": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "MSTORE",
      "path": "88"
    },
    "2461": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "POP",
      "path": "88"
    },
    "2462": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP2",
      "path": "88"
    },
    "2463": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "ADD",
      "path": "88"
    },
    "2464": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "SWAP1",
      "path": "88"
    },
    "2465": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x9AA"
    },
    "2468": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "SWAP2",
      "path": "88"
    },
    "2469": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "SWAP1",
      "path": "88"
    },
    "2470": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x127D"
    },
    "2473": {
      "fn": "Context._msgSender",
      "jump": "i",
      "offset": [
        564,
        627
      ],
      "op": "JUMP",
      "path": "88"
    },
    "2474": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "2475": {
      "offset": [
        543,
        679
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x9C6"
    },
    "2478": {
      "offset": [
        543,
        679
      ],
      "op": "JUMPI",
      "path": "88"
    },
    "2479": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x40"
    },
    "2481": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "MLOAD",
      "path": "88"
    },
    "2482": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "2486": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "2488": {
      "op": "SHL"
    },
    "2489": {
      "offset": [
        543,
        679
      ],
      "op": "DUP2",
      "path": "88"
    },
    "2490": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "MSTORE",
      "path": "88"
    },
    "2491": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x4"
    },
    "2493": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "ADD",
      "path": "88"
    },
    "2494": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x459"
    },
    "2497": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "SWAP1",
      "path": "88"
    },
    "2498": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x140F"
    },
    "2501": {
      "fn": "Context._msgSender",
      "jump": "i",
      "offset": [
        543,
        679
      ],
      "op": "JUMP",
      "path": "88"
    },
    "2502": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "2503": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2839,
        2854
      ],
      "op": "PUSH1",
      "path": "73",
      "statement": 22,
      "value": "0x0"
    },
    "2505": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2839,
        2854
      ],
      "op": "DUP2",
      "path": "73"
    },
    "2506": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2839,
        2854
      ],
      "op": "DUP2",
      "path": "73"
    },
    "2507": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2839,
        2854
      ],
      "op": "MSTORE",
      "path": "73"
    },
    "2508": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2839,
        2848
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x4"
    },
    "2510": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2839,
        2854
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x20"
    },
    "2512": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2839,
        2854
      ],
      "op": "MSTORE",
      "path": "73"
    },
    "2513": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2839,
        2854
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x40"
    },
    "2515": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2839,
        2854
      ],
      "op": "SWAP1",
      "path": "73"
    },
    "2516": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2839,
        2854
      ],
      "op": "KECCAK256",
      "path": "73"
    },
    "2517": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2839,
        2854
      ],
      "op": "SLOAD",
      "path": "73"
    },
    "2518": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2839,
        2854
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0xFF"
    },
    "2520": {
      "branch": 69,
      "fn": "AccessController.invalidateRole",
      "offset": [
        2839,
        2854
      ],
      "op": "AND",
      "path": "73"
    },
    "2521": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2831,
        2896
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0xA32"
    },
    "2524": {
      "branch": 69,
      "fn": "AccessController.invalidateRole",
      "offset": [
        2831,
        2896
      ],
      "op": "JUMPI",
      "path": "73"
    },
    "2525": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2831,
        2896
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x40"
    },
    "2527": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2831,
        2896
      ],
      "op": "MLOAD",
      "path": "73"
    },
    "2528": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "2532": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "2534": {
      "op": "SHL"
    },
    "2535": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2831,
        2896
      ],
      "op": "DUP2",
      "path": "73"
    },
    "2536": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2831,
        2896
      ],
      "op": "MSTORE",
      "path": "73"
    },
    "2537": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "2539": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2831,
        2896
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x4"
    },
    "2541": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2831,
        2896
      ],
      "op": "DUP3",
      "path": "73"
    },
    "2542": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2831,
        2896
      ],
      "op": "ADD",
      "path": "73"
    },
    "2543": {
      "op": "MSTORE"
    },
    "2544": {
      "op": "PUSH1",
      "value": "0x25"
    },
    "2546": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "2548": {
      "op": "DUP3"
    },
    "2549": {
      "op": "ADD"
    },
    "2550": {
      "op": "MSTORE"
    },
    "2551": {
      "op": "PUSH32",
      "value": "0x4552524F523A41434C2D3030343A524F4C455F554E4B4E4F574E5F4F525F494E"
    },
    "2584": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "2586": {
      "op": "DUP3"
    },
    "2587": {
      "op": "ADD"
    },
    "2588": {
      "op": "MSTORE"
    },
    "2589": {
      "op": "PUSH5",
      "value": "0x1590531251"
    },
    "2595": {
      "op": "PUSH1",
      "value": "0xDA"
    },
    "2597": {
      "op": "SHL"
    },
    "2598": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "2600": {
      "op": "DUP3"
    },
    "2601": {
      "op": "ADD"
    },
    "2602": {
      "op": "MSTORE"
    },
    "2603": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "2605": {
      "op": "ADD"
    },
    "2606": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2831,
        2896
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0x459"
    },
    "2609": {
      "op": "JUMP"
    },
    "2610": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2831,
        2896
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "2611": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2924,
        2929
      ],
      "op": "PUSH1",
      "path": "73",
      "statement": 23,
      "value": "0x0"
    },
    "2613": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2906,
        2921
      ],
      "op": "SWAP1",
      "path": "73"
    },
    "2614": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2906,
        2921
      ],
      "op": "DUP2",
      "path": "73"
    },
    "2615": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2906,
        2921
      ],
      "op": "MSTORE",
      "path": "73"
    },
    "2616": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2906,
        2915
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x4"
    },
    "2618": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2906,
        2921
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x20"
    },
    "2620": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2906,
        2921
      ],
      "op": "MSTORE",
      "path": "73"
    },
    "2621": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2906,
        2921
      ],
      "op": "PUSH1",
      "path": "73",
      "value": "0x40"
    },
    "2623": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2906,
        2921
      ],
      "op": "SWAP1",
      "path": "73"
    },
    "2624": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2906,
        2921
      ],
      "op": "KECCAK256",
      "path": "73"
    },
    "2625": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2906,
        2929
      ],
      "op": "DUP1",
      "path": "73"
    },
    "2626": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2906,
        2929
      ],
      "op": "SLOAD",
      "path": "73"
    },
    "2627": {
      "op": "PUSH1",
      "value": "0xFF"
    },
    "2629": {
      "op": "NOT"
    },
    "2630": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2906,
        2929
      ],
      "op": "AND",
      "path": "73"
    },
    "2631": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2906,
        2929
      ],
      "op": "SWAP1",
      "path": "73"
    },
    "2632": {
      "fn": "AccessController.invalidateRole",
      "offset": [
        2906,
        2929
      ],
      "op": "SSTORE",
      "path": "73"
    },
    "2633": {
      "fn": "AccessController.invalidateRole",
      "jump": "o",
      "offset": [
        2725,
        2936
      ],
      "op": "JUMP",
      "path": "73"
    },
    "2634": {
      "fn": "AccessController.revokeRole",
      "offset": [
        2034,
        2239
      ],
      "op": "JUMPDEST",
      "path": "73"
    },
    "2635": {
      "offset": [
        564,
        573
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x0"
    },
    "2637": {
      "fn": "AccessController.revokeRole",
      "offset": [
        564,
        573
      ],
      "op": "SLOAD",
      "path": "88"
    },
    "2638": {
      "fn": "AccessController.revokeRole",
      "offset": [
        564,
        573
      ],
      "op": "PUSH3",
      "path": "88",
      "value": "0x10000"
    },
    "2642": {
      "fn": "AccessController.revokeRole",
      "offset": [
        564,
        573
      ],
      "op": "SWAP1",
      "path": "88"
    },
    "2643": {
      "fn": "AccessController.revokeRole",
      "offset": [
        564,
        573
      ],
      "op": "DIV",
      "path": "88"
    },
    "2644": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2646": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2648": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2650": {
      "op": "SHL"
    },
    "2651": {
      "op": "SUB"
    },
    "2652": {
      "offset": [
        564,
        573
      ],
      "op": "AND",
      "path": "88"
    },
    "2653": {
      "offset": [
        564,
        586
      ],
      "op": "PUSH4",
      "path": "88",
      "value": "0x2CA65A79"
    },
    "2658": {
      "offset": [
        587,
        599
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0xA68"
    },
    "2661": {
      "fn": "Context._msgSender",
      "offset": [
        719,
        729
      ],
      "op": "CALLER",
      "path": "22"
    },
    "2662": {
      "fn": "Context._msgSender",
      "offset": [
        640,
        736
      ],
      "op": "SWAP1",
      "path": "22"
    },
    "2663": {
      "fn": "Context._msgSender",
      "offset": [
        640,
        736
      ],
      "op": "JUMP",
      "path": "22"
    },
    "2664": {
      "offset": [
        587,
        599
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "2665": {
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x40"
    },
    "2667": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "MLOAD",
      "path": "88"
    },
    "2668": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP3",
      "path": "88"
    },
    "2669": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH4",
      "path": "88",
      "value": "0xFFFFFFFF"
    },
    "2674": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "AND",
      "path": "88"
    },
    "2675": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0xE0"
    },
    "2677": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "SHL",
      "path": "88"
    },
    "2678": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP2",
      "path": "88"
    },
    "2679": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "MSTORE",
      "path": "88"
    },
    "2680": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x4"
    },
    "2682": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "ADD",
      "path": "88"
    },
    "2683": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0xA84"
    },
    "2686": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "SWAP2",
      "path": "88"
    },
    "2687": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "SWAP1",
      "path": "88"
    },
    "2688": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x13A2"
    },
    "2691": {
      "fn": "Context._msgSender",
      "jump": "i",
      "offset": [
        564,
        627
      ],
      "op": "JUMP",
      "path": "88"
    },
    "2692": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "2693": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x20"
    },
    "2695": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x40"
    },
    "2697": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "MLOAD",
      "path": "88"
    },
    "2698": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP1",
      "path": "88"
    },
    "2699": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP4",
      "path": "88"
    },
    "2700": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "SUB",
      "path": "88"
    },
    "2701": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP2",
      "path": "88"
    },
    "2702": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP7",
      "path": "88"
    },
    "2703": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP1",
      "path": "88"
    },
    "2704": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "EXTCODESIZE",
      "path": "88"
    },
    "2705": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "ISZERO",
      "path": "88"
    },
    "2706": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP1",
      "path": "88"
    },
    "2707": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "ISZERO",
      "path": "88"
    },
    "2708": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0xA9C"
    },
    "2711": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "JUMPI",
      "path": "88"
    },
    "2712": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x0"
    },
    "2714": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP1",
      "path": "88"
    },
    "2715": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "REVERT",
      "path": "88"
    },
    "2716": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "2717": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "POP",
      "path": "88"
    },
    "2718": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "GAS",
      "path": "88"
    },
    "2719": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "STATICCALL",
      "path": "88"
    },
    "2720": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "ISZERO",
      "path": "88"
    },
    "2721": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP1",
      "path": "88"
    },
    "2722": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "ISZERO",
      "path": "88"
    },
    "2723": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0xAB0"
    },
    "2726": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "JUMPI",
      "path": "88"
    },
    "2727": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "RETURNDATASIZE",
      "path": "88"
    },
    "2728": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x0"
    },
    "2730": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP1",
      "path": "88"
    },
    "2731": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "RETURNDATACOPY",
      "path": "88"
    },
    "2732": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "RETURNDATASIZE",
      "path": "88"
    },
    "2733": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x0"
    },
    "2735": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "REVERT",
      "path": "88"
    },
    "2736": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "2737": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "POP",
      "path": "88"
    },
    "2738": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "POP",
      "path": "88"
    },
    "2739": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "POP",
      "path": "88"
    },
    "2740": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "POP",
      "path": "88"
    },
    "2741": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x40"
    },
    "2743": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "MLOAD",
      "path": "88"
    },
    "2744": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "RETURNDATASIZE",
      "path": "88"
    },
    "2745": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x1F"
    },
    "2747": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "NOT",
      "path": "88"
    },
    "2748": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x1F"
    },
    "2750": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP3",
      "path": "88"
    },
    "2751": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "ADD",
      "path": "88"
    },
    "2752": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "AND",
      "path": "88"
    },
    "2753": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP3",
      "path": "88"
    },
    "2754": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "ADD",
      "path": "88"
    },
    "2755": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP1",
      "path": "88"
    },
    "2756": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x40"
    },
    "2758": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "MSTORE",
      "path": "88"
    },
    "2759": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "POP",
      "path": "88"
    },
    "2760": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "DUP2",
      "path": "88"
    },
    "2761": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "ADD",
      "path": "88"
    },
    "2762": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "SWAP1",
      "path": "88"
    },
    "2763": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0xAD4"
    },
    "2766": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "SWAP2",
      "path": "88"
    },
    "2767": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "SWAP1",
      "path": "88"
    },
    "2768": {
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x127D"
    },
    "2771": {
      "fn": "Context._msgSender",
      "jump": "i",
      "offset": [
        564,
        627
      ],
      "op": "JUMP",
      "path": "88"
    },
    "2772": {
      "branch": 75,
      "fn": "Context._msgSender",
      "offset": [
        564,
        627
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "2773": {
      "offset": [
        543,
        679
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0xAF0"
    },
    "2776": {
      "branch": 75,
      "offset": [
        543,
        679
      ],
      "op": "JUMPI",
      "path": "88"
    },
    "2777": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x40"
    },
    "2779": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "MLOAD",
      "path": "88"
    },
    "2780": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "2784": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "2786": {
      "op": "SHL"
    },
    "2787": {
      "offset": [
        543,
        679
      ],
      "op": "DUP2",
      "path": "88"
    },
    "2788": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "MSTORE",
      "path": "88"
    },
    "2789": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x4"
    },
    "2791": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "ADD",
      "path": "88"
    },
    "2792": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x459"
    },
    "2795": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "SWAP1",
      "path": "88"
    },
    "2796": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x140F"
    },
    "2799": {
      "fn": "Context._msgSender",
      "jump": "i",
      "offset": [
        543,
        679
      ],
      "op": "JUMP",
      "path": "88"
    },
    "2800": {
      "fn": "Context._msgSender",
      "offset": [
        543,
        679
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "2801": {
      "fn": "AccessController.revokeRole",
      "offset": [
        2191,
        2232
      ],
      "op": "PUSH2",
      "path": "73",
      "statement": 24,
      "value": "0x606"
    },
    "2804": {
      "fn": "AccessController.revokeRole",
      "offset": [
        2216,
        2220
      ],
      "op": "DUP3",
      "path": "73"
    },
    "2805": {
      "fn": "AccessController.revokeRole",
      "offset": [
        2222,
        2231
      ],
      "op": "DUP3",
      "path": "73"
    },
    "2806": {
      "fn": "AccessController.revokeRole",
      "offset": [
        2191,
        2215
      ],
      "op": "PUSH2",
      "path": "73",
      "value": "0xCF3"
    },
    "2809": {
      "fn": "AccessController.revokeRole",
      "jump": "i",
      "offset": [
        2191,
        2232
      ],
      "op": "JUMP",
      "path": "73"
    },
    "2810": {
      "fn": "AccessControl.supportsInterface",
      "offset": [
        2606,
        2808
      ],
      "op": "JUMPDEST",
      "path": "0"
    },
    "2811": {
      "fn": "AccessControl.supportsInterface",
      "offset": [
        2691,
        2695
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x0"
    },
    "2813": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2815": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2817": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "2819": {
      "op": "SHL"
    },
    "2820": {
      "op": "SUB"
    },
    "2821": {
      "op": "NOT"
    },
    "2822": {
      "fn": "AccessControl.supportsInterface",
      "offset": [
        2714,
        2761
      ],
      "op": "DUP3",
      "path": "0",
      "statement": 25
    },
    "2823": {
      "fn": "AccessControl.supportsInterface",
      "offset": [
        2714,
        2761
      ],
      "op": "AND",
      "path": "0"
    },
    "2824": {
      "op": "PUSH4",
      "value": "0x7965DB0B"
    },
    "2829": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "2831": {
      "op": "SHL"
    },
    "2832": {
      "fn": "AccessControl.supportsInterface",
      "offset": [
        2714,
        2761
      ],
      "op": "EQ",
      "path": "0"
    },
    "2833": {
      "fn": "AccessControl.supportsInterface",
      "offset": [
        2714,
        2761
      ],
      "op": "DUP1",
      "path": "0"
    },
    "2834": {
      "fn": "AccessControl.supportsInterface",
      "offset": [
        2714,
        2801
      ],
      "op": "PUSH2",
      "path": "0",
      "value": "0x3AB"
    },
    "2837": {
      "fn": "AccessControl.supportsInterface",
      "offset": [
        2714,
        2801
      ],
      "op": "JUMPI",
      "path": "0"
    },
    "2838": {
      "op": "POP"
    },
    "2839": {
      "op": "PUSH4",
      "value": "0x1FFC9A7"
    },
    "2844": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "2846": {
      "op": "SHL"
    },
    "2847": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2849": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2851": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "2853": {
      "op": "SHL"
    },
    "2854": {
      "op": "SUB"
    },
    "2855": {
      "op": "NOT"
    },
    "2856": {
      "fn": "ERC165.supportsInterface",
      "offset": [
        937,
        977
      ],
      "op": "DUP4",
      "path": "25",
      "statement": 26
    },
    "2857": {
      "fn": "ERC165.supportsInterface",
      "offset": [
        937,
        977
      ],
      "op": "AND",
      "path": "25"
    },
    "2858": {
      "fn": "ERC165.supportsInterface",
      "offset": [
        937,
        977
      ],
      "op": "EQ",
      "path": "25"
    },
    "2859": {
      "fn": "AccessControl.supportsInterface",
      "offset": [
        2765,
        2801
      ],
      "op": "PUSH2",
      "path": "0",
      "value": "0x3AB"
    },
    "2862": {
      "fn": "ERC165.supportsInterface",
      "offset": [
        829,
        984
      ],
      "op": "JUMP",
      "path": "25"
    },
    "2863": {
      "fn": "AccessControl.grantRole",
      "offset": [
        4816,
        4961
      ],
      "op": "JUMPDEST",
      "path": "0"
    },
    "2864": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4465,
        4472
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x0"
    },
    "2866": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4503
      ],
      "op": "DUP3",
      "path": "0"
    },
    "2867": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4503
      ],
      "op": "DUP2",
      "path": "0"
    },
    "2868": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4503
      ],
      "op": "MSTORE",
      "path": "0"
    },
    "2869": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4497
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x2"
    },
    "2871": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4503
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x20"
    },
    "2873": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4503
      ],
      "op": "MSTORE",
      "path": "0"
    },
    "2874": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4503
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x40"
    },
    "2876": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4503
      ],
      "op": "SWAP1",
      "path": "0"
    },
    "2877": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4503
      ],
      "op": "KECCAK256",
      "path": "0"
    },
    "2878": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4513
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x1"
    },
    "2880": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4513
      ],
      "op": "ADD",
      "path": "0"
    },
    "2881": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4513
      ],
      "op": "SLOAD",
      "path": "0"
    },
    "2882": {
      "offset": [
        2505,
        2521
      ],
      "op": "PUSH2",
      "path": "0",
      "value": "0xB4A"
    },
    "2885": {
      "offset": [
        2516,
        2520
      ],
      "op": "DUP2",
      "path": "0"
    },
    "2886": {
      "offset": [
        2505,
        2515
      ],
      "op": "PUSH2",
      "path": "0",
      "value": "0xD18"
    },
    "2889": {
      "jump": "i",
      "offset": [
        2505,
        2521
      ],
      "op": "JUMP",
      "path": "0"
    },
    "2890": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        2505,
        2521
      ],
      "op": "JUMPDEST",
      "path": "0"
    },
    "2891": {
      "fn": "AccessControl.grantRole",
      "offset": [
        4929,
        4954
      ],
      "op": "PUSH2",
      "path": "0",
      "statement": 27,
      "value": "0xB54"
    },
    "2894": {
      "fn": "AccessControl.grantRole",
      "offset": [
        4940,
        4944
      ],
      "op": "DUP4",
      "path": "0"
    },
    "2895": {
      "fn": "AccessControl.grantRole",
      "offset": [
        4946,
        4953
      ],
      "op": "DUP4",
      "path": "0"
    },
    "2896": {
      "fn": "AccessControl.grantRole",
      "offset": [
        4929,
        4939
      ],
      "op": "PUSH2",
      "path": "0",
      "value": "0xBDF"
    },
    "2899": {
      "fn": "AccessControl.grantRole",
      "jump": "i",
      "offset": [
        4929,
        4954
      ],
      "op": "JUMP",
      "path": "0"
    },
    "2900": {
      "fn": "AccessControl.grantRole",
      "offset": [
        4929,
        4954
      ],
      "op": "JUMPDEST",
      "path": "0"
    },
    "2901": {
      "fn": "AccessControl.grantRole",
      "offset": [
        4816,
        4961
      ],
      "op": "POP",
      "path": "0"
    },
    "2902": {
      "fn": "AccessControl.grantRole",
      "offset": [
        4816,
        4961
      ],
      "op": "POP",
      "path": "0"
    },
    "2903": {
      "fn": "AccessControl.grantRole",
      "offset": [
        4816,
        4961
      ],
      "op": "POP",
      "path": "0"
    },
    "2904": {
      "fn": "AccessControl.grantRole",
      "jump": "o",
      "offset": [
        4816,
        4961
      ],
      "op": "JUMP",
      "path": "0"
    },
    "2905": {
      "fn": "AccessControl.renounceRole",
      "offset": [
        5925,
        6139
      ],
      "op": "JUMPDEST",
      "path": "0"
    },
    "2906": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2908": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2910": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2912": {
      "op": "SHL"
    },
    "2913": {
      "op": "SUB"
    },
    "2914": {
      "fn": "AccessControl.renounceRole",
      "offset": [
        6020,
        6043
      ],
      "op": "DUP2",
      "path": "0",
      "statement": 28
    },
    "2915": {
      "fn": "AccessControl.renounceRole",
      "offset": [
        6020,
        6043
      ],
      "op": "AND",
      "path": "0"
    },
    "2916": {
      "fn": "Context._msgSender",
      "offset": [
        719,
        729
      ],
      "op": "CALLER",
      "path": "22"
    },
    "2917": {
      "branch": 70,
      "fn": "AccessControl.renounceRole",
      "offset": [
        6020,
        6043
      ],
      "op": "EQ",
      "path": "0"
    },
    "2918": {
      "fn": "AccessControl.renounceRole",
      "offset": [
        6012,
        6095
      ],
      "op": "PUSH2",
      "path": "0",
      "value": "0xBC9"
    },
    "2921": {
      "branch": 70,
      "fn": "AccessControl.renounceRole",
      "offset": [
        6012,
        6095
      ],
      "op": "JUMPI",
      "path": "0"
    },
    "2922": {
      "fn": "AccessControl.renounceRole",
      "offset": [
        6012,
        6095
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x40"
    },
    "2924": {
      "fn": "AccessControl.renounceRole",
      "offset": [
        6012,
        6095
      ],
      "op": "MLOAD",
      "path": "0"
    },
    "2925": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "2929": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "2931": {
      "op": "SHL"
    },
    "2932": {
      "fn": "AccessControl.renounceRole",
      "offset": [
        6012,
        6095
      ],
      "op": "DUP2",
      "path": "0"
    },
    "2933": {
      "fn": "AccessControl.renounceRole",
      "offset": [
        6012,
        6095
      ],
      "op": "MSTORE",
      "path": "0"
    },
    "2934": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "2936": {
      "fn": "AccessControl.renounceRole",
      "offset": [
        6012,
        6095
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x4"
    },
    "2938": {
      "fn": "AccessControl.renounceRole",
      "offset": [
        6012,
        6095
      ],
      "op": "DUP3",
      "path": "0"
    },
    "2939": {
      "fn": "AccessControl.renounceRole",
      "offset": [
        6012,
        6095
      ],
      "op": "ADD",
      "path": "0"
    },
    "2940": {
      "op": "MSTORE"
    },
    "2941": {
      "op": "PUSH1",
      "value": "0x2F"
    },
    "2943": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "2945": {
      "op": "DUP3"
    },
    "2946": {
      "op": "ADD"
    },
    "2947": {
      "op": "MSTORE"
    },
    "2948": {
      "op": "PUSH32",
      "value": "0x416363657373436F6E74726F6C3A2063616E206F6E6C792072656E6F756E6365"
    },
    "2981": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "2983": {
      "op": "DUP3"
    },
    "2984": {
      "op": "ADD"
    },
    "2985": {
      "op": "MSTORE"
    },
    "2986": {
      "op": "PUSH15",
      "value": "0x103937B632B9903337B91039B2B633"
    },
    "3002": {
      "op": "PUSH1",
      "value": "0x89"
    },
    "3004": {
      "op": "SHL"
    },
    "3005": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "3007": {
      "op": "DUP3"
    },
    "3008": {
      "op": "ADD"
    },
    "3009": {
      "op": "MSTORE"
    },
    "3010": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "3012": {
      "op": "ADD"
    },
    "3013": {
      "fn": "AccessControl.renounceRole",
      "offset": [
        6012,
        6095
      ],
      "op": "PUSH2",
      "path": "0",
      "value": "0x459"
    },
    "3016": {
      "op": "JUMP"
    },
    "3017": {
      "fn": "AccessControl.renounceRole",
      "offset": [
        6012,
        6095
      ],
      "op": "JUMPDEST",
      "path": "0"
    },
    "3018": {
      "fn": "AccessControl.renounceRole",
      "offset": [
        6106,
        6132
      ],
      "op": "PUSH2",
      "path": "0",
      "statement": 29,
      "value": "0x606"
    },
    "3021": {
      "fn": "AccessControl.renounceRole",
      "offset": [
        6118,
        6122
      ],
      "op": "DUP3",
      "path": "0"
    },
    "3022": {
      "fn": "AccessControl.renounceRole",
      "offset": [
        6124,
        6131
      ],
      "op": "DUP3",
      "path": "0"
    },
    "3023": {
      "fn": "AccessControl.renounceRole",
      "offset": [
        6106,
        6117
      ],
      "op": "PUSH2",
      "path": "0",
      "value": "0xD22"
    },
    "3026": {
      "fn": "AccessControl.renounceRole",
      "jump": "i",
      "offset": [
        6106,
        6132
      ],
      "op": "JUMP",
      "path": "0"
    },
    "3027": {
      "fn": "EnumerableSet.at",
      "offset": [
        9286,
        9442
      ],
      "op": "JUMPDEST",
      "path": "27"
    },
    "3028": {
      "fn": "EnumerableSet.at",
      "offset": [
        9360,
        9367
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x0"
    },
    "3030": {
      "fn": "EnumerableSet.at",
      "offset": [
        9410,
        9432
      ],
      "op": "PUSH2",
      "path": "27",
      "statement": 30,
      "value": "0x62C"
    },
    "3033": {
      "fn": "EnumerableSet.at",
      "offset": [
        9414,
        9417
      ],
      "op": "DUP4",
      "path": "27"
    },
    "3034": {
      "fn": "EnumerableSet.at",
      "offset": [
        9426,
        9431
      ],
      "op": "DUP4",
      "path": "27"
    },
    "3035": {
      "fn": "EnumerableSet.at",
      "offset": [
        9410,
        9413
      ],
      "op": "PUSH2",
      "path": "27",
      "value": "0xD44"
    },
    "3038": {
      "fn": "EnumerableSet.at",
      "jump": "i",
      "offset": [
        9410,
        9432
      ],
      "op": "JUMP",
      "path": "27"
    },
    "3039": {
      "fn": "AccessControlEnumerable._grantRole",
      "offset": [
        1978,
        2144
      ],
      "op": "JUMPDEST",
      "path": "1"
    },
    "3040": {
      "fn": "AccessControlEnumerable._grantRole",
      "offset": [
        2065,
        2096
      ],
      "op": "PUSH2",
      "path": "1",
      "statement": 31,
      "value": "0xBE9"
    },
    "3043": {
      "fn": "AccessControlEnumerable._grantRole",
      "offset": [
        2082,
        2086
      ],
      "op": "DUP3",
      "path": "1"
    },
    "3044": {
      "fn": "AccessControlEnumerable._grantRole",
      "offset": [
        2088,
        2095
      ],
      "op": "DUP3",
      "path": "1"
    },
    "3045": {
      "fn": "AccessControlEnumerable._grantRole",
      "offset": [
        2065,
        2081
      ],
      "op": "PUSH2",
      "path": "1",
      "value": "0xD7C"
    },
    "3048": {
      "fn": "AccessControlEnumerable._grantRole",
      "jump": "i",
      "offset": [
        2065,
        2096
      ],
      "op": "JUMP",
      "path": "1"
    },
    "3049": {
      "fn": "AccessControlEnumerable._grantRole",
      "offset": [
        2065,
        2096
      ],
      "op": "JUMPDEST",
      "path": "1"
    },
    "3050": {
      "fn": "AccessControlEnumerable._grantRole",
      "offset": [
        2106,
        2124
      ],
      "op": "PUSH1",
      "path": "1",
      "statement": 32,
      "value": "0x0"
    },
    "3052": {
      "fn": "AccessControlEnumerable._grantRole",
      "offset": [
        2106,
        2124
      ],
      "op": "DUP3",
      "path": "1"
    },
    "3053": {
      "fn": "AccessControlEnumerable._grantRole",
      "offset": [
        2106,
        2124
      ],
      "op": "DUP2",
      "path": "1"
    },
    "3054": {
      "fn": "AccessControlEnumerable._grantRole",
      "offset": [
        2106,
        2124
      ],
      "op": "MSTORE",
      "path": "1"
    },
    "3055": {
      "fn": "AccessControlEnumerable._grantRole",
      "offset": [
        2106,
        2118
      ],
      "op": "PUSH1",
      "path": "1",
      "value": "0x3"
    },
    "3057": {
      "fn": "AccessControlEnumerable._grantRole",
      "offset": [
        2106,
        2124
      ],
      "op": "PUSH1",
      "path": "1",
      "value": "0x20"
    },
    "3059": {
      "fn": "AccessControlEnumerable._grantRole",
      "offset": [
        2106,
        2124
      ],
      "op": "MSTORE",
      "path": "1"
    },
    "3060": {
      "fn": "AccessControlEnumerable._grantRole",
      "offset": [
        2106,
        2124
      ],
      "op": "PUSH1",
      "path": "1",
      "value": "0x40"
    },
    "3062": {
      "fn": "AccessControlEnumerable._grantRole",
      "offset": [
        2106,
        2124
      ],
      "op": "SWAP1",
      "path": "1"
    },
    "3063": {
      "fn": "AccessControlEnumerable._grantRole",
      "offset": [
        2106,
        2124
      ],
      "op": "KECCAK256",
      "path": "1"
    },
    "3064": {
      "fn": "AccessControlEnumerable._grantRole",
      "offset": [
        2106,
        2137
      ],
      "op": "PUSH2",
      "path": "1",
      "value": "0xB54"
    },
    "3067": {
      "fn": "AccessControlEnumerable._grantRole",
      "offset": [
        2106,
        2137
      ],
      "op": "SWAP1",
      "path": "1"
    },
    "3068": {
      "fn": "AccessControlEnumerable._grantRole",
      "offset": [
        2129,
        2136
      ],
      "op": "DUP3",
      "path": "1"
    },
    "3069": {
      "fn": "AccessControlEnumerable._grantRole",
      "offset": [
        2106,
        2128
      ],
      "op": "PUSH2",
      "path": "1",
      "value": "0xE02"
    },
    "3072": {
      "fn": "AccessControlEnumerable._grantRole",
      "jump": "i",
      "offset": [
        2106,
        2137
      ],
      "op": "JUMP",
      "path": "1"
    },
    "3073": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1530,
        1823
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "3074": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1604,
        1627
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x0"
    },
    "3076": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1667
      ],
      "op": "DUP1",
      "path": "88",
      "statement": 33
    },
    "3077": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1667
      ],
      "op": "SLOAD",
      "path": "88"
    },
    "3078": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x40"
    },
    "3080": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "MLOAD",
      "path": "88"
    },
    "3081": {
      "op": "PUSH4",
      "value": "0x1C2D8FB3"
    },
    "3086": {
      "op": "PUSH1",
      "value": "0xE3"
    },
    "3088": {
      "op": "SHL"
    },
    "3089": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "DUP2",
      "path": "88"
    },
    "3090": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "MSTORE",
      "path": "88"
    },
    "3091": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x4"
    },
    "3093": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "DUP2",
      "path": "88"
    },
    "3094": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "ADD",
      "path": "88"
    },
    "3095": {
      "op": "DUP5"
    },
    "3096": {
      "op": "SWAP1"
    },
    "3097": {
      "op": "MSTORE"
    },
    "3098": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1667
      ],
      "op": "PUSH3",
      "path": "88",
      "value": "0x10000"
    },
    "3102": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1667
      ],
      "op": "SWAP1",
      "path": "88"
    },
    "3103": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1667
      ],
      "op": "SWAP2",
      "path": "88"
    },
    "3104": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1667
      ],
      "op": "DIV",
      "path": "88"
    },
    "3105": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3107": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3109": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "3111": {
      "op": "SHL"
    },
    "3112": {
      "op": "SUB"
    },
    "3113": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1667
      ],
      "op": "AND",
      "path": "88"
    },
    "3114": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1667
      ],
      "op": "SWAP1",
      "path": "88"
    },
    "3115": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1679
      ],
      "op": "PUSH4",
      "path": "88",
      "value": "0xE16C7D98"
    },
    "3120": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1679
      ],
      "op": "SWAP1",
      "path": "88"
    },
    "3121": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "3123": {
      "op": "ADD"
    },
    "3124": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x20"
    },
    "3126": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x40"
    },
    "3128": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "MLOAD",
      "path": "88"
    },
    "3129": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "DUP1",
      "path": "88"
    },
    "3130": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "DUP4",
      "path": "88"
    },
    "3131": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "SUB",
      "path": "88"
    },
    "3132": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "DUP2",
      "path": "88"
    },
    "3133": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "DUP7",
      "path": "88"
    },
    "3134": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "DUP1",
      "path": "88"
    },
    "3135": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "EXTCODESIZE",
      "path": "88"
    },
    "3136": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "ISZERO",
      "path": "88"
    },
    "3137": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "DUP1",
      "path": "88"
    },
    "3138": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "ISZERO",
      "path": "88"
    },
    "3139": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0xC4B"
    },
    "3142": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "JUMPI",
      "path": "88"
    },
    "3143": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x0"
    },
    "3145": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "DUP1",
      "path": "88"
    },
    "3146": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "REVERT",
      "path": "88"
    },
    "3147": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "3148": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "POP",
      "path": "88"
    },
    "3149": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "GAS",
      "path": "88"
    },
    "3150": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "STATICCALL",
      "path": "88"
    },
    "3151": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "ISZERO",
      "path": "88"
    },
    "3152": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "DUP1",
      "path": "88"
    },
    "3153": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "ISZERO",
      "path": "88"
    },
    "3154": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0xC5F"
    },
    "3157": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "JUMPI",
      "path": "88"
    },
    "3158": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "RETURNDATASIZE",
      "path": "88"
    },
    "3159": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x0"
    },
    "3161": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "DUP1",
      "path": "88"
    },
    "3162": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "RETURNDATACOPY",
      "path": "88"
    },
    "3163": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "RETURNDATASIZE",
      "path": "88"
    },
    "3164": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x0"
    },
    "3166": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "REVERT",
      "path": "88"
    },
    "3167": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "3168": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "POP",
      "path": "88"
    },
    "3169": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "POP",
      "path": "88"
    },
    "3170": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "POP",
      "path": "88"
    },
    "3171": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "POP",
      "path": "88"
    },
    "3172": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x40"
    },
    "3174": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "MLOAD",
      "path": "88"
    },
    "3175": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "RETURNDATASIZE",
      "path": "88"
    },
    "3176": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x1F"
    },
    "3178": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "NOT",
      "path": "88"
    },
    "3179": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x1F"
    },
    "3181": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "DUP3",
      "path": "88"
    },
    "3182": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "ADD",
      "path": "88"
    },
    "3183": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "AND",
      "path": "88"
    },
    "3184": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "DUP3",
      "path": "88"
    },
    "3185": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "ADD",
      "path": "88"
    },
    "3186": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "DUP1",
      "path": "88"
    },
    "3187": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x40"
    },
    "3189": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "MSTORE",
      "path": "88"
    },
    "3190": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "POP",
      "path": "88"
    },
    "3191": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "DUP2",
      "path": "88"
    },
    "3192": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "ADD",
      "path": "88"
    },
    "3193": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "SWAP1",
      "path": "88"
    },
    "3194": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0xC83"
    },
    "3197": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "SWAP2",
      "path": "88"
    },
    "3198": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "SWAP1",
      "path": "88"
    },
    "3199": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x1261"
    },
    "3202": {
      "fn": "CoreController._getContractAddress",
      "jump": "i",
      "offset": [
        1658,
        1693
      ],
      "op": "JUMP",
      "path": "88"
    },
    "3203": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1658,
        1693
      ],
      "op": "JUMPDEST",
      "path": "88"
    },
    "3204": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1640,
        1693
      ],
      "op": "SWAP1",
      "path": "88"
    },
    "3205": {
      "op": "POP"
    },
    "3206": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3208": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3210": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "3212": {
      "op": "SHL"
    },
    "3213": {
      "op": "SUB"
    },
    "3214": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1724,
        1753
      ],
      "op": "DUP2",
      "path": "88",
      "statement": 34
    },
    "3215": {
      "branch": 76,
      "fn": "CoreController._getContractAddress",
      "offset": [
        1724,
        1753
      ],
      "op": "AND",
      "path": "88"
    },
    "3216": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1703,
        1816
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x3AE"
    },
    "3219": {
      "branch": 76,
      "fn": "CoreController._getContractAddress",
      "offset": [
        1703,
        1816
      ],
      "op": "JUMPI",
      "path": "88"
    },
    "3220": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1703,
        1816
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x40"
    },
    "3222": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1703,
        1816
      ],
      "op": "MLOAD",
      "path": "88"
    },
    "3223": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "3227": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "3229": {
      "op": "SHL"
    },
    "3230": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1703,
        1816
      ],
      "op": "DUP2",
      "path": "88"
    },
    "3231": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1703,
        1816
      ],
      "op": "MSTORE",
      "path": "88"
    },
    "3232": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3234": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1703,
        1816
      ],
      "op": "PUSH1",
      "path": "88",
      "value": "0x4"
    },
    "3236": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1703,
        1816
      ],
      "op": "DUP3",
      "path": "88"
    },
    "3237": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1703,
        1816
      ],
      "op": "ADD",
      "path": "88"
    },
    "3238": {
      "op": "MSTORE"
    },
    "3239": {
      "op": "PUSH1",
      "value": "0x25"
    },
    "3241": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "3243": {
      "op": "DUP3"
    },
    "3244": {
      "op": "ADD"
    },
    "3245": {
      "op": "MSTORE"
    },
    "3246": {
      "op": "PUSH32",
      "value": "0x4552524F523A4352432D3030343A434F4E54524143545F4E4F545F5245474953"
    },
    "3279": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "3281": {
      "op": "DUP3"
    },
    "3282": {
      "op": "ADD"
    },
    "3283": {
      "op": "MSTORE"
    },
    "3284": {
      "op": "PUSH5",
      "value": "0x1511549151"
    },
    "3290": {
      "op": "PUSH1",
      "value": "0xDA"
    },
    "3292": {
      "op": "SHL"
    },
    "3293": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "3295": {
      "op": "DUP3"
    },
    "3296": {
      "op": "ADD"
    },
    "3297": {
      "op": "MSTORE"
    },
    "3298": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "3300": {
      "op": "ADD"
    },
    "3301": {
      "fn": "CoreController._getContractAddress",
      "offset": [
        1703,
        1816
      ],
      "op": "PUSH2",
      "path": "88",
      "value": "0x459"
    },
    "3304": {
      "op": "JUMP"
    },
    "3305": {
      "fn": "EnumerableSet.length",
      "offset": [
        8829,
        8944
      ],
      "op": "JUMPDEST",
      "path": "27"
    },
    "3306": {
      "fn": "EnumerableSet.length",
      "offset": [
        8892,
        8899
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x0"
    },
    "3308": {
      "fn": "EnumerableSet.length",
      "offset": [
        8918,
        8937
      ],
      "op": "PUSH2",
      "path": "27",
      "statement": 35,
      "value": "0x3AB"
    },
    "3311": {
      "fn": "EnumerableSet.length",
      "offset": [
        8926,
        8929
      ],
      "op": "DUP3",
      "path": "27"
    },
    "3312": {
      "fn": "EnumerableSet._length",
      "offset": [
        4444,
        4462
      ],
      "op": "SLOAD",
      "path": "27",
      "statement": 36
    },
    "3313": {
      "fn": "EnumerableSet._length",
      "offset": [
        4444,
        4462
      ],
      "op": "SWAP1",
      "path": "27"
    },
    "3314": {
      "fn": "EnumerableSet._length",
      "offset": [
        4362,
        4469
      ],
      "op": "JUMP",
      "path": "27"
    },
    "3315": {
      "fn": "AccessControl.revokeRole",
      "offset": [
        5241,
        5388
      ],
      "op": "JUMPDEST",
      "path": "0"
    },
    "3316": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4465,
        4472
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x0"
    },
    "3318": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4503
      ],
      "op": "DUP3",
      "path": "0"
    },
    "3319": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4503
      ],
      "op": "DUP2",
      "path": "0"
    },
    "3320": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4503
      ],
      "op": "MSTORE",
      "path": "0"
    },
    "3321": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4497
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x2"
    },
    "3323": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4503
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x20"
    },
    "3325": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4503
      ],
      "op": "MSTORE",
      "path": "0"
    },
    "3326": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4503
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x40"
    },
    "3328": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4503
      ],
      "op": "SWAP1",
      "path": "0"
    },
    "3329": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4503
      ],
      "op": "KECCAK256",
      "path": "0"
    },
    "3330": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4513
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x1"
    },
    "3332": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4513
      ],
      "op": "ADD",
      "path": "0"
    },
    "3333": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        4491,
        4513
      ],
      "op": "SLOAD",
      "path": "0"
    },
    "3334": {
      "offset": [
        2505,
        2521
      ],
      "op": "PUSH2",
      "path": "0",
      "value": "0xD0E"
    },
    "3337": {
      "offset": [
        2516,
        2520
      ],
      "op": "DUP2",
      "path": "0"
    },
    "3338": {
      "offset": [
        2505,
        2515
      ],
      "op": "PUSH2",
      "path": "0",
      "value": "0xD18"
    },
    "3341": {
      "jump": "i",
      "offset": [
        2505,
        2521
      ],
      "op": "JUMP",
      "path": "0"
    },
    "3342": {
      "fn": "AccessControl.getRoleAdmin",
      "offset": [
        2505,
        2521
      ],
      "op": "JUMPDEST",
      "path": "0"
    },
    "3343": {
      "fn": "AccessControl.revokeRole",
      "offset": [
        5355,
        5381
      ],
      "op": "PUSH2",
      "path": "0",
      "statement": 37,
      "value": "0xB54"
    },
    "3346": {
      "fn": "AccessControl.revokeRole",
      "offset": [
        5367,
        5371
      ],
      "op": "DUP4",
      "path": "0"
    },
    "3347": {
      "fn": "AccessControl.revokeRole",
      "offset": [
        5373,
        5380
      ],
      "op": "DUP4",
      "path": "0"
    },
    "3348": {
      "fn": "AccessControl.revokeRole",
      "offset": [
        5355,
        5366
      ],
      "op": "PUSH2",
      "path": "0",
      "value": "0xD22"
    },
    "3351": {
      "fn": "AccessControl.revokeRole",
      "jump": "i",
      "offset": [
        5355,
        5381
      ],
      "op": "JUMP",
      "path": "0"
    },
    "3352": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3334,
        3437
      ],
      "op": "JUMPDEST",
      "path": "0"
    },
    "3353": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3400,
        3430
      ],
      "op": "PUSH2",
      "path": "0",
      "statement": 38,
      "value": "0x6D7"
    },
    "3356": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3411,
        3415
      ],
      "op": "DUP2",
      "path": "0"
    },
    "3357": {
      "fn": "Context._msgSender",
      "offset": [
        719,
        729
      ],
      "op": "CALLER",
      "path": "22"
    },
    "3358": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3400,
        3410
      ],
      "op": "PUSH2",
      "path": "0",
      "value": "0xE17"
    },
    "3361": {
      "fn": "AccessControl._checkRole",
      "jump": "i",
      "offset": [
        3400,
        3430
      ],
      "op": "JUMP",
      "path": "0"
    },
    "3362": {
      "fn": "AccessControlEnumerable._revokeRole",
      "offset": [
        2233,
        2404
      ],
      "op": "JUMPDEST",
      "path": "1"
    },
    "3363": {
      "fn": "AccessControlEnumerable._revokeRole",
      "offset": [
        2321,
        2353
      ],
      "op": "PUSH2",
      "path": "1",
      "statement": 39,
      "value": "0xD2C"
    },
    "3366": {
      "fn": "AccessControlEnumerable._revokeRole",
      "offset": [
        2339,
        2343
      ],
      "op": "DUP3",
      "path": "1"
    },
    "3367": {
      "fn": "AccessControlEnumerable._revokeRole",
      "offset": [
        2345,
        2352
      ],
      "op": "DUP3",
      "path": "1"
    },
    "3368": {
      "fn": "AccessControlEnumerable._revokeRole",
      "offset": [
        2321,
        2338
      ],
      "op": "PUSH2",
      "path": "1",
      "value": "0xE7B"
    },
    "3371": {
      "fn": "AccessControlEnumerable._revokeRole",
      "jump": "i",
      "offset": [
        2321,
        2353
      ],
      "op": "JUMP",
      "path": "1"
    },
    "3372": {
      "fn": "AccessControlEnumerable._revokeRole",
      "offset": [
        2321,
        2353
      ],
      "op": "JUMPDEST",
      "path": "1"
    },
    "3373": {
      "fn": "AccessControlEnumerable._revokeRole",
      "offset": [
        2363,
        2381
      ],
      "op": "PUSH1",
      "path": "1",
      "statement": 40,
      "value": "0x0"
    },
    "3375": {
      "fn": "AccessControlEnumerable._revokeRole",
      "offset": [
        2363,
        2381
      ],
      "op": "DUP3",
      "path": "1"
    },
    "3376": {
      "fn": "AccessControlEnumerable._revokeRole",
      "offset": [
        2363,
        2381
      ],
      "op": "DUP2",
      "path": "1"
    },
    "3377": {
      "fn": "AccessControlEnumerable._revokeRole",
      "offset": [
        2363,
        2381
      ],
      "op": "MSTORE",
      "path": "1"
    },
    "3378": {
      "fn": "AccessControlEnumerable._revokeRole",
      "offset": [
        2363,
        2375
      ],
      "op": "PUSH1",
      "path": "1",
      "value": "0x3"
    },
    "3380": {
      "fn": "AccessControlEnumerable._revokeRole",
      "offset": [
        2363,
        2381
      ],
      "op": "PUSH1",
      "path": "1",
      "value": "0x20"
    },
    "3382": {
      "fn": "AccessControlEnumerable._revokeRole",
      "offset": [
        2363,
        2381
      ],
      "op": "MSTORE",
      "path": "1"
    },
    "3383": {
      "fn": "AccessControlEnumerable._revokeRole",
      "offset": [
        2363,
        2381
      ],
      "op": "PUSH1",
      "path": "1",
      "value": "0x40"
    },
    "3385": {
      "fn": "AccessControlEnumerable._revokeRole",
      "offset": [
        2363,
        2381
      ],
      "op": "SWAP1",
      "path": "1"
    },
    "3386": {
      "fn": "AccessControlEnumerable._revokeRole",
      "offset": [
        2363,
        2381
      ],
      "op": "KECCAK256",
      "path": "1"
    },
    "3387": {
      "fn": "AccessControlEnumerable._revokeRole",
      "offset": [
        2363,
        2397
      ],
      "op": "PUSH2",
      "path": "1",
      "value": "0xB54"
    },
    "3390": {
      "fn": "AccessControlEnumerable._revokeRole",
      "offset": [
        2363,
        2397
      ],
      "op": "SWAP1",
      "path": "1"
    },
    "3391": {
      "fn": "AccessControlEnumerable._revokeRole",
      "offset": [
        2389,
        2396
      ],
      "op": "DUP3",
      "path": "1"
    },
    "3392": {
      "fn": "AccessControlEnumerable._revokeRole",
      "offset": [
        2363,
        2388
      ],
      "op": "PUSH2",
      "path": "1",
      "value": "0xEE2"
    },
    "3395": {
      "fn": "AccessControlEnumerable._revokeRole",
      "jump": "i",
      "offset": [
        2363,
        2397
      ],
      "op": "JUMP",
      "path": "1"
    },
    "3396": {
      "fn": "EnumerableSet._at",
      "offset": [
        4811,
        4929
      ],
      "op": "JUMPDEST",
      "path": "27"
    },
    "3397": {
      "fn": "EnumerableSet._at",
      "offset": [
        4878,
        4885
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x0"
    },
    "3399": {
      "fn": "EnumerableSet._at",
      "offset": [
        4904,
        4907
      ],
      "op": "DUP3",
      "path": "27",
      "statement": 41
    },
    "3400": {
      "fn": "EnumerableSet._at",
      "offset": [
        4904,
        4915
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x0"
    },
    "3402": {
      "fn": "EnumerableSet._at",
      "offset": [
        4904,
        4915
      ],
      "op": "ADD",
      "path": "27"
    },
    "3403": {
      "fn": "EnumerableSet._at",
      "offset": [
        4916,
        4921
      ],
      "op": "DUP3",
      "path": "27"
    },
    "3404": {
      "fn": "EnumerableSet._at",
      "offset": [
        4904,
        4922
      ],
      "op": "DUP2",
      "path": "27"
    },
    "3405": {
      "fn": "EnumerableSet._at",
      "offset": [
        4904,
        4922
      ],
      "op": "SLOAD",
      "path": "27"
    },
    "3406": {
      "fn": "EnumerableSet._at",
      "offset": [
        4904,
        4922
      ],
      "op": "DUP2",
      "path": "27"
    },
    "3407": {
      "fn": "EnumerableSet._at",
      "offset": [
        4904,
        4922
      ],
      "op": "LT",
      "path": "27"
    },
    "3408": {
      "fn": "EnumerableSet._at",
      "offset": [
        4904,
        4922
      ],
      "op": "PUSH2",
      "path": "27",
      "value": "0xD69"
    },
    "3411": {
      "fn": "EnumerableSet._at",
      "offset": [
        4904,
        4922
      ],
      "op": "JUMPI",
      "path": "27"
    },
    "3412": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "3417": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "3419": {
      "op": "SHL"
    },
    "3420": {
      "fn": "EnumerableSet._at",
      "offset": [
        4904,
        4922
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x0"
    },
    "3422": {
      "fn": "EnumerableSet._at",
      "offset": [
        4904,
        4922
      ],
      "op": "MSTORE",
      "path": "27"
    },
    "3423": {
      "fn": "EnumerableSet._at",
      "offset": [
        4904,
        4922
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x32"
    },
    "3425": {
      "fn": "EnumerableSet._at",
      "offset": [
        4904,
        4922
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x4"
    },
    "3427": {
      "fn": "EnumerableSet._at",
      "offset": [
        4904,
        4922
      ],
      "op": "MSTORE",
      "path": "27"
    },
    "3428": {
      "fn": "EnumerableSet._at",
      "offset": [
        4904,
        4922
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x24"
    },
    "3430": {
      "fn": "EnumerableSet._at",
      "offset": [
        4904,
        4922
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x0"
    },
    "3432": {
      "fn": "EnumerableSet._at",
      "offset": [
        4904,
        4922
      ],
      "op": "REVERT",
      "path": "27"
    },
    "3433": {
      "fn": "EnumerableSet._at",
      "offset": [
        4904,
        4922
      ],
      "op": "JUMPDEST",
      "path": "27"
    },
    "3434": {
      "fn": "EnumerableSet._at",
      "offset": [
        4904,
        4922
      ],
      "op": "SWAP1",
      "path": "27"
    },
    "3435": {
      "fn": "EnumerableSet._at",
      "offset": [
        4904,
        4922
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x0"
    },
    "3437": {
      "fn": "EnumerableSet._at",
      "offset": [
        4904,
        4922
      ],
      "op": "MSTORE",
      "path": "27"
    },
    "3438": {
      "fn": "EnumerableSet._at",
      "offset": [
        4904,
        4922
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x20"
    },
    "3440": {
      "fn": "EnumerableSet._at",
      "offset": [
        4904,
        4922
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x0"
    },
    "3442": {
      "fn": "EnumerableSet._at",
      "offset": [
        4904,
        4922
      ],
      "op": "KECCAK256",
      "path": "27"
    },
    "3443": {
      "fn": "EnumerableSet._at",
      "offset": [
        4904,
        4922
      ],
      "op": "ADD",
      "path": "27"
    },
    "3444": {
      "fn": "EnumerableSet._at",
      "offset": [
        4904,
        4922
      ],
      "op": "SLOAD",
      "path": "27"
    },
    "3445": {
      "fn": "EnumerableSet._at",
      "offset": [
        4897,
        4922
      ],
      "op": "SWAP1",
      "path": "27"
    },
    "3446": {
      "fn": "EnumerableSet._at",
      "offset": [
        4897,
        4922
      ],
      "op": "POP",
      "path": "27"
    },
    "3447": {
      "fn": "EnumerableSet._at",
      "offset": [
        4811,
        4929
      ],
      "op": "SWAP3",
      "path": "27"
    },
    "3448": {
      "fn": "EnumerableSet._at",
      "offset": [
        4811,
        4929
      ],
      "op": "SWAP2",
      "path": "27"
    },
    "3449": {
      "fn": "EnumerableSet._at",
      "offset": [
        4811,
        4929
      ],
      "op": "POP",
      "path": "27"
    },
    "3450": {
      "fn": "EnumerableSet._at",
      "offset": [
        4811,
        4929
      ],
      "op": "POP",
      "path": "27"
    },
    "3451": {
      "fn": "EnumerableSet._at",
      "jump": "o",
      "offset": [
        4811,
        4929
      ],
      "op": "JUMP",
      "path": "27"
    },
    "3452": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7474,
        7707
      ],
      "op": "JUMPDEST",
      "path": "0"
    },
    "3453": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7557,
        7579
      ],
      "op": "PUSH2",
      "path": "0",
      "value": "0xD86"
    },
    "3456": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7565,
        7569
      ],
      "op": "DUP3",
      "path": "0"
    },
    "3457": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7571,
        7578
      ],
      "op": "DUP3",
      "path": "0"
    },
    "3458": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7557,
        7564
      ],
      "op": "PUSH2",
      "path": "0",
      "value": "0x635"
    },
    "3461": {
      "fn": "AccessControl._grantRole",
      "jump": "i",
      "offset": [
        7557,
        7579
      ],
      "op": "JUMP",
      "path": "0"
    },
    "3462": {
      "branch": 71,
      "fn": "AccessControl._grantRole",
      "offset": [
        7557,
        7579
      ],
      "op": "JUMPDEST",
      "path": "0"
    },
    "3463": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7552,
        7701
      ],
      "op": "PUSH2",
      "path": "0",
      "value": "0x606"
    },
    "3466": {
      "branch": 71,
      "fn": "AccessControl._grantRole",
      "offset": [
        7552,
        7701
      ],
      "op": "JUMPI",
      "path": "0"
    },
    "3467": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7595,
        7607
      ],
      "op": "PUSH1",
      "path": "0",
      "statement": 42,
      "value": "0x0"
    },
    "3469": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7595,
        7607
      ],
      "op": "DUP3",
      "path": "0"
    },
    "3470": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7595,
        7607
      ],
      "op": "DUP2",
      "path": "0"
    },
    "3471": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7595,
        7607
      ],
      "op": "MSTORE",
      "path": "0"
    },
    "3472": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7595,
        7601
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x2"
    },
    "3474": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7595,
        7607
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x20"
    },
    "3476": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7595,
        7607
      ],
      "op": "SWAP1",
      "path": "0"
    },
    "3477": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7595,
        7607
      ],
      "op": "DUP2",
      "path": "0"
    },
    "3478": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7595,
        7607
      ],
      "op": "MSTORE",
      "path": "0"
    },
    "3479": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7595,
        7607
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x40"
    },
    "3481": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7595,
        7607
      ],
      "op": "DUP1",
      "path": "0"
    },
    "3482": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7595,
        7607
      ],
      "op": "DUP4",
      "path": "0"
    },
    "3483": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7595,
        7607
      ],
      "op": "KECCAK256",
      "path": "0"
    },
    "3484": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3486": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3488": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "3490": {
      "op": "SHL"
    },
    "3491": {
      "op": "SUB"
    },
    "3492": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7595,
        7624
      ],
      "op": "DUP6",
      "path": "0"
    },
    "3493": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7595,
        7624
      ],
      "op": "AND",
      "path": "0"
    },
    "3494": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7595,
        7624
      ],
      "op": "DUP5",
      "path": "0"
    },
    "3495": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7595,
        7624
      ],
      "op": "MSTORE",
      "path": "0"
    },
    "3496": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7595,
        7624
      ],
      "op": "SWAP1",
      "path": "0"
    },
    "3497": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7595,
        7624
      ],
      "op": "SWAP2",
      "path": "0"
    },
    "3498": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7595,
        7624
      ],
      "op": "MSTORE",
      "path": "0"
    },
    "3499": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7595,
        7624
      ],
      "op": "SWAP1",
      "path": "0"
    },
    "3500": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7595,
        7624
      ],
      "op": "KECCAK256",
      "path": "0"
    },
    "3501": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7595,
        7631
      ],
      "op": "DUP1",
      "path": "0"
    },
    "3502": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7595,
        7631
      ],
      "op": "SLOAD",
      "path": "0"
    },
    "3503": {
      "op": "PUSH1",
      "value": "0xFF"
    },
    "3505": {
      "op": "NOT"
    },
    "3506": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7595,
        7631
      ],
      "op": "AND",
      "path": "0"
    },
    "3507": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7627,
        7631
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x1"
    },
    "3509": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7595,
        7631
      ],
      "op": "OR",
      "path": "0"
    },
    "3510": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7595,
        7631
      ],
      "op": "SWAP1",
      "path": "0"
    },
    "3511": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7595,
        7631
      ],
      "op": "SSTORE",
      "path": "0"
    },
    "3512": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7677,
        7689
      ],
      "op": "PUSH2",
      "path": "0",
      "statement": 43,
      "value": "0xDBE"
    },
    "3515": {
      "fn": "Context._msgSender",
      "offset": [
        719,
        729
      ],
      "op": "CALLER",
      "path": "22"
    },
    "3516": {
      "fn": "Context._msgSender",
      "offset": [
        640,
        736
      ],
      "op": "SWAP1",
      "path": "22"
    },
    "3517": {
      "fn": "Context._msgSender",
      "offset": [
        640,
        736
      ],
      "op": "JUMP",
      "path": "22"
    },
    "3518": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7677,
        7689
      ],
      "op": "JUMPDEST",
      "path": "0"
    },
    "3519": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3521": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3523": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "3525": {
      "op": "SHL"
    },
    "3526": {
      "op": "SUB"
    },
    "3527": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7650,
        7690
      ],
      "op": "AND",
      "path": "0"
    },
    "3528": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7668,
        7675
      ],
      "op": "DUP2",
      "path": "0"
    },
    "3529": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3531": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3533": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "3535": {
      "op": "SHL"
    },
    "3536": {
      "op": "SUB"
    },
    "3537": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7650,
        7690
      ],
      "op": "AND",
      "path": "0"
    },
    "3538": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7662,
        7666
      ],
      "op": "DUP4",
      "path": "0"
    },
    "3539": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7650,
        7690
      ],
      "op": "PUSH32",
      "path": "0",
      "value": "0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D"
    },
    "3572": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7650,
        7690
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x40"
    },
    "3574": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7650,
        7690
      ],
      "op": "MLOAD",
      "path": "0"
    },
    "3575": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7650,
        7690
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x40"
    },
    "3577": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7650,
        7690
      ],
      "op": "MLOAD",
      "path": "0"
    },
    "3578": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7650,
        7690
      ],
      "op": "DUP1",
      "path": "0"
    },
    "3579": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7650,
        7690
      ],
      "op": "SWAP2",
      "path": "0"
    },
    "3580": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7650,
        7690
      ],
      "op": "SUB",
      "path": "0"
    },
    "3581": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7650,
        7690
      ],
      "op": "SWAP1",
      "path": "0"
    },
    "3582": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7650,
        7690
      ],
      "op": "LOG4",
      "path": "0"
    },
    "3583": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7474,
        7707
      ],
      "op": "POP",
      "path": "0"
    },
    "3584": {
      "fn": "AccessControl._grantRole",
      "offset": [
        7474,
        7707
      ],
      "op": "POP",
      "path": "0"
    },
    "3585": {
      "fn": "AccessControl._grantRole",
      "jump": "o",
      "offset": [
        7474,
        7707
      ],
      "op": "JUMP",
      "path": "0"
    },
    "3586": {
      "fn": "EnumerableSet.add",
      "offset": [
        8028,
        8178
      ],
      "op": "JUMPDEST",
      "path": "27"
    },
    "3587": {
      "fn": "EnumerableSet.add",
      "offset": [
        8098,
        8102
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x0"
    },
    "3589": {
      "fn": "EnumerableSet.add",
      "offset": [
        8121,
        8171
      ],
      "op": "PUSH2",
      "path": "27",
      "statement": 44,
      "value": "0x62C"
    },
    "3592": {
      "fn": "EnumerableSet.add",
      "offset": [
        8126,
        8129
      ],
      "op": "DUP4",
      "path": "27"
    },
    "3593": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3595": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3597": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "3599": {
      "op": "SHL"
    },
    "3600": {
      "op": "SUB"
    },
    "3601": {
      "fn": "EnumerableSet.add",
      "offset": [
        8146,
        8169
      ],
      "op": "DUP5",
      "path": "27"
    },
    "3602": {
      "fn": "EnumerableSet.add",
      "offset": [
        8146,
        8169
      ],
      "op": "AND",
      "path": "27"
    },
    "3603": {
      "fn": "EnumerableSet.add",
      "offset": [
        8121,
        8125
      ],
      "op": "PUSH2",
      "path": "27",
      "value": "0xEF7"
    },
    "3606": {
      "fn": "EnumerableSet.add",
      "jump": "i",
      "offset": [
        8121,
        8171
      ],
      "op": "JUMP",
      "path": "27"
    },
    "3607": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3718,
        4210
      ],
      "op": "JUMPDEST",
      "path": "0"
    },
    "3608": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3806,
        3828
      ],
      "op": "PUSH2",
      "path": "0",
      "value": "0xE21"
    },
    "3611": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3814,
        3818
      ],
      "op": "DUP3",
      "path": "0"
    },
    "3612": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3820,
        3827
      ],
      "op": "DUP3",
      "path": "0"
    },
    "3613": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3806,
        3813
      ],
      "op": "PUSH2",
      "path": "0",
      "value": "0x635"
    },
    "3616": {
      "fn": "AccessControl._checkRole",
      "jump": "i",
      "offset": [
        3806,
        3828
      ],
      "op": "JUMP",
      "path": "0"
    },
    "3617": {
      "branch": 72,
      "fn": "AccessControl._checkRole",
      "offset": [
        3806,
        3828
      ],
      "op": "JUMPDEST",
      "path": "0"
    },
    "3618": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3801,
        4204
      ],
      "op": "PUSH2",
      "path": "0",
      "value": "0x606"
    },
    "3621": {
      "branch": 72,
      "fn": "AccessControl._checkRole",
      "offset": [
        3801,
        4204
      ],
      "op": "JUMPI",
      "path": "0"
    },
    "3622": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3989,
        4030
      ],
      "op": "PUSH2",
      "path": "0",
      "statement": 45,
      "value": "0xE39"
    },
    "3625": {
      "fn": "AccessControl._checkRole",
      "offset": [
        4017,
        4024
      ],
      "op": "DUP2",
      "path": "0"
    },
    "3626": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3628": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3630": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "3632": {
      "op": "SHL"
    },
    "3633": {
      "op": "SUB"
    },
    "3634": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3989,
        4030
      ],
      "op": "AND",
      "path": "0"
    },
    "3635": {
      "fn": "AccessControl._checkRole",
      "offset": [
        4027,
        4029
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x14"
    },
    "3637": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3989,
        4008
      ],
      "op": "PUSH2",
      "path": "0",
      "value": "0xF46"
    },
    "3640": {
      "fn": "AccessControl._checkRole",
      "jump": "i",
      "offset": [
        3989,
        4030
      ],
      "op": "JUMP",
      "path": "0"
    },
    "3641": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3989,
        4030
      ],
      "op": "JUMPDEST",
      "path": "0"
    },
    "3642": {
      "fn": "AccessControl._checkRole",
      "offset": [
        4101,
        4139
      ],
      "op": "PUSH2",
      "path": "0",
      "value": "0xE44"
    },
    "3645": {
      "fn": "AccessControl._checkRole",
      "offset": [
        4129,
        4133
      ],
      "op": "DUP4",
      "path": "0"
    },
    "3646": {
      "fn": "AccessControl._checkRole",
      "offset": [
        4136,
        4138
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x20"
    },
    "3648": {
      "fn": "AccessControl._checkRole",
      "offset": [
        4101,
        4120
      ],
      "op": "PUSH2",
      "path": "0",
      "value": "0xF46"
    },
    "3651": {
      "fn": "AccessControl._checkRole",
      "jump": "i",
      "offset": [
        4101,
        4139
      ],
      "op": "JUMP",
      "path": "0"
    },
    "3652": {
      "fn": "AccessControl._checkRole",
      "offset": [
        4101,
        4139
      ],
      "op": "JUMPDEST",
      "path": "0"
    },
    "3653": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3896,
        4161
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x40"
    },
    "3655": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3896,
        4161
      ],
      "op": "MLOAD",
      "path": "0"
    },
    "3656": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3896,
        4161
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x20"
    },
    "3658": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3896,
        4161
      ],
      "op": "ADD",
      "path": "0"
    },
    "3659": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3896,
        4161
      ],
      "op": "PUSH2",
      "path": "0",
      "value": "0xE55"
    },
    "3662": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3896,
        4161
      ],
      "op": "SWAP3",
      "path": "0"
    },
    "3663": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3896,
        4161
      ],
      "op": "SWAP2",
      "path": "0"
    },
    "3664": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3896,
        4161
      ],
      "op": "SWAP1",
      "path": "0"
    },
    "3665": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3896,
        4161
      ],
      "op": "PUSH2",
      "path": "0",
      "value": "0x132D"
    },
    "3668": {
      "fn": "AccessControl._checkRole",
      "jump": "i",
      "offset": [
        3896,
        4161
      ],
      "op": "JUMP",
      "path": "0"
    },
    "3669": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3896,
        4161
      ],
      "op": "JUMPDEST",
      "path": "0"
    },
    "3670": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3896,
        4161
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x40"
    },
    "3672": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3896,
        4161
      ],
      "op": "DUP1",
      "path": "0"
    },
    "3673": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3896,
        4161
      ],
      "op": "MLOAD",
      "path": "0"
    },
    "3674": {
      "op": "PUSH1",
      "value": "0x1F"
    },
    "3676": {
      "op": "NOT"
    },
    "3677": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3896,
        4161
      ],
      "op": "DUP2",
      "path": "0"
    },
    "3678": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3896,
        4161
      ],
      "op": "DUP5",
      "path": "0"
    },
    "3679": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3896,
        4161
      ],
      "op": "SUB",
      "path": "0"
    },
    "3680": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3896,
        4161
      ],
      "op": "ADD",
      "path": "0"
    },
    "3681": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3896,
        4161
      ],
      "op": "DUP2",
      "path": "0"
    },
    "3682": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3896,
        4161
      ],
      "op": "MSTORE",
      "path": "0"
    },
    "3683": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3896,
        4161
      ],
      "op": "SWAP1",
      "path": "0"
    },
    "3684": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3896,
        4161
      ],
      "op": "DUP3",
      "path": "0"
    },
    "3685": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3896,
        4161
      ],
      "op": "SWAP1",
      "path": "0"
    },
    "3686": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3896,
        4161
      ],
      "op": "MSTORE",
      "path": "0"
    },
    "3687": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "3691": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "3693": {
      "op": "SHL"
    },
    "3694": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3844,
        4193
      ],
      "op": "DUP3",
      "path": "0"
    },
    "3695": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3844,
        4193
      ],
      "op": "MSTORE",
      "path": "0"
    },
    "3696": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3844,
        4193
      ],
      "op": "PUSH2",
      "path": "0",
      "value": "0x459"
    },
    "3699": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3844,
        4193
      ],
      "op": "SWAP2",
      "path": "0"
    },
    "3700": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3844,
        4193
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x4"
    },
    "3702": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3844,
        4193
      ],
      "op": "ADD",
      "path": "0"
    },
    "3703": {
      "fn": "AccessControl._checkRole",
      "offset": [
        3844,
        4193
      ],
      "op": "PUSH2",
      "path": "0",
      "value": "0x13DC"
    },
    "3706": {
      "fn": "AccessControl._checkRole",
      "jump": "i",
      "offset": [
        3844,
        4193
      ],
      "op": "JUMP",
      "path": "0"
    },
    "3707": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7878,
        8112
      ],
      "op": "JUMPDEST",
      "path": "0"
    },
    "3708": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7961,
        7983
      ],
      "op": "PUSH2",
      "path": "0",
      "value": "0xE85"
    },
    "3711": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7969,
        7973
      ],
      "op": "DUP3",
      "path": "0"
    },
    "3712": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7975,
        7982
      ],
      "op": "DUP3",
      "path": "0"
    },
    "3713": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7961,
        7968
      ],
      "op": "PUSH2",
      "path": "0",
      "value": "0x635"
    },
    "3716": {
      "fn": "AccessControl._revokeRole",
      "jump": "i",
      "offset": [
        7961,
        7983
      ],
      "op": "JUMP",
      "path": "0"
    },
    "3717": {
      "branch": 73,
      "fn": "AccessControl._revokeRole",
      "offset": [
        7961,
        7983
      ],
      "op": "JUMPDEST",
      "path": "0"
    },
    "3718": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7957,
        8106
      ],
      "op": "ISZERO",
      "path": "0"
    },
    "3719": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7957,
        8106
      ],
      "op": "PUSH2",
      "path": "0",
      "value": "0x606"
    },
    "3722": {
      "branch": 73,
      "fn": "AccessControl._revokeRole",
      "offset": [
        7957,
        8106
      ],
      "op": "JUMPI",
      "path": "0"
    },
    "3723": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        8031,
        8036
      ],
      "op": "PUSH1",
      "path": "0",
      "statement": 46,
      "value": "0x0"
    },
    "3725": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7999,
        8011
      ],
      "op": "DUP3",
      "path": "0"
    },
    "3726": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7999,
        8011
      ],
      "op": "DUP2",
      "path": "0"
    },
    "3727": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7999,
        8011
      ],
      "op": "MSTORE",
      "path": "0"
    },
    "3728": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7999,
        8005
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x2"
    },
    "3730": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7999,
        8011
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x20"
    },
    "3732": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7999,
        8011
      ],
      "op": "SWAP1",
      "path": "0"
    },
    "3733": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7999,
        8011
      ],
      "op": "DUP2",
      "path": "0"
    },
    "3734": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7999,
        8011
      ],
      "op": "MSTORE",
      "path": "0"
    },
    "3735": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7999,
        8011
      ],
      "op": "PUSH1",
      "path": "0",
      "value": "0x40"
    },
    "3737": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7999,
        8011
      ],
      "op": "DUP1",
      "path": "0"
    },
    "3738": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7999,
        8011
      ],
      "op": "DUP4",
      "path": "0"
    },
    "3739": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7999,
        8011
      ],
      "op": "KECCAK256",
      "path": "0"
    },
    "3740": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3742": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3744": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "3746": {
      "op": "SHL"
    },
    "3747": {
      "op": "SUB"
    },
    "3748": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7999,
        8028
      ],
      "op": "DUP6",
      "path": "0"
    },
    "3749": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7999,
        8028
      ],
      "op": "AND",
      "path": "0"
    },
    "3750": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7999,
        8028
      ],
      "op": "DUP1",
      "path": "0"
    },
    "3751": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7999,
        8028
      ],
      "op": "DUP6",
      "path": "0"
    },
    "3752": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7999,
        8028
      ],
      "op": "MSTORE",
      "path": "0"
    },
    "3753": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7999,
        8028
      ],
      "op": "SWAP3",
      "path": "0"
    },
    "3754": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7999,
        8028
      ],
      "op": "MSTORE",
      "path": "0"
    },
    "3755": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7999,
        8028
      ],
      "op": "DUP1",
      "path": "0"
    },
    "3756": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7999,
        8028
      ],
      "op": "DUP4",
      "path": "0"
    },
    "3757": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7999,
        8028
      ],
      "op": "KECCAK256",
      "path": "0"
    },
    "3758": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7999,
        8036
      ],
      "op": "DUP1",
      "path": "0"
    },
    "3759": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7999,
        8036
      ],
      "op": "SLOAD",
      "path": "0"
    },
    "3760": {
      "op": "PUSH1",
      "value": "0xFF"
    },
    "3762": {
      "op": "NOT"
    },
    "3763": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7999,
        8036
      ],
      "op": "AND",
      "path": "0"
    },
    "3764": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7999,
        8036
      ],
      "op": "SWAP1",
      "path": "0"
    },
    "3765": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7999,
        8036
      ],
      "op": "SSTORE",
      "path": "0"
    },
    "3766": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        8055,
        8095
      ],
      "op": "MLOAD",
      "path": "0",
      "statement": 47
    },
    "3767": {
      "fn": "Context._msgSender",
      "offset": [
        719,
        729
      ],
      "op": "CALLER",
      "path": "22"
    },
    "3768": {
      "fn": "Context._msgSender",
      "offset": [
        719,
        729
      ],
      "op": "SWAP3",
      "path": "22"
    },
    "3769": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7999,
        8011
      ],
      "op": "DUP6",
      "path": "0"
    },
    "3770": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7999,
        8011
      ],
      "op": "SWAP2",
      "path": "0"
    },
    "3771": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        8055,
        8095
      ],
      "op": "PUSH32",
      "path": "0",
      "value": "0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B"
    },
    "3804": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        8055,
        8095
      ],
      "op": "SWAP2",
      "path": "0"
    },
    "3805": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        8031,
        8036
      ],
      "op": "SWAP1",
      "path": "0"
    },
    "3806": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        8055,
        8095
      ],
      "op": "LOG4",
      "path": "0"
    },
    "3807": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7878,
        8112
      ],
      "op": "POP",
      "path": "0"
    },
    "3808": {
      "fn": "AccessControl._revokeRole",
      "offset": [
        7878,
        8112
      ],
      "op": "POP",
      "path": "0"
    },
    "3809": {
      "fn": "AccessControl._revokeRole",
      "jump": "o",
      "offset": [
        7878,
        8112
      ],
      "op": "JUMP",
      "path": "0"
    },
    "3810": {
      "fn": "EnumerableSet.remove",
      "offset": [
        8346,
        8502
      ],
      "op": "JUMPDEST",
      "path": "27"
    },
    "3811": {
      "fn": "EnumerableSet.remove",
      "offset": [
        8419,
        8423
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x0"
    },
    "3813": {
      "fn": "EnumerableSet.remove",
      "offset": [
        8442,
        8495
      ],
      "op": "PUSH2",
      "path": "27",
      "statement": 48,
      "value": "0x62C"
    },
    "3816": {
      "fn": "EnumerableSet.remove",
      "offset": [
        8450,
        8453
      ],
      "op": "DUP4",
      "path": "27"
    },
    "3817": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3819": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3821": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "3823": {
      "op": "SHL"
    },
    "3824": {
      "op": "SUB"
    },
    "3825": {
      "fn": "EnumerableSet.remove",
      "offset": [
        8470,
        8493
      ],
      "op": "DUP5",
      "path": "27"
    },
    "3826": {
      "fn": "EnumerableSet.remove",
      "offset": [
        8470,
        8493
      ],
      "op": "AND",
      "path": "27"
    },
    "3827": {
      "fn": "EnumerableSet.remove",
      "offset": [
        8442,
        8449
      ],
      "op": "PUSH2",
      "path": "27",
      "value": "0x1128"
    },
    "3830": {
      "fn": "EnumerableSet.remove",
      "jump": "i",
      "offset": [
        8442,
        8495
      ],
      "op": "JUMP",
      "path": "27"
    },
    "3831": {
      "fn": "EnumerableSet._add",
      "offset": [
        2113,
        2517
      ],
      "op": "JUMPDEST",
      "path": "27"
    },
    "3832": {
      "fn": "EnumerableSet._add",
      "offset": [
        2176,
        2180
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x0"
    },
    "3834": {
      "fn": "EnumerableSet._contains",
      "offset": [
        4250,
        4269
      ],
      "op": "DUP2",
      "path": "27",
      "statement": 49
    },
    "3835": {
      "fn": "EnumerableSet._contains",
      "offset": [
        4250,
        4269
      ],
      "op": "DUP2",
      "path": "27"
    },
    "3836": {
      "fn": "EnumerableSet._contains",
      "offset": [
        4250,
        4269
      ],
      "op": "MSTORE",
      "path": "27"
    },
    "3837": {
      "fn": "EnumerableSet._contains",
      "offset": [
        4250,
        4262
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x1"
    },
    "3839": {
      "fn": "EnumerableSet._contains",
      "offset": [
        4250,
        4262
      ],
      "op": "DUP4",
      "path": "27"
    },
    "3840": {
      "fn": "EnumerableSet._contains",
      "offset": [
        4250,
        4262
      ],
      "op": "ADD",
      "path": "27"
    },
    "3841": {
      "fn": "EnumerableSet._contains",
      "offset": [
        4250,
        4269
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x20"
    },
    "3843": {
      "fn": "EnumerableSet._contains",
      "offset": [
        4250,
        4269
      ],
      "op": "MSTORE",
      "path": "27"
    },
    "3844": {
      "fn": "EnumerableSet._contains",
      "offset": [
        4250,
        4269
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x40"
    },
    "3846": {
      "fn": "EnumerableSet._contains",
      "offset": [
        4250,
        4269
      ],
      "op": "DUP2",
      "path": "27"
    },
    "3847": {
      "fn": "EnumerableSet._contains",
      "offset": [
        4250,
        4269
      ],
      "op": "KECCAK256",
      "path": "27"
    },
    "3848": {
      "fn": "EnumerableSet._contains",
      "offset": [
        4250,
        4269
      ],
      "op": "SLOAD",
      "path": "27"
    },
    "3849": {
      "fn": "EnumerableSet._add",
      "offset": [
        2192,
        2511
      ],
      "op": "PUSH2",
      "path": "27",
      "value": "0xF3E"
    },
    "3852": {
      "fn": "EnumerableSet._add",
      "offset": [
        2192,
        2511
      ],
      "op": "JUMPI",
      "path": "27"
    },
    "3853": {
      "op": "POP"
    },
    "3854": {
      "fn": "EnumerableSet._add",
      "offset": [
        2234,
        2257
      ],
      "op": "DUP2",
      "path": "27",
      "statement": 50
    },
    "3855": {
      "fn": "EnumerableSet._add",
      "offset": [
        2234,
        2257
      ],
      "op": "SLOAD",
      "path": "27"
    },
    "3856": {
      "fn": "EnumerableSet._add",
      "offset": [
        2234,
        2257
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x1"
    },
    "3858": {
      "fn": "EnumerableSet._add",
      "offset": [
        2234,
        2257
      ],
      "op": "DUP2",
      "path": "27"
    },
    "3859": {
      "fn": "EnumerableSet._add",
      "offset": [
        2234,
        2257
      ],
      "op": "DUP2",
      "path": "27"
    },
    "3860": {
      "fn": "EnumerableSet._add",
      "offset": [
        2234,
        2257
      ],
      "op": "ADD",
      "path": "27"
    },
    "3861": {
      "fn": "EnumerableSet._add",
      "offset": [
        2234,
        2257
      ],
      "op": "DUP5",
      "path": "27"
    },
    "3862": {
      "fn": "EnumerableSet._add",
      "offset": [
        2234,
        2257
      ],
      "op": "SSTORE",
      "path": "27"
    },
    "3863": {
      "fn": "EnumerableSet._add",
      "offset": [
        2234,
        2245
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x0"
    },
    "3865": {
      "fn": "EnumerableSet._add",
      "offset": [
        2234,
        2257
      ],
      "op": "DUP5",
      "path": "27"
    },
    "3866": {
      "fn": "EnumerableSet._add",
      "offset": [
        2234,
        2257
      ],
      "op": "DUP2",
      "path": "27"
    },
    "3867": {
      "fn": "EnumerableSet._add",
      "offset": [
        2234,
        2257
      ],
      "op": "MSTORE",
      "path": "27"
    },
    "3868": {
      "fn": "EnumerableSet._add",
      "offset": [
        2234,
        2257
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x20"
    },
    "3870": {
      "fn": "EnumerableSet._add",
      "offset": [
        2234,
        2257
      ],
      "op": "DUP1",
      "path": "27"
    },
    "3871": {
      "fn": "EnumerableSet._add",
      "offset": [
        2234,
        2257
      ],
      "op": "DUP3",
      "path": "27"
    },
    "3872": {
      "fn": "EnumerableSet._add",
      "offset": [
        2234,
        2257
      ],
      "op": "KECCAK256",
      "path": "27"
    },
    "3873": {
      "fn": "EnumerableSet._add",
      "offset": [
        2234,
        2257
      ],
      "op": "SWAP1",
      "path": "27"
    },
    "3874": {
      "fn": "EnumerableSet._add",
      "offset": [
        2234,
        2257
      ],
      "op": "SWAP4",
      "path": "27"
    },
    "3875": {
      "fn": "EnumerableSet._add",
      "offset": [
        2234,
        2257
      ],
      "op": "ADD",
      "path": "27"
    },
    "3876": {
      "fn": "EnumerableSet._add",
      "offset": [
        2234,
        2257
      ],
      "op": "DUP5",
      "path": "27"
    },
    "3877": {
      "fn": "EnumerableSet._add",
      "offset": [
        2234,
        2257
      ],
      "op": "SWAP1",
      "path": "27"
    },
    "3878": {
      "fn": "EnumerableSet._add",
      "offset": [
        2234,
        2257
      ],
      "op": "SSTORE",
      "path": "27"
    },
    "3879": {
      "fn": "EnumerableSet._add",
      "offset": [
        2414,
        2432
      ],
      "op": "DUP5",
      "path": "27",
      "statement": 51
    },
    "3880": {
      "fn": "EnumerableSet._add",
      "offset": [
        2414,
        2432
      ],
      "op": "SLOAD",
      "path": "27"
    },
    "3881": {
      "fn": "EnumerableSet._add",
      "offset": [
        2392,
        2411
      ],
      "op": "DUP5",
      "path": "27"
    },
    "3882": {
      "fn": "EnumerableSet._add",
      "offset": [
        2392,
        2411
      ],
      "op": "DUP3",
      "path": "27"
    },
    "3883": {
      "fn": "EnumerableSet._add",
      "offset": [
        2392,
        2411
      ],
      "op": "MSTORE",
      "path": "27"
    },
    "3884": {
      "fn": "EnumerableSet._add",
      "offset": [
        2392,
        2404
      ],
      "op": "DUP3",
      "path": "27"
    },
    "3885": {
      "fn": "EnumerableSet._add",
      "offset": [
        2392,
        2404
      ],
      "op": "DUP7",
      "path": "27"
    },
    "3886": {
      "fn": "EnumerableSet._add",
      "offset": [
        2392,
        2404
      ],
      "op": "ADD",
      "path": "27"
    },
    "3887": {
      "fn": "EnumerableSet._add",
      "offset": [
        2392,
        2411
      ],
      "op": "SWAP1",
      "path": "27"
    },
    "3888": {
      "fn": "EnumerableSet._add",
      "offset": [
        2392,
        2411
      ],
      "op": "SWAP4",
      "path": "27"
    },
    "3889": {
      "fn": "EnumerableSet._add",
      "offset": [
        2392,
        2411
      ],
      "op": "MSTORE",
      "path": "27"
    },
    "3890": {
      "fn": "EnumerableSet._add",
      "offset": [
        2392,
        2411
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x40"
    },
    "3892": {
      "fn": "EnumerableSet._add",
      "offset": [
        2392,
        2411
      ],
      "op": "SWAP1",
      "path": "27"
    },
    "3893": {
      "fn": "EnumerableSet._add",
      "offset": [
        2392,
        2411
      ],
      "op": "KECCAK256",
      "path": "27"
    },
    "3894": {
      "fn": "EnumerableSet._add",
      "offset": [
        2392,
        2432
      ],
      "op": "SWAP2",
      "path": "27"
    },
    "3895": {
      "fn": "EnumerableSet._add",
      "offset": [
        2392,
        2432
      ],
      "op": "SWAP1",
      "path": "27"
    },
    "3896": {
      "fn": "EnumerableSet._add",
      "offset": [
        2392,
        2432
      ],
      "op": "SWAP2",
      "path": "27"
    },
    "3897": {
      "fn": "EnumerableSet._add",
      "offset": [
        2392,
        2432
      ],
      "op": "SSTORE",
      "path": "27"
    },
    "3898": {
      "fn": "EnumerableSet._add",
      "offset": [
        2446,
        2457
      ],
      "op": "PUSH2",
      "path": "27",
      "statement": 52,
      "value": "0x62F"
    },
    "3901": {
      "fn": "EnumerableSet._add",
      "offset": [
        2446,
        2457
      ],
      "op": "JUMP",
      "path": "27"
    },
    "3902": {
      "fn": "EnumerableSet._add",
      "offset": [
        2192,
        2511
      ],
      "op": "JUMPDEST",
      "path": "27"
    },
    "3903": {
      "op": "POP"
    },
    "3904": {
      "fn": "EnumerableSet._add",
      "offset": [
        2495,
        2500
      ],
      "op": "PUSH1",
      "path": "27",
      "statement": 53,
      "value": "0x0"
    },
    "3906": {
      "fn": "EnumerableSet._add",
      "offset": [
        2488,
        2500
      ],
      "op": "PUSH2",
      "path": "27",
      "value": "0x62F"
    },
    "3909": {
      "fn": "EnumerableSet._add",
      "offset": [
        2488,
        2500
      ],
      "op": "JUMP",
      "path": "27"
    },
    "3910": {
      "fn": "Strings.toHexString",
      "offset": [
        1652,
        2093
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "3911": {
      "fn": "Strings.toHexString",
      "offset": [
        1727,
        1740
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x60"
    },
    "3913": {
      "fn": "Strings.toHexString",
      "offset": [
        1752,
        1771
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "3915": {
      "fn": "Strings.toHexString",
      "offset": [
        1784,
        1794
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0xF55"
    },
    "3918": {
      "fn": "Strings.toHexString",
      "offset": [
        1788,
        1794
      ],
      "op": "DUP4",
      "path": "24"
    },
    "3919": {
      "fn": "Strings.toHexString",
      "offset": [
        1784,
        1785
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x2"
    },
    "3921": {
      "fn": "Strings.toHexString",
      "offset": [
        1784,
        1794
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x146A"
    },
    "3924": {
      "fn": "Strings.toHexString",
      "jump": "i",
      "offset": [
        1784,
        1794
      ],
      "op": "JUMP",
      "path": "24"
    },
    "3925": {
      "fn": "Strings.toHexString",
      "offset": [
        1784,
        1794
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "3926": {
      "fn": "Strings.toHexString",
      "offset": [
        1784,
        1798
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0xF60"
    },
    "3929": {
      "fn": "Strings.toHexString",
      "offset": [
        1784,
        1798
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "3930": {
      "fn": "Strings.toHexString",
      "offset": [
        1797,
        1798
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x2"
    },
    "3932": {
      "fn": "Strings.toHexString",
      "offset": [
        1784,
        1798
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x1452"
    },
    "3935": {
      "fn": "Strings.toHexString",
      "jump": "i",
      "offset": [
        1784,
        1798
      ],
      "op": "JUMP",
      "path": "24"
    },
    "3936": {
      "fn": "Strings.toHexString",
      "offset": [
        1784,
        1798
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "3937": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "PUSH8",
      "path": "24",
      "value": "0xFFFFFFFFFFFFFFFF"
    },
    "3946": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "DUP2",
      "path": "24"
    },
    "3947": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "GT",
      "path": "24"
    },
    "3948": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "ISZERO",
      "path": "24"
    },
    "3949": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0xF86"
    },
    "3952": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "3953": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "3958": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "3960": {
      "op": "SHL"
    },
    "3961": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "3963": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "3964": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x41"
    },
    "3966": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x4"
    },
    "3968": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "3969": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x24"
    },
    "3971": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "3973": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "REVERT",
      "path": "24"
    },
    "3974": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "3975": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "3977": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "3978": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "3979": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "DUP1",
      "path": "24"
    },
    "3980": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "DUP3",
      "path": "24"
    },
    "3981": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "3982": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "DUP1",
      "path": "24"
    },
    "3983": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x1F"
    },
    "3985": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "ADD",
      "path": "24"
    },
    "3986": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x1F"
    },
    "3988": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "NOT",
      "path": "24"
    },
    "3989": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "AND",
      "path": "24"
    },
    "3990": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x20"
    },
    "3992": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "ADD",
      "path": "24"
    },
    "3993": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "DUP3",
      "path": "24"
    },
    "3994": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "ADD",
      "path": "24"
    },
    "3995": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "3997": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "3998": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "DUP1",
      "path": "24"
    },
    "3999": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "ISZERO",
      "path": "24"
    },
    "4000": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0xFB0"
    },
    "4003": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "4004": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x20"
    },
    "4006": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "DUP3",
      "path": "24"
    },
    "4007": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "ADD",
      "path": "24"
    },
    "4008": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "DUP2",
      "path": "24"
    },
    "4009": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "DUP1",
      "path": "24"
    },
    "4010": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "CALLDATASIZE",
      "path": "24"
    },
    "4011": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "DUP4",
      "path": "24"
    },
    "4012": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "CALLDATACOPY",
      "path": "24"
    },
    "4013": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "ADD",
      "path": "24"
    },
    "4014": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "4015": {
      "op": "POP"
    },
    "4016": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "4017": {
      "fn": "Strings.toHexString",
      "offset": [
        1774,
        1799
      ],
      "op": "POP",
      "path": "24"
    },
    "4018": {
      "fn": "Strings.toHexString",
      "offset": [
        1752,
        1799
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "4019": {
      "fn": "Strings.toHexString",
      "offset": [
        1752,
        1799
      ],
      "op": "POP",
      "path": "24"
    },
    "4020": {
      "op": "PUSH1",
      "value": "0x3"
    },
    "4022": {
      "op": "PUSH1",
      "value": "0xFC"
    },
    "4024": {
      "op": "SHL"
    },
    "4025": {
      "fn": "Strings.toHexString",
      "offset": [
        1809,
        1815
      ],
      "op": "DUP2",
      "path": "24",
      "statement": 54
    },
    "4026": {
      "fn": "Strings.toHexString",
      "offset": [
        1816,
        1817
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "4028": {
      "fn": "Strings.toHexString",
      "offset": [
        1809,
        1818
      ],
      "op": "DUP2",
      "path": "24"
    },
    "4029": {
      "fn": "Strings.toHexString",
      "offset": [
        1809,
        1818
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "4030": {
      "fn": "Strings.toHexString",
      "offset": [
        1809,
        1818
      ],
      "op": "DUP2",
      "path": "24"
    },
    "4031": {
      "fn": "Strings.toHexString",
      "offset": [
        1809,
        1818
      ],
      "op": "LT",
      "path": "24"
    },
    "4032": {
      "fn": "Strings.toHexString",
      "offset": [
        1809,
        1818
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0xFD9"
    },
    "4035": {
      "fn": "Strings.toHexString",
      "offset": [
        1809,
        1818
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "4036": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "4041": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "4043": {
      "op": "SHL"
    },
    "4044": {
      "fn": "Strings.toHexString",
      "offset": [
        1809,
        1818
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "4046": {
      "fn": "Strings.toHexString",
      "offset": [
        1809,
        1818
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "4047": {
      "fn": "Strings.toHexString",
      "offset": [
        1809,
        1818
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x32"
    },
    "4049": {
      "fn": "Strings.toHexString",
      "offset": [
        1809,
        1818
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x4"
    },
    "4051": {
      "fn": "Strings.toHexString",
      "offset": [
        1809,
        1818
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "4052": {
      "fn": "Strings.toHexString",
      "offset": [
        1809,
        1818
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x24"
    },
    "4054": {
      "fn": "Strings.toHexString",
      "offset": [
        1809,
        1818
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "4056": {
      "fn": "Strings.toHexString",
      "offset": [
        1809,
        1818
      ],
      "op": "REVERT",
      "path": "24"
    },
    "4057": {
      "fn": "Strings.toHexString",
      "offset": [
        1809,
        1818
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "4058": {
      "fn": "Strings.toHexString",
      "offset": [
        1809,
        1818
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x20"
    },
    "4060": {
      "fn": "Strings.toHexString",
      "offset": [
        1809,
        1818
      ],
      "op": "ADD",
      "path": "24"
    },
    "4061": {
      "fn": "Strings.toHexString",
      "offset": [
        1809,
        1818
      ],
      "op": "ADD",
      "path": "24"
    },
    "4062": {
      "fn": "Strings.toHexString",
      "offset": [
        1809,
        1824
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "4063": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "4065": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "4067": {
      "op": "PUSH1",
      "value": "0xF8"
    },
    "4069": {
      "op": "SHL"
    },
    "4070": {
      "op": "SUB"
    },
    "4071": {
      "fn": "Strings.toHexString",
      "offset": [
        1809,
        1824
      ],
      "op": "NOT",
      "path": "24"
    },
    "4072": {
      "fn": "Strings.toHexString",
      "offset": [
        1809,
        1824
      ],
      "op": "AND",
      "path": "24"
    },
    "4073": {
      "fn": "Strings.toHexString",
      "offset": [
        1809,
        1824
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "4074": {
      "fn": "Strings.toHexString",
      "offset": [
        1809,
        1824
      ],
      "op": "DUP2",
      "path": "24"
    },
    "4075": {
      "fn": "Strings.toHexString",
      "offset": [
        1809,
        1824
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "4077": {
      "fn": "Strings.toHexString",
      "offset": [
        1809,
        1824
      ],
      "op": "BYTE",
      "path": "24"
    },
    "4078": {
      "fn": "Strings.toHexString",
      "offset": [
        1809,
        1824
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "4079": {
      "fn": "Strings.toHexString",
      "offset": [
        1809,
        1824
      ],
      "op": "MSTORE8",
      "path": "24"
    },
    "4080": {
      "fn": "Strings.toHexString",
      "offset": [
        1809,
        1824
      ],
      "op": "POP",
      "path": "24"
    },
    "4081": {
      "op": "PUSH1",
      "value": "0xF"
    },
    "4083": {
      "op": "PUSH1",
      "value": "0xFB"
    },
    "4085": {
      "op": "SHL"
    },
    "4086": {
      "fn": "Strings.toHexString",
      "offset": [
        1834,
        1840
      ],
      "op": "DUP2",
      "path": "24",
      "statement": 55
    },
    "4087": {
      "fn": "Strings.toHexString",
      "offset": [
        1841,
        1842
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x1"
    },
    "4089": {
      "fn": "Strings.toHexString",
      "offset": [
        1834,
        1843
      ],
      "op": "DUP2",
      "path": "24"
    },
    "4090": {
      "fn": "Strings.toHexString",
      "offset": [
        1834,
        1843
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "4091": {
      "fn": "Strings.toHexString",
      "offset": [
        1834,
        1843
      ],
      "op": "DUP2",
      "path": "24"
    },
    "4092": {
      "fn": "Strings.toHexString",
      "offset": [
        1834,
        1843
      ],
      "op": "LT",
      "path": "24"
    },
    "4093": {
      "fn": "Strings.toHexString",
      "offset": [
        1834,
        1843
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x1016"
    },
    "4096": {
      "fn": "Strings.toHexString",
      "offset": [
        1834,
        1843
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "4097": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "4102": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "4104": {
      "op": "SHL"
    },
    "4105": {
      "fn": "Strings.toHexString",
      "offset": [
        1834,
        1843
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "4107": {
      "fn": "Strings.toHexString",
      "offset": [
        1834,
        1843
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "4108": {
      "fn": "Strings.toHexString",
      "offset": [
        1834,
        1843
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x32"
    },
    "4110": {
      "fn": "Strings.toHexString",
      "offset": [
        1834,
        1843
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x4"
    },
    "4112": {
      "fn": "Strings.toHexString",
      "offset": [
        1834,
        1843
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "4113": {
      "fn": "Strings.toHexString",
      "offset": [
        1834,
        1843
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x24"
    },
    "4115": {
      "fn": "Strings.toHexString",
      "offset": [
        1834,
        1843
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "4117": {
      "fn": "Strings.toHexString",
      "offset": [
        1834,
        1843
      ],
      "op": "REVERT",
      "path": "24"
    },
    "4118": {
      "fn": "Strings.toHexString",
      "offset": [
        1834,
        1843
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "4119": {
      "fn": "Strings.toHexString",
      "offset": [
        1834,
        1843
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x20"
    },
    "4121": {
      "fn": "Strings.toHexString",
      "offset": [
        1834,
        1843
      ],
      "op": "ADD",
      "path": "24"
    },
    "4122": {
      "fn": "Strings.toHexString",
      "offset": [
        1834,
        1843
      ],
      "op": "ADD",
      "path": "24"
    },
    "4123": {
      "fn": "Strings.toHexString",
      "offset": [
        1834,
        1849
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "4124": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "4126": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "4128": {
      "op": "PUSH1",
      "value": "0xF8"
    },
    "4130": {
      "op": "SHL"
    },
    "4131": {
      "op": "SUB"
    },
    "4132": {
      "fn": "Strings.toHexString",
      "offset": [
        1834,
        1849
      ],
      "op": "NOT",
      "path": "24"
    },
    "4133": {
      "fn": "Strings.toHexString",
      "offset": [
        1834,
        1849
      ],
      "op": "AND",
      "path": "24"
    },
    "4134": {
      "fn": "Strings.toHexString",
      "offset": [
        1834,
        1849
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "4135": {
      "fn": "Strings.toHexString",
      "offset": [
        1834,
        1849
      ],
      "op": "DUP2",
      "path": "24"
    },
    "4136": {
      "fn": "Strings.toHexString",
      "offset": [
        1834,
        1849
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "4138": {
      "fn": "Strings.toHexString",
      "offset": [
        1834,
        1849
      ],
      "op": "BYTE",
      "path": "24"
    },
    "4139": {
      "fn": "Strings.toHexString",
      "offset": [
        1834,
        1849
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "4140": {
      "fn": "Strings.toHexString",
      "offset": [
        1834,
        1849
      ],
      "op": "MSTORE8",
      "path": "24"
    },
    "4141": {
      "op": "POP"
    },
    "4142": {
      "fn": "Strings.toHexString",
      "offset": [
        1864,
        1873
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "4144": {
      "fn": "Strings.toHexString",
      "offset": [
        1876,
        1886
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x103A"
    },
    "4147": {
      "fn": "Strings.toHexString",
      "offset": [
        1880,
        1886
      ],
      "op": "DUP5",
      "path": "24"
    },
    "4148": {
      "fn": "Strings.toHexString",
      "offset": [
        1876,
        1877
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x2"
    },
    "4150": {
      "fn": "Strings.toHexString",
      "offset": [
        1876,
        1886
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x146A"
    },
    "4153": {
      "fn": "Strings.toHexString",
      "jump": "i",
      "offset": [
        1876,
        1886
      ],
      "op": "JUMP",
      "path": "24"
    },
    "4154": {
      "fn": "Strings.toHexString",
      "offset": [
        1876,
        1886
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "4155": {
      "fn": "Strings.toHexString",
      "offset": [
        1876,
        1890
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x1045"
    },
    "4158": {
      "fn": "Strings.toHexString",
      "offset": [
        1876,
        1890
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "4159": {
      "fn": "Strings.toHexString",
      "offset": [
        1889,
        1890
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x1"
    },
    "4161": {
      "fn": "Strings.toHexString",
      "offset": [
        1876,
        1890
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x1452"
    },
    "4164": {
      "fn": "Strings.toHexString",
      "jump": "i",
      "offset": [
        1876,
        1890
      ],
      "op": "JUMP",
      "path": "24"
    },
    "4165": {
      "fn": "Strings.toHexString",
      "offset": [
        1876,
        1890
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "4166": {
      "fn": "Strings.toHexString",
      "offset": [
        1864,
        1890
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "4167": {
      "fn": "Strings.toHexString",
      "offset": [
        1864,
        1890
      ],
      "op": "POP",
      "path": "24"
    },
    "4168": {
      "fn": "Strings.toHexString",
      "offset": [
        1859,
        1991
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "4169": {
      "fn": "Strings.toHexString",
      "offset": [
        1896,
        1897
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x1"
    },
    "4171": {
      "fn": "Strings.toHexString",
      "offset": [
        1892,
        1893
      ],
      "op": "DUP2",
      "path": "24"
    },
    "4172": {
      "fn": "Strings.toHexString",
      "offset": [
        1892,
        1897
      ],
      "op": "GT",
      "path": "24"
    },
    "4173": {
      "fn": "Strings.toHexString",
      "offset": [
        1859,
        1991
      ],
      "op": "ISZERO",
      "path": "24"
    },
    "4174": {
      "fn": "Strings.toHexString",
      "offset": [
        1859,
        1991
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x10D9"
    },
    "4177": {
      "fn": "Strings.toHexString",
      "offset": [
        1859,
        1991
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "4178": {
      "op": "PUSH16",
      "value": "0x181899199A1A9B1B9C1CB0B131B232B3"
    },
    "4195": {
      "op": "PUSH1",
      "value": "0x81"
    },
    "4197": {
      "op": "SHL"
    },
    "4198": {
      "fn": "Strings.toHexString",
      "offset": [
        1943,
        1948
      ],
      "op": "DUP6",
      "path": "24",
      "statement": 56
    },
    "4199": {
      "fn": "Strings.toHexString",
      "offset": [
        1951,
        1954
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0xF"
    },
    "4201": {
      "fn": "Strings.toHexString",
      "offset": [
        1943,
        1954
      ],
      "op": "AND",
      "path": "24"
    },
    "4202": {
      "fn": "Strings.toHexString",
      "offset": [
        1930,
        1955
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x10"
    },
    "4204": {
      "fn": "Strings.toHexString",
      "offset": [
        1930,
        1955
      ],
      "op": "DUP2",
      "path": "24"
    },
    "4205": {
      "fn": "Strings.toHexString",
      "offset": [
        1930,
        1955
      ],
      "op": "LT",
      "path": "24"
    },
    "4206": {
      "fn": "Strings.toHexString",
      "offset": [
        1930,
        1955
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x1087"
    },
    "4209": {
      "fn": "Strings.toHexString",
      "offset": [
        1930,
        1955
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "4210": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "4215": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "4217": {
      "op": "SHL"
    },
    "4218": {
      "fn": "Strings.toHexString",
      "offset": [
        1930,
        1955
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "4220": {
      "fn": "Strings.toHexString",
      "offset": [
        1930,
        1955
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "4221": {
      "fn": "Strings.toHexString",
      "offset": [
        1930,
        1955
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x32"
    },
    "4223": {
      "fn": "Strings.toHexString",
      "offset": [
        1930,
        1955
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x4"
    },
    "4225": {
      "fn": "Strings.toHexString",
      "offset": [
        1930,
        1955
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "4226": {
      "fn": "Strings.toHexString",
      "offset": [
        1930,
        1955
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x24"
    },
    "4228": {
      "fn": "Strings.toHexString",
      "offset": [
        1930,
        1955
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "4230": {
      "fn": "Strings.toHexString",
      "offset": [
        1930,
        1955
      ],
      "op": "REVERT",
      "path": "24"
    },
    "4231": {
      "fn": "Strings.toHexString",
      "offset": [
        1930,
        1955
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "4232": {
      "fn": "Strings.toHexString",
      "offset": [
        1930,
        1955
      ],
      "op": "BYTE",
      "path": "24"
    },
    "4233": {
      "fn": "Strings.toHexString",
      "offset": [
        1930,
        1955
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0xF8"
    },
    "4235": {
      "fn": "Strings.toHexString",
      "offset": [
        1930,
        1955
      ],
      "op": "SHL",
      "path": "24"
    },
    "4236": {
      "fn": "Strings.toHexString",
      "offset": [
        1918,
        1924
      ],
      "op": "DUP3",
      "path": "24"
    },
    "4237": {
      "fn": "Strings.toHexString",
      "offset": [
        1925,
        1926
      ],
      "op": "DUP3",
      "path": "24"
    },
    "4238": {
      "fn": "Strings.toHexString",
      "offset": [
        1918,
        1927
      ],
      "op": "DUP2",
      "path": "24"
    },
    "4239": {
      "fn": "Strings.toHexString",
      "offset": [
        1918,
        1927
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "4240": {
      "fn": "Strings.toHexString",
      "offset": [
        1918,
        1927
      ],
      "op": "DUP2",
      "path": "24"
    },
    "4241": {
      "fn": "Strings.toHexString",
      "offset": [
        1918,
        1927
      ],
      "op": "LT",
      "path": "24"
    },
    "4242": {
      "fn": "Strings.toHexString",
      "offset": [
        1918,
        1927
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x10AB"
    },
    "4245": {
      "fn": "Strings.toHexString",
      "offset": [
        1918,
        1927
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "4246": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "4251": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "4253": {
      "op": "SHL"
    },
    "4254": {
      "fn": "Strings.toHexString",
      "offset": [
        1918,
        1927
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "4256": {
      "fn": "Strings.toHexString",
      "offset": [
        1918,
        1927
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "4257": {
      "fn": "Strings.toHexString",
      "offset": [
        1918,
        1927
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x32"
    },
    "4259": {
      "fn": "Strings.toHexString",
      "offset": [
        1918,
        1927
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x4"
    },
    "4261": {
      "fn": "Strings.toHexString",
      "offset": [
        1918,
        1927
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "4262": {
      "fn": "Strings.toHexString",
      "offset": [
        1918,
        1927
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x24"
    },
    "4264": {
      "fn": "Strings.toHexString",
      "offset": [
        1918,
        1927
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "4266": {
      "fn": "Strings.toHexString",
      "offset": [
        1918,
        1927
      ],
      "op": "REVERT",
      "path": "24"
    },
    "4267": {
      "fn": "Strings.toHexString",
      "offset": [
        1918,
        1927
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "4268": {
      "fn": "Strings.toHexString",
      "offset": [
        1918,
        1927
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x20"
    },
    "4270": {
      "fn": "Strings.toHexString",
      "offset": [
        1918,
        1927
      ],
      "op": "ADD",
      "path": "24"
    },
    "4271": {
      "fn": "Strings.toHexString",
      "offset": [
        1918,
        1927
      ],
      "op": "ADD",
      "path": "24"
    },
    "4272": {
      "fn": "Strings.toHexString",
      "offset": [
        1918,
        1955
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "4273": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "4275": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "4277": {
      "op": "PUSH1",
      "value": "0xF8"
    },
    "4279": {
      "op": "SHL"
    },
    "4280": {
      "op": "SUB"
    },
    "4281": {
      "fn": "Strings.toHexString",
      "offset": [
        1918,
        1955
      ],
      "op": "NOT",
      "path": "24"
    },
    "4282": {
      "fn": "Strings.toHexString",
      "offset": [
        1918,
        1955
      ],
      "op": "AND",
      "path": "24"
    },
    "4283": {
      "fn": "Strings.toHexString",
      "offset": [
        1918,
        1955
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "4284": {
      "fn": "Strings.toHexString",
      "offset": [
        1918,
        1955
      ],
      "op": "DUP2",
      "path": "24"
    },
    "4285": {
      "fn": "Strings.toHexString",
      "offset": [
        1918,
        1955
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x0"
    },
    "4287": {
      "fn": "Strings.toHexString",
      "offset": [
        1918,
        1955
      ],
      "op": "BYTE",
      "path": "24"
    },
    "4288": {
      "fn": "Strings.toHexString",
      "offset": [
        1918,
        1955
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "4289": {
      "fn": "Strings.toHexString",
      "offset": [
        1918,
        1955
      ],
      "op": "MSTORE8",
      "path": "24"
    },
    "4290": {
      "op": "POP"
    },
    "4291": {
      "fn": "Strings.toHexString",
      "offset": [
        1979,
        1980
      ],
      "op": "PUSH1",
      "path": "24",
      "statement": 57,
      "value": "0x4"
    },
    "4293": {
      "fn": "Strings.toHexString",
      "offset": [
        1969,
        1980
      ],
      "op": "SWAP5",
      "path": "24"
    },
    "4294": {
      "fn": "Strings.toHexString",
      "offset": [
        1969,
        1980
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "4295": {
      "fn": "Strings.toHexString",
      "offset": [
        1969,
        1980
      ],
      "op": "SWAP5",
      "path": "24"
    },
    "4296": {
      "fn": "Strings.toHexString",
      "offset": [
        1969,
        1980
      ],
      "op": "SHR",
      "path": "24"
    },
    "4297": {
      "fn": "Strings.toHexString",
      "offset": [
        1969,
        1980
      ],
      "op": "SWAP4",
      "path": "24"
    },
    "4298": {
      "fn": "Strings.toHexString",
      "offset": [
        1899,
        1902
      ],
      "op": "PUSH2",
      "path": "24",
      "statement": 58,
      "value": "0x10D2"
    },
    "4301": {
      "fn": "Strings.toHexString",
      "offset": [
        1899,
        1902
      ],
      "op": "DUP2",
      "path": "24"
    },
    "4302": {
      "fn": "Strings.toHexString",
      "offset": [
        1899,
        1902
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x14D0"
    },
    "4305": {
      "fn": "Strings.toHexString",
      "jump": "i",
      "offset": [
        1899,
        1902
      ],
      "op": "JUMP",
      "path": "24"
    },
    "4306": {
      "fn": "Strings.toHexString",
      "offset": [
        1899,
        1902
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "4307": {
      "fn": "Strings.toHexString",
      "offset": [
        1899,
        1902
      ],
      "op": "SWAP1",
      "path": "24"
    },
    "4308": {
      "fn": "Strings.toHexString",
      "offset": [
        1899,
        1902
      ],
      "op": "POP",
      "path": "24"
    },
    "4309": {
      "fn": "Strings.toHexString",
      "offset": [
        1859,
        1991
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x1048"
    },
    "4312": {
      "fn": "Strings.toHexString",
      "offset": [
        1859,
        1991
      ],
      "op": "JUMP",
      "path": "24"
    },
    "4313": {
      "fn": "Strings.toHexString",
      "offset": [
        1859,
        1991
      ],
      "op": "JUMPDEST",
      "path": "24"
    },
    "4314": {
      "op": "POP"
    },
    "4315": {
      "fn": "Strings.toHexString",
      "offset": [
        2008,
        2018
      ],
      "op": "DUP4",
      "path": "24",
      "statement": 59
    },
    "4316": {
      "branch": 79,
      "fn": "Strings.toHexString",
      "offset": [
        2008,
        2018
      ],
      "op": "ISZERO",
      "path": "24"
    },
    "4317": {
      "fn": "Strings.toHexString",
      "offset": [
        2000,
        2055
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x62C"
    },
    "4320": {
      "branch": 79,
      "fn": "Strings.toHexString",
      "offset": [
        2000,
        2055
      ],
      "op": "JUMPI",
      "path": "24"
    },
    "4321": {
      "fn": "Strings.toHexString",
      "offset": [
        2000,
        2055
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x40"
    },
    "4323": {
      "fn": "Strings.toHexString",
      "offset": [
        2000,
        2055
      ],
      "op": "MLOAD",
      "path": "24"
    },
    "4324": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "4328": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "4330": {
      "op": "SHL"
    },
    "4331": {
      "fn": "Strings.toHexString",
      "offset": [
        2000,
        2055
      ],
      "op": "DUP2",
      "path": "24"
    },
    "4332": {
      "fn": "Strings.toHexString",
      "offset": [
        2000,
        2055
      ],
      "op": "MSTORE",
      "path": "24"
    },
    "4333": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "4335": {
      "fn": "Strings.toHexString",
      "offset": [
        2000,
        2055
      ],
      "op": "PUSH1",
      "path": "24",
      "value": "0x4"
    },
    "4337": {
      "fn": "Strings.toHexString",
      "offset": [
        2000,
        2055
      ],
      "op": "DUP3",
      "path": "24"
    },
    "4338": {
      "fn": "Strings.toHexString",
      "offset": [
        2000,
        2055
      ],
      "op": "ADD",
      "path": "24"
    },
    "4339": {
      "op": "DUP2"
    },
    "4340": {
      "op": "SWAP1"
    },
    "4341": {
      "op": "MSTORE"
    },
    "4342": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "4344": {
      "op": "DUP3"
    },
    "4345": {
      "op": "ADD"
    },
    "4346": {
      "op": "MSTORE"
    },
    "4347": {
      "op": "PUSH32",
      "value": "0x537472696E67733A20686578206C656E67746820696E73756666696369656E74"
    },
    "4380": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "4382": {
      "op": "DUP3"
    },
    "4383": {
      "op": "ADD"
    },
    "4384": {
      "op": "MSTORE"
    },
    "4385": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "4387": {
      "op": "ADD"
    },
    "4388": {
      "fn": "Strings.toHexString",
      "offset": [
        2000,
        2055
      ],
      "op": "PUSH2",
      "path": "24",
      "value": "0x459"
    },
    "4391": {
      "op": "JUMP"
    },
    "4392": {
      "fn": "EnumerableSet._remove",
      "offset": [
        2685,
        4073
      ],
      "op": "JUMPDEST",
      "path": "27"
    },
    "4393": {
      "fn": "EnumerableSet._remove",
      "offset": [
        2751,
        2755
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x0"
    },
    "4395": {
      "fn": "EnumerableSet._remove",
      "offset": [
        2888,
        2907
      ],
      "op": "DUP2",
      "path": "27"
    },
    "4396": {
      "fn": "EnumerableSet._remove",
      "offset": [
        2888,
        2907
      ],
      "op": "DUP2",
      "path": "27"
    },
    "4397": {
      "fn": "EnumerableSet._remove",
      "offset": [
        2888,
        2907
      ],
      "op": "MSTORE",
      "path": "27"
    },
    "4398": {
      "fn": "EnumerableSet._remove",
      "offset": [
        2888,
        2900
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x1"
    },
    "4400": {
      "fn": "EnumerableSet._remove",
      "offset": [
        2888,
        2900
      ],
      "op": "DUP4",
      "path": "27"
    },
    "4401": {
      "fn": "EnumerableSet._remove",
      "offset": [
        2888,
        2900
      ],
      "op": "ADD",
      "path": "27"
    },
    "4402": {
      "fn": "EnumerableSet._remove",
      "offset": [
        2888,
        2907
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x20"
    },
    "4404": {
      "fn": "EnumerableSet._remove",
      "offset": [
        2888,
        2907
      ],
      "op": "MSTORE",
      "path": "27"
    },
    "4405": {
      "fn": "EnumerableSet._remove",
      "offset": [
        2888,
        2907
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x40"
    },
    "4407": {
      "fn": "EnumerableSet._remove",
      "offset": [
        2888,
        2907
      ],
      "op": "DUP2",
      "path": "27"
    },
    "4408": {
      "fn": "EnumerableSet._remove",
      "offset": [
        2888,
        2907
      ],
      "op": "KECCAK256",
      "path": "27"
    },
    "4409": {
      "fn": "EnumerableSet._remove",
      "offset": [
        2888,
        2907
      ],
      "op": "SLOAD",
      "path": "27"
    },
    "4410": {
      "fn": "EnumerableSet._remove",
      "offset": [
        2922,
        2937
      ],
      "op": "DUP1",
      "path": "27"
    },
    "4411": {
      "branch": 77,
      "fn": "EnumerableSet._remove",
      "offset": [
        2922,
        2937
      ],
      "op": "ISZERO",
      "path": "27"
    },
    "4412": {
      "fn": "EnumerableSet._remove",
      "offset": [
        2918,
        4067
      ],
      "op": "PUSH2",
      "path": "27",
      "value": "0x123B"
    },
    "4415": {
      "branch": 77,
      "fn": "EnumerableSet._remove",
      "offset": [
        2918,
        4067
      ],
      "op": "JUMPI",
      "path": "27"
    },
    "4416": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3291,
        3312
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x0"
    },
    "4418": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3315,
        3329
      ],
      "op": "PUSH2",
      "path": "27",
      "value": "0x114C"
    },
    "4421": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3328,
        3329
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x1"
    },
    "4423": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3315,
        3325
      ],
      "op": "DUP4",
      "path": "27"
    },
    "4424": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3315,
        3329
      ],
      "op": "PUSH2",
      "path": "27",
      "value": "0x1489"
    },
    "4427": {
      "fn": "EnumerableSet._remove",
      "jump": "i",
      "offset": [
        3315,
        3329
      ],
      "op": "JUMP",
      "path": "27"
    },
    "4428": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3315,
        3329
      ],
      "op": "JUMPDEST",
      "path": "27"
    },
    "4429": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3363,
        3381
      ],
      "op": "DUP6",
      "path": "27"
    },
    "4430": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3363,
        3381
      ],
      "op": "SLOAD",
      "path": "27"
    },
    "4431": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3291,
        3329
      ],
      "op": "SWAP1",
      "path": "27"
    },
    "4432": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3291,
        3329
      ],
      "op": "SWAP2",
      "path": "27"
    },
    "4433": {
      "op": "POP"
    },
    "4434": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3343,
        3360
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x0"
    },
    "4436": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3343,
        3360
      ],
      "op": "SWAP1",
      "path": "27"
    },
    "4437": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3363,
        3385
      ],
      "op": "PUSH2",
      "path": "27",
      "value": "0x1160"
    },
    "4440": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3363,
        3385
      ],
      "op": "SWAP1",
      "path": "27"
    },
    "4441": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3384,
        3385
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x1"
    },
    "4443": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3384,
        3385
      ],
      "op": "SWAP1",
      "path": "27"
    },
    "4444": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3363,
        3385
      ],
      "op": "PUSH2",
      "path": "27",
      "value": "0x1489"
    },
    "4447": {
      "fn": "EnumerableSet._remove",
      "jump": "i",
      "offset": [
        3363,
        3385
      ],
      "op": "JUMP",
      "path": "27"
    },
    "4448": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3363,
        3385
      ],
      "op": "JUMPDEST",
      "path": "27"
    },
    "4449": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3343,
        3385
      ],
      "op": "SWAP1",
      "path": "27"
    },
    "4450": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3343,
        3385
      ],
      "op": "POP",
      "path": "27"
    },
    "4451": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3417,
        3430
      ],
      "op": "DUP2",
      "path": "27"
    },
    "4452": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3404,
        3413
      ],
      "op": "DUP2",
      "path": "27"
    },
    "4453": {
      "branch": 78,
      "fn": "EnumerableSet._remove",
      "offset": [
        3404,
        3430
      ],
      "op": "EQ",
      "path": "27"
    },
    "4454": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3400,
        3798
      ],
      "op": "PUSH2",
      "path": "27",
      "value": "0x11E1"
    },
    "4457": {
      "branch": 78,
      "fn": "EnumerableSet._remove",
      "offset": [
        3400,
        3798
      ],
      "op": "JUMPI",
      "path": "27"
    },
    "4458": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3450,
        3467
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x0"
    },
    "4460": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3470,
        3473
      ],
      "op": "DUP7",
      "path": "27"
    },
    "4461": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3470,
        3481
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x0"
    },
    "4463": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3470,
        3481
      ],
      "op": "ADD",
      "path": "27"
    },
    "4464": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3482,
        3491
      ],
      "op": "DUP3",
      "path": "27"
    },
    "4465": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3470,
        3492
      ],
      "op": "DUP2",
      "path": "27"
    },
    "4466": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3470,
        3492
      ],
      "op": "SLOAD",
      "path": "27"
    },
    "4467": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3470,
        3492
      ],
      "op": "DUP2",
      "path": "27"
    },
    "4468": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3470,
        3492
      ],
      "op": "LT",
      "path": "27"
    },
    "4469": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3470,
        3492
      ],
      "op": "PUSH2",
      "path": "27",
      "value": "0x118E"
    },
    "4472": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3470,
        3492
      ],
      "op": "JUMPI",
      "path": "27"
    },
    "4473": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "4478": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "4480": {
      "op": "SHL"
    },
    "4481": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3470,
        3492
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x0"
    },
    "4483": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3470,
        3492
      ],
      "op": "MSTORE",
      "path": "27"
    },
    "4484": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3470,
        3492
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x32"
    },
    "4486": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3470,
        3492
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x4"
    },
    "4488": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3470,
        3492
      ],
      "op": "MSTORE",
      "path": "27"
    },
    "4489": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3470,
        3492
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x24"
    },
    "4491": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3470,
        3492
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x0"
    },
    "4493": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3470,
        3492
      ],
      "op": "REVERT",
      "path": "27"
    },
    "4494": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3470,
        3492
      ],
      "op": "JUMPDEST",
      "path": "27"
    },
    "4495": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3470,
        3492
      ],
      "op": "SWAP1",
      "path": "27"
    },
    "4496": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3470,
        3492
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x0"
    },
    "4498": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3470,
        3492
      ],
      "op": "MSTORE",
      "path": "27"
    },
    "4499": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3470,
        3492
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x20"
    },
    "4501": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3470,
        3492
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x0"
    },
    "4503": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3470,
        3492
      ],
      "op": "KECCAK256",
      "path": "27"
    },
    "4504": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3470,
        3492
      ],
      "op": "ADD",
      "path": "27"
    },
    "4505": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3470,
        3492
      ],
      "op": "SLOAD",
      "path": "27"
    },
    "4506": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3450,
        3492
      ],
      "op": "SWAP1",
      "path": "27"
    },
    "4507": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3450,
        3492
      ],
      "op": "POP",
      "path": "27"
    },
    "4508": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3621,
        3630
      ],
      "op": "DUP1",
      "path": "27",
      "statement": 60
    },
    "4509": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3592,
        3595
      ],
      "op": "DUP8",
      "path": "27"
    },
    "4510": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3592,
        3603
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x0"
    },
    "4512": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3592,
        3603
      ],
      "op": "ADD",
      "path": "27"
    },
    "4513": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3604,
        3617
      ],
      "op": "DUP5",
      "path": "27"
    },
    "4514": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3592,
        3618
      ],
      "op": "DUP2",
      "path": "27"
    },
    "4515": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3592,
        3618
      ],
      "op": "SLOAD",
      "path": "27"
    },
    "4516": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3592,
        3618
      ],
      "op": "DUP2",
      "path": "27"
    },
    "4517": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3592,
        3618
      ],
      "op": "LT",
      "path": "27"
    },
    "4518": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3592,
        3618
      ],
      "op": "PUSH2",
      "path": "27",
      "value": "0x11BF"
    },
    "4521": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3592,
        3618
      ],
      "op": "JUMPI",
      "path": "27"
    },
    "4522": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "4527": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "4529": {
      "op": "SHL"
    },
    "4530": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3592,
        3618
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x0"
    },
    "4532": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3592,
        3618
      ],
      "op": "MSTORE",
      "path": "27"
    },
    "4533": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3592,
        3618
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x32"
    },
    "4535": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3592,
        3618
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x4"
    },
    "4537": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3592,
        3618
      ],
      "op": "MSTORE",
      "path": "27"
    },
    "4538": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3592,
        3618
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x24"
    },
    "4540": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3592,
        3618
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x0"
    },
    "4542": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3592,
        3618
      ],
      "op": "REVERT",
      "path": "27"
    },
    "4543": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3592,
        3618
      ],
      "op": "JUMPDEST",
      "path": "27"
    },
    "4544": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3592,
        3618
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x0"
    },
    "4546": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3592,
        3618
      ],
      "op": "SWAP2",
      "path": "27"
    },
    "4547": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3592,
        3618
      ],
      "op": "DUP3",
      "path": "27"
    },
    "4548": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3592,
        3618
      ],
      "op": "MSTORE",
      "path": "27"
    },
    "4549": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3592,
        3618
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x20"
    },
    "4551": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3592,
        3618
      ],
      "op": "DUP1",
      "path": "27"
    },
    "4552": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3592,
        3618
      ],
      "op": "DUP4",
      "path": "27"
    },
    "4553": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3592,
        3618
      ],
      "op": "KECCAK256",
      "path": "27"
    },
    "4554": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3592,
        3618
      ],
      "op": "SWAP1",
      "path": "27"
    },
    "4555": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3592,
        3618
      ],
      "op": "SWAP2",
      "path": "27"
    },
    "4556": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3592,
        3618
      ],
      "op": "ADD",
      "path": "27"
    },
    "4557": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3592,
        3630
      ],
      "op": "SWAP3",
      "path": "27"
    },
    "4558": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3592,
        3630
      ],
      "op": "SWAP1",
      "path": "27"
    },
    "4559": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3592,
        3630
      ],
      "op": "SWAP3",
      "path": "27"
    },
    "4560": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3592,
        3630
      ],
      "op": "SSTORE",
      "path": "27"
    },
    "4561": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3704,
        3727
      ],
      "op": "SWAP2",
      "path": "27",
      "statement": 61
    },
    "4562": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3704,
        3727
      ],
      "op": "DUP3",
      "path": "27"
    },
    "4563": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3704,
        3727
      ],
      "op": "MSTORE",
      "path": "27"
    },
    "4564": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3704,
        3716
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x1"
    },
    "4566": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3704,
        3716
      ],
      "op": "DUP9",
      "path": "27"
    },
    "4567": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3704,
        3716
      ],
      "op": "ADD",
      "path": "27"
    },
    "4568": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3704,
        3727
      ],
      "op": "SWAP1",
      "path": "27"
    },
    "4569": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3704,
        3727
      ],
      "op": "MSTORE",
      "path": "27"
    },
    "4570": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3704,
        3727
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x40"
    },
    "4572": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3704,
        3727
      ],
      "op": "SWAP1",
      "path": "27"
    },
    "4573": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3704,
        3727
      ],
      "op": "KECCAK256",
      "path": "27"
    },
    "4574": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3704,
        3740
      ],
      "op": "DUP4",
      "path": "27"
    },
    "4575": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3704,
        3740
      ],
      "op": "SWAP1",
      "path": "27"
    },
    "4576": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3704,
        3740
      ],
      "op": "SSTORE",
      "path": "27"
    },
    "4577": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3400,
        3798
      ],
      "op": "JUMPDEST",
      "path": "27"
    },
    "4578": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3876,
        3893
      ],
      "op": "DUP6",
      "path": "27",
      "statement": 62
    },
    "4579": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3876,
        3893
      ],
      "op": "SLOAD",
      "path": "27"
    },
    "4580": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3876,
        3879
      ],
      "op": "DUP7",
      "path": "27"
    },
    "4581": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3876,
        3879
      ],
      "op": "SWAP1",
      "path": "27"
    },
    "4582": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3876,
        3893
      ],
      "op": "DUP1",
      "path": "27"
    },
    "4583": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3876,
        3893
      ],
      "op": "PUSH2",
      "path": "27",
      "value": "0x1200"
    },
    "4586": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3876,
        3893
      ],
      "op": "JUMPI",
      "path": "27"
    },
    "4587": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "4592": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "4594": {
      "op": "SHL"
    },
    "4595": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3876,
        3893
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x0"
    },
    "4597": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3876,
        3893
      ],
      "op": "MSTORE",
      "path": "27"
    },
    "4598": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3876,
        3893
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x31"
    },
    "4600": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3876,
        3893
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x4"
    },
    "4602": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3876,
        3893
      ],
      "op": "MSTORE",
      "path": "27"
    },
    "4603": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3876,
        3893
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x24"
    },
    "4605": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3876,
        3893
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x0"
    },
    "4607": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3876,
        3893
      ],
      "op": "REVERT",
      "path": "27"
    },
    "4608": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3876,
        3893
      ],
      "op": "JUMPDEST",
      "path": "27"
    },
    "4609": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3876,
        3893
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x1"
    },
    "4611": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3876,
        3893
      ],
      "op": "SWAP1",
      "path": "27"
    },
    "4612": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3876,
        3893
      ],
      "op": "SUB",
      "path": "27"
    },
    "4613": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3876,
        3893
      ],
      "op": "DUP2",
      "path": "27"
    },
    "4614": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3876,
        3893
      ],
      "op": "DUP2",
      "path": "27"
    },
    "4615": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3876,
        3893
      ],
      "op": "SWAP1",
      "path": "27"
    },
    "4616": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3876,
        3893
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x0"
    },
    "4618": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3876,
        3893
      ],
      "op": "MSTORE",
      "path": "27"
    },
    "4619": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3876,
        3893
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x20"
    },
    "4621": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3876,
        3893
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x0"
    },
    "4623": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3876,
        3893
      ],
      "op": "KECCAK256",
      "path": "27"
    },
    "4624": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3876,
        3893
      ],
      "op": "ADD",
      "path": "27"
    },
    "4625": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3876,
        3893
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x0"
    },
    "4627": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3876,
        3893
      ],
      "op": "SWAP1",
      "path": "27"
    },
    "4628": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3876,
        3893
      ],
      "op": "SSTORE",
      "path": "27"
    },
    "4629": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3876,
        3893
      ],
      "op": "SWAP1",
      "path": "27"
    },
    "4630": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3876,
        3893
      ],
      "op": "SSTORE",
      "path": "27"
    },
    "4631": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3968,
        3971
      ],
      "op": "DUP6",
      "path": "27",
      "statement": 63
    },
    "4632": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3968,
        3980
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x1"
    },
    "4634": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3968,
        3980
      ],
      "op": "ADD",
      "path": "27"
    },
    "4635": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3968,
        3987
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x0"
    },
    "4637": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3981,
        3986
      ],
      "op": "DUP7",
      "path": "27"
    },
    "4638": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3968,
        3987
      ],
      "op": "DUP2",
      "path": "27"
    },
    "4639": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3968,
        3987
      ],
      "op": "MSTORE",
      "path": "27"
    },
    "4640": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3968,
        3987
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x20"
    },
    "4642": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3968,
        3987
      ],
      "op": "ADD",
      "path": "27"
    },
    "4643": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3968,
        3987
      ],
      "op": "SWAP1",
      "path": "27"
    },
    "4644": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3968,
        3987
      ],
      "op": "DUP2",
      "path": "27"
    },
    "4645": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3968,
        3987
      ],
      "op": "MSTORE",
      "path": "27"
    },
    "4646": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3968,
        3987
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x20"
    },
    "4648": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3968,
        3987
      ],
      "op": "ADD",
      "path": "27"
    },
    "4649": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3968,
        3987
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x0"
    },
    "4651": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3968,
        3987
      ],
      "op": "KECCAK256",
      "path": "27"
    },
    "4652": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3961,
        3987
      ],
      "op": "PUSH1",
      "path": "27",
      "value": "0x0"
    },
    "4654": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3961,
        3987
      ],
      "op": "SWAP1",
      "path": "27"
    },
    "4655": {
      "fn": "EnumerableSet._remove",
      "offset": [
        3961,
        3987
      ],
      "op": "SSTORE",
      "path": "27"
    },
    "4656": {
      "fn": "EnumerableSet._remove",
      "offset": [
        4009,
        4013
      ],
      "op": "PUSH1",
      "path": "27",
      "statement": 64,
      "value": "0x1"
    },
    "4658": {
      "fn": "EnumerableSet._remove",
      "offset": [
        4002,
        4013
      ],
      "op": "SWAP4",
      "path": "27"
    },
    "4659": {
      "fn": "EnumerableSet._remove",
      "offset": [
        4002,
        4013
      ],
      "op": "POP",
      "path": "27"
    },
    "4660": {
      "fn": "EnumerableSet._remove",
      "offset": [
        4002,
        4013
      ],
      "op": "POP",
      "path": "27"
    },
    "4661": {
      "fn": "EnumerableSet._remove",
      "offset": [
        4002,
        4013
      ],
      "op": "POP",
      "path": "27"
    },
    "4662": {
      "fn": "EnumerableSet._remove",
      "offset": [
        4002,
        4013
      ],
      "op": "POP",
      "path": "27"
    },
    "4663": {
      "fn": "EnumerableSet._remove",
      "offset": [
        4002,
        4013
      ],
      "op": "PUSH2",
      "path": "27",
      "value": "0x62F"
    },
    "4666": {
      "fn": "EnumerableSet._remove",
      "offset": [
        4002,
        4013
      ],
      "op": "JUMP",
      "path": "27"
    },
    "4667": {
      "fn": "EnumerableSet._remove",
      "offset": [
        2918,
        4067
      ],
      "op": "JUMPDEST",
      "path": "27"
    },
    "4668": {
      "fn": "EnumerableSet._remove",
      "offset": [
        4051,
        4056
      ],
      "op": "PUSH1",
      "path": "27",
      "statement": 65,
      "value": "0x0"
    },
    "4670": {
      "fn": "EnumerableSet._remove",
      "offset": [
        4044,
        4056
      ],
      "op": "SWAP2",
      "path": "27"
    },
    "4671": {
      "fn": "EnumerableSet._remove",
      "offset": [
        4044,
        4056
      ],
      "op": "POP",
      "path": "27"
    },
    "4672": {
      "fn": "EnumerableSet._remove",
      "offset": [
        4044,
        4056
      ],
      "op": "POP",
      "path": "27"
    },
    "4673": {
      "fn": "EnumerableSet._remove",
      "offset": [
        4044,
        4056
      ],
      "op": "PUSH2",
      "path": "27",
      "value": "0x62F"
    },
    "4676": {
      "fn": "EnumerableSet._remove",
      "offset": [
        4044,
        4056
      ],
      "op": "JUMP",
      "path": "27"
    },
    "4677": {
      "op": "JUMPDEST"
    },
    "4678": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4680": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "4682": {
      "op": "DUP3"
    },
    "4683": {
      "op": "DUP5"
    },
    "4684": {
      "op": "SUB"
    },
    "4685": {
      "op": "SLT"
    },
    "4686": {
      "op": "ISZERO"
    },
    "4687": {
      "op": "PUSH2",
      "value": "0x1256"
    },
    "4690": {
      "op": "JUMPI"
    },
    "4691": {
      "op": "DUP1"
    },
    "4692": {
      "op": "DUP2"
    },
    "4693": {
      "op": "REVERT"
    },
    "4694": {
      "op": "JUMPDEST"
    },
    "4695": {
      "op": "DUP2"
    },
    "4696": {
      "op": "CALLDATALOAD"
    },
    "4697": {
      "op": "PUSH2",
      "value": "0x62C"
    },
    "4700": {
      "op": "DUP2"
    },
    "4701": {
      "op": "PUSH2",
      "value": "0x14FD"
    },
    "4704": {
      "jump": "i",
      "op": "JUMP"
    },
    "4705": {
      "op": "JUMPDEST"
    },
    "4706": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4708": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "4710": {
      "op": "DUP3"
    },
    "4711": {
      "op": "DUP5"
    },
    "4712": {
      "op": "SUB"
    },
    "4713": {
      "op": "SLT"
    },
    "4714": {
      "op": "ISZERO"
    },
    "4715": {
      "op": "PUSH2",
      "value": "0x1272"
    },
    "4718": {
      "op": "JUMPI"
    },
    "4719": {
      "op": "DUP1"
    },
    "4720": {
      "op": "DUP2"
    },
    "4721": {
      "op": "REVERT"
    },
    "4722": {
      "op": "JUMPDEST"
    },
    "4723": {
      "op": "DUP2"
    },
    "4724": {
      "op": "MLOAD"
    },
    "4725": {
      "op": "PUSH2",
      "value": "0x62C"
    },
    "4728": {
      "op": "DUP2"
    },
    "4729": {
      "op": "PUSH2",
      "value": "0x14FD"
    },
    "4732": {
      "jump": "i",
      "op": "JUMP"
    },
    "4733": {
      "op": "JUMPDEST"
    },
    "4734": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4736": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "4738": {
      "op": "DUP3"
    },
    "4739": {
      "op": "DUP5"
    },
    "4740": {
      "op": "SUB"
    },
    "4741": {
      "op": "SLT"
    },
    "4742": {
      "op": "ISZERO"
    },
    "4743": {
      "op": "PUSH2",
      "value": "0x128E"
    },
    "4746": {
      "op": "JUMPI"
    },
    "4747": {
      "op": "DUP1"
    },
    "4748": {
      "op": "DUP2"
    },
    "4749": {
      "op": "REVERT"
    },
    "4750": {
      "op": "JUMPDEST"
    },
    "4751": {
      "op": "DUP2"
    },
    "4752": {
      "op": "MLOAD"
    },
    "4753": {
      "op": "DUP1"
    },
    "4754": {
      "op": "ISZERO"
    },
    "4755": {
      "op": "ISZERO"
    },
    "4756": {
      "op": "DUP2"
    },
    "4757": {
      "op": "EQ"
    },
    "4758": {
      "op": "PUSH2",
      "value": "0x62C"
    },
    "4761": {
      "op": "JUMPI"
    },
    "4762": {
      "op": "DUP2"
    },
    "4763": {
      "op": "DUP3"
    },
    "4764": {
      "op": "REVERT"
    },
    "4765": {
      "op": "JUMPDEST"
    },
    "4766": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4768": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "4770": {
      "op": "DUP3"
    },
    "4771": {
      "op": "DUP5"
    },
    "4772": {
      "op": "SUB"
    },
    "4773": {
      "op": "SLT"
    },
    "4774": {
      "op": "ISZERO"
    },
    "4775": {
      "op": "PUSH2",
      "value": "0x12AE"
    },
    "4778": {
      "op": "JUMPI"
    },
    "4779": {
      "op": "DUP1"
    },
    "4780": {
      "op": "DUP2"
    },
    "4781": {
      "op": "REVERT"
    },
    "4782": {
      "op": "JUMPDEST"
    },
    "4783": {
      "op": "POP"
    },
    "4784": {
      "op": "CALLDATALOAD"
    },
    "4785": {
      "op": "SWAP2"
    },
    "4786": {
      "op": "SWAP1"
    },
    "4787": {
      "op": "POP"
    },
    "4788": {
      "jump": "o",
      "op": "JUMP"
    },
    "4789": {
      "op": "JUMPDEST"
    },
    "4790": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4792": {
      "op": "DUP1"
    },
    "4793": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "4795": {
      "op": "DUP4"
    },
    "4796": {
      "op": "DUP6"
    },
    "4797": {
      "op": "SUB"
    },
    "4798": {
      "op": "SLT"
    },
    "4799": {
      "op": "ISZERO"
    },
    "4800": {
      "op": "PUSH2",
      "value": "0x12C7"
    },
    "4803": {
      "op": "JUMPI"
    },
    "4804": {
      "op": "DUP1"
    },
    "4805": {
      "op": "DUP2"
    },
    "4806": {
      "op": "REVERT"
    },
    "4807": {
      "op": "JUMPDEST"
    },
    "4808": {
      "op": "DUP3"
    },
    "4809": {
      "op": "CALLDATALOAD"
    },
    "4810": {
      "op": "SWAP2"
    },
    "4811": {
      "op": "POP"
    },
    "4812": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "4814": {
      "op": "DUP4"
    },
    "4815": {
      "op": "ADD"
    },
    "4816": {
      "op": "CALLDATALOAD"
    },
    "4817": {
      "op": "PUSH2",
      "value": "0x12D9"
    },
    "4820": {
      "op": "DUP2"
    },
    "4821": {
      "op": "PUSH2",
      "value": "0x14FD"
    },
    "4824": {
      "jump": "i",
      "op": "JUMP"
    },
    "4825": {
      "op": "JUMPDEST"
    },
    "4826": {
      "op": "DUP1"
    },
    "4827": {
      "op": "SWAP2"
    },
    "4828": {
      "op": "POP"
    },
    "4829": {
      "op": "POP"
    },
    "4830": {
      "op": "SWAP3"
    },
    "4831": {
      "op": "POP"
    },
    "4832": {
      "op": "SWAP3"
    },
    "4833": {
      "op": "SWAP1"
    },
    "4834": {
      "op": "POP"
    },
    "4835": {
      "jump": "o",
      "op": "JUMP"
    },
    "4836": {
      "op": "JUMPDEST"
    },
    "4837": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4839": {
      "op": "DUP1"
    },
    "4840": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "4842": {
      "op": "DUP4"
    },
    "4843": {
      "op": "DUP6"
    },
    "4844": {
      "op": "SUB"
    },
    "4845": {
      "op": "SLT"
    },
    "4846": {
      "op": "ISZERO"
    },
    "4847": {
      "op": "PUSH2",
      "value": "0x12F6"
    },
    "4850": {
      "op": "JUMPI"
    },
    "4851": {
      "op": "DUP2"
    },
    "4852": {
      "op": "DUP3"
    },
    "4853": {
      "op": "REVERT"
    },
    "4854": {
      "op": "JUMPDEST"
    },
    "4855": {
      "op": "POP"
    },
    "4856": {
      "op": "POP"
    },
    "4857": {
      "op": "DUP1"
    },
    "4858": {
      "op": "CALLDATALOAD"
    },
    "4859": {
      "op": "SWAP3"
    },
    "4860": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "4862": {
      "op": "SWAP1"
    },
    "4863": {
      "op": "SWAP2"
    },
    "4864": {
      "op": "ADD"
    },
    "4865": {
      "op": "CALLDATALOAD"
    },
    "4866": {
      "op": "SWAP2"
    },
    "4867": {
      "op": "POP"
    },
    "4868": {
      "jump": "o",
      "op": "JUMP"
    },
    "4869": {
      "op": "JUMPDEST"
    },
    "4870": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4872": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "4874": {
      "op": "DUP3"
    },
    "4875": {
      "op": "DUP5"
    },
    "4876": {
      "op": "SUB"
    },
    "4877": {
      "op": "SLT"
    },
    "4878": {
      "op": "ISZERO"
    },
    "4879": {
      "op": "PUSH2",
      "value": "0x1316"
    },
    "4882": {
      "op": "JUMPI"
    },
    "4883": {
      "op": "DUP1"
    },
    "4884": {
      "op": "DUP2"
    },
    "4885": {
      "op": "REVERT"
    },
    "4886": {
      "op": "JUMPDEST"
    },
    "4887": {
      "op": "DUP2"
    },
    "4888": {
      "op": "CALLDATALOAD"
    },
    "4889": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "4891": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "4893": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "4895": {
      "op": "SHL"
    },
    "4896": {
      "op": "SUB"
    },
    "4897": {
      "op": "NOT"
    },
    "4898": {
      "op": "DUP2"
    },
    "4899": {
      "op": "AND"
    },
    "4900": {
      "op": "DUP2"
    },
    "4901": {
      "op": "EQ"
    },
    "4902": {
      "op": "PUSH2",
      "value": "0x62C"
    },
    "4905": {
      "op": "JUMPI"
    },
    "4906": {
      "op": "DUP2"
    },
    "4907": {
      "op": "DUP3"
    },
    "4908": {
      "op": "REVERT"
    },
    "4909": {
      "op": "JUMPDEST"
    },
    "4910": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4912": {
      "op": "PUSH32",
      "value": "0x416363657373436F6E74726F6C3A206163636F756E7420000000000000000000"
    },
    "4945": {
      "op": "DUP3"
    },
    "4946": {
      "op": "MSTORE"
    },
    "4947": {
      "op": "DUP4"
    },
    "4948": {
      "op": "MLOAD"
    },
    "4949": {
      "op": "PUSH2",
      "value": "0x1365"
    },
    "4952": {
      "op": "DUP2"
    },
    "4953": {
      "op": "PUSH1",
      "value": "0x17"
    },
    "4955": {
      "op": "DUP6"
    },
    "4956": {
      "op": "ADD"
    },
    "4957": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "4959": {
      "op": "DUP9"
    },
    "4960": {
      "op": "ADD"
    },
    "4961": {
      "op": "PUSH2",
      "value": "0x14A0"
    },
    "4964": {
      "jump": "i",
      "op": "JUMP"
    },
    "4965": {
      "op": "JUMPDEST"
    },
    "4966": {
      "op": "PUSH17",
      "value": "0x1034B99036B4B9B9B4B733903937B6329"
    },
    "4984": {
      "op": "PUSH1",
      "value": "0x7D"
    },
    "4986": {
      "op": "SHL"
    },
    "4987": {
      "op": "PUSH1",
      "value": "0x17"
    },
    "4989": {
      "op": "SWAP2"
    },
    "4990": {
      "op": "DUP5"
    },
    "4991": {
      "op": "ADD"
    },
    "4992": {
      "op": "SWAP2"
    },
    "4993": {
      "op": "DUP3"
    },
    "4994": {
      "op": "ADD"
    },
    "4995": {
      "op": "MSTORE"
    },
    "4996": {
      "op": "DUP4"
    },
    "4997": {
      "op": "MLOAD"
    },
    "4998": {
      "op": "PUSH2",
      "value": "0x1396"
    },
    "5001": {
      "op": "DUP2"
    },
    "5002": {
      "op": "PUSH1",
      "value": "0x28"
    },
    "5004": {
      "op": "DUP5"
    },
    "5005": {
      "op": "ADD"
    },
    "5006": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "5008": {
      "op": "DUP9"
    },
    "5009": {
      "op": "ADD"
    },
    "5010": {
      "op": "PUSH2",
      "value": "0x14A0"
    },
    "5013": {
      "jump": "i",
      "op": "JUMP"
    },
    "5014": {
      "op": "JUMPDEST"
    },
    "5015": {
      "op": "ADD"
    },
    "5016": {
      "op": "PUSH1",
      "value": "0x28"
    },
    "5018": {
      "op": "ADD"
    },
    "5019": {
      "op": "SWAP5"
    },
    "5020": {
      "op": "SWAP4"
    },
    "5021": {
      "op": "POP"
    },
    "5022": {
      "op": "POP"
    },
    "5023": {
      "op": "POP"
    },
    "5024": {
      "op": "POP"
    },
    "5025": {
      "jump": "o",
      "op": "JUMP"
    },
    "5026": {
      "op": "JUMPDEST"
    },
    "5027": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "5029": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "5031": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "5033": {
      "op": "SHL"
    },
    "5034": {
      "op": "SUB"
    },
    "5035": {
      "op": "SWAP2"
    },
    "5036": {
      "op": "SWAP1"
    },
    "5037": {
      "op": "SWAP2"
    },
    "5038": {
      "op": "AND"
    },
    "5039": {
      "op": "DUP2"
    },
    "5040": {
      "op": "MSTORE"
    },
    "5041": {
      "op": "PUSH32",
      "value": "0x496E7374616E63654F70657261746F7253657276696365000000000000000000"
    },
    "5074": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "5076": {
      "op": "DUP3"
    },
    "5077": {
      "op": "ADD"
    },
    "5078": {
      "op": "MSTORE"
    },
    "5079": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "5081": {
      "op": "ADD"
    },
    "5082": {
      "op": "SWAP1"
    },
    "5083": {
      "jump": "o",
      "op": "JUMP"
    },
    "5084": {
      "op": "JUMPDEST"
    },
    "5085": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "5087": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "5089": {
      "op": "DUP3"
    },
    "5090": {
      "op": "MSTORE"
    },
    "5091": {
      "op": "DUP3"
    },
    "5092": {
      "op": "MLOAD"
    },
    "5093": {
      "op": "DUP1"
    },
    "5094": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "5096": {
      "op": "DUP5"
    },
    "5097": {
      "op": "ADD"
    },
    "5098": {
      "op": "MSTORE"
    },
    "5099": {
      "op": "PUSH2",
      "value": "0x13FB"
    },
    "5102": {
      "op": "DUP2"
    },
    "5103": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "5105": {
      "op": "DUP6"
    },
    "5106": {
      "op": "ADD"
    },
    "5107": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "5109": {
      "op": "DUP8"
    },
    "5110": {
      "op": "ADD"
    },
    "5111": {
      "op": "PUSH2",
      "value": "0x14A0"
    },
    "5114": {
      "jump": "i",
      "op": "JUMP"
    },
    "5115": {
      "op": "JUMPDEST"
    },
    "5116": {
      "op": "PUSH1",
      "value": "0x1F"
    },
    "5118": {
      "op": "ADD"
    },
    "5119": {
      "op": "PUSH1",
      "value": "0x1F"
    },
    "5121": {
      "op": "NOT"
    },
    "5122": {
      "op": "AND"
    },
    "5123": {
      "op": "SWAP2"
    },
    "5124": {
      "op": "SWAP1"
    },
    "5125": {
      "op": "SWAP2"
    },
    "5126": {
      "op": "ADD"
    },
    "5127": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "5129": {
      "op": "ADD"
    },
    "5130": {
      "op": "SWAP3"
    },
    "5131": {
      "op": "SWAP2"
    },
    "5132": {
      "op": "POP"
    },
    "5133": {
      "op": "POP"
    },
    "5134": {
      "jump": "o",
      "op": "JUMP"
    },
    "5135": {
      "op": "JUMPDEST"
    },
    "5136": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "5138": {
      "op": "DUP1"
    },
    "5139": {
      "op": "DUP3"
    },
    "5140": {
      "op": "MSTORE"
    },
    "5141": {
      "op": "PUSH1",
      "value": "0x23"
    },
    "5143": {
      "op": "SWAP1"
    },
    "5144": {
      "op": "DUP3"
    },
    "5145": {
      "op": "ADD"
    },
    "5146": {
      "op": "MSTORE"
    },
    "5147": {
      "op": "PUSH32",
      "value": "0x4552524F523A4352432D3030313A4E4F545F494E5354414E43455F4F50455241"
    },
    "5180": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "5182": {
      "op": "DUP3"
    },
    "5183": {
      "op": "ADD"
    },
    "5184": {
      "op": "MSTORE"
    },
    "5185": {
      "op": "PUSH3",
      "value": "0x2A27A9"
    },
    "5189": {
      "op": "PUSH1",
      "value": "0xE9"
    },
    "5191": {
      "op": "SHL"
    },
    "5192": {
      "op": "PUSH1",
      "value": "0x60"
    },
    "5194": {
      "op": "DUP3"
    },
    "5195": {
      "op": "ADD"
    },
    "5196": {
      "op": "MSTORE"
    },
    "5197": {
      "op": "PUSH1",
      "value": "0x80"
    },
    "5199": {
      "op": "ADD"
    },
    "5200": {
      "op": "SWAP1"
    },
    "5201": {
      "jump": "o",
      "op": "JUMP"
    },
    "5202": {
      "op": "JUMPDEST"
    },
    "5203": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "5205": {
      "op": "DUP3"
    },
    "5206": {
      "op": "NOT"
    },
    "5207": {
      "op": "DUP3"
    },
    "5208": {
      "op": "GT"
    },
    "5209": {
      "op": "ISZERO"
    },
    "5210": {
      "op": "PUSH2",
      "value": "0x1465"
    },
    "5213": {
      "op": "JUMPI"
    },
    "5214": {
      "op": "PUSH2",
      "value": "0x1465"
    },
    "5217": {
      "op": "PUSH2",
      "value": "0x14E7"
    },
    "5220": {
      "jump": "i",
      "op": "JUMP"
    },
    "5221": {
      "op": "JUMPDEST"
    },
    "5222": {
      "op": "POP"
    },
    "5223": {
      "op": "ADD"
    },
    "5224": {
      "op": "SWAP1"
    },
    "5225": {
      "jump": "o",
      "op": "JUMP"
    },
    "5226": {
      "op": "JUMPDEST"
    },
    "5227": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "5229": {
      "op": "DUP2"
    },
    "5230": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "5232": {
      "op": "NOT"
    },
    "5233": {
      "op": "DIV"
    },
    "5234": {
      "op": "DUP4"
    },
    "5235": {
      "op": "GT"
    },
    "5236": {
      "op": "DUP3"
    },
    "5237": {
      "op": "ISZERO"
    },
    "5238": {
      "op": "ISZERO"
    },
    "5239": {
      "op": "AND"
    },
    "5240": {
      "op": "ISZERO"
    },
    "5241": {
      "op": "PUSH2",
      "value": "0x1484"
    },
    "5244": {
      "op": "JUMPI"
    },
    "5245": {
      "op": "PUSH2",
      "value": "0x1484"
    },
    "5248": {
      "op": "PUSH2",
      "value": "0x14E7"
    },
    "5251": {
      "jump": "i",
      "op": "JUMP"
    },
    "5252": {
      "op": "JUMPDEST"
    },
    "5253": {
      "op": "POP"
    },
    "5254": {
      "op": "MUL"
    },
    "5255": {
      "op": "SWAP1"
    },
    "5256": {
      "jump": "o",
      "op": "JUMP"
    },
    "5257": {
      "op": "JUMPDEST"
    },
    "5258": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "5260": {
      "op": "DUP3"
    },
    "5261": {
      "op": "DUP3"
    },
    "5262": {
      "op": "LT"
    },
    "5263": {
      "op": "ISZERO"
    },
    "5264": {
      "op": "PUSH2",
      "value": "0x149B"
    },
    "5267": {
      "op": "JUMPI"
    },
    "5268": {
      "op": "PUSH2",
      "value": "0x149B"
    },
    "5271": {
      "op": "PUSH2",
      "value": "0x14E7"
    },
    "5274": {
      "jump": "i",
      "op": "JUMP"
    },
    "5275": {
      "op": "JUMPDEST"
    },
    "5276": {
      "op": "POP"
    },
    "5277": {
      "op": "SUB"
    },
    "5278": {
      "op": "SWAP1"
    },
    "5279": {
      "jump": "o",
      "op": "JUMP"
    },
    "5280": {
      "op": "JUMPDEST"
    },
    "5281": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "5283": {
      "op": "JUMPDEST"
    },
    "5284": {
      "op": "DUP4"
    },
    "5285": {
      "op": "DUP2"
    },
    "5286": {
      "op": "LT"
    },
    "5287": {
      "op": "ISZERO"
    },
    "5288": {
      "op": "PUSH2",
      "value": "0x14BB"
    },
    "5291": {
      "op": "JUMPI"
    },
    "5292": {
      "op": "DUP2"
    },
    "5293": {
      "op": "DUP2"
    },
    "5294": {
      "op": "ADD"
    },
    "5295": {
      "op": "MLOAD"
    },
    "5296": {
      "op": "DUP4"
    },
    "5297": {
      "op": "DUP3"
    },
    "5298": {
      "op": "ADD"
    },
    "5299": {
      "op": "MSTORE"
    },
    "5300": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "5302": {
      "op": "ADD"
    },
    "5303": {
      "op": "PUSH2",
      "value": "0x14A3"
    },
    "5306": {
      "op": "JUMP"
    },
    "5307": {
      "op": "JUMPDEST"
    },
    "5308": {
      "op": "DUP4"
    },
    "5309": {
      "op": "DUP2"
    },
    "5310": {
      "op": "GT"
    },
    "5311": {
      "op": "ISZERO"
    },
    "5312": {
      "op": "PUSH2",
      "value": "0x14CA"
    },
    "5315": {
      "op": "JUMPI"
    },
    "5316": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "5318": {
      "op": "DUP5"
    },
    "5319": {
      "op": "DUP5"
    },
    "5320": {
      "op": "ADD"
    },
    "5321": {
      "op": "MSTORE"
    },
    "5322": {
      "op": "JUMPDEST"
    },
    "5323": {
      "op": "POP"
    },
    "5324": {
      "op": "POP"
    },
    "5325": {
      "op": "POP"
    },
    "5326": {
      "op": "POP"
    },
    "5327": {
      "jump": "o",
      "op": "JUMP"
    },
    "5328": {
      "op": "JUMPDEST"
    },
    "5329": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "5331": {
      "op": "DUP2"
    },
    "5332": {
      "op": "PUSH2",
      "value": "0x14DF"
    },
    "5335": {
      "op": "JUMPI"
    },
    "5336": {
      "op": "PUSH2",
      "value": "0x14DF"
    },
    "5339": {
      "op": "PUSH2",
      "value": "0x14E7"
    },
    "5342": {
      "jump": "i",
      "op": "JUMP"
    },
    "5343": {
      "op": "JUMPDEST"
    },
    "5344": {
      "op": "POP"
    },
    "5345": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "5347": {
      "op": "NOT"
    },
    "5348": {
      "op": "ADD"
    },
    "5349": {
      "op": "SWAP1"
    },
    "5350": {
      "jump": "o",
      "op": "JUMP"
    },
    "5351": {
      "op": "JUMPDEST"
    },
    "5352": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "5357": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "5359": {
      "op": "SHL"
    },
    "5360": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "5362": {
      "op": "MSTORE"
    },
    "5363": {
      "op": "PUSH1",
      "value": "0x11"
    },
    "5365": {
      "op": "PUSH1",
      "value": "0x4"
    },
    "5367": {
      "op": "MSTORE"
    },
    "5368": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "5370": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "5372": {
      "op": "REVERT"
    },
    "5373": {
      "op": "JUMPDEST"
    },
    "5374": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "5376": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "5378": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "5380": {
      "op": "SHL"
    },
    "5381": {
      "op": "SUB"
    },
    "5382": {
      "op": "DUP2"
    },
    "5383": {
      "op": "AND"
    },
    "5384": {
      "op": "DUP2"
    },
    "5385": {
      "op": "EQ"
    },
    "5386": {
      "op": "PUSH2",
      "value": "0x6D7"
    },
    "5389": {
      "op": "JUMPI"
    },
    "5390": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "5392": {
      "op": "DUP1"
    },
    "5393": {
      "op": "REVERT"
    }
  },
  "sha1": "44d0ef80794daec2740898f6cd3c668baeb7fa5b",
  "source": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.8.2;\n\nimport \"../shared/CoreController.sol\";\n\nimport \"@etherisc/gif-interface/contracts/modules/IAccess.sol\";\n\nimport \"@openzeppelin/contracts/access/AccessControlEnumerable.sol\";\nimport \"@openzeppelin/contracts/proxy/utils/Initializable.sol\";\n\n\ncontract AccessController is \n    IAccess, \n    CoreController,\n    AccessControlEnumerable\n {\n\n    // 0xe984cfd1d1fa34f80e24ddb2a60c8300359d79eee44555bc35c106eb020394cd\n    bytes32 public constant PRODUCT_OWNER_ROLE = keccak256(\"PRODUCT_OWNER_ROLE\");\n\n    // 0xd26b4cd59ffa91e4599f3d18b02fcd5ffb06e03216f3ee5f25f68dc75cbbbaa2\n    bytes32 public constant ORACLE_PROVIDER_ROLE = keccak256(\"ORACLE_PROVIDER_ROLE\");\n\n    // 0x3c4cdb47519f2f89924ebeb1ee7a8a43b8b00120826915726460bb24576012fd\n    bytes32 public constant RISKPOOL_KEEPER_ROLE = keccak256(\"RISKPOOL_KEEPER_ROLE\");\n\n    mapping(bytes32 => bool) public validRole;\n\n    bool private _defaultAdminSet;\n\n    function _afterInitialize() internal override {\n        // add product owner, oracle provider and riskpool keeper roles\n        _populateValidRoles();\n    }\n\n    function _getName() internal override pure returns(bytes32) { return \"Access\"; }\n\n    // IMPORTANT check the setting of the default admin role\n    // after the deployment of a GIF instance.\n    // this method is called in the deployment of\n    // the instance operator proxy/controller \n    function setDefaultAdminRole(address defaultAdmin) \n        external \n    {\n        require(!_defaultAdminSet, \"ERROR:ACL-001:ADMIN_ROLE_ALREADY_SET\");\n        _defaultAdminSet = true;\n\n        _grantRole(DEFAULT_ADMIN_ROLE, defaultAdmin);\n    }\n\n    //--- manage role ownership ---------------------------------------------//\n    function grantRole(bytes32 role, address principal) \n        public \n        override(IAccessControl, IAccess) \n        onlyInstanceOperator \n    {\n        require(validRole[role], \"ERROR:ACL-002:ROLE_UNKNOWN_OR_INVALID\");\n        AccessControl.grantRole(role, principal);\n    }\n\n    function revokeRole(bytes32 role, address principal) \n        public \n        override(IAccessControl, IAccess) \n        onlyInstanceOperator \n    {\n        AccessControl.revokeRole(role, principal);\n    }\n\n    function renounceRole(bytes32 role, address principal) \n        public \n        override(IAccessControl, IAccess) \n    {\n        AccessControl.renounceRole(role, principal);\n    }\n    \n    //--- manage roles ------------------------------------------------------//\n    function addRole(bytes32 role) \n        public override\n        onlyInstanceOperator \n    {\n        require(!validRole[role], \"ERROR:ACL-003:ROLE_EXISTING_AND_VALID\");\n        validRole[role] = true;\n    }\n\n    function invalidateRole(bytes32 role)\n        public override\n        onlyInstanceOperator \n    {\n        require(validRole[role], \"ERROR:ACL-004:ROLE_UNKNOWN_OR_INVALID\");\n        validRole[role] = false;\n    }\n\n    function hasRole(bytes32 role, address principal) \n        public view \n        override(IAccessControl, IAccess) \n        returns(bool)\n    {\n        return super.hasRole(role, principal);\n    }\n\n    function getDefaultAdminRole() public pure override returns(bytes32) {\n        return DEFAULT_ADMIN_ROLE;\n    }\n\n    function getProductOwnerRole() public pure override returns(bytes32) {\n        return PRODUCT_OWNER_ROLE;\n    }\n\n    function getOracleProviderRole() public pure override returns(bytes32) {\n        return ORACLE_PROVIDER_ROLE;\n    }\n\n    function getRiskpoolKeeperRole() public pure override returns(bytes32) {\n        return RISKPOOL_KEEPER_ROLE;\n    }\n\n    function _populateValidRoles() private {\n        validRole[PRODUCT_OWNER_ROLE] = true;\n        validRole[ORACLE_PROVIDER_ROLE] = true;\n        validRole[RISKPOOL_KEEPER_ROLE] = true;\n    }\n}\n",
  "sourceMap": "303:3506:73:-:0;;;;;;;;;;;;-1:-1:-1;466:22:88;:20;:22::i;:::-;303:3506:73;;5366:279:10;5434:13;;;;;;;5433:14;5425:66;;;;-1:-1:-1;;;5425:66:10;;216:2:103;5425:66:10;;;198:21:103;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:103;;;338:37;392:19;;5425:66:10;;;;;;;;5505:12;;5520:15;5505:12;;;:30;5501:138;;;5551:12;:30;;-1:-1:-1;;5551:30:10;5566:15;5551:30;;;;;;5600:28;;564:36:103;;;5600:28:10;;552:2:103;537:18;5600:28:10;;;;;;;5501:138;5366:279::o;519:87:103:-;303:3506:73;;;;;;",
  "sourcePath": "contracts/modules/AccessController.sol",
  "type": "contract"
}