From cfad5ac64551e8596e2d2d46edfa59aef13875dc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Vegard=20Sporst=C3=B8l?= <vegarms@stud.ntnu.no>
Date: Tue, 2 Mar 2021 15:45:07 +0100
Subject: [PATCH] structure change

---
 backend/secfit/{ => secfit}/Dockerfile                            | 0
 backend/secfit/{ => secfit}/comments/__init__.py                  | 0
 backend/secfit/{ => secfit}/comments/admin.py                     | 0
 backend/secfit/{ => secfit}/comments/apps.py                      | 0
 backend/secfit/{ => secfit}/comments/migrations/0001_initial.py   | 0
 backend/secfit/{ => secfit}/comments/migrations/__init__.py       | 0
 backend/secfit/{ => secfit}/comments/models.py                    | 0
 backend/secfit/{ => secfit}/comments/permissions.py               | 0
 backend/secfit/{ => secfit}/comments/serializers.py               | 0
 backend/secfit/{ => secfit}/comments/tests.py                     | 0
 backend/secfit/{ => secfit}/comments/urls.py                      | 0
 backend/secfit/{ => secfit}/comments/views.py                     | 0
 backend/secfit/{ => secfit}/manage.py                             | 0
 backend/secfit/{ => secfit}/media/empty.txt                       | 0
 backend/secfit/{ => secfit}/requirements.txt                      | 0
 backend/secfit/{ => secfit}/runtime.txt                           | 0
 backend/secfit/secfit/{ => secfit}/__init__.py                    | 0
 backend/secfit/secfit/{ => secfit}/asgi.py                        | 0
 backend/secfit/secfit/{ => secfit}/djangoHeroku.py                | 0
 backend/secfit/secfit/{ => secfit}/settings.py                    | 0
 backend/secfit/secfit/{ => secfit}/staticfiles/empty.txt          | 0
 backend/secfit/secfit/{ => secfit}/urls.py                        | 0
 backend/secfit/secfit/{ => secfit}/views.py                       | 0
 backend/secfit/secfit/{ => secfit}/wsgi.py                        | 0
 backend/secfit/{ => secfit}/seed.json                             | 0
 backend/secfit/{ => secfit}/static/empty.txt                      | 0
 backend/secfit/{ => secfit}/users/__init__.py                     | 0
 backend/secfit/{ => secfit}/users/admin.py                        | 0
 backend/secfit/{ => secfit}/users/apps.py                         | 0
 backend/secfit/{ => secfit}/users/forms.py                        | 0
 backend/secfit/{ => secfit}/users/migrations/0001_initial.py      | 0
 .../{ => secfit}/users/migrations/0002_auto_20200907_1200.py      | 0
 .../{ => secfit}/users/migrations/0003_auto_20200907_1954.py      | 0
 .../{ => secfit}/users/migrations/0004_auto_20200907_2021.py      | 0
 .../{ => secfit}/users/migrations/0005_auto_20200907_2039.py      | 0
 .../{ => secfit}/users/migrations/0006_auto_20200907_2054.py      | 0
 .../{ => secfit}/users/migrations/0007_auto_20200910_0222.py      | 0
 .../{ => secfit}/users/migrations/0008_auto_20201213_2228.py      | 0
 .../{ => secfit}/users/migrations/0009_auto_20210204_1055.py      | 0
 backend/secfit/{ => secfit}/users/migrations/__init__.py          | 0
 backend/secfit/{ => secfit}/users/models.py                       | 0
 backend/secfit/{ => secfit}/users/permissions.py                  | 0
 backend/secfit/{ => secfit}/users/serializers.py                  | 0
 backend/secfit/{ => secfit}/users/tests.py                        | 0
 backend/secfit/{ => secfit}/users/urls.py                         | 0
 backend/secfit/{ => secfit}/users/views.py                        | 0
 backend/secfit/{ => secfit}/workouts/__init__.py                  | 0
 backend/secfit/{ => secfit}/workouts/admin.py                     | 0
 backend/secfit/{ => secfit}/workouts/apps.py                      | 0
 backend/secfit/{ => secfit}/workouts/migrations/0001_initial.py   | 0
 .../{ => secfit}/workouts/migrations/0002_auto_20200910_0222.py   | 0
 .../secfit/{ => secfit}/workouts/migrations/0003_rememberme.py    | 0
 backend/secfit/{ => secfit}/workouts/migrations/__init__.py       | 0
 backend/secfit/{ => secfit}/workouts/mixins.py                    | 0
 backend/secfit/{ => secfit}/workouts/models.py                    | 0
 backend/secfit/{ => secfit}/workouts/parsers.py                   | 0
 backend/secfit/{ => secfit}/workouts/permissions.py               | 0
 backend/secfit/{ => secfit}/workouts/serializers.py               | 0
 backend/secfit/{ => secfit}/workouts/tests.py                     | 0
 backend/secfit/{ => secfit}/workouts/urls.py                      | 0
 backend/secfit/{ => secfit}/workouts/views.py                     | 0
 61 files changed, 0 insertions(+), 0 deletions(-)
 rename backend/secfit/{ => secfit}/Dockerfile (100%)
 rename backend/secfit/{ => secfit}/comments/__init__.py (100%)
 rename backend/secfit/{ => secfit}/comments/admin.py (100%)
 rename backend/secfit/{ => secfit}/comments/apps.py (100%)
 rename backend/secfit/{ => secfit}/comments/migrations/0001_initial.py (100%)
 rename backend/secfit/{ => secfit}/comments/migrations/__init__.py (100%)
 rename backend/secfit/{ => secfit}/comments/models.py (100%)
 rename backend/secfit/{ => secfit}/comments/permissions.py (100%)
 rename backend/secfit/{ => secfit}/comments/serializers.py (100%)
 rename backend/secfit/{ => secfit}/comments/tests.py (100%)
 rename backend/secfit/{ => secfit}/comments/urls.py (100%)
 rename backend/secfit/{ => secfit}/comments/views.py (100%)
 rename backend/secfit/{ => secfit}/manage.py (100%)
 rename backend/secfit/{ => secfit}/media/empty.txt (100%)
 rename backend/secfit/{ => secfit}/requirements.txt (100%)
 rename backend/secfit/{ => secfit}/runtime.txt (100%)
 rename backend/secfit/secfit/{ => secfit}/__init__.py (100%)
 rename backend/secfit/secfit/{ => secfit}/asgi.py (100%)
 rename backend/secfit/secfit/{ => secfit}/djangoHeroku.py (100%)
 rename backend/secfit/secfit/{ => secfit}/settings.py (100%)
 rename backend/secfit/secfit/{ => secfit}/staticfiles/empty.txt (100%)
 rename backend/secfit/secfit/{ => secfit}/urls.py (100%)
 rename backend/secfit/secfit/{ => secfit}/views.py (100%)
 rename backend/secfit/secfit/{ => secfit}/wsgi.py (100%)
 rename backend/secfit/{ => secfit}/seed.json (100%)
 rename backend/secfit/{ => secfit}/static/empty.txt (100%)
 rename backend/secfit/{ => secfit}/users/__init__.py (100%)
 rename backend/secfit/{ => secfit}/users/admin.py (100%)
 rename backend/secfit/{ => secfit}/users/apps.py (100%)
 rename backend/secfit/{ => secfit}/users/forms.py (100%)
 rename backend/secfit/{ => secfit}/users/migrations/0001_initial.py (100%)
 rename backend/secfit/{ => secfit}/users/migrations/0002_auto_20200907_1200.py (100%)
 rename backend/secfit/{ => secfit}/users/migrations/0003_auto_20200907_1954.py (100%)
 rename backend/secfit/{ => secfit}/users/migrations/0004_auto_20200907_2021.py (100%)
 rename backend/secfit/{ => secfit}/users/migrations/0005_auto_20200907_2039.py (100%)
 rename backend/secfit/{ => secfit}/users/migrations/0006_auto_20200907_2054.py (100%)
 rename backend/secfit/{ => secfit}/users/migrations/0007_auto_20200910_0222.py (100%)
 rename backend/secfit/{ => secfit}/users/migrations/0008_auto_20201213_2228.py (100%)
 rename backend/secfit/{ => secfit}/users/migrations/0009_auto_20210204_1055.py (100%)
 rename backend/secfit/{ => secfit}/users/migrations/__init__.py (100%)
 rename backend/secfit/{ => secfit}/users/models.py (100%)
 rename backend/secfit/{ => secfit}/users/permissions.py (100%)
 rename backend/secfit/{ => secfit}/users/serializers.py (100%)
 rename backend/secfit/{ => secfit}/users/tests.py (100%)
 rename backend/secfit/{ => secfit}/users/urls.py (100%)
 rename backend/secfit/{ => secfit}/users/views.py (100%)
 rename backend/secfit/{ => secfit}/workouts/__init__.py (100%)
 rename backend/secfit/{ => secfit}/workouts/admin.py (100%)
 rename backend/secfit/{ => secfit}/workouts/apps.py (100%)
 rename backend/secfit/{ => secfit}/workouts/migrations/0001_initial.py (100%)
 rename backend/secfit/{ => secfit}/workouts/migrations/0002_auto_20200910_0222.py (100%)
 rename backend/secfit/{ => secfit}/workouts/migrations/0003_rememberme.py (100%)
 rename backend/secfit/{ => secfit}/workouts/migrations/__init__.py (100%)
 rename backend/secfit/{ => secfit}/workouts/mixins.py (100%)
 rename backend/secfit/{ => secfit}/workouts/models.py (100%)
 rename backend/secfit/{ => secfit}/workouts/parsers.py (100%)
 rename backend/secfit/{ => secfit}/workouts/permissions.py (100%)
 rename backend/secfit/{ => secfit}/workouts/serializers.py (100%)
 rename backend/secfit/{ => secfit}/workouts/tests.py (100%)
 rename backend/secfit/{ => secfit}/workouts/urls.py (100%)
 rename backend/secfit/{ => secfit}/workouts/views.py (100%)

