def METHOD_NAME(target_address=AddressZero):
    C.print("You are using the", network.show_active(), "network")
    registry = interface.IBadgerRegistryV2(r.registry_v2)
    total_data = []
    for key, roles in ROLES_BY_KEY.items():
        contract = registry.get(key)
        C.print(f"\n[blue]{key} - {contract}")
        if contract == AddressZero:
            C.print("[red]{key} not found on registry![/red]")
            continue
        accessControl = interface.IAccessControl(contract)
        contract_data = []
        for role in roles:
            hash = get_role_hash(role)
            role_member_count = accessControl.getRoleMemberCount(hash)
            for member_number in range(role_member_count):
                member_address = accessControl.getRoleMember(hash, member_number)
                contract_data.append(
                    {
                        "acl_contract": key,
                        "role": role,
                        "member_number": member_number,
                        "member_address": member_address,
                        "is_target": (target_address == member_address),
                    }
                )
        print(tabulate(contract_data, headers="keys", tablefmt="grid"))
        total_data += contract_data
    # build dataframe
    df = pd.DataFrame(total_data)
    # Dump result
    os.makedirs("data/badger/acl_roles_audit", exist_ok=True)
    df.to_csv(
        f"data/badger/acl_roles_audit/acl_roles_audit_{network.show_active()}.csv"
    )
    # Printout occurrences of target address
    if target_address != AddressZero:
        df_target = df[df["is_target"] == True]
        C.print(f"\n[blue]Target {target_address} has the following roles:")
        print(tabulate(df_target, headers="keys", tablefmt="grid"))
        # Dump result
        df_target.to_csv(
            f"data/badger/acl_roles_audit/acl_roles_audit_{network.show_active()}_{target_address}.csv"
        )