diff --git a/backend/secfit/Dockerfile b/backend/secfit/secfit/Dockerfile
similarity index 100%
rename from backend/secfit/Dockerfile
rename to backend/secfit/secfit/Dockerfile
diff --git a/backend/secfit/comments/__init__.py b/backend/secfit/secfit/comments/__init__.py
similarity index 100%
rename from backend/secfit/comments/__init__.py
rename to backend/secfit/secfit/comments/__init__.py
diff --git a/backend/secfit/comments/admin.py b/backend/secfit/secfit/comments/admin.py
similarity index 100%
rename from backend/secfit/comments/admin.py
rename to backend/secfit/secfit/comments/admin.py
diff --git a/backend/secfit/comments/apps.py b/backend/secfit/secfit/comments/apps.py
similarity index 100%
rename from backend/secfit/comments/apps.py
rename to backend/secfit/secfit/comments/apps.py
diff --git a/backend/secfit/comments/migrations/0001_initial.py b/backend/secfit/secfit/comments/migrations/0001_initial.py
similarity index 100%
rename from backend/secfit/comments/migrations/0001_initial.py
rename to backend/secfit/secfit/comments/migrations/0001_initial.py
diff --git a/backend/secfit/comments/migrations/__init__.py b/backend/secfit/secfit/comments/migrations/__init__.py
similarity index 100%
rename from backend/secfit/comments/migrations/__init__.py
rename to backend/secfit/secfit/comments/migrations/__init__.py
diff --git a/backend/secfit/comments/models.py b/backend/secfit/secfit/comments/models.py
similarity index 100%
rename from backend/secfit/comments/models.py
rename to backend/secfit/secfit/comments/models.py
diff --git a/backend/secfit/comments/permissions.py b/backend/secfit/secfit/comments/permissions.py
similarity index 100%
rename from backend/secfit/comments/permissions.py
rename to backend/secfit/secfit/comments/permissions.py
diff --git a/backend/secfit/comments/serializers.py b/backend/secfit/secfit/comments/serializers.py
similarity index 100%
rename from backend/secfit/comments/serializers.py
rename to backend/secfit/secfit/comments/serializers.py
diff --git a/backend/secfit/comments/tests.py b/backend/secfit/secfit/comments/tests.py
similarity index 100%
rename from backend/secfit/comments/tests.py
rename to backend/secfit/secfit/comments/tests.py
diff --git a/backend/secfit/comments/urls.py b/backend/secfit/secfit/comments/urls.py
similarity index 100%
rename from backend/secfit/comments/urls.py
rename to backend/secfit/secfit/comments/urls.py
diff --git a/backend/secfit/comments/views.py b/backend/secfit/secfit/comments/views.py
similarity index 100%
rename from backend/secfit/comments/views.py
rename to backend/secfit/secfit/comments/views.py
diff --git a/backend/secfit/manage.py b/backend/secfit/secfit/manage.py
similarity index 100%
rename from backend/secfit/manage.py
rename to backend/secfit/secfit/manage.py
diff --git a/backend/secfit/media/empty.txt b/backend/secfit/secfit/media/empty.txt
similarity index 100%
rename from backend/secfit/media/empty.txt
rename to backend/secfit/secfit/media/empty.txt
diff --git a/backend/secfit/requirements.txt b/backend/secfit/secfit/requirements.txt
similarity index 100%
rename from backend/secfit/requirements.txt
rename to backend/secfit/secfit/requirements.txt
diff --git a/backend/secfit/runtime.txt b/backend/secfit/secfit/runtime.txt
similarity index 100%
rename from backend/secfit/runtime.txt
rename to backend/secfit/secfit/runtime.txt
diff --git a/backend/secfit/secfit/__init__.py b/backend/secfit/secfit/secfit/__init__.py
similarity index 100%
rename from backend/secfit/secfit/__init__.py
rename to backend/secfit/secfit/secfit/__init__.py
diff --git a/backend/secfit/secfit/asgi.py b/backend/secfit/secfit/secfit/asgi.py
similarity index 100%
rename from backend/secfit/secfit/asgi.py
rename to backend/secfit/secfit/secfit/asgi.py
diff --git a/backend/secfit/secfit/djangoHeroku.py b/backend/secfit/secfit/secfit/djangoHeroku.py
similarity index 100%
rename from backend/secfit/secfit/djangoHeroku.py
rename to backend/secfit/secfit/secfit/djangoHeroku.py
diff --git a/backend/secfit/secfit/settings.py b/backend/secfit/secfit/secfit/settings.py
similarity index 100%
rename from backend/secfit/secfit/settings.py
rename to backend/secfit/secfit/secfit/settings.py
diff --git a/backend/secfit/secfit/staticfiles/empty.txt b/backend/secfit/secfit/secfit/staticfiles/empty.txt
similarity index 100%
rename from backend/secfit/secfit/staticfiles/empty.txt
rename to backend/secfit/secfit/secfit/staticfiles/empty.txt
diff --git a/backend/secfit/secfit/urls.py b/backend/secfit/secfit/secfit/urls.py
similarity index 100%
rename from backend/secfit/secfit/urls.py
rename to backend/secfit/secfit/secfit/urls.py
diff --git a/backend/secfit/secfit/views.py b/backend/secfit/secfit/secfit/views.py
similarity index 100%
rename from backend/secfit/secfit/views.py
rename to backend/secfit/secfit/secfit/views.py
diff --git a/backend/secfit/secfit/wsgi.py b/backend/secfit/secfit/secfit/wsgi.py
similarity index 100%
rename from backend/secfit/secfit/wsgi.py
rename to backend/secfit/secfit/secfit/wsgi.py
diff --git a/backend/secfit/seed.json b/backend/secfit/secfit/seed.json
similarity index 100%
rename from backend/secfit/seed.json
rename to backend/secfit/secfit/seed.json
diff --git a/backend/secfit/static/empty.txt b/backend/secfit/secfit/static/empty.txt
similarity index 100%
rename from backend/secfit/static/empty.txt
rename to backend/secfit/secfit/static/empty.txt
diff --git a/backend/secfit/users/__init__.py b/backend/secfit/secfit/users/__init__.py
similarity index 100%
rename from backend/secfit/users/__init__.py
rename to backend/secfit/secfit/users/__init__.py
diff --git a/backend/secfit/users/admin.py b/backend/secfit/secfit/users/admin.py
similarity index 100%
rename from backend/secfit/users/admin.py
rename to backend/secfit/secfit/users/admin.py
diff --git a/backend/secfit/users/apps.py b/backend/secfit/secfit/users/apps.py
similarity index 100%
rename from backend/secfit/users/apps.py
rename to backend/secfit/secfit/users/apps.py
diff --git a/backend/secfit/users/forms.py b/backend/secfit/secfit/users/forms.py
similarity index 100%
rename from backend/secfit/users/forms.py
rename to backend/secfit/secfit/users/forms.py
diff --git a/backend/secfit/users/migrations/0001_initial.py b/backend/secfit/secfit/users/migrations/0001_initial.py
similarity index 100%
rename from backend/secfit/users/migrations/0001_initial.py
rename to backend/secfit/secfit/users/migrations/0001_initial.py
diff --git a/backend/secfit/users/migrations/0002_auto_20200907_1200.py b/backend/secfit/secfit/users/migrations/0002_auto_20200907_1200.py
similarity index 100%
rename from backend/secfit/users/migrations/0002_auto_20200907_1200.py
rename to backend/secfit/secfit/users/migrations/0002_auto_20200907_1200.py
diff --git a/backend/secfit/users/migrations/0003_auto_20200907_1954.py b/backend/secfit/secfit/users/migrations/0003_auto_20200907_1954.py
similarity index 100%
rename from backend/secfit/users/migrations/0003_auto_20200907_1954.py
rename to backend/secfit/secfit/users/migrations/0003_auto_20200907_1954.py
diff --git a/backend/secfit/users/migrations/0004_auto_20200907_2021.py b/backend/secfit/secfit/users/migrations/0004_auto_20200907_2021.py
similarity index 100%
rename from backend/secfit/users/migrations/0004_auto_20200907_2021.py
rename to backend/secfit/secfit/users/migrations/0004_auto_20200907_2021.py
diff --git a/backend/secfit/users/migrations/0005_auto_20200907_2039.py b/backend/secfit/secfit/users/migrations/0005_auto_20200907_2039.py
similarity index 100%
rename from backend/secfit/users/migrations/0005_auto_20200907_2039.py
rename to backend/secfit/secfit/users/migrations/0005_auto_20200907_2039.py
diff --git a/backend/secfit/users/migrations/0006_auto_20200907_2054.py b/backend/secfit/secfit/users/migrations/0006_auto_20200907_2054.py
similarity index 100%
rename from backend/secfit/users/migrations/0006_auto_20200907_2054.py
rename to backend/secfit/secfit/users/migrations/0006_auto_20200907_2054.py
diff --git a/backend/secfit/users/migrations/0007_auto_20200910_0222.py b/backend/secfit/secfit/users/migrations/0007_auto_20200910_0222.py
similarity index 100%
rename from backend/secfit/users/migrations/0007_auto_20200910_0222.py
rename to backend/secfit/secfit/users/migrations/0007_auto_20200910_0222.py
diff --git a/backend/secfit/users/migrations/0008_auto_20201213_2228.py b/backend/secfit/secfit/users/migrations/0008_auto_20201213_2228.py
similarity index 100%
rename from backend/secfit/users/migrations/0008_auto_20201213_2228.py
rename to backend/secfit/secfit/users/migrations/0008_auto_20201213_2228.py
diff --git a/backend/secfit/users/migrations/0009_auto_20210204_1055.py b/backend/secfit/secfit/users/migrations/0009_auto_20210204_1055.py
similarity index 100%
rename from backend/secfit/users/migrations/0009_auto_20210204_1055.py
rename to backend/secfit/secfit/users/migrations/0009_auto_20210204_1055.py
diff --git a/backend/secfit/users/migrations/__init__.py b/backend/secfit/secfit/users/migrations/__init__.py
similarity index 100%
rename from backend/secfit/users/migrations/__init__.py
rename to backend/secfit/secfit/users/migrations/__init__.py
diff --git a/backend/secfit/users/models.py b/backend/secfit/secfit/users/models.py
similarity index 100%
rename from backend/secfit/users/models.py
rename to backend/secfit/secfit/users/models.py
diff --git a/backend/secfit/users/permissions.py b/backend/secfit/secfit/users/permissions.py
similarity index 100%
rename from backend/secfit/users/permissions.py
rename to backend/secfit/secfit/users/permissions.py
diff --git a/backend/secfit/users/serializers.py b/backend/secfit/secfit/users/serializers.py
similarity index 100%
rename from backend/secfit/users/serializers.py
rename to backend/secfit/secfit/users/serializers.py
diff --git a/backend/secfit/users/tests.py b/backend/secfit/secfit/users/tests.py
similarity index 100%
rename from backend/secfit/users/tests.py
rename to backend/secfit/secfit/users/tests.py
diff --git a/backend/secfit/users/urls.py b/backend/secfit/secfit/users/urls.py
similarity index 100%
rename from backend/secfit/users/urls.py
rename to backend/secfit/secfit/users/urls.py
diff --git a/backend/secfit/users/views.py b/backend/secfit/secfit/users/views.py
similarity index 100%
rename from backend/secfit/users/views.py
rename to backend/secfit/secfit/users/views.py
diff --git a/backend/secfit/workouts/__init__.py b/backend/secfit/secfit/workouts/__init__.py
similarity index 100%
rename from backend/secfit/workouts/__init__.py
rename to backend/secfit/secfit/workouts/__init__.py
diff --git a/backend/secfit/workouts/admin.py b/backend/secfit/secfit/workouts/admin.py
similarity index 100%
rename from backend/secfit/workouts/admin.py
rename to backend/secfit/secfit/workouts/admin.py
diff --git a/backend/secfit/workouts/apps.py b/backend/secfit/secfit/workouts/apps.py
similarity index 100%
rename from backend/secfit/workouts/apps.py
rename to backend/secfit/secfit/workouts/apps.py
diff --git a/backend/secfit/workouts/migrations/0001_initial.py b/backend/secfit/secfit/workouts/migrations/0001_initial.py
similarity index 100%
rename from backend/secfit/workouts/migrations/0001_initial.py
rename to backend/secfit/secfit/workouts/migrations/0001_initial.py
diff --git a/backend/secfit/workouts/migrations/0002_auto_20200910_0222.py b/backend/secfit/secfit/workouts/migrations/0002_auto_20200910_0222.py
similarity index 100%
rename from backend/secfit/workouts/migrations/0002_auto_20200910_0222.py
rename to backend/secfit/secfit/workouts/migrations/0002_auto_20200910_0222.py
diff --git a/backend/secfit/workouts/migrations/0003_rememberme.py b/backend/secfit/secfit/workouts/migrations/0003_rememberme.py
similarity index 100%
rename from backend/secfit/workouts/migrations/0003_rememberme.py
rename to backend/secfit/secfit/workouts/migrations/0003_rememberme.py
diff --git a/backend/secfit/workouts/migrations/__init__.py b/backend/secfit/secfit/workouts/migrations/__init__.py
similarity index 100%
rename from backend/secfit/workouts/migrations/__init__.py
rename to backend/secfit/secfit/workouts/migrations/__init__.py
diff --git a/backend/secfit/workouts/mixins.py b/backend/secfit/secfit/workouts/mixins.py
similarity index 100%
rename from backend/secfit/workouts/mixins.py
rename to backend/secfit/secfit/workouts/mixins.py
diff --git a/backend/secfit/workouts/models.py b/backend/secfit/secfit/workouts/models.py
similarity index 100%
rename from backend/secfit/workouts/models.py
rename to backend/secfit/secfit/workouts/models.py
diff --git a/backend/secfit/workouts/parsers.py b/backend/secfit/secfit/workouts/parsers.py
similarity index 100%
rename from backend/secfit/workouts/parsers.py
rename to backend/secfit/secfit/workouts/parsers.py
diff --git a/backend/secfit/workouts/permissions.py b/backend/secfit/secfit/workouts/permissions.py
similarity index 100%
rename from backend/secfit/workouts/permissions.py
rename to backend/secfit/secfit/workouts/permissions.py
diff --git a/backend/secfit/workouts/serializers.py b/backend/secfit/secfit/workouts/serializers.py
similarity index 100%
rename from backend/secfit/workouts/serializers.py
rename to backend/secfit/secfit/workouts/serializers.py
diff --git a/backend/secfit/workouts/tests.py b/backend/secfit/secfit/workouts/tests.py
similarity index 100%
rename from backend/secfit/workouts/tests.py
rename to backend/secfit/secfit/workouts/tests.py
diff --git a/backend/secfit/workouts/urls.py b/backend/secfit/secfit/workouts/urls.py
similarity index 100%
rename from backend/secfit/workouts/urls.py
rename to backend/secfit/secfit/workouts/urls.py
diff --git a/backend/secfit/workouts/views.py b/backend/secfit/secfit/workouts/views.py
similarity index 100%
rename from backend/secfit/workouts/views.py
rename to backend/secfit/secfit/workouts/views.py
-- 
GitLab