From 37437b9674b744f37da392b7a426596330ff1cde Mon Sep 17 00:00:00 2001 From: MaM Web user Date: Mon, 20 Nov 2023 21:46:42 +0100 Subject: [PATCH 001/225] =?UTF-8?q?Jid=C3=A1=C5=A1:=20oprava=20pad=C3=A1n?= =?UTF-8?q?=C3=AD=20sphinxu=20(dokumentace)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mamweb/settings_prod.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mamweb/settings_prod.py b/mamweb/settings_prod.py index ebe827e4..060ba870 100644 --- a/mamweb/settings_prod.py +++ b/mamweb/settings_prod.py @@ -20,7 +20,9 @@ INSTALLED_APPS += ( ) # SECURITY WARNING: keep the secret key used in production secret! -assert not SECRET_KEY.startswith('12345') +# `'DOCUTILSCONFIG' in os.environ` kvůli sphinxu +# FIXME zjistit, zda je bezpečné a zda se to nedá udělat lépe +assert 'DOCUTILSCONFIG' in os.environ or not SECRET_KEY.startswith('12345') # SECURITY WARNING: don't run with debug turned on in production! DEBUG = False From 7a4213a61e8222a9a7ff2541177b7cc0d3a71b26 Mon Sep 17 00:00:00 2001 From: MaM Web user Date: Mon, 20 Nov 2023 22:06:42 +0100 Subject: [PATCH 002/225] =?UTF-8?q?Jid=C3=A1=C5=A1:=20django=20chce=20migr?= =?UTF-8?q?aci=20related=5Fname=20=20->=20,=20tak=20ji=20dostane?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...django_chce_migraci_tak_dostane_migraci.py | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 seminar/migrations/0114_related_name_se_zmenilo_a_django_chce_migraci_tak_dostane_migraci.py diff --git a/seminar/migrations/0114_related_name_se_zmenilo_a_django_chce_migraci_tak_dostane_migraci.py b/seminar/migrations/0114_related_name_se_zmenilo_a_django_chce_migraci_tak_dostane_migraci.py new file mode 100644 index 00000000..fccc850c --- /dev/null +++ b/seminar/migrations/0114_related_name_se_zmenilo_a_django_chce_migraci_tak_dostane_migraci.py @@ -0,0 +1,40 @@ +# Generated by Django 4.2.7 on 2023-11-20 21:02 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('contenttypes', '0002_remove_content_type_name'), + ('seminar', '0113_resitel_zasilat_cislo_papirove'), + ] + + operations = [ + migrations.AlterField( + model_name='problem', + name='autor', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='autor_problemu_%(class)s', to='seminar.organizator', verbose_name='autor problému'), + ), + migrations.AlterField( + model_name='problem', + name='garant', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='garant_problemu_%(class)s', to='seminar.organizator', verbose_name='garant zadaného problému'), + ), + migrations.AlterField( + model_name='problem', + name='opravovatele', + field=models.ManyToManyField(blank=True, related_name='opravovatele_%(class)s', to='seminar.organizator', verbose_name='opravovatelé'), + ), + migrations.AlterField( + model_name='problem', + name='polymorphic_ctype', + field=models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_%(app_label)s.%(class)s_set+', to='contenttypes.contenttype'), + ), + migrations.AlterField( + model_name='treenode', + name='polymorphic_ctype', + field=models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_%(app_label)s.%(class)s_set+', to='contenttypes.contenttype'), + ), + ] From c55fbb9dca53c392a9808edceb21a0c6079f1679 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Wed, 22 Nov 2023 13:42:15 +0100 Subject: [PATCH 003/225] =?UTF-8?q?WTF=20(fix=20admin=20soust=C5=99ed?= =?UTF-8?q?=C4=9Bn=C3=AD)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- soustredeni/admin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/soustredeni/admin.py b/soustredeni/admin.py index 091f9c59..c6f048db 100644 --- a/soustredeni/admin.py +++ b/soustredeni/admin.py @@ -25,7 +25,7 @@ class SoustredeniOrganizatoriInline(admin.TabularInline): extra = 1 fields = ['organizator','poznamka'] autocomplete_fields = ['organizator'] - ordering = ['organizator__osoba__jmeno','organizator__prijmeni'] + ordering = ['organizator__osoba__jmeno','organizator__osoba__prijmeni'] formfield_overrides = { models.TextField: {'widget': widgets.TextInput} } From 0fbfb1e3cd9e14dd715b5d73409bdfe62a7ab382 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Mon, 4 Dec 2023 10:51:28 +0100 Subject: [PATCH 004/225] =?UTF-8?q?Fix=20=E2=80=9Eget=5Fapp=5Flist()=20tak?= =?UTF-8?q?es=202=20positional=20arguments=20but=203=20were=20given?= =?UTF-8?q?=E2=80=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mamweb/admin.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mamweb/admin.py b/mamweb/admin.py index b6924468..5d0351df 100644 --- a/mamweb/admin.py +++ b/mamweb/admin.py @@ -35,13 +35,13 @@ locale.setlocale(locale.LC_COLLATE, 'cs_CZ.UTF-8') # https://books.agiliq.com/projects/django-admin-cookbook/en/latest/set_ordering.html # FIXME zpraseno pomocí toho, že Python umí bez problému přepisovat funkce -def get_app_list(self, request): +def get_app_list(self, request, app_label=None): """ Return a sorted list of all the installed apps that have been registered in this site. """ - app_dict = self._build_app_dict(request) + app_dict = self._build_app_dict(request, label=app_label) # Sort the apps alphabetically. app_list = sorted(app_dict.values(), key=lambda x: locale.strxfrm('!') if (x['name'] == "Seminar") else locale.strxfrm(x['name'].lower())) From ffa0c682f425427a275556c11386a3c500580780 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Mon, 11 Dec 2023 20:16:04 +0100 Subject: [PATCH 005/225] =?UTF-8?q?Pokus=20o=20=C5=99e=C5=A1en=C3=AD=20pro?= =?UTF-8?q?bl=C3=A9m=C5=AF=20s=20v=C3=BDsledkovkou=20posledn=C3=ADho=20?= =?UTF-8?q?=C4=8D=C3=ADsla?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- seminar/templates/seminar/archiv/cislo.html | 6 ++++-- seminar/templates/seminar/archiv/rocnik.html | 3 +-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/seminar/templates/seminar/archiv/cislo.html b/seminar/templates/seminar/archiv/cislo.html index b8edce90..fa34e965 100644 --- a/seminar/templates/seminar/archiv/cislo.html +++ b/seminar/templates/seminar/archiv/cislo.html @@ -38,9 +38,11 @@

Orgovské odkazy

{% endif %} diff --git a/seminar/templates/seminar/archiv/rocnik.html b/seminar/templates/seminar/archiv/rocnik.html index 66336086..fd2a99b6 100644 --- a/seminar/templates/seminar/archiv/rocnik.html +++ b/seminar/templates/seminar/archiv/rocnik.html @@ -120,8 +120,7 @@ {% if user.je_org %}

Výsledkovka ročníku (LaTeX, včetně neveřejných)

-

Tituly (TeX, do konce ročníku = pro poslední číslo)

-

Výsledkovka posledního čísla

+

Tituly (TeX, včetně neveřejných, všechny, nevhodné do mamtexu)

{# FIXME: Sice to sem asi nepatří sémanticky, ale bylo to nejjednodušší… #}

CSV export řešitelů

Výsledková listina včetně neveřejných bodů

From df2e4f086a9a0e12dfb77cb0a809cbf07a153984 Mon Sep 17 00:00:00 2001 From: Pavel 'LEdoian' Turinsky Date: Mon, 11 Dec 2023 20:20:24 +0100 Subject: [PATCH 006/225] Unmanage seminar.Nastaveni MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sry, nebudu to psát česky :-) --- .../migrations/0115_alter_nastaveni_options.py | 17 +++++++++++++++++ seminar/models/tvorba.py | 1 + 2 files changed, 18 insertions(+) create mode 100644 seminar/migrations/0115_alter_nastaveni_options.py diff --git a/seminar/migrations/0115_alter_nastaveni_options.py b/seminar/migrations/0115_alter_nastaveni_options.py new file mode 100644 index 00000000..9153bc4d --- /dev/null +++ b/seminar/migrations/0115_alter_nastaveni_options.py @@ -0,0 +1,17 @@ +# Generated by Django 3.2.23 on 2023-12-11 19:14 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('seminar', '0114_related_name_se_zmenilo_a_django_chce_migraci_tak_dostane_migraci'), + ] + + operations = [ + migrations.AlterModelOptions( + name='nastaveni', + options={'managed': False, 'verbose_name': 'Nastavení semináře'}, + ), + ] diff --git a/seminar/models/tvorba.py b/seminar/models/tvorba.py index 1c1a3285..bc5636b8 100644 --- a/seminar/models/tvorba.py +++ b/seminar/models/tvorba.py @@ -730,6 +730,7 @@ class Nastaveni(SingletonModel): class Meta: db_table = 'seminar_nastaveni' verbose_name = 'Nastavení semináře' + managed = False # aktualni_rocnik = models.ForeignKey(Rocnik, verbose_name='aktuální ročník', # null=False, on_delete=models.PROTECT) From f19726127154d1b946f08d65e4085e2f87178424 Mon Sep 17 00:00:00 2001 From: Pavel 'LEdoian' Turinsky Date: Mon, 11 Dec 2023 20:20:48 +0100 Subject: [PATCH 007/225] =?UTF-8?q?Opraven=C3=AD=20related=5Fname?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tohle by mělo být nezávislé, nemůžeme vyrobit foreign key na něco, co už existuje… ERRORS: seminar.Nastaveni.aktualni_cislo: (fields.E304) Reverse accessor for 'seminar.Nastaveni.aktualni_cislo' clashes with reverse accessor for 'various.Nastaveni.aktualni_cislo'. HINT: Add or change a related_name argument to the definition for 'seminar.Nastaveni.aktualni_cislo' or 'various.Nastaveni.aktualni_cislo'. various.Nastaveni.aktualni_cislo: (fields.E304) Reverse accessor for 'various.Nastaveni.aktualni_cislo' clashes with reverse accessor for 'seminar.Nastaveni.aktualni_cislo'. HINT: Add or change a related_name argument to the definition for 'various.Nastaveni.aktualni_cislo' or 'seminar.Nastaveni.aktualni_cislo'. --- seminar/models/tvorba.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/seminar/models/tvorba.py b/seminar/models/tvorba.py index bc5636b8..8049d8cf 100644 --- a/seminar/models/tvorba.py +++ b/seminar/models/tvorba.py @@ -736,7 +736,7 @@ class Nastaveni(SingletonModel): # null=False, on_delete=models.PROTECT) aktualni_cislo = models.ForeignKey(Cislo, verbose_name='Aktuální číslo', - null=False, on_delete=models.PROTECT) + null=False, on_delete=models.PROTECT, related_name='aktualni_cislo_old') cena_sous = models.IntegerField(null=False, verbose_name="Účastnický poplatek za soustředění", From 6a5390cdf6463ec2908fa8fa4f965b4f82698d93 Mon Sep 17 00:00:00 2001 From: Pavel 'LEdoian' Turinsky Date: Mon, 11 Dec 2023 20:21:27 +0100 Subject: [PATCH 008/225] =?UTF-8?q?P=C5=99id=C3=A1n=C3=AD=20Nastaveni=20do?= =?UTF-8?q?=20various?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- various/migrations/0001_initial.py | 26 ++++++++++++++++++++ various/models.py | 38 +++++++++++++++++++++++++++++- 2 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 various/migrations/0001_initial.py diff --git a/various/migrations/0001_initial.py b/various/migrations/0001_initial.py new file mode 100644 index 00000000..5d1232cf --- /dev/null +++ b/various/migrations/0001_initial.py @@ -0,0 +1,26 @@ +# Generated by Django 3.2.23 on 2023-12-11 19:19 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Nastaveni', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('cena_sous', models.IntegerField(default=1000, verbose_name='Účastnický poplatek za soustředění')), + ], + options={ + 'verbose_name': 'Nastavení semináře', + 'db_table': 'seminar_nastaveni', + 'managed': False, + }, + ), + ] diff --git a/various/models.py b/various/models.py index 71a83623..28a33057 100644 --- a/various/models.py +++ b/various/models.py @@ -1,3 +1,39 @@ from django.db import models -# Create your models here. +from reversion import revisions as reversion +from solo.models import SingletonModel + +from seminar.models import Cislo + +from django.urls import reverse + +@reversion.register(ignore_duplicates=True) +class Nastaveni(SingletonModel): + + class Meta: + db_table = 'seminar_nastaveni' + verbose_name = 'Nastavení semináře' + managed = False + +# aktualni_rocnik = models.ForeignKey(Rocnik, verbose_name='aktuální ročník', +# null=False, on_delete=models.PROTECT) + + aktualni_cislo = models.ForeignKey(Cislo, verbose_name='Aktuální číslo', + null=False, on_delete=models.PROTECT) + + cena_sous = models.IntegerField(null=False, + verbose_name="Účastnický poplatek za soustředění", + default=1000) + + @property + def aktualni_rocnik(self): + return self.aktualni_cislo.rocnik + + def __str__(self): + return 'Nastavení semináře' + + def admin_url(self): + return reverse('admin:seminar_nastaveni_change', args=(self.id, )) + + def verejne(self): + return False From 0bbb860b163809ba1d3e745079cb530ec092d8df Mon Sep 17 00:00:00 2001 From: Pavel 'LEdoian' Turinsky Date: Mon, 11 Dec 2023 20:25:33 +0100 Subject: [PATCH 009/225] =?UTF-8?q?Zru=C5=A1en=C3=AD=20seminar.Nastaveni?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- seminar/migrations/0116_delete_nastaveni.py | 16 +++++++++++ seminar/models/__init__.py | 2 ++ seminar/models/tvorba.py | 32 --------------------- 3 files changed, 18 insertions(+), 32 deletions(-) create mode 100644 seminar/migrations/0116_delete_nastaveni.py diff --git a/seminar/migrations/0116_delete_nastaveni.py b/seminar/migrations/0116_delete_nastaveni.py new file mode 100644 index 00000000..b820ea16 --- /dev/null +++ b/seminar/migrations/0116_delete_nastaveni.py @@ -0,0 +1,16 @@ +# Generated by Django 3.2.23 on 2023-12-11 19:25 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('seminar', '0115_alter_nastaveni_options'), + ] + + operations = [ + migrations.DeleteModel( + name='Nastaveni', + ), + ] diff --git a/seminar/models/__init__.py b/seminar/models/__init__.py index 34712ee4..6df1478f 100644 --- a/seminar/models/__init__.py +++ b/seminar/models/__init__.py @@ -6,3 +6,5 @@ from .soustredeni import * from .pomocne import * from .treenode import * from .novinky import * + +from various.models import Nastaveni diff --git a/seminar/models/tvorba.py b/seminar/models/tvorba.py index 8049d8cf..41def9c4 100644 --- a/seminar/models/tvorba.py +++ b/seminar/models/tvorba.py @@ -722,35 +722,3 @@ class Pohadka(SeminarModelBase): except ObjectDoesNotExist: # Neexistující *Node nemá smysl aktualizovat. pass - - -@reversion.register(ignore_duplicates=True) -class Nastaveni(SingletonModel): - - class Meta: - db_table = 'seminar_nastaveni' - verbose_name = 'Nastavení semináře' - managed = False - -# aktualni_rocnik = models.ForeignKey(Rocnik, verbose_name='aktuální ročník', -# null=False, on_delete=models.PROTECT) - - aktualni_cislo = models.ForeignKey(Cislo, verbose_name='Aktuální číslo', - null=False, on_delete=models.PROTECT, related_name='aktualni_cislo_old') - - cena_sous = models.IntegerField(null=False, - verbose_name="Účastnický poplatek za soustředění", - default=1000) - - @property - def aktualni_rocnik(self): - return self.aktualni_cislo.rocnik - - def __str__(self): - return 'Nastavení semináře' - - def admin_url(self): - return reverse('admin:seminar_nastaveni_change', args=(self.id, )) - - def verejne(self): - return False From f7382fb9464cf116ae01d306cf5df9664a6a962e Mon Sep 17 00:00:00 2001 From: Pavel 'LEdoian' Turinsky Date: Mon, 11 Dec 2023 20:28:10 +0100 Subject: [PATCH 010/225] =?UTF-8?q?Zapomenut=C3=A1=20z=C3=A1vislost?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ještě mi chybí jedna :-/ --- seminar/migrations/0116_delete_nastaveni.py | 1 + 1 file changed, 1 insertion(+) diff --git a/seminar/migrations/0116_delete_nastaveni.py b/seminar/migrations/0116_delete_nastaveni.py index b820ea16..21d90b63 100644 --- a/seminar/migrations/0116_delete_nastaveni.py +++ b/seminar/migrations/0116_delete_nastaveni.py @@ -7,6 +7,7 @@ class Migration(migrations.Migration): dependencies = [ ('seminar', '0115_alter_nastaveni_options'), + ('various', '0001_initial'), ] operations = [ From 158c0e4d90711c19ee83e976e5a70ecc98a49ed5 Mon Sep 17 00:00:00 2001 From: Pavel 'LEdoian' Turinsky Date: Mon, 11 Dec 2023 20:28:58 +0100 Subject: [PATCH 011/225] =?UTF-8?q?Druh=C3=A1=20zapomenut=C3=A1=20z=C3=A1v?= =?UTF-8?q?islost?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- various/migrations/0001_initial.py | 1 + 1 file changed, 1 insertion(+) diff --git a/various/migrations/0001_initial.py b/various/migrations/0001_initial.py index 5d1232cf..08bc1ea0 100644 --- a/various/migrations/0001_initial.py +++ b/various/migrations/0001_initial.py @@ -8,6 +8,7 @@ class Migration(migrations.Migration): initial = True dependencies = [ + ('seminar', '0115_alter_nastaveni_options'), ] operations = [ From ca0bbb124736168855b94eacc951e10cc6a78253 Mon Sep 17 00:00:00 2001 From: Pavel 'LEdoian' Turinsky Date: Mon, 11 Dec 2023 20:32:22 +0100 Subject: [PATCH 012/225] Manage --- .../migrations/0002_alter_nastaveni_options.py | 18 ++++++++++++++++++ various/models.py | 1 - 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 various/migrations/0002_alter_nastaveni_options.py diff --git a/various/migrations/0002_alter_nastaveni_options.py b/various/migrations/0002_alter_nastaveni_options.py new file mode 100644 index 00000000..6ef9c285 --- /dev/null +++ b/various/migrations/0002_alter_nastaveni_options.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.23 on 2023-12-11 19:30 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('various', '0001_initial'), + ('seminar', '0116_delete_nastaveni'), + ] + + operations = [ + migrations.AlterModelOptions( + name='nastaveni', + options={'verbose_name': 'Nastavení semináře'}, + ), + ] diff --git a/various/models.py b/various/models.py index 28a33057..6fc48e44 100644 --- a/various/models.py +++ b/various/models.py @@ -13,7 +13,6 @@ class Nastaveni(SingletonModel): class Meta: db_table = 'seminar_nastaveni' verbose_name = 'Nastavení semináře' - managed = False # aktualni_rocnik = models.ForeignKey(Rocnik, verbose_name='aktuální ročník', # null=False, on_delete=models.PROTECT) From 6cb41a1263a24a0a268d56033952a8fff88d0001 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Mon, 11 Dec 2023 21:07:18 +0100 Subject: [PATCH 013/225] =?UTF-8?q?Odstran=C4=9Bn=C3=AD=20django=20comment?= =?UTF-8?q?s,=20data=20jsou=20v=20/akce/mam/www/old=5Fdata/django=5Fcommen?= =?UTF-8?q?ts.json.gz?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mamweb/settings_common.py | 1 - mamweb/static/css/mamweb.css | 9 --------- mamweb/urls.py | 4 ---- requirements.txt | 3 --- seminar/templates/seminar/archiv/problem.html | 6 ------ treenode/templates/treenode/orphanage.html | 2 -- 6 files changed, 25 deletions(-) diff --git a/mamweb/settings_common.py b/mamweb/settings_common.py index d6ed2852..1c7bafab 100644 --- a/mamweb/settings_common.py +++ b/mamweb/settings_common.py @@ -121,7 +121,6 @@ INSTALLED_APPS = ( 'dal_select2', 'crispy_forms', - 'django_comments', 'django.contrib.flatpages', 'django.contrib.humanize', diff --git a/mamweb/static/css/mamweb.css b/mamweb/static/css/mamweb.css index 84e4c79b..e6839727 100644 --- a/mamweb/static/css/mamweb.css +++ b/mamweb/static/css/mamweb.css @@ -199,15 +199,6 @@ h1 { margin-top: 0px; } - - -/* Comments */ - -#id_comment { - width: 100%; - height: 6em; -} - /* Headline & Header */ #title { /*dělá blbosti šířka, je to kvůli fixed pozici, zatím natvrdo, vyřešit*/ diff --git a/mamweb/urls.py b/mamweb/urls.py index 9ef2750a..cdd7df09 100644 --- a/mamweb/urls.py +++ b/mamweb/urls.py @@ -13,7 +13,6 @@ Soubor sloužící jako základní „router“, tj. zde se includují veškeré - :mod:`api.urls` - :mod:`treenode.urls` - :mod:`aesop.urls` -- ``comments_dj/`` :mod:`django_comments.urls` """ from django.urls import path, include from django.contrib.staticfiles.urls import staticfiles_urlpatterns @@ -62,9 +61,6 @@ urlpatterns = [ # Aesop (ma vlastni podadresare) path('', include('aesop.urls')), - # Comments (interni i verejne) - path('comments_dj/', include('django_comments.urls')), - # REST API # path('api/', include(router.urls)), diff --git a/requirements.txt b/requirements.txt index 53c528ab..2e5d9761 100644 --- a/requirements.txt +++ b/requirements.txt @@ -35,9 +35,6 @@ django-rest-framework django-webpack-loader django-rest-polymorphic -# Comments -django-contrib-comments - # debug tools/extensions django-debug-toolbar diff --git a/seminar/templates/seminar/archiv/problem.html b/seminar/templates/seminar/archiv/problem.html index 1aa94219..cae8f56c 100644 --- a/seminar/templates/seminar/archiv/problem.html +++ b/seminar/templates/seminar/archiv/problem.html @@ -1,7 +1,5 @@ {% extends "base.html" %} -{% load comments %} - {% block content %}
{% block problem %} @@ -13,10 +11,6 @@

Text - org

{{ problem.text_org |safe }} -

Diskuse - org

- {% render_comment_list for object %} - {% render_comment_form for object %} -
{% endif %} diff --git a/treenode/templates/treenode/orphanage.html b/treenode/templates/treenode/orphanage.html index 6408749e..31a20e6d 100644 --- a/treenode/templates/treenode/orphanage.html +++ b/treenode/templates/treenode/orphanage.html @@ -12,8 +12,6 @@ dfsdfs {% endblock custom_css %} -{% load comments %} - {% block content %}
    {% for obj in object_list %} From 3fd0c7f917586dad9c0019636a16235cbd37ae54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Mon, 11 Dec 2023 21:17:12 +0100 Subject: [PATCH 014/225] =?UTF-8?q?Odstran=C4=9Bn=C3=AD=20six=20(knihovna?= =?UTF-8?q?=20pro=20p=C5=99echod=20mezi=20python2=20a=20python3)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- requirements.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 2e5d9761..ca6b0a6a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,7 +7,6 @@ ipython Pillow pilkit>=3.0 # Kvůli kompatibilitě s Pillow>=10.0.0 pytz -six pexpect traitlets Unidecode From 0204bd2444736979ff7159c8a9921e0221128c65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Mon, 11 Dec 2023 21:25:36 +0100 Subject: [PATCH 015/225] =?UTF-8?q?Odstran=C4=9Bn=C3=AD=20pytz=20(pou?= =?UTF-8?q?=C5=BEit=20pouze=20v=20testdatech,=20ale=20tam=20naopak=20budem?= =?UTF-8?q?e=20l=C3=A9pe=20simulovat=20aktu=C3=A1ln=C3=AD=20stav,=20kdy?= =?UTF-8?q?=C5=BE=20tam=20nacpeme=20UTC)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- requirements.txt | 1 - seminar/templatetags/utils.py | 1 - seminar/testutils.py | 5 ++--- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/requirements.txt b/requirements.txt index ca6b0a6a..df4ea6ce 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,7 +6,6 @@ html5lib ipython Pillow pilkit>=3.0 # Kvůli kompatibilitě s Pillow>=10.0.0 -pytz pexpect traitlets Unidecode diff --git a/seminar/templatetags/utils.py b/seminar/templatetags/utils.py index 4ba33a0e..ca400050 100644 --- a/seminar/templatetags/utils.py +++ b/seminar/templatetags/utils.py @@ -1,7 +1,6 @@ from django import template from django.utils.safestring import mark_safe from datetime import datetime, timedelta -from pytz import timezone from mamweb.settings import TIME_ZONE import logging register = template.Library() diff --git a/seminar/testutils.py b/seminar/testutils.py index 7076d5f0..c3d64f56 100644 --- a/seminar/testutils.py +++ b/seminar/testutils.py @@ -4,7 +4,6 @@ import datetime from django.contrib.auth.models import Permission from django.contrib.auth.models import Group -from pytz import timezone import random import lorem import django.contrib.auth @@ -177,13 +176,13 @@ def gen_organizatori(rnd, osoby, last_rocnik): year=1993 + pusobnost, month=rnd.randint(1, 12), day=rnd.randint(1, 28), - tzinfo=timezone('CET'), + tzinfo=datetime.timezone.utc, ) do = datetime.datetime( year=od.year + rnd.randint(1, 6), month=rnd.randint(1, 12), day=rnd.randint(1, 28), - tzinfo=timezone('CET'), + tzinfo=datetime.timezone.utc, ) #aktualni organizatori jeste nemaji vyplnene organizuje_do From b5de60d681b92cfdd6b95278d687b6780359a3bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Mon, 11 Dec 2023 21:26:56 +0100 Subject: [PATCH 016/225] =?UTF-8?q?Odstran=C4=9Bn=C3=AD=20html5lib=20(pro?= =?UTF-8?q?=20parsov=C3=A1n=C3=AD=20html=20v=20Pythonu,=20nepou=C5=BE?= =?UTF-8?q?=C3=ADvan=C3=A1,=20nav=C3=ADc=20u=C5=BE=203=20roky=20neudr?= =?UTF-8?q?=C5=BEovan=C3=A1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- requirements.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index df4ea6ce..2cff57b1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,7 +2,6 @@ # basic libs psycopg2 -html5lib ipython Pillow pilkit>=3.0 # Kvůli kompatibilitě s Pillow>=10.0.0 From 3bfdde10e8b2fa885ccfde1c2ec36a39699d9e74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Mon, 11 Dec 2023 21:30:09 +0100 Subject: [PATCH 017/225] =?UTF-8?q?Odstran=C4=9Bn=C3=AD=20pexpect=20(kniho?= =?UTF-8?q?vna=20pro=20spawnov=C3=A1n=C3=AD=20podproces=C5=AF=20z=20python?= =?UTF-8?q?u,=20nepou=C5=BE=C3=ADvan=C3=A1=3F)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- requirements.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 2cff57b1..97f95e53 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,7 +5,6 @@ psycopg2 ipython Pillow pilkit>=3.0 # Kvůli kompatibilitě s Pillow>=10.0.0 -pexpect traitlets Unidecode From 37586d7433969d4a06b8818338265463dd8d777e Mon Sep 17 00:00:00 2001 From: Pavel 'LEdoian' Turinsky Date: Mon, 11 Dec 2023 21:31:54 +0100 Subject: [PATCH 018/225] =?UTF-8?q?Opraven=C3=AD=20pr=C3=A1v?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit TODO: je na těch ContentTypech navěšené ještě něco dalšího? Pro nastavení asi ne, ale co ostatní aplikace? --- various/migrations/0003_fix_permissions.py | 41 ++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 various/migrations/0003_fix_permissions.py diff --git a/various/migrations/0003_fix_permissions.py b/various/migrations/0003_fix_permissions.py new file mode 100644 index 00000000..2364f160 --- /dev/null +++ b/various/migrations/0003_fix_permissions.py @@ -0,0 +1,41 @@ +# Generated by Django 3.2.23 on 2023-12-11 19:40 + +from django.db import migrations + +def oprav_prava_k_nastaveni(apps, schema_editor): + # Tohle je trošku hnus, nešlo by to snáz? + ContentType = apps.get_model('contenttypes', 'ContentType') + Permission = apps.get_model('auth', 'Permission') + Group = apps.get_model('auth', 'Group') + old_ct = ContentType.objects.get_by_natural_key('seminar', 'nastaveni') + new_ct = ContentType.objects.get_by_natural_key('various', 'nastaveni') + old_perms = Permission.objects.filter(content_type=old_ct) + new_perms = Permission.objects.filter(content_type=new_ct) + for g in Group.objects.filter(permissions__in=old_perms): + old_codenames = Permission.objects.filter(group__in=[g], content_type=old_ct).values('codename') + g.permissions.add(*new_perms.filter(codename__in=old_codenames)) + g.permissions.remove(*old_perms) + +def obnov_prava_k_nastaveni(apps, schema_editor): + ContentType = apps.get_model('contenttypes', 'ContentType') + Permission = apps.get_model('auth', 'Permission') + Group = apps.get_model('auth', 'Group') + old_ct = ContentType.objects.get_by_natural_key('seminar', 'nastaveni') + new_ct = ContentType.objects.get_by_natural_key('various', 'nastaveni') + old_perms = Permission.objects.filter(content_type=old_ct) + new_perms = Permission.objects.filter(content_type=new_ct) + for g in Group.objects.filter(permissions__in=old_perms): + new_codenames = Permission.objects.filter(group__in=[g], content_type=new_ct).values('codename') + g.permissions.add(*old_perms.filter(codename__in=new_codenames)) + g.permissions.remove(*new_perms) + + +class Migration(migrations.Migration): + + dependencies = [ + ('various', '0002_alter_nastaveni_options'), + ] + + operations = [ + migrations.RunPython(oprav_prava_k_nastaveni, obnov_prava_k_nastaveni), + ] From 191177aea09a774d683a3117ad4c6590184de8fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Mon, 11 Dec 2023 21:33:07 +0100 Subject: [PATCH 019/225] =?UTF-8?q?Odstran=C4=9Bn=C3=AD=20traitlets=20(kon?= =?UTF-8?q?trola=20typov=C3=A1n=C3=AD,=20ale=20pokud=20spr=C3=A1vn=C4=9B?= =?UTF-8?q?=20ch=C3=A1pu,=20tak=20n=C4=9Bjak=C3=A9ho=20sv=C3=A9ho)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- requirements.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 97f95e53..1026bbf2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,7 +5,6 @@ psycopg2 ipython Pillow pilkit>=3.0 # Kvůli kompatibilitě s Pillow>=10.0.0 -traitlets Unidecode # Django and modules From 0f3874beb57829f37f518c822bffadc67e7d4c2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Mon, 11 Dec 2023 21:49:14 +0100 Subject: [PATCH 020/225] =?UTF-8?q?N=C4=9Bjak=C3=A9=20koment=C3=A1=C5=99e?= =?UTF-8?q?=20k=20requirements.txt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- requirements.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/requirements.txt b/requirements.txt index 1026bbf2..ca8a8e72 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,11 +1,11 @@ -c constraints.txt # basic libs -psycopg2 -ipython +psycopg2 # PostgreSQL adaptér +ipython # Interaktivní shell +Unidecode # Přepisuje unicode do ASCII (např. soubory nebo e-maily) Pillow pilkit>=3.0 # Kvůli kompatibilitě s Pillow>=10.0.0 -Unidecode # Django and modules From 1802e909523a6397bd89d598050db47610b33aa1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Mon, 11 Dec 2023 21:51:20 +0100 Subject: [PATCH 021/225] =?UTF-8?q?Odstran=C4=9Bn=C3=AD=20django-mptt=20(k?= =?UTF-8?q?nihovna=20pro=20stromy=20v=20Djangu,=20nap=C5=99.=20v=20adminu,?= =?UTF-8?q?=20na=20prvn=C3=AD=20pohled=20nepou=C5=BE=C3=ADvan=C3=A1,=20nav?= =?UTF-8?q?=C3=ADc=20unmaintained)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- requirements.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index ca8a8e72..d91220cc 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,7 +11,6 @@ pilkit>=3.0 # Kvůli kompatibilitě s Pillow>=10.0.0 Django<5.0 #django-bootstrap-sass -django-mptt django-reversion django-sekizai django-countries From 7a28649436c7deeef474e3cccd9df45e5b735c7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Mon, 11 Dec 2023 21:59:13 +0100 Subject: [PATCH 022/225] =?UTF-8?q?Odstran=C4=9Bn=C3=AD=20django-flat-them?= =?UTF-8?q?e=20(d=C3=A1vno,=20d=C3=A1vno,=20p=C5=99ed=C3=A1vno=20(Django?= =?UTF-8?q?=201.9)=20includovan=C3=A9=20do=20Djanga)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- requirements.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index d91220cc..bf0ed683 100644 --- a/requirements.txt +++ b/requirements.txt @@ -17,7 +17,6 @@ django-countries django-solo django-ckeditor django-cleanup # Uklízí media/ od smazaných „databázových“ souborů -django-flat-theme django-taggit django-autocomplete-light>=3.9.0 django-crispy-forms From 187ca0ec93f5147efeb32216a554eddf9bee545e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Mon, 11 Dec 2023 22:02:22 +0100 Subject: [PATCH 023/225] =?UTF-8?q?Dal=C5=A1=C3=AD=20koment=C3=A1=C5=99e?= =?UTF-8?q?=20v=20requirements.txt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- requirements.txt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/requirements.txt b/requirements.txt index bf0ed683..ac63f0ef 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,16 +11,16 @@ pilkit>=3.0 # Kvůli kompatibilitě s Pillow>=10.0.0 Django<5.0 #django-bootstrap-sass -django-reversion -django-sekizai -django-countries -django-solo -django-ckeditor +django-reversion # Version control na datech v databázi +django-sekizai # Vylepšení bloků v templatech +django-countries # Políčko ve formu / field v modelu ohledně států +django-solo # Singleton model (speciálně Nastavení) +django-ckeditor # Editor htmlka (hlavně v adminu u flatpages) django-cleanup # Uklízí media/ od smazaných „databázových“ souborů django-taggit django-autocomplete-light>=3.9.0 django-crispy-forms -django-imagekit +django-imagekit # Všechny možné obrázky v Djangu django-polymorphic django-sitetree django_reverse_admin From ea5ee85e7a789c0b2ad7e482e06c76c3508ac172 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Mon, 11 Dec 2023 22:03:42 +0100 Subject: [PATCH 024/225] =?UTF-8?q?Odstran=C4=9Bn=C3=AD=20django-crispy-fo?= =?UTF-8?q?rms=20(n=C4=9Bjak=C3=A9=20fancy=20formy,=20ale=20vypad=C3=A1=20?= =?UTF-8?q?nepou=C5=BE=C3=ADvan=C4=9B)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mamweb/settings_common.py | 2 -- requirements.txt | 1 - 2 files changed, 3 deletions(-) diff --git a/mamweb/settings_common.py b/mamweb/settings_common.py index 1c7bafab..42acf0d7 100644 --- a/mamweb/settings_common.py +++ b/mamweb/settings_common.py @@ -120,8 +120,6 @@ INSTALLED_APPS = ( 'dal', 'dal_select2', - 'crispy_forms', - 'django.contrib.flatpages', 'django.contrib.humanize', diff --git a/requirements.txt b/requirements.txt index ac63f0ef..6f6ea3f8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -19,7 +19,6 @@ django-ckeditor # Editor htmlka (hlavně v adminu u flatpages) django-cleanup # Uklízí media/ od smazaných „databázových“ souborů django-taggit django-autocomplete-light>=3.9.0 -django-crispy-forms django-imagekit # Všechny možné obrázky v Djangu django-polymorphic django-sitetree From 8babbd988cc08cfba3065335889b23e431b92713 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Mon, 11 Dec 2023 22:20:38 +0100 Subject: [PATCH 025/225] =?UTF-8?q?A=20dal=C5=A1=C3=AD=20koment=C3=A1?= =?UTF-8?q?=C5=99e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- requirements.txt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/requirements.txt b/requirements.txt index 6f6ea3f8..b165c781 100644 --- a/requirements.txt +++ b/requirements.txt @@ -17,12 +17,12 @@ django-countries # Políčko ve formu / field v modelu ohledně států django-solo # Singleton model (speciálně Nastavení) django-ckeditor # Editor htmlka (hlavně v adminu u flatpages) django-cleanup # Uklízí media/ od smazaných „databázových“ souborů -django-taggit -django-autocomplete-light>=3.9.0 +django-taggit # Taggy v djangu (speciálně zaměření problémů) +django-autocomplete-light>=3.9.0 # Automatické doplňování (problémů, účastníků, …) ve formulářích django-imagekit # Všechny možné obrázky v Djangu -django-polymorphic -django-sitetree -django_reverse_admin +django-polymorphic # Polymorfismus na django modelech (hlavně Problém nebo treenode) +django-sitetree # Struktura stránek, hlavně pro meníčko +django_reverse_admin # Lepší handlování OneToOne fieldů v adminu django-rest-framework django-webpack-loader django-rest-polymorphic From f41d5587fc05585da214e122f8926941a1ca95a9 Mon Sep 17 00:00:00 2001 From: Pavel 'LEdoian' Turinsky Date: Mon, 18 Dec 2023 21:21:17 +0100 Subject: [PATCH 026/225] =?UTF-8?q?Pokus=20o=20hack:=20p=C5=99i=20v=C3=BDr?= =?UTF-8?q?ob=C4=9B=20modelu=20na=20n=C4=9Bj=20rovnou=20p=C5=99esm=C4=9Bru?= =?UTF-8?q?jeme=20p=C5=AFvodn=C3=AD=20contenttype.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- various/migrations/0001_initial.py | 10 ++++++++++ various/migrations/0003_fix_permissions.py | 1 - 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/various/migrations/0001_initial.py b/various/migrations/0001_initial.py index 08bc1ea0..1cc24c3d 100644 --- a/various/migrations/0001_initial.py +++ b/various/migrations/0001_initial.py @@ -2,6 +2,15 @@ from django.db import migrations, models +def nastav_nove_contenttypes(apps, schema_editor): + ContentType = apps.get_model('contenttypes', 'ContentType') + old_ct = ContentType.objects.get_by_natural_key('seminar', 'nastaveni') + old_ct.update(appname='various') + +def nastav_stare_contenttypes(apps, schema_editor): + ContentType = apps.get_model('contenttypes', 'ContentType') + new_ct = ContentType.objects.get_by_natural_key('various', 'nastaveni') + new_ct.update(appname='seminar') class Migration(migrations.Migration): @@ -24,4 +33,5 @@ class Migration(migrations.Migration): 'managed': False, }, ), + migrations.RunPython(nastav_nove_contenttypes, nastav_stare_contenttypes), ] diff --git a/various/migrations/0003_fix_permissions.py b/various/migrations/0003_fix_permissions.py index 2364f160..9c3396f6 100644 --- a/various/migrations/0003_fix_permissions.py +++ b/various/migrations/0003_fix_permissions.py @@ -37,5 +37,4 @@ class Migration(migrations.Migration): ] operations = [ - migrations.RunPython(oprav_prava_k_nastaveni, obnov_prava_k_nastaveni), ] From 46fd51e7d927a5c1739a1484ec100da8e7fa06d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Mon, 18 Dec 2023 21:24:14 +0100 Subject: [PATCH 027/225] =?UTF-8?q?Odstran=C4=9Bno=20sekizai=20(nepou?= =?UTF-8?q?=C5=BE=C3=ADvalo=20se,=20zbyte=C4=8Dn=C4=9B=20zeslo=C5=BEi?= =?UTF-8?q?=C5=A5uje,=20jde=20to=20d=C4=9Blat=20i=20jinak=20a=20h=C3=A1zel?= =?UTF-8?q?o=20n=C4=9Bkdy=20n=C4=9Bkde=20chyby)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mamweb/settings_common.py | 2 -- mamweb/templates/base.html | 5 ++--- requirements.txt | 1 - treenode/templates/treenode/orphanage.html | 7 ------- 4 files changed, 2 insertions(+), 13 deletions(-) diff --git a/mamweb/settings_common.py b/mamweb/settings_common.py index 42acf0d7..d5b35281 100644 --- a/mamweb/settings_common.py +++ b/mamweb/settings_common.py @@ -87,7 +87,6 @@ TEMPLATES = [ 'django.contrib.auth.context_processors.auth', 'django.template.context_processors.request', 'django.contrib.messages.context_processors.messages', - 'sekizai.context_processors.sekizai', 'header_fotky.context_processors.vzhled', 'various.context_processors.rozliseni', 'various.context_processors.april', @@ -110,7 +109,6 @@ INSTALLED_APPS = ( 'django.contrib.auth', # Utilities - 'sekizai', 'reversion', 'django_countries', 'solo', diff --git a/mamweb/templates/base.html b/mamweb/templates/base.html index 4281c6df..a29d4697 100644 --- a/mamweb/templates/base.html +++ b/mamweb/templates/base.html @@ -1,4 +1,4 @@ -{% load static sekizai_tags %} +{% load static %} {% load sitetree %} @@ -7,7 +7,6 @@ {% block title %}{% block nadpis1a %}🦊{% endblock %} | Korespondenční seminář M&M{% endblock title %} -{# {% render_block css %}#} {% block custom_css %}{% endblock %} @@ -189,6 +188,6 @@ walkText(document.body); {% endif %} - {% render_block "js" %} + {% block js %}{% endblock %} diff --git a/requirements.txt b/requirements.txt index b165c781..6855e0ae 100644 --- a/requirements.txt +++ b/requirements.txt @@ -12,7 +12,6 @@ pilkit>=3.0 # Kvůli kompatibilitě s Pillow>=10.0.0 Django<5.0 #django-bootstrap-sass django-reversion # Version control na datech v databázi -django-sekizai # Vylepšení bloků v templatech django-countries # Políčko ve formu / field v modelu ohledně států django-solo # Singleton model (speciálně Nastavení) django-ckeditor # Editor htmlka (hlavně v adminu u flatpages) diff --git a/treenode/templates/treenode/orphanage.html b/treenode/templates/treenode/orphanage.html index 31a20e6d..53d4ed67 100644 --- a/treenode/templates/treenode/orphanage.html +++ b/treenode/templates/treenode/orphanage.html @@ -1,12 +1,5 @@ {% extends "seminar/archiv/base.html" %} {% load static %} -{% load sekizai_tags %} - -{# toto z nejakeho duvodu nefunguje #} -{% addtoblock css %} -dfsdfs - -{% endaddtoblock "css" %} {% block custom_css %} From 39d618834bf3f066544f97b4ff28e56dd42d889b Mon Sep 17 00:00:00 2001 From: Pavel 'LEdoian' Turinsky Date: Mon, 18 Dec 2023 21:32:58 +0100 Subject: [PATCH 028/225] =?UTF-8?q?fixup!=20Pokus=20o=20hack:=20p=C5=99i?= =?UTF-8?q?=20v=C3=BDrob=C4=9B=20modelu=20na=20n=C4=9Bj=20rovnou=20p=C5=99?= =?UTF-8?q?esm=C4=9Brujeme=20p=C5=AFvodn=C3=AD=20contenttype.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- various/migrations/0001_initial.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/various/migrations/0001_initial.py b/various/migrations/0001_initial.py index 1cc24c3d..38f2a029 100644 --- a/various/migrations/0001_initial.py +++ b/various/migrations/0001_initial.py @@ -4,13 +4,15 @@ from django.db import migrations, models def nastav_nove_contenttypes(apps, schema_editor): ContentType = apps.get_model('contenttypes', 'ContentType') - old_ct = ContentType.objects.get_by_natural_key('seminar', 'nastaveni') - old_ct.update(appname='various') + old_ct = ContentType.objects.filter(app_label='seminar', model='nastaveni') + # Pozn: tohle může být prázdné (pokud Django nedostalo signál o dokončených migracích, např. při vyrábění databáze z nuly) + # Ale .update to nevadí… + old_ct.update(app_label='various') def nastav_stare_contenttypes(apps, schema_editor): ContentType = apps.get_model('contenttypes', 'ContentType') - new_ct = ContentType.objects.get_by_natural_key('various', 'nastaveni') - new_ct.update(appname='seminar') + new_ct = ContentType.objects.filter(app_label='various', model='nastaveni') + new_ct.update(app_label='seminar') class Migration(migrations.Migration): From 824a4d9eb3e313186399149935b75ab05a3e6677 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Mon, 18 Dec 2023 22:13:17 +0100 Subject: [PATCH 029/225] =?UTF-8?q?Fixnuto=20p=C5=99et=C3=A9k=C3=A1n=C3=AD?= =?UTF-8?q?=20select=C5=AF=20p=C5=99es=20title=20a=20login=20bar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mamweb/static/css/mamweb.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mamweb/static/css/mamweb.css b/mamweb/static/css/mamweb.css index 84e4c79b..6847ba69 100644 --- a/mamweb/static/css/mamweb.css +++ b/mamweb/static/css/mamweb.css @@ -39,7 +39,7 @@ div.login-bar { position: fixed; margin-top: -20px; min-height: 20px; - z-index: 20; + z-index: 4086; padding-left: 5px; padding-right: 5px; @@ -214,7 +214,7 @@ h1 { height: 55px; width: 970px; position: fixed; - z-index: 10; + z-index: 2048; background-color: #e84e10; filter: drop-shadow(0px 5px 5px rgba(0, 0, 0, 0.4)); From 8e1a03863fd1f54377a7060f3dd519781597dffb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Thu, 28 Dec 2023 09:50:13 +0100 Subject: [PATCH 030/225] =?UTF-8?q?PLS,=20Windowsy=E2=80=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index 6855e0ae..4a7163d3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- -c constraints.txt # basic libs From a72435dd724b0a2a394a8a77973b4ce2d60f4d0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Tue, 30 Jan 2024 00:02:27 +0100 Subject: [PATCH 031/225] =?UTF-8?q?Zrychlen=C3=AD=20na=C4=8D=C3=ADt=C3=A1n?= =?UTF-8?q?=C3=AD=20archivu=20soust=C5=99ed=C4=9Bn=C3=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../templates/soustredeni/seznam_soustredeni.html | 8 ++++---- soustredeni/views.py | 11 +++++++++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/soustredeni/templates/soustredeni/seznam_soustredeni.html b/soustredeni/templates/soustredeni/seznam_soustredeni.html index fcb7c287..e5f68bfc 100644 --- a/soustredeni/templates/soustredeni/seznam_soustredeni.html +++ b/soustredeni/templates/soustredeni/seznam_soustredeni.html @@ -58,16 +58,16 @@ {# Účastníci #}

    Soustředění se zúčastnili tito účastníci:

    - {% for i in soustredeni.soustredeni_ucastnici_set.all %} - {{i.resitel}}{% if forloop.last %}.{% else %},{% endif %} + {% for i in soustredeni.ucastnici.all %} + {{i}}{% if forloop.last %}.{% else %},{% endif %} {% empty %} Nic! {% endfor %}

    Soustředění se účastnili tito organizátoři:

    - {% for i in soustredeni.soustredeni_organizatori_set.all %} - {{i.organizator}}{% if forloop.last %}.{% else %},{% endif %} + {% for i in soustredeni.organizatori.all %} + {{i}}{% if forloop.last %}.{% else %},{% endif %} {% empty %} Nic! {% endfor %} diff --git a/soustredeni/views.py b/soustredeni/views.py index e5ae2992..da59e779 100644 --- a/soustredeni/views.py +++ b/soustredeni/views.py @@ -17,6 +17,17 @@ class SoustredeniListView(generic.ListView): model = Soustredeni template_name = 'soustredeni/seznam_soustredeni.html' + def get_queryset(self): + return ( + Soustredeni.objects + .prefetch_related( + "ucastnici", "ucastnici__osoba", + "organizatori", "organizatori__osoba", + "galerie_set" + ) + .select_related("rocnik") + ) + def soustredeniObalkyView(request, soustredeni): soustredeni = get_object_or_404(Soustredeni, id=soustredeni) From c130ab842649e3d5f9028dcb2131526c44822ab9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Tue, 30 Jan 2024 00:11:13 +0100 Subject: [PATCH 032/225] =?UTF-8?q?Zrychlen=C3=AD=20na=C4=8D=C3=ADt=C3=A1n?= =?UTF-8?q?=C3=AD=20archivu=20soust=C5=99ed=C4=9Bn=C3=AD=20pro=20=C3=BA?= =?UTF-8?q?=C4=8Dastn=C3=ADky?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- soustredeni/views.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/soustredeni/views.py b/soustredeni/views.py index da59e779..f2aafdf7 100644 --- a/soustredeni/views.py +++ b/soustredeni/views.py @@ -18,12 +18,14 @@ class SoustredeniListView(generic.ListView): template_name = 'soustredeni/seznam_soustredeni.html' def get_queryset(self): + if not self.request.user.je_org: + return super().get_queryset() return ( Soustredeni.objects .prefetch_related( "ucastnici", "ucastnici__osoba", "organizatori", "organizatori__osoba", - "galerie_set" + "galerie_set", ) .select_related("rocnik") ) From b4c693a9ab3c64618028c127728105b42ad0a03d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Mon, 5 Feb 2024 19:50:17 +0100 Subject: [PATCH 033/225] =?UTF-8?q?Uchycen=C3=AD=20=C5=99=C3=A1dku=20a=20s?= =?UTF-8?q?loupce=20v=20tabulce?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mamweb/static/css/mamweb.css | 29 +++++++++++++++++++ .../templates/odevzdavatko/tabulka.html | 6 ++-- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/mamweb/static/css/mamweb.css b/mamweb/static/css/mamweb.css index 4b4a5e51..0d699d5c 100644 --- a/mamweb/static/css/mamweb.css +++ b/mamweb/static/css/mamweb.css @@ -1243,6 +1243,35 @@ div.gdpr { background: rgb(253, 237, 213); } +/*Přichycování prvního sloupce a řádku*/ +.dosla_reseni { + display: block; + max-height: 90vh; + max-width: 90vw; + overflow: auto; + margin-left: 5vw; +} + +.dosla_reseni thead tr { + position: sticky; + top: 0; + z-index: 1; +} + +.dosla_reseni tr:nth-child(even) td:first-child, .dosla_reseni thead tr, .dosla_reseni thead tr:first-child td:first-child { + background: rgb(253, 237, 213); +} + +.dosla_reseni tr:nth-child(odd) td:first-child { + background: #fffbf6; +} + +.dosla_reseni tr td:first-child { + position: sticky; + left: 0; +} +/* */ + .odevzdana_reseni tr th, .odevzdana_reseni tr td { border: 1px solid black; diff --git a/odevzdavatko/templates/odevzdavatko/tabulka.html b/odevzdavatko/templates/odevzdavatko/tabulka.html index 7cd317e5..7ee90ea9 100644 --- a/odevzdavatko/templates/odevzdavatko/tabulka.html +++ b/odevzdavatko/templates/odevzdavatko/tabulka.html @@ -21,8 +21,8 @@ Do data (včetně): {{ filtr.reseni_do }} -

    + {# Prázdná buňka v levém horním rohu #} {% for p in problemy %} @@ -32,6 +32,8 @@ Do data (včetně): {{ filtr.reseni_do }} {% endfor %} + + {% for resitel,hodnoty in radky%} {% endfor %} +
    @@ -52,8 +54,8 @@ Do data (včetně): {{ filtr.reseni_do }} {% endfor %}
    -
    {% endblock %} From c0a3e3df8f265011de3aa4404c3a71fb061f57ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Mon, 5 Feb 2024 20:08:25 +0100 Subject: [PATCH 034/225] =?UTF-8?q?Lep=C5=A1=C3=AD=20vy=C5=99e=C5=A1en?= =?UTF-8?q?=C3=AD=20rozli=C5=A1en=C3=AD=20web=C5=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mamweb/static/css/rozliseni.css | 45 ++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/mamweb/static/css/rozliseni.css b/mamweb/static/css/rozliseni.css index baf2d837..52d2a481 100644 --- a/mamweb/static/css/rozliseni.css +++ b/mamweb/static/css/rozliseni.css @@ -1,29 +1,32 @@ /* Rozlišení mezi lokálním, test a produkčním webem */ -.localweb { - border-left: 20px solid greenyellow; - border-right: 20px solid greenyellow; +.localweb:before, .localweb:after { + content: ""; + position: fixed; + width: 20px; + height: 100%; + left: 0; + right: 0; + background: greenyellow; } -.localweb .login-bar { - margin-left: -20px; -} - -.testweb { - border-left: 20px solid darkorange; - border-right: 20px solid darkorange; -} - -.testweb .login-bar { - margin-left: -20px; +.testweb:before, .testweb:after { + content: ""; + position: fixed; + width: 20px; + height: 100%; + left: 0; + right: 0; + background: darkorange; } /* Produkční web z pohledu superuživatele */ -.suprodweb { - border-left: 20px solid red; - border-right: 20px solid red; -} - -.suprodweb .login-bar { - margin-left: -20px; +.suprodweb:before, .suprodweb:after { + content: ""; + position: fixed; + width: 20px; + height: 100%; + left: 0; + right: 0; + background: red; } From 239a324a191a63ebea8df4afde2cebc9f6279d90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Mon, 5 Feb 2024 20:34:25 +0100 Subject: [PATCH 035/225] =?UTF-8?q?Je=C5=A1t=C4=9B=20lep=C5=A1=C3=AD=20vy?= =?UTF-8?q?=C5=99e=C5=A1en=C3=AD=20rozli=C5=A1en=C3=AD=20web=C5=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mamweb/static/css/rozliseni.css | 35 ++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/mamweb/static/css/rozliseni.css b/mamweb/static/css/rozliseni.css index 52d2a481..35f52f88 100644 --- a/mamweb/static/css/rozliseni.css +++ b/mamweb/static/css/rozliseni.css @@ -1,32 +1,35 @@ /* Rozlišení mezi lokálním, test a produkčním webem */ -.localweb:before, .localweb:after { +body.localweb:before, body.localweb:after, +body.testweb:before, body.testweb:after, +body.suprodweb:before, body.suprodweb:after { content: ""; position: fixed; width: 20px; height: 100%; + top: 0; +} + +body.localweb:before, +body.testweb:before, +body.suprodweb:before { left: 0; +} + +body.localweb:after, +body.testweb:after, +body.suprodweb:after { right: 0; +} + +body.localweb:before, body.localweb:after { background: greenyellow; } -.testweb:before, .testweb:after { - content: ""; - position: fixed; - width: 20px; - height: 100%; - left: 0; - right: 0; +body.testweb:before, body.testweb:after { background: darkorange; } -/* Produkční web z pohledu superuživatele */ -.suprodweb:before, .suprodweb:after { - content: ""; - position: fixed; - width: 20px; - height: 100%; - left: 0; - right: 0; +body.suprodweb:before, body.suprodweb:after { background: red; } From b2911d5e9f0d272c4a5e8cf11eb13474bbbbc797 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Mon, 12 Feb 2024 18:55:41 +0100 Subject: [PATCH 036/225] Separace bootstrapu --- .../static/{ => bootstrap}/css/bootstrap-theme.css | 0 mamweb/static/{ => bootstrap}/css/bootstrap.css | 0 .../fonts/glyphicons-halflings-regular.eot | Bin .../fonts/glyphicons-halflings-regular.svg | 0 .../fonts/glyphicons-halflings-regular.ttf | Bin .../fonts/glyphicons-halflings-regular.woff | Bin mamweb/static/{ => bootstrap}/js/bootstrap.js | 0 mamweb/templates/base.html | 6 +++--- requirements.txt | 1 - 9 files changed, 3 insertions(+), 4 deletions(-) rename mamweb/static/{ => bootstrap}/css/bootstrap-theme.css (100%) rename mamweb/static/{ => bootstrap}/css/bootstrap.css (100%) rename mamweb/static/{ => bootstrap}/fonts/glyphicons-halflings-regular.eot (100%) rename mamweb/static/{ => bootstrap}/fonts/glyphicons-halflings-regular.svg (100%) rename mamweb/static/{ => bootstrap}/fonts/glyphicons-halflings-regular.ttf (100%) rename mamweb/static/{ => bootstrap}/fonts/glyphicons-halflings-regular.woff (100%) rename mamweb/static/{ => bootstrap}/js/bootstrap.js (100%) diff --git a/mamweb/static/css/bootstrap-theme.css b/mamweb/static/bootstrap/css/bootstrap-theme.css similarity index 100% rename from mamweb/static/css/bootstrap-theme.css rename to mamweb/static/bootstrap/css/bootstrap-theme.css diff --git a/mamweb/static/css/bootstrap.css b/mamweb/static/bootstrap/css/bootstrap.css similarity index 100% rename from mamweb/static/css/bootstrap.css rename to mamweb/static/bootstrap/css/bootstrap.css diff --git a/mamweb/static/fonts/glyphicons-halflings-regular.eot b/mamweb/static/bootstrap/fonts/glyphicons-halflings-regular.eot similarity index 100% rename from mamweb/static/fonts/glyphicons-halflings-regular.eot rename to mamweb/static/bootstrap/fonts/glyphicons-halflings-regular.eot diff --git a/mamweb/static/fonts/glyphicons-halflings-regular.svg b/mamweb/static/bootstrap/fonts/glyphicons-halflings-regular.svg similarity index 100% rename from mamweb/static/fonts/glyphicons-halflings-regular.svg rename to mamweb/static/bootstrap/fonts/glyphicons-halflings-regular.svg diff --git a/mamweb/static/fonts/glyphicons-halflings-regular.ttf b/mamweb/static/bootstrap/fonts/glyphicons-halflings-regular.ttf similarity index 100% rename from mamweb/static/fonts/glyphicons-halflings-regular.ttf rename to mamweb/static/bootstrap/fonts/glyphicons-halflings-regular.ttf diff --git a/mamweb/static/fonts/glyphicons-halflings-regular.woff b/mamweb/static/bootstrap/fonts/glyphicons-halflings-regular.woff similarity index 100% rename from mamweb/static/fonts/glyphicons-halflings-regular.woff rename to mamweb/static/bootstrap/fonts/glyphicons-halflings-regular.woff diff --git a/mamweb/static/js/bootstrap.js b/mamweb/static/bootstrap/js/bootstrap.js similarity index 100% rename from mamweb/static/js/bootstrap.js rename to mamweb/static/bootstrap/js/bootstrap.js diff --git a/mamweb/templates/base.html b/mamweb/templates/base.html index a29d4697..c55ca7f2 100644 --- a/mamweb/templates/base.html +++ b/mamweb/templates/base.html @@ -8,8 +8,8 @@ {% block custom_css %}{% endblock %} - - + + @@ -118,7 +118,7 @@
- + - - - - - - - -
-

prettyPhoto

- -

This page has been made for testing purpose only. It covers all the basic things you can handle in prettyPhoto.

- -

For complete documentation, please refer to the official website: http://www.no-margin-for-errors.com/projects/prettyphoto-jquery-lightbox-clone/

- -

Gallery

- - -

Gallery 2

- - -

API Call

- -

API call

- -

Picture alone

- -
-

Flash

- -
-
-

YouTube

- -
-
-

Vimeo

- -
- -
- -

Movies (.mov)

- - -

Movies (.mov) alone

- - -

Unusual sizes

- - -

Iframe

- - -

AJAX

- - -

Mixed gallery

- - -

Inline content

- - - - - -

Custom content

- - -

- - - - - - - - - - - - - - - -
- - \ No newline at end of file diff --git a/mamweb/static/images/prettyPhoto_uncompressed_3.1.5/js/jquery-1.3.2.min.js b/mamweb/static/images/prettyPhoto_uncompressed_3.1.5/js/jquery-1.3.2.min.js deleted file mode 100755 index b1ae21d8..00000000 --- a/mamweb/static/images/prettyPhoto_uncompressed_3.1.5/js/jquery-1.3.2.min.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * jQuery JavaScript Library v1.3.2 - * http://jquery.com/ - * - * Copyright (c) 2009 John Resig - * Dual licensed under the MIT and GPL licenses. - * http://docs.jquery.com/License - * - * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) - * Revision: 6246 - */ -(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
","
"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); -/* - * Sizzle CSS Selector Engine - v0.9.3 - * Copyright 2009, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ -(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="

";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="
";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); \ No newline at end of file diff --git a/mamweb/static/images/prettyPhoto_uncompressed_3.1.5/js/jquery-1.4.4.min.js b/mamweb/static/images/prettyPhoto_uncompressed_3.1.5/js/jquery-1.4.4.min.js deleted file mode 100644 index 2bd4cbb8..00000000 --- a/mamweb/static/images/prettyPhoto_uncompressed_3.1.5/js/jquery-1.4.4.min.js +++ /dev/null @@ -1,167 +0,0 @@ -/*! - * jQuery JavaScript Library v1.4.4 - * http://jquery.com/ - * - * Copyright 2010, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2010, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Thu Nov 11 19:04:53 2010 -0500 - */ -(function(E,B){function ka(a,b,d){if(d===B&&a.nodeType===1){d=a.getAttribute("data-"+b);if(typeof d==="string"){try{d=d==="true"?true:d==="false"?false:d==="null"?null:!c.isNaN(d)?parseFloat(d):Ja.test(d)?c.parseJSON(d):d}catch(e){}c.data(a,b,d)}else d=B}return d}function U(){return false}function ca(){return true}function la(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function Ka(a){var b,d,e,f,h,l,k,o,x,r,A,C=[];f=[];h=c.data(this,this.nodeType?"events":"__events__");if(typeof h==="function")h= -h.events;if(!(a.liveFired===this||!h||!h.live||a.button&&a.type==="click")){if(a.namespace)A=RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)");a.liveFired=this;var J=h.live.slice(0);for(k=0;kd)break;a.currentTarget=f.elem;a.data=f.handleObj.data;a.handleObj=f.handleObj;A=f.handleObj.origHandler.apply(f.elem,arguments);if(A===false||a.isPropagationStopped()){d=f.level;if(A===false)b=false;if(a.isImmediatePropagationStopped())break}}return b}}function Y(a,b){return(a&&a!=="*"?a+".":"")+b.replace(La, -"`").replace(Ma,"&")}function ma(a,b,d){if(c.isFunction(b))return c.grep(a,function(f,h){return!!b.call(f,h,f)===d});else if(b.nodeType)return c.grep(a,function(f){return f===b===d});else if(typeof b==="string"){var e=c.grep(a,function(f){return f.nodeType===1});if(Na.test(b))return c.filter(b,e,!d);else b=c.filter(b,e)}return c.grep(a,function(f){return c.inArray(f,b)>=0===d})}function na(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var e=c.data(a[d++]),f=c.data(this, -e);if(e=e&&e.events){delete f.handle;f.events={};for(var h in e)for(var l in e[h])c.event.add(this,h,e[h][l],e[h][l].data)}}})}function Oa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function oa(a,b,d){var e=b==="width"?a.offsetWidth:a.offsetHeight;if(d==="border")return e;c.each(b==="width"?Pa:Qa,function(){d||(e-=parseFloat(c.css(a,"padding"+this))||0);if(d==="margin")e+=parseFloat(c.css(a, -"margin"+this))||0;else e-=parseFloat(c.css(a,"border"+this+"Width"))||0});return e}function da(a,b,d,e){if(c.isArray(b)&&b.length)c.each(b,function(f,h){d||Ra.test(a)?e(a,h):da(a+"["+(typeof h==="object"||c.isArray(h)?f:"")+"]",h,d,e)});else if(!d&&b!=null&&typeof b==="object")c.isEmptyObject(b)?e(a,""):c.each(b,function(f,h){da(a+"["+f+"]",h,d,e)});else e(a,b)}function S(a,b){var d={};c.each(pa.concat.apply([],pa.slice(0,b)),function(){d[this]=a});return d}function qa(a){if(!ea[a]){var b=c("<"+ -a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d==="")d="block";ea[a]=d}return ea[a]}function fa(a){return c.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var t=E.document,c=function(){function a(){if(!b.isReady){try{t.documentElement.doScroll("left")}catch(j){setTimeout(a,1);return}b.ready()}}var b=function(j,s){return new b.fn.init(j,s)},d=E.jQuery,e=E.$,f,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,l=/\S/,k=/^\s+/,o=/\s+$/,x=/\W/,r=/\d/,A=/^<(\w+)\s*\/?>(?:<\/\1>)?$/, -C=/^[\],:{}\s]*$/,J=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,w=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,I=/(?:^|:|,)(?:\s*\[)+/g,L=/(webkit)[ \/]([\w.]+)/,g=/(opera)(?:.*version)?[ \/]([\w.]+)/,i=/(msie) ([\w.]+)/,n=/(mozilla)(?:.*? rv:([\w.]+))?/,m=navigator.userAgent,p=false,q=[],u,y=Object.prototype.toString,F=Object.prototype.hasOwnProperty,M=Array.prototype.push,N=Array.prototype.slice,O=String.prototype.trim,D=Array.prototype.indexOf,R={};b.fn=b.prototype={init:function(j, -s){var v,z,H;if(!j)return this;if(j.nodeType){this.context=this[0]=j;this.length=1;return this}if(j==="body"&&!s&&t.body){this.context=t;this[0]=t.body;this.selector="body";this.length=1;return this}if(typeof j==="string")if((v=h.exec(j))&&(v[1]||!s))if(v[1]){H=s?s.ownerDocument||s:t;if(z=A.exec(j))if(b.isPlainObject(s)){j=[t.createElement(z[1])];b.fn.attr.call(j,s,true)}else j=[H.createElement(z[1])];else{z=b.buildFragment([v[1]],[H]);j=(z.cacheable?z.fragment.cloneNode(true):z.fragment).childNodes}return b.merge(this, -j)}else{if((z=t.getElementById(v[2]))&&z.parentNode){if(z.id!==v[2])return f.find(j);this.length=1;this[0]=z}this.context=t;this.selector=j;return this}else if(!s&&!x.test(j)){this.selector=j;this.context=t;j=t.getElementsByTagName(j);return b.merge(this,j)}else return!s||s.jquery?(s||f).find(j):b(s).find(j);else if(b.isFunction(j))return f.ready(j);if(j.selector!==B){this.selector=j.selector;this.context=j.context}return b.makeArray(j,this)},selector:"",jquery:"1.4.4",length:0,size:function(){return this.length}, -toArray:function(){return N.call(this,0)},get:function(j){return j==null?this.toArray():j<0?this.slice(j)[0]:this[j]},pushStack:function(j,s,v){var z=b();b.isArray(j)?M.apply(z,j):b.merge(z,j);z.prevObject=this;z.context=this.context;if(s==="find")z.selector=this.selector+(this.selector?" ":"")+v;else if(s)z.selector=this.selector+"."+s+"("+v+")";return z},each:function(j,s){return b.each(this,j,s)},ready:function(j){b.bindReady();if(b.isReady)j.call(t,b);else q&&q.push(j);return this},eq:function(j){return j=== --1?this.slice(j):this.slice(j,+j+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(N.apply(this,arguments),"slice",N.call(arguments).join(","))},map:function(j){return this.pushStack(b.map(this,function(s,v){return j.call(s,v,s)}))},end:function(){return this.prevObject||b(null)},push:M,sort:[].sort,splice:[].splice};b.fn.init.prototype=b.fn;b.extend=b.fn.extend=function(){var j,s,v,z,H,G=arguments[0]||{},K=1,Q=arguments.length,ga=false; -if(typeof G==="boolean"){ga=G;G=arguments[1]||{};K=2}if(typeof G!=="object"&&!b.isFunction(G))G={};if(Q===K){G=this;--K}for(;K0))if(q){var s=0,v=q;for(q=null;j=v[s++];)j.call(t,b);b.fn.trigger&&b(t).trigger("ready").unbind("ready")}}},bindReady:function(){if(!p){p=true;if(t.readyState==="complete")return setTimeout(b.ready,1);if(t.addEventListener){t.addEventListener("DOMContentLoaded",u,false);E.addEventListener("load",b.ready,false)}else if(t.attachEvent){t.attachEvent("onreadystatechange",u);E.attachEvent("onload", -b.ready);var j=false;try{j=E.frameElement==null}catch(s){}t.documentElement.doScroll&&j&&a()}}},isFunction:function(j){return b.type(j)==="function"},isArray:Array.isArray||function(j){return b.type(j)==="array"},isWindow:function(j){return j&&typeof j==="object"&&"setInterval"in j},isNaN:function(j){return j==null||!r.test(j)||isNaN(j)},type:function(j){return j==null?String(j):R[y.call(j)]||"object"},isPlainObject:function(j){if(!j||b.type(j)!=="object"||j.nodeType||b.isWindow(j))return false;if(j.constructor&& -!F.call(j,"constructor")&&!F.call(j.constructor.prototype,"isPrototypeOf"))return false;for(var s in j);return s===B||F.call(j,s)},isEmptyObject:function(j){for(var s in j)return false;return true},error:function(j){throw j;},parseJSON:function(j){if(typeof j!=="string"||!j)return null;j=b.trim(j);if(C.test(j.replace(J,"@").replace(w,"]").replace(I,"")))return E.JSON&&E.JSON.parse?E.JSON.parse(j):(new Function("return "+j))();else b.error("Invalid JSON: "+j)},noop:function(){},globalEval:function(j){if(j&& -l.test(j)){var s=t.getElementsByTagName("head")[0]||t.documentElement,v=t.createElement("script");v.type="text/javascript";if(b.support.scriptEval)v.appendChild(t.createTextNode(j));else v.text=j;s.insertBefore(v,s.firstChild);s.removeChild(v)}},nodeName:function(j,s){return j.nodeName&&j.nodeName.toUpperCase()===s.toUpperCase()},each:function(j,s,v){var z,H=0,G=j.length,K=G===B||b.isFunction(j);if(v)if(K)for(z in j){if(s.apply(j[z],v)===false)break}else for(;H
a";var f=d.getElementsByTagName("*"),h=d.getElementsByTagName("a")[0],l=t.createElement("select"), -k=l.appendChild(t.createElement("option"));if(!(!f||!f.length||!h)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(h.getAttribute("style")),hrefNormalized:h.getAttribute("href")==="/a",opacity:/^0.55$/.test(h.style.opacity),cssFloat:!!h.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:k.selected,deleteExpando:true,optDisabled:false,checkClone:false, -scriptEval:false,noCloneEvent:true,boxModel:null,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableHiddenOffsets:true};l.disabled=true;c.support.optDisabled=!k.disabled;b.type="text/javascript";try{b.appendChild(t.createTextNode("window."+e+"=1;"))}catch(o){}a.insertBefore(b,a.firstChild);if(E[e]){c.support.scriptEval=true;delete E[e]}try{delete b.test}catch(x){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function r(){c.support.noCloneEvent= -false;d.detachEvent("onclick",r)});d.cloneNode(true).fireEvent("onclick")}d=t.createElement("div");d.innerHTML="";a=t.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var r=t.createElement("div");r.style.width=r.style.paddingLeft="1px";t.body.appendChild(r);c.boxModel=c.support.boxModel=r.offsetWidth===2;if("zoom"in r.style){r.style.display="inline";r.style.zoom= -1;c.support.inlineBlockNeedsLayout=r.offsetWidth===2;r.style.display="";r.innerHTML="
";c.support.shrinkWrapBlocks=r.offsetWidth!==2}r.innerHTML="
t
";var A=r.getElementsByTagName("td");c.support.reliableHiddenOffsets=A[0].offsetHeight===0;A[0].style.display="";A[1].style.display="none";c.support.reliableHiddenOffsets=c.support.reliableHiddenOffsets&&A[0].offsetHeight===0;r.innerHTML="";t.body.removeChild(r).style.display= -"none"});a=function(r){var A=t.createElement("div");r="on"+r;var C=r in A;if(!C){A.setAttribute(r,"return;");C=typeof A[r]==="function"}return C};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=f=h=null}})();var ra={},Ja=/^(?:\{.*\}|\[.*\])$/;c.extend({cache:{},uuid:0,expando:"jQuery"+c.now(),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},data:function(a,b,d){if(c.acceptData(a)){a=a==E?ra:a;var e=a.nodeType,f=e?a[c.expando]:null,h= -c.cache;if(!(e&&!f&&typeof b==="string"&&d===B)){if(e)f||(a[c.expando]=f=++c.uuid);else h=a;if(typeof b==="object")if(e)h[f]=c.extend(h[f],b);else c.extend(h,b);else if(e&&!h[f])h[f]={};a=e?h[f]:h;if(d!==B)a[b]=d;return typeof b==="string"?a[b]:a}}},removeData:function(a,b){if(c.acceptData(a)){a=a==E?ra:a;var d=a.nodeType,e=d?a[c.expando]:a,f=c.cache,h=d?f[e]:e;if(b){if(h){delete h[b];d&&c.isEmptyObject(h)&&c.removeData(a)}}else if(d&&c.support.deleteExpando)delete a[c.expando];else if(a.removeAttribute)a.removeAttribute(c.expando); -else if(d)delete f[e];else for(var l in a)delete a[l]}},acceptData:function(a){if(a.nodeName){var b=c.noData[a.nodeName.toLowerCase()];if(b)return!(b===true||a.getAttribute("classid")!==b)}return true}});c.fn.extend({data:function(a,b){var d=null;if(typeof a==="undefined"){if(this.length){var e=this[0].attributes,f;d=c.data(this[0]);for(var h=0,l=e.length;h-1)return true;return false},val:function(a){if(!arguments.length){var b=this[0];if(b){if(c.nodeName(b,"option")){var d=b.attributes.value;return!d||d.specified?b.value:b.text}if(c.nodeName(b,"select")){var e=b.selectedIndex;d=[];var f=b.options;b=b.type==="select-one"; -if(e<0)return null;var h=b?e:0;for(e=b?e+1:f.length;h=0;else if(c.nodeName(this,"select")){var A=c.makeArray(r);c("option",this).each(function(){this.selected=c.inArray(c(this).val(),A)>=0});if(!A.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true}, -attr:function(a,b,d,e){if(!a||a.nodeType===3||a.nodeType===8)return B;if(e&&b in c.attrFn)return c(a)[b](d);e=a.nodeType!==1||!c.isXMLDoc(a);var f=d!==B;b=e&&c.props[b]||b;var h=Ta.test(b);if((b in a||a[b]!==B)&&e&&!h){if(f){b==="type"&&Ua.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");if(d===null)a.nodeType===1&&a.removeAttribute(b);else a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&& -b.specified?b.value:Va.test(a.nodeName)||Wa.test(a.nodeName)&&a.href?0:B;return a[b]}if(!c.support.style&&e&&b==="style"){if(f)a.style.cssText=""+d;return a.style.cssText}f&&a.setAttribute(b,""+d);if(!a.attributes[b]&&a.hasAttribute&&!a.hasAttribute(b))return B;a=!c.support.hrefNormalized&&e&&h?a.getAttribute(b,2):a.getAttribute(b);return a===null?B:a}});var X=/\.(.*)$/,ia=/^(?:textarea|input|select)$/i,La=/\./g,Ma=/ /g,Xa=/[^\w\s.|`]/g,Ya=function(a){return a.replace(Xa,"\\$&")},ua={focusin:0,focusout:0}; -c.event={add:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(c.isWindow(a)&&a!==E&&!a.frameElement)a=E;if(d===false)d=U;else if(!d)return;var f,h;if(d.handler){f=d;d=f.handler}if(!d.guid)d.guid=c.guid++;if(h=c.data(a)){var l=a.nodeType?"events":"__events__",k=h[l],o=h.handle;if(typeof k==="function"){o=k.handle;k=k.events}else if(!k){a.nodeType||(h[l]=h=function(){});h.events=k={}}if(!o)h.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem, -arguments):B};o.elem=a;b=b.split(" ");for(var x=0,r;l=b[x++];){h=f?c.extend({},f):{handler:d,data:e};if(l.indexOf(".")>-1){r=l.split(".");l=r.shift();h.namespace=r.slice(0).sort().join(".")}else{r=[];h.namespace=""}h.type=l;if(!h.guid)h.guid=d.guid;var A=k[l],C=c.event.special[l]||{};if(!A){A=k[l]=[];if(!C.setup||C.setup.call(a,e,r,o)===false)if(a.addEventListener)a.addEventListener(l,o,false);else a.attachEvent&&a.attachEvent("on"+l,o)}if(C.add){C.add.call(a,h);if(!h.handler.guid)h.handler.guid= -d.guid}A.push(h);c.event.global[l]=true}a=null}}},global:{},remove:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(d===false)d=U;var f,h,l=0,k,o,x,r,A,C,J=a.nodeType?"events":"__events__",w=c.data(a),I=w&&w[J];if(w&&I){if(typeof I==="function"){w=I;I=I.events}if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(f in I)c.event.remove(a,f+b)}else{for(b=b.split(" ");f=b[l++];){r=f;k=f.indexOf(".")<0;o=[];if(!k){o=f.split(".");f=o.shift();x=RegExp("(^|\\.)"+ -c.map(o.slice(0).sort(),Ya).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(A=I[f])if(d){r=c.event.special[f]||{};for(h=e||0;h=0){a.type=f=f.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[f]&&c.each(c.cache,function(){this.events&&this.events[f]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType=== -8)return B;a.result=B;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(e=d.nodeType?c.data(d,"handle"):(c.data(d,"__events__")||{}).handle)&&e.apply(d,b);e=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+f]&&d["on"+f].apply(d,b)===false){a.result=false;a.preventDefault()}}catch(h){}if(!a.isPropagationStopped()&&e)c.event.trigger(a,b,e,true);else if(!a.isDefaultPrevented()){var l;e=a.target;var k=f.replace(X,""),o=c.nodeName(e,"a")&&k=== -"click",x=c.event.special[k]||{};if((!x._default||x._default.call(d,a)===false)&&!o&&!(e&&e.nodeName&&c.noData[e.nodeName.toLowerCase()])){try{if(e[k]){if(l=e["on"+k])e["on"+k]=null;c.event.triggered=true;e[k]()}}catch(r){}if(l)e["on"+k]=l;c.event.triggered=false}}},handle:function(a){var b,d,e,f;d=[];var h=c.makeArray(arguments);a=h[0]=c.event.fix(a||E.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;if(!b){e=a.type.split(".");a.type=e.shift();d=e.slice(0).sort();e=RegExp("(^|\\.)"+ -d.join("\\.(?:.*\\.)?")+"(\\.|$)")}a.namespace=a.namespace||d.join(".");f=c.data(this,this.nodeType?"events":"__events__");if(typeof f==="function")f=f.events;d=(f||{})[a.type];if(f&&d){d=d.slice(0);f=0;for(var l=d.length;f-1?c.map(a.options,function(e){return e.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},Z=function(a,b){var d=a.target,e,f;if(!(!ia.test(d.nodeName)||d.readOnly)){e=c.data(d,"_change_data");f=xa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",f);if(!(e===B||f===e))if(e!=null||f){a.type="change";a.liveFired= -B;return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:Z,beforedeactivate:Z,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return Z.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return Z.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,"_change_data",xa(a))}},setup:function(){if(this.type=== -"file")return false;for(var a in V)c.event.add(this,a+".specialChange",V[a]);return ia.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return ia.test(this.nodeName)}};V=c.event.special.change.filters;V.focus=V.beforeactivate}t.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(e){e=c.event.fix(e);e.type=b;return c.event.trigger(e,null,e.target)}c.event.special[b]={setup:function(){ua[b]++===0&&t.addEventListener(a,d,true)},teardown:function(){--ua[b]=== -0&&t.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,e,f){if(typeof d==="object"){for(var h in d)this[b](h,e,d[h],f);return this}if(c.isFunction(e)||e===false){f=e;e=B}var l=b==="one"?c.proxy(f,function(o){c(this).unbind(o,l);return f.apply(this,arguments)}):f;if(d==="unload"&&b!=="one")this.one(d,e,f);else{h=0;for(var k=this.length;h0?this.bind(b,d,e):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});E.attachEvent&&!E.addEventListener&&c(E).bind("unload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}}); -(function(){function a(g,i,n,m,p,q){p=0;for(var u=m.length;p0){F=y;break}}y=y[g]}m[p]=F}}}var d=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,h=false,l=true;[0,0].sort(function(){l=false;return 0});var k=function(g,i,n,m){n=n||[];var p=i=i||t;if(i.nodeType!==1&&i.nodeType!==9)return[];if(!g||typeof g!=="string")return n;var q,u,y,F,M,N=true,O=k.isXML(i),D=[],R=g;do{d.exec("");if(q=d.exec(R)){R=q[3];D.push(q[1]);if(q[2]){F=q[3]; -break}}}while(q);if(D.length>1&&x.exec(g))if(D.length===2&&o.relative[D[0]])u=L(D[0]+D[1],i);else for(u=o.relative[D[0]]?[i]:k(D.shift(),i);D.length;){g=D.shift();if(o.relative[g])g+=D.shift();u=L(g,u)}else{if(!m&&D.length>1&&i.nodeType===9&&!O&&o.match.ID.test(D[0])&&!o.match.ID.test(D[D.length-1])){q=k.find(D.shift(),i,O);i=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]}if(i){q=m?{expr:D.pop(),set:C(m)}:k.find(D.pop(),D.length===1&&(D[0]==="~"||D[0]==="+")&&i.parentNode?i.parentNode:i,O);u=q.expr?k.filter(q.expr, -q.set):q.set;if(D.length>0)y=C(u);else N=false;for(;D.length;){q=M=D.pop();if(o.relative[M])q=D.pop();else M="";if(q==null)q=i;o.relative[M](y,q,O)}}else y=[]}y||(y=u);y||k.error(M||g);if(f.call(y)==="[object Array]")if(N)if(i&&i.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&k.contains(i,y[g])))n.push(u[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&n.push(u[g]);else n.push.apply(n,y);else C(y,n);if(F){k(F,p,n,m);k.uniqueSort(n)}return n};k.uniqueSort=function(g){if(w){h= -l;g.sort(w);if(h)for(var i=1;i0};k.find=function(g,i,n){var m;if(!g)return[];for(var p=0,q=o.order.length;p":function(g,i){var n,m=typeof i==="string",p=0,q=g.length;if(m&&!/\W/.test(i))for(i=i.toLowerCase();p=0))n||m.push(u);else if(n)i[q]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},CHILD:function(g){if(g[1]==="nth"){var i=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=i[1]+(i[2]||1)-0;g[3]=i[3]-0}g[0]=e++;return g},ATTR:function(g,i,n, -m,p,q){i=g[1].replace(/\\/g,"");if(!q&&o.attrMap[i])g[1]=o.attrMap[i];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,i,n,m,p){if(g[1]==="not")if((d.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,i);else{g=k.filter(g[3],i,n,true^p);n||m.push.apply(m,g);return false}else if(o.match.POS.test(g[0])||o.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled=== -true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,i,n){return!!k(n[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"=== -g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},setFilters:{first:function(g,i){return i===0},last:function(g,i,n,m){return i===m.length-1},even:function(g,i){return i%2===0},odd:function(g,i){return i%2===1},lt:function(g,i,n){return in[3]-0},nth:function(g,i,n){return n[3]- -0===i},eq:function(g,i,n){return n[3]-0===i}},filter:{PSEUDO:function(g,i,n,m){var p=i[1],q=o.filters[p];if(q)return q(g,n,i,m);else if(p==="contains")return(g.textContent||g.innerText||k.getText([g])||"").indexOf(i[3])>=0;else if(p==="not"){i=i[3];n=0;for(m=i.length;n=0}},ID:function(g,i){return g.nodeType===1&&g.getAttribute("id")===i},TAG:function(g,i){return i==="*"&&g.nodeType===1||g.nodeName.toLowerCase()=== -i},CLASS:function(g,i){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(i)>-1},ATTR:function(g,i){var n=i[1];n=o.attrHandle[n]?o.attrHandle[n](g):g[n]!=null?g[n]:g.getAttribute(n);var m=n+"",p=i[2],q=i[4];return n==null?p==="!=":p==="="?m===q:p==="*="?m.indexOf(q)>=0:p==="~="?(" "+m+" ").indexOf(q)>=0:!q?m&&n!==false:p==="!="?m!==q:p==="^="?m.indexOf(q)===0:p==="$="?m.substr(m.length-q.length)===q:p==="|="?m===q||m.substr(0,q.length+1)===q+"-":false},POS:function(g,i,n,m){var p=o.setFilters[i[2]]; -if(p)return p(g,n,i,m)}}},x=o.match.POS,r=function(g,i){return"\\"+(i-0+1)},A;for(A in o.match){o.match[A]=RegExp(o.match[A].source+/(?![^\[]*\])(?![^\(]*\))/.source);o.leftMatch[A]=RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[A].source.replace(/\\(\d+)/g,r))}var C=function(g,i){g=Array.prototype.slice.call(g,0);if(i){i.push.apply(i,g);return i}return g};try{Array.prototype.slice.call(t.documentElement.childNodes,0)}catch(J){C=function(g,i){var n=0,m=i||[];if(f.call(g)==="[object Array]")Array.prototype.push.apply(m, -g);else if(typeof g.length==="number")for(var p=g.length;n";n.insertBefore(g,n.firstChild);if(t.getElementById(i)){o.find.ID=function(m,p,q){if(typeof p.getElementById!=="undefined"&&!q)return(p=p.getElementById(m[1]))?p.id===m[1]||typeof p.getAttributeNode!=="undefined"&&p.getAttributeNode("id").nodeValue===m[1]?[p]:B:[]};o.filter.ID=function(m,p){var q=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&q&&q.nodeValue===p}}n.removeChild(g); -n=g=null})();(function(){var g=t.createElement("div");g.appendChild(t.createComment(""));if(g.getElementsByTagName("*").length>0)o.find.TAG=function(i,n){var m=n.getElementsByTagName(i[1]);if(i[1]==="*"){for(var p=[],q=0;m[q];q++)m[q].nodeType===1&&p.push(m[q]);m=p}return m};g.innerHTML="";if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")o.attrHandle.href=function(i){return i.getAttribute("href",2)};g=null})();t.querySelectorAll&& -function(){var g=k,i=t.createElement("div");i.innerHTML="

";if(!(i.querySelectorAll&&i.querySelectorAll(".TEST").length===0)){k=function(m,p,q,u){p=p||t;m=m.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!u&&!k.isXML(p))if(p.nodeType===9)try{return C(p.querySelectorAll(m),q)}catch(y){}else if(p.nodeType===1&&p.nodeName.toLowerCase()!=="object"){var F=p.getAttribute("id"),M=F||"__sizzle__";F||p.setAttribute("id",M);try{return C(p.querySelectorAll("#"+M+" "+m),q)}catch(N){}finally{F|| -p.removeAttribute("id")}}return g(m,p,q,u)};for(var n in g)k[n]=g[n];i=null}}();(function(){var g=t.documentElement,i=g.matchesSelector||g.mozMatchesSelector||g.webkitMatchesSelector||g.msMatchesSelector,n=false;try{i.call(t.documentElement,"[test!='']:sizzle")}catch(m){n=true}if(i)k.matchesSelector=function(p,q){q=q.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(p))try{if(n||!o.match.PSEUDO.test(q)&&!/!=/.test(q))return i.call(p,q)}catch(u){}return k(q,null,null,[p]).length>0}})();(function(){var g= -t.createElement("div");g.innerHTML="
";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){o.order.splice(1,0,"CLASS");o.find.CLASS=function(i,n,m){if(typeof n.getElementsByClassName!=="undefined"&&!m)return n.getElementsByClassName(i[1])};g=null}}})();k.contains=t.documentElement.contains?function(g,i){return g!==i&&(g.contains?g.contains(i):true)}:t.documentElement.compareDocumentPosition? -function(g,i){return!!(g.compareDocumentPosition(i)&16)}:function(){return false};k.isXML=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false};var L=function(g,i){for(var n,m=[],p="",q=i.nodeType?[i]:i;n=o.match.PSEUDO.exec(g);){p+=n[0];g=g.replace(o.match.PSEUDO,"")}g=o.relative[g]?g+"*":g;n=0;for(var u=q.length;n0)for(var h=d;h0},closest:function(a,b){var d=[],e,f,h=this[0];if(c.isArray(a)){var l,k={},o=1;if(h&&a.length){e=0;for(f=a.length;e-1:c(h).is(e))d.push({selector:l,elem:h,level:o})}h= -h.parentNode;o++}}return d}l=cb.test(a)?c(a,b||this.context):null;e=0;for(f=this.length;e-1:c.find.matchesSelector(h,a)){d.push(h);break}else{h=h.parentNode;if(!h||!h.ownerDocument||h===b)break}d=d.length>1?c.unique(d):d;return this.pushStack(d,"closest",a)},index:function(a){if(!a||typeof a==="string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var d=typeof a==="string"?c(a,b||this.context): -c.makeArray(a),e=c.merge(this.get(),d);return this.pushStack(!d[0]||!d[0].parentNode||d[0].parentNode.nodeType===11||!e[0]||!e[0].parentNode||e[0].parentNode.nodeType===11?e:c.unique(e))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a, -2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a, -b){c.fn[a]=function(d,e){var f=c.map(this,b,d);Za.test(a)||(e=d);if(e&&typeof e==="string")f=c.filter(e,f);f=this.length>1?c.unique(f):f;if((this.length>1||ab.test(e))&&$a.test(a))f=f.reverse();return this.pushStack(f,a,bb.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return b.length===1?c.find.matchesSelector(b[0],a)?[b[0]]:[]:c.find.matches(a,b)},dir:function(a,b,d){var e=[];for(a=a[b];a&&a.nodeType!==9&&(d===B||a.nodeType!==1||!c(a).is(d));){a.nodeType===1&& -e.push(a);a=a[b]}return e},nth:function(a,b,d){b=b||1;for(var e=0;a;a=a[d])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var za=/ jQuery\d+="(?:\d+|null)"/g,$=/^\s+/,Aa=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Ba=/<([\w:]+)/,db=/\s]+\/)>/g,P={option:[1, -""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};P.optgroup=P.option;P.tbody=P.tfoot=P.colgroup=P.caption=P.thead;P.th=P.td;if(!c.support.htmlSerialize)P._default=[1,"div
","
"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= -c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==B)return this.empty().append((this[0]&&this[0].ownerDocument||t).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, -wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, -prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, -this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,e;(e=this[d])!=null;d++)if(!a||c.filter(a,[e]).length){if(!b&&e.nodeType===1){c.cleanData(e.getElementsByTagName("*"));c.cleanData([e])}e.parentNode&&e.parentNode.removeChild(e)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); -return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,e=this.ownerDocument;if(!d){d=e.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(za,"").replace(fb,'="$1">').replace($,"")],e)[0]}else return this.cloneNode(true)});if(a===true){na(this,b);na(this.find("*"),b.find("*"))}return b},html:function(a){if(a===B)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(za,""):null; -else if(typeof a==="string"&&!Ca.test(a)&&(c.support.leadingWhitespace||!$.test(a))&&!P[(Ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Aa,"<$1>");try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?h.cloneNode(true):h)}k.length&&c.each(k,Oa)}return this}});c.buildFragment=function(a,b,d){var e,f,h;b=b&&b[0]?b[0].ownerDocument||b[0]:t;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===t&&!Ca.test(a[0])&&(c.support.checkClone||!Da.test(a[0]))){f=true;if(h=c.fragments[a[0]])if(h!==1)e=h}if(!e){e=b.createDocumentFragment();c.clean(a,b,e,d)}if(f)c.fragments[a[0]]=h?e:1;return{fragment:e,cacheable:f}};c.fragments={};c.each({appendTo:"append", -prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var e=[];d=c(d);var f=this.length===1&&this[0].parentNode;if(f&&f.nodeType===11&&f.childNodes.length===1&&d.length===1){d[b](this[0]);return this}else{f=0;for(var h=d.length;f0?this.clone(true):this).get();c(d[f])[b](l);e=e.concat(l)}return this.pushStack(e,a,d.selector)}}});c.extend({clean:function(a,b,d,e){b=b||t;if(typeof b.createElement==="undefined")b=b.ownerDocument|| -b[0]&&b[0].ownerDocument||t;for(var f=[],h=0,l;(l=a[h])!=null;h++){if(typeof l==="number")l+="";if(l){if(typeof l==="string"&&!eb.test(l))l=b.createTextNode(l);else if(typeof l==="string"){l=l.replace(Aa,"<$1>");var k=(Ba.exec(l)||["",""])[1].toLowerCase(),o=P[k]||P._default,x=o[0],r=b.createElement("div");for(r.innerHTML=o[1]+l+o[2];x--;)r=r.lastChild;if(!c.support.tbody){x=db.test(l);k=k==="table"&&!x?r.firstChild&&r.firstChild.childNodes:o[1]===""&&!x?r.childNodes:[];for(o=k.length- -1;o>=0;--o)c.nodeName(k[o],"tbody")&&!k[o].childNodes.length&&k[o].parentNode.removeChild(k[o])}!c.support.leadingWhitespace&&$.test(l)&&r.insertBefore(b.createTextNode($.exec(l)[0]),r.firstChild);l=r.childNodes}if(l.nodeType)f.push(l);else f=c.merge(f,l)}}if(d)for(h=0;f[h];h++)if(e&&c.nodeName(f[h],"script")&&(!f[h].type||f[h].type.toLowerCase()==="text/javascript"))e.push(f[h].parentNode?f[h].parentNode.removeChild(f[h]):f[h]);else{f[h].nodeType===1&&f.splice.apply(f,[h+1,0].concat(c.makeArray(f[h].getElementsByTagName("script")))); -d.appendChild(f[h])}return f},cleanData:function(a){for(var b,d,e=c.cache,f=c.event.special,h=c.support.deleteExpando,l=0,k;(k=a[l])!=null;l++)if(!(k.nodeName&&c.noData[k.nodeName.toLowerCase()]))if(d=k[c.expando]){if((b=e[d])&&b.events)for(var o in b.events)f[o]?c.event.remove(k,o):c.removeEvent(k,o,b.handle);if(h)delete k[c.expando];else k.removeAttribute&&k.removeAttribute(c.expando);delete e[d]}}});var Ea=/alpha\([^)]*\)/i,gb=/opacity=([^)]*)/,hb=/-([a-z])/ig,ib=/([A-Z])/g,Fa=/^-?\d+(?:px)?$/i, -jb=/^-?\d/,kb={position:"absolute",visibility:"hidden",display:"block"},Pa=["Left","Right"],Qa=["Top","Bottom"],W,Ga,aa,lb=function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){if(arguments.length===2&&b===B)return this;return c.access(this,a,b,true,function(d,e,f){return f!==B?c.style(d,e,f):c.css(d,e)})};c.extend({cssHooks:{opacity:{get:function(a,b){if(b){var d=W(a,"opacity","opacity");return d===""?"1":d}else return a.style.opacity}}},cssNumber:{zIndex:true,fontWeight:true,opacity:true, -zoom:true,lineHeight:true},cssProps:{"float":c.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,d,e){if(!(!a||a.nodeType===3||a.nodeType===8||!a.style)){var f,h=c.camelCase(b),l=a.style,k=c.cssHooks[h];b=c.cssProps[h]||h;if(d!==B){if(!(typeof d==="number"&&isNaN(d)||d==null)){if(typeof d==="number"&&!c.cssNumber[h])d+="px";if(!k||!("set"in k)||(d=k.set(a,d))!==B)try{l[b]=d}catch(o){}}}else{if(k&&"get"in k&&(f=k.get(a,false,e))!==B)return f;return l[b]}}},css:function(a,b,d){var e,f=c.camelCase(b), -h=c.cssHooks[f];b=c.cssProps[f]||f;if(h&&"get"in h&&(e=h.get(a,true,d))!==B)return e;else if(W)return W(a,b,f)},swap:function(a,b,d){var e={},f;for(f in b){e[f]=a.style[f];a.style[f]=b[f]}d.call(a);for(f in b)a.style[f]=e[f]},camelCase:function(a){return a.replace(hb,lb)}});c.curCSS=c.css;c.each(["height","width"],function(a,b){c.cssHooks[b]={get:function(d,e,f){var h;if(e){if(d.offsetWidth!==0)h=oa(d,b,f);else c.swap(d,kb,function(){h=oa(d,b,f)});if(h<=0){h=W(d,b,b);if(h==="0px"&&aa)h=aa(d,b,b); -if(h!=null)return h===""||h==="auto"?"0px":h}if(h<0||h==null){h=d.style[b];return h===""||h==="auto"?"0px":h}return typeof h==="string"?h:h+"px"}},set:function(d,e){if(Fa.test(e)){e=parseFloat(e);if(e>=0)return e+"px"}else return e}}});if(!c.support.opacity)c.cssHooks.opacity={get:function(a,b){return gb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var d=a.style;d.zoom=1;var e=c.isNaN(b)?"":"alpha(opacity="+b*100+")",f= -d.filter||"";d.filter=Ea.test(f)?f.replace(Ea,e):d.filter+" "+e}};if(t.defaultView&&t.defaultView.getComputedStyle)Ga=function(a,b,d){var e;d=d.replace(ib,"-$1").toLowerCase();if(!(b=a.ownerDocument.defaultView))return B;if(b=b.getComputedStyle(a,null)){e=b.getPropertyValue(d);if(e===""&&!c.contains(a.ownerDocument.documentElement,a))e=c.style(a,d)}return e};if(t.documentElement.currentStyle)aa=function(a,b){var d,e,f=a.currentStyle&&a.currentStyle[b],h=a.style;if(!Fa.test(f)&&jb.test(f)){d=h.left; -e=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;h.left=b==="fontSize"?"1em":f||0;f=h.pixelLeft+"px";h.left=d;a.runtimeStyle.left=e}return f===""?"auto":f};W=Ga||aa;if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=a.offsetHeight;return a.offsetWidth===0&&b===0||!c.support.reliableHiddenOffsets&&(a.style.display||c.css(a,"display"))==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var mb=c.now(),nb=/)<[^<]*)*<\/script>/gi, -ob=/^(?:select|textarea)/i,pb=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,qb=/^(?:GET|HEAD)$/,Ra=/\[\]$/,T=/\=\?(&|$)/,ja=/\?/,rb=/([?&])_=[^&]*/,sb=/^(\w+:)?\/\/([^\/?#]+)/,tb=/%20/g,ub=/#.*$/,Ha=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!=="string"&&Ha)return Ha.apply(this,arguments);else if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var f=a.slice(e,a.length);a=a.slice(0,e)}e="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b=== -"object"){b=c.param(b,c.ajaxSettings.traditional);e="POST"}var h=this;c.ajax({url:a,type:e,dataType:"html",data:b,complete:function(l,k){if(k==="success"||k==="notmodified")h.html(f?c("
").append(l.responseText.replace(nb,"")).find(f):l.responseText);d&&h.each(d,[l.responseText,k,l])}});return this},serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&& -!this.disabled&&(this.checked||ob.test(this.nodeName)||pb.test(this.type))}).map(function(a,b){var d=c(this).val();return d==null?null:c.isArray(d)?c.map(d,function(e){return{name:b.name,value:e}}):{name:b.name,value:d}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:e})}, -getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:e})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return new E.XMLHttpRequest},accepts:{xml:"application/xml, text/xml",html:"text/html", -script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},ajax:function(a){var b=c.extend(true,{},c.ajaxSettings,a),d,e,f,h=b.type.toUpperCase(),l=qb.test(h);b.url=b.url.replace(ub,"");b.context=a&&a.context!=null?a.context:b;if(b.data&&b.processData&&typeof b.data!=="string")b.data=c.param(b.data,b.traditional);if(b.dataType==="jsonp"){if(h==="GET")T.test(b.url)||(b.url+=(ja.test(b.url)?"&":"?")+(b.jsonp||"callback")+"=?");else if(!b.data|| -!T.test(b.data))b.data=(b.data?b.data+"&":"")+(b.jsonp||"callback")+"=?";b.dataType="json"}if(b.dataType==="json"&&(b.data&&T.test(b.data)||T.test(b.url))){d=b.jsonpCallback||"jsonp"+mb++;if(b.data)b.data=(b.data+"").replace(T,"="+d+"$1");b.url=b.url.replace(T,"="+d+"$1");b.dataType="script";var k=E[d];E[d]=function(m){if(c.isFunction(k))k(m);else{E[d]=B;try{delete E[d]}catch(p){}}f=m;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);r&&r.removeChild(A)}}if(b.dataType==="script"&&b.cache===null)b.cache= -false;if(b.cache===false&&l){var o=c.now(),x=b.url.replace(rb,"$1_="+o);b.url=x+(x===b.url?(ja.test(b.url)?"&":"?")+"_="+o:"")}if(b.data&&l)b.url+=(ja.test(b.url)?"&":"?")+b.data;b.global&&c.active++===0&&c.event.trigger("ajaxStart");o=(o=sb.exec(b.url))&&(o[1]&&o[1].toLowerCase()!==location.protocol||o[2].toLowerCase()!==location.host);if(b.dataType==="script"&&h==="GET"&&o){var r=t.getElementsByTagName("head")[0]||t.documentElement,A=t.createElement("script");if(b.scriptCharset)A.charset=b.scriptCharset; -A.src=b.url;if(!d){var C=false;A.onload=A.onreadystatechange=function(){if(!C&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){C=true;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);A.onload=A.onreadystatechange=null;r&&A.parentNode&&r.removeChild(A)}}}r.insertBefore(A,r.firstChild);return B}var J=false,w=b.xhr();if(w){b.username?w.open(h,b.url,b.async,b.username,b.password):w.open(h,b.url,b.async);try{if(b.data!=null&&!l||a&&a.contentType)w.setRequestHeader("Content-Type", -b.contentType);if(b.ifModified){c.lastModified[b.url]&&w.setRequestHeader("If-Modified-Since",c.lastModified[b.url]);c.etag[b.url]&&w.setRequestHeader("If-None-Match",c.etag[b.url])}o||w.setRequestHeader("X-Requested-With","XMLHttpRequest");w.setRequestHeader("Accept",b.dataType&&b.accepts[b.dataType]?b.accepts[b.dataType]+", */*; q=0.01":b.accepts._default)}catch(I){}if(b.beforeSend&&b.beforeSend.call(b.context,w,b)===false){b.global&&c.active--===1&&c.event.trigger("ajaxStop");w.abort();return false}b.global&& -c.triggerGlobal(b,"ajaxSend",[w,b]);var L=w.onreadystatechange=function(m){if(!w||w.readyState===0||m==="abort"){J||c.handleComplete(b,w,e,f);J=true;if(w)w.onreadystatechange=c.noop}else if(!J&&w&&(w.readyState===4||m==="timeout")){J=true;w.onreadystatechange=c.noop;e=m==="timeout"?"timeout":!c.httpSuccess(w)?"error":b.ifModified&&c.httpNotModified(w,b.url)?"notmodified":"success";var p;if(e==="success")try{f=c.httpData(w,b.dataType,b)}catch(q){e="parsererror";p=q}if(e==="success"||e==="notmodified")d|| -c.handleSuccess(b,w,e,f);else c.handleError(b,w,e,p);d||c.handleComplete(b,w,e,f);m==="timeout"&&w.abort();if(b.async)w=null}};try{var g=w.abort;w.abort=function(){w&&Function.prototype.call.call(g,w);L("abort")}}catch(i){}b.async&&b.timeout>0&&setTimeout(function(){w&&!J&&L("timeout")},b.timeout);try{w.send(l||b.data==null?null:b.data)}catch(n){c.handleError(b,w,null,n);c.handleComplete(b,w,e,f)}b.async||L();return w}},param:function(a,b){var d=[],e=function(h,l){l=c.isFunction(l)?l():l;d[d.length]= -encodeURIComponent(h)+"="+encodeURIComponent(l)};if(b===B)b=c.ajaxSettings.traditional;if(c.isArray(a)||a.jquery)c.each(a,function(){e(this.name,this.value)});else for(var f in a)da(f,a[f],b,e);return d.join("&").replace(tb,"+")}});c.extend({active:0,lastModified:{},etag:{},handleError:function(a,b,d,e){a.error&&a.error.call(a.context,b,d,e);a.global&&c.triggerGlobal(a,"ajaxError",[b,a,e])},handleSuccess:function(a,b,d,e){a.success&&a.success.call(a.context,e,d,b);a.global&&c.triggerGlobal(a,"ajaxSuccess", -[b,a])},handleComplete:function(a,b,d){a.complete&&a.complete.call(a.context,b,d);a.global&&c.triggerGlobal(a,"ajaxComplete",[b,a]);a.global&&c.active--===1&&c.event.trigger("ajaxStop")},triggerGlobal:function(a,b,d){(a.context&&a.context.url==null?c(a.context):c.event).trigger(b,d)},httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===1223}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"), -e=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(e)c.etag[b]=e;return a.status===304},httpData:function(a,b,d){var e=a.getResponseHeader("content-type")||"",f=b==="xml"||!b&&e.indexOf("xml")>=0;a=f?a.responseXML:a.responseText;f&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b==="json"||!b&&e.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&e.indexOf("javascript")>=0)c.globalEval(a);return a}}); -if(E.ActiveXObject)c.ajaxSettings.xhr=function(){if(E.location.protocol!=="file:")try{return new E.XMLHttpRequest}catch(a){}try{return new E.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}};c.support.ajax=!!c.ajaxSettings.xhr();var ea={},vb=/^(?:toggle|show|hide)$/,wb=/^([+\-]=)?([\d+.\-]+)(.*)$/,ba,pa=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b,d){if(a||a===0)return this.animate(S("show", -3),a,b,d);else{d=0;for(var e=this.length;d=0;e--)if(d[e].elem===this){b&&d[e](true);d.splice(e,1)}});b||this.dequeue();return this}});c.each({slideDown:S("show",1),slideUp:S("hide",1),slideToggle:S("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){c.fn[a]=function(d,e,f){return this.animate(b, -d,e,f)}});c.extend({speed:function(a,b,d){var e=a&&typeof a==="object"?c.extend({},a):{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};e.duration=c.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in c.fx.speeds?c.fx.speeds[e.duration]:c.fx.speeds._default;e.old=e.complete;e.complete=function(){e.queue!==false&&c(this).dequeue();c.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,d,e){return d+e*a},swing:function(a,b,d,e){return(-Math.cos(a* -Math.PI)/2+0.5)*e+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||c.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a=parseFloat(c.css(this.elem,this.prop));return a&&a>-1E4?a:0},custom:function(a,b,d){function e(l){return f.step(l)} -var f=this,h=c.fx;this.startTime=c.now();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;this.pos=this.state=0;e.elem=this.elem;if(e()&&c.timers.push(e)&&!ba)ba=setInterval(h.tick,h.interval)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true; -this.custom(this.cur(),0)},step:function(a){var b=c.now(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var e in this.options.curAnim)if(this.options.curAnim[e]!==true)d=false;if(d){if(this.options.overflow!=null&&!c.support.shrinkWrapBlocks){var f=this.elem,h=this.options;c.each(["","X","Y"],function(k,o){f.style["overflow"+o]=h.overflow[k]})}this.options.hide&&c(this.elem).hide();if(this.options.hide|| -this.options.show)for(var l in this.options.curAnim)c.style(this.elem,l,this.options.orig[l]);this.options.complete.call(this.elem)}return false}else{a=b-this.startTime;this.state=a/this.options.duration;b=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||b](this.state,a,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a= -c.timers,b=0;b-1;e={};var x={};if(o)x=f.position();l=o?x.top:parseInt(l,10)||0;k=o?x.left:parseInt(k,10)||0;if(c.isFunction(b))b=b.call(a,d,h);if(b.top!=null)e.top=b.top-h.top+l;if(b.left!=null)e.left=b.left-h.left+k;"using"in b?b.using.call(a, -e):f.css(e)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),e=Ia.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.css(a,"marginTop"))||0;d.left-=parseFloat(c.css(a,"marginLeft"))||0;e.top+=parseFloat(c.css(b[0],"borderTopWidth"))||0;e.left+=parseFloat(c.css(b[0],"borderLeftWidth"))||0;return{top:d.top-e.top,left:d.left-e.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||t.body;a&&!Ia.test(a.nodeName)&& -c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(e){var f=this[0],h;if(!f)return null;if(e!==B)return this.each(function(){if(h=fa(this))h.scrollTo(!a?e:c(h).scrollLeft(),a?e:c(h).scrollTop());else this[d]=e});else return(h=fa(f))?"pageXOffset"in h?h[a?"pageYOffset":"pageXOffset"]:c.support.boxModel&&h.document.documentElement[d]||h.document.body[d]:f[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase(); -c.fn["inner"+b]=function(){return this[0]?parseFloat(c.css(this[0],d,"padding")):null};c.fn["outer"+b]=function(e){return this[0]?parseFloat(c.css(this[0],d,e?"margin":"border")):null};c.fn[d]=function(e){var f=this[0];if(!f)return e==null?null:this;if(c.isFunction(e))return this.each(function(l){var k=c(this);k[d](e.call(this,l,k[d]()))});if(c.isWindow(f))return f.document.compatMode==="CSS1Compat"&&f.document.documentElement["client"+b]||f.document.body["client"+b];else if(f.nodeType===9)return Math.max(f.documentElement["client"+ -b],f.body["scroll"+b],f.documentElement["scroll"+b],f.body["offset"+b],f.documentElement["offset"+b]);else if(e===B){f=c.css(f,d);var h=parseFloat(f);return c.isNaN(h)?f:h}else return this.css(d,typeof e==="string"?e:e+"px")}})})(window); \ No newline at end of file diff --git a/mamweb/static/images/prettyPhoto_uncompressed_3.1.5/js/jquery-1.6.1.min.js b/mamweb/static/images/prettyPhoto_uncompressed_3.1.5/js/jquery-1.6.1.min.js deleted file mode 100644 index eb6a5969..00000000 --- a/mamweb/static/images/prettyPhoto_uncompressed_3.1.5/js/jquery-1.6.1.min.js +++ /dev/null @@ -1,18 +0,0 @@ -/*! - * jQuery JavaScript Library v1.6.1 - * http://jquery.com/ - * - * Copyright 2011, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Thu May 12 15:04:36 2011 -0400 - */ -(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!cj[a]){var b=f("<"+a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),c.body.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write("");b=cl.createElement(a),cl.body.appendChild(b),d=f.css(b,"display"),c.body.removeChild(ck)}cj[a]=d}return cj[a]}function cu(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function ct(){cq=b}function cs(){setTimeout(ct,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g=0===c})}function W(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function O(a,b){return(a&&a!=="*"?a+".":"")+b.replace(A,"`").replace(B,"&")}function N(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;ic)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function L(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function F(){return!0}function E(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"$1-$2").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function H(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(H,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=d.userAgent,x,y,z,A=Object.prototype.toString,B=Object.prototype.hasOwnProperty,C=Array.prototype.push,D=Array.prototype.slice,E=String.prototype.trim,F=Array.prototype.indexOf,G={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.1",length:0,size:function(){return this.length},toArray:function(){return D.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?C.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),y.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(D.apply(this,arguments),"slice",D.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:C,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;y.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!y){y=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",z,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",z),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&H()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):G[A.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!B.call(a,"constructor")&&!B.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||B.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c
a",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};f=c.createElement("select"),g=f.appendChild(c.createElement("option")),h=a.getElementsByTagName("input")[0],j={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},h.checked=!0,j.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,j.optDisabled=!g.disabled;try{delete a.test}catch(s){j.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function b(){j.noCloneEvent=!1,a.detachEvent("onclick",b)}),a.cloneNode(!0).fireEvent("onclick")),h=c.createElement("input"),h.value="t",h.setAttribute("type","radio"),j.radioValue=h.value==="t",h.setAttribute("checked","checked"),a.appendChild(h),k=c.createDocumentFragment(),k.appendChild(a.firstChild),j.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",l=c.createElement("body"),m={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"};for(q in m)l.style[q]=m[q];l.appendChild(a),b.insertBefore(l,b.firstChild),j.appendChecked=h.checked,j.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,j.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
",j.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
t
",n=a.getElementsByTagName("td"),r=n[0].offsetHeight===0,n[0].style.display="",n[1].style.display="none",j.reliableHiddenOffsets=r&&n[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(i=c.createElement("div"),i.style.width="0",i.style.marginRight="0",a.appendChild(i),j.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(i,null)||{marginRight:0}).marginRight,10)||0)===0),l.innerHTML="",b.removeChild(l);if(a.attachEvent)for(q in{submit:1,change:1,focusin:1})p="on"+q,r=p in a,r||(a.setAttribute(p,"return;"),r=typeof a[p]=="function"),j[q+"Bubbles"]=r;return j}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[f.camelCase(c)]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[f.camelCase(c)]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;return(e.value||"").replace(p,"")}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);c=j&&f.attrFix[c]||c,i=f.attrHooks[c],i||(!t.test(c)||typeof d!="boolean"&&d!==b&&d.toLowerCase()!==c.toLowerCase()?v&&(f.nodeName(a,"form")||u.test(c))&&(i=v):i=w);if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j)return i.get(a,c);h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);c=i&&f.propFix[c]||c,h=f.propHooks[c];return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),w={get:function(a,c){return a[f.propFix[c]||c]?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=b),a.setAttribute(c,c.toLowerCase()));return c}},f.attrHooks.value={get:function(a,b){if(v&&f.nodeName(a,"button"))return v.get(a,b);return a.value},set:function(a,b,c){if(v&&f.nodeName(a,"button"))return v.set(a,b,c);a.value=b}},f.support.getSetAttribute||(f.attrFix=f.propFix,v=f.attrHooks.name=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var x=Object.prototype.hasOwnProperty,y=/\.(.*)$/,z=/^(?:textarea|input|select)$/i,A=/\./g,B=/ /g,C=/[^\w\s.|`]/g,D=function(a){return a.replace(C,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=E;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=E);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),D).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem -)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},K=function(c){var d=c.target,e,g;if(!!z.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=J(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:K,beforedeactivate:K,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&K.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&K.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",J(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in I)f.event.add(this,c+".specialChange",I[c]);return z.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return z.test(this.nodeName)}},I=f.event.special.change.filters,I.focus=I.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(h=g;h0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=U.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(W(c[0])||W(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=T.call(arguments);P.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!V[a]?f.unique(e):e,(this.length>1||R.test(d))&&Q.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var Y=/ jQuery\d+="(?:\d+|null)"/g,Z=/^\s+/,$=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,_=/<([\w:]+)/,ba=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Y,""):null;if(typeof a=="string"&&!bc.test(a)&&(f.support.leadingWhitespace||!Z.test(a))&&!bg[(_.exec(a)||["",""])[1].toLowerCase()]){a=a.replace($,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bj(a,d),e=bk(a),g=bk(d);for(h=0;e[h];++h)bj(e[h],g[h])}if(b){bi(a,d);if(c){e=bk(a),g=bk(d);for(h=0;e[h];++h)bi(e[h],g[h])}}return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument|| -b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!bb.test(k))k=b.createTextNode(k);else{k=k.replace($,"<$1>");var l=(_.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=ba.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&Z.test(k)&&o.insertBefore(b.createTextNode(Z.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bp.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bo.test(g)?g.replace(bo,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,c){var d,e,g;c=c.replace(br,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bs.test(d)&&bt.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bE=/%20/g,bF=/\[\]$/,bG=/\r?\n/g,bH=/#.*$/,bI=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bJ=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bK=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bL=/^(?:GET|HEAD)$/,bM=/^\/\//,bN=/\?/,bO=/)<[^<]*)*<\/script>/gi,bP=/^(?:select|textarea)/i,bQ=/\s+/,bR=/([?&])_=[^&]*/,bS=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bT=f.fn.load,bU={},bV={},bW,bX;try{bW=e.href}catch(bY){bW=c.createElement("a"),bW.href="",bW=bW.href}bX=bS.exec(bW.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bT)return bT.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bO,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bP.test(this.nodeName)||bJ.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bG,"\r\n")}}):{name:b.name,value:c.replace(bG,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?f.extend(!0,a,f.ajaxSettings,b):(b=a,a=f.extend(!0,f.ajaxSettings,b));for(var c in{context:1,url:1})c in b?a[c]=b[c]:c in f.ajaxSettings&&(a[c]=f.ajaxSettings[c]);return a},ajaxSettings:{url:bW,isLocal:bK.test(bX[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML}},ajaxPrefilter:bZ(bU),ajaxTransport:bZ(bV),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a?4:0;var o,r,u,w=l?ca(d,v,l):b,x,y;if(a>=200&&a<300||a===304){if(d.ifModified){if(x=v.getResponseHeader("Last-Modified"))f.lastModified[k]=x;if(y=v.getResponseHeader("Etag"))f.etag[k]=y}if(a===304)c="notmodified",o=!0;else try{r=cb(d,w),c="success",o=!0}catch(z){c="parsererror",u=z}}else{u=c;if(!c||a)c="error",a<0&&(a=0)}v.status=a,v.statusText=c,o?h.resolveWith(e,[r,c,v]):h.rejectWith(e,[v,c,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,c]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bI.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bH,"").replace(bM,bX[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bQ),d.crossDomain==null&&(r=bS.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bX[1]&&r[2]==bX[2]&&(r[3]||(r[1]==="http:"?80:443))==(bX[3]||(bX[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bU,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bL.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bN.test(d.url)?"&":"?")+d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bR,"$1_="+x);d.url=y+(y===d.url?(bN.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", */*; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bV,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){status<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bE,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq,cr=a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b
";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){return this[0]?parseFloat(f.css(this[0],d,"padding")):null},f.fn["outer"+c]=function(a){return this[0]?parseFloat(f.css(this[0],d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c];return e.document.compatMode==="CSS1Compat"&&g||e.document.body["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var h=f.css(e,d),i=parseFloat(h);return f.isNaN(i)?h:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file diff --git a/mamweb/static/images/prettyPhoto_uncompressed_3.1.5/xhr_response.html b/mamweb/static/images/prettyPhoto_uncompressed_3.1.5/xhr_response.html deleted file mode 100644 index 84490c8b..00000000 --- a/mamweb/static/images/prettyPhoto_uncompressed_3.1.5/xhr_response.html +++ /dev/null @@ -1,5 +0,0 @@ -

This is an XHR Response

-
-

This is sample content brought in.

-

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

-
\ No newline at end of file diff --git a/mamweb/static/js/jquery.prettyPhoto.js b/mamweb/static/js/jquery.prettyPhoto.js deleted file mode 100644 index 0436a493..00000000 --- a/mamweb/static/js/jquery.prettyPhoto.js +++ /dev/null @@ -1,911 +0,0 @@ -/* ------------------------------------------------------------------------ - Class: prettyPhoto - Use: Lightbox clone for jQuery - Author: Stephane Caron (http://www.no-margin-for-errors.com) - Version: 3.1.5 -------------------------------------------------------------------------- */ -(function($) { - $.prettyPhoto = {version: '3.1.5'}; - - $.fn.prettyPhoto = function(pp_settings) { - pp_settings = jQuery.extend({ - hook: 'rel', /* the attribute tag to use for prettyPhoto hooks. default: 'rel'. For HTML5, use "data-rel" or similar. */ - animation_speed: 'fast', /* fast/slow/normal */ - ajaxcallback: function() {}, - slideshow: 5000, /* false OR interval time in ms */ - autoplay_slideshow: false, /* true/false */ - opacity: 0.80, /* Value between 0 and 1 */ - show_title: true, /* true/false */ - allow_resize: true, /* Resize the photos bigger than viewport. true/false */ - allow_expand: true, /* Allow the user to expand a resized image. true/false */ - default_width: 500, - default_height: 344, - counter_separator_label: '/', /* The separator for the gallery counter 1 "of" 2 */ - theme: 'pp_default', /* light_rounded / dark_rounded / light_square / dark_square / facebook */ - horizontal_padding: 20, /* The padding on each side of the picture */ - hideflash: false, /* Hides all the flash object on a page, set to TRUE if flash appears over prettyPhoto */ - wmode: 'opaque', /* Set the flash wmode attribute */ - autoplay: true, /* Automatically start videos: True/False */ - modal: false, /* If set to true, only the close button will close the window */ - deeplinking: true, /* Allow prettyPhoto to update the url to enable deeplinking. */ - overlay_gallery: true, /* If set to true, a gallery will overlay the fullscreen image on mouse over */ - overlay_gallery_max: 30, /* Maximum number of pictures in the overlay gallery */ - keyboard_shortcuts: true, /* Set to false if you open forms inside prettyPhoto */ - changepicturecallback: function(){}, /* Called everytime an item is shown/changed */ - callback: function(){}, /* Called when prettyPhoto is closed */ - ie6_fallback: true, - markup: '
\ -
 
\ -
\ -
\ -
\ -
\ -
\ -
\ -
\ -
\ -
\ -
\ -
\ - Expand \ -
\ - next \ - previous \ -
\ -
\ -
\ -
\ - Previous \ -

0/0

\ - Next \ -
\ -

\ -
{pp_social}
\ - Close \ -
\ -
\ -
\ -
\ -
\ -
\ -
\ -
\ -
\ -
\ -
\ -
\ -
', - gallery_markup: '', - image_markup: '', - flash_markup: '', - quicktime_markup: '', - iframe_markup: '', - inline_markup: '
{content}
', - custom_markup: '', - social_tools: '' /* html or false to disable */ - }, pp_settings); - - // Global variables accessible only by prettyPhoto - var matchedObjects = this, percentBased = false, pp_dimensions, pp_open, - - // prettyPhoto container specific - pp_contentHeight, pp_contentWidth, pp_containerHeight, pp_containerWidth, - - // Window size - windowHeight = $(window).height(), windowWidth = $(window).width(), - - // Global elements - pp_slideshow; - - doresize = true, scroll_pos = _get_scroll(); - - // Window/Keyboard events - $(window).unbind('resize.prettyphoto').bind('resize.prettyphoto',function(){ _center_overlay(); _resize_overlay(); }); - - if(pp_settings.keyboard_shortcuts) { - $(document).unbind('keydown.prettyphoto').bind('keydown.prettyphoto',function(e){ - if(typeof $pp_pic_holder != 'undefined'){ - if($pp_pic_holder.is(':visible')){ - switch(e.keyCode){ - case 37: - $.prettyPhoto.changePage('previous'); - e.preventDefault(); - break; - case 39: - $.prettyPhoto.changePage('next'); - e.preventDefault(); - break; - case 27: - if(!settings.modal) - $.prettyPhoto.close(); - e.preventDefault(); - break; - }; - // return false; - }; - }; - }); - }; - - /** - * Initialize prettyPhoto. - */ - $.prettyPhoto.initialize = function() { - - settings = pp_settings; - - if(settings.theme == 'pp_default') settings.horizontal_padding = 16; - - // Find out if the picture is part of a set - theRel = $(this).attr(settings.hook); - galleryRegExp = /\[(?:.*)\]/; - isSet = (galleryRegExp.exec(theRel)) ? true : false; - - // Put the SRCs, TITLEs, ALTs into an array. - pp_images = (isSet) ? jQuery.map(matchedObjects, function(n, i){ if($(n).attr(settings.hook).indexOf(theRel) != -1) return $(n).attr('href'); }) : $.makeArray($(this).attr('href')); - pp_titles = (isSet) ? jQuery.map(matchedObjects, function(n, i){ if($(n).attr(settings.hook).indexOf(theRel) != -1) return ($(n).find('img').attr('alt')) ? $(n).find('img').attr('alt') : ""; }) : $.makeArray($(this).find('img').attr('alt')); - pp_descriptions = (isSet) ? jQuery.map(matchedObjects, function(n, i){ if($(n).attr(settings.hook).indexOf(theRel) != -1) return ($(n).attr('title')) ? $(n).attr('title') : ""; }) : $.makeArray($(this).attr('title')); - - if(pp_images.length > settings.overlay_gallery_max) settings.overlay_gallery = false; - - set_position = jQuery.inArray($(this).attr('href'), pp_images); // Define where in the array the clicked item is positionned - rel_index = (isSet) ? set_position : $("a["+settings.hook+"^='"+theRel+"']").index($(this)); - - _build_overlay(this); // Build the overlay {this} being the caller - - if(settings.allow_resize) - $(window).bind('scroll.prettyphoto',function(){ _center_overlay(); }); - - - $.prettyPhoto.open(); - - return false; - } - - - /** - * Opens the prettyPhoto modal box. - * @param image {String,Array} Full path to the image to be open, can also be an array containing full images paths. - * @param title {String,Array} The title to be displayed with the picture, can also be an array containing all the titles. - * @param description {String,Array} The description to be displayed with the picture, can also be an array containing all the descriptions. - */ - $.prettyPhoto.open = function(event) { - if(typeof settings == "undefined"){ // Means it's an API call, need to manually get the settings and set the variables - settings = pp_settings; - pp_images = $.makeArray(arguments[0]); - pp_titles = (arguments[1]) ? $.makeArray(arguments[1]) : $.makeArray(""); - pp_descriptions = (arguments[2]) ? $.makeArray(arguments[2]) : $.makeArray(""); - isSet = (pp_images.length > 1) ? true : false; - set_position = (arguments[3])? arguments[3]: 0; - _build_overlay(event.target); // Build the overlay {this} being the caller - } - - if(settings.hideflash) $('object,embed,iframe[src*=youtube],iframe[src*=vimeo]').css('visibility','hidden'); // Hide the flash - - _checkPosition($(pp_images).size()); // Hide the next/previous links if on first or last images. - - $('.pp_loaderIcon').show(); - - if(settings.deeplinking) - setHashtag(); - - // Rebuild Facebook Like Button with updated href - if(settings.social_tools){ - facebook_like_link = settings.social_tools.replace('{location_href}', encodeURIComponent(location.href)); - $pp_pic_holder.find('.pp_social').html(facebook_like_link); - } - - // Fade the content in - if($ppt.is(':hidden')) $ppt.css('opacity',0).show(); - $pp_overlay.show().fadeTo(settings.animation_speed,settings.opacity); - - // Display the current position - $pp_pic_holder.find('.currentTextHolder').text((set_position+1) + settings.counter_separator_label + $(pp_images).size()); - - // Set the description - if(typeof pp_descriptions[set_position] != 'undefined' && pp_descriptions[set_position] != ""){ - $pp_pic_holder.find('.pp_description').show().html(unescape(pp_descriptions[set_position])); - }else{ - $pp_pic_holder.find('.pp_description').hide(); - } - - // Get the dimensions - movie_width = ( parseFloat(getParam('width',pp_images[set_position])) ) ? getParam('width',pp_images[set_position]) : settings.default_width.toString(); - movie_height = ( parseFloat(getParam('height',pp_images[set_position])) ) ? getParam('height',pp_images[set_position]) : settings.default_height.toString(); - - // If the size is % based, calculate according to window dimensions - percentBased=false; - if(movie_height.indexOf('%') != -1) { movie_height = parseFloat(($(window).height() * parseFloat(movie_height) / 100) - 150); percentBased = true; } - if(movie_width.indexOf('%') != -1) { movie_width = parseFloat(($(window).width() * parseFloat(movie_width) / 100) - 150); percentBased = true; } - - // Fade the holder - $pp_pic_holder.fadeIn(function(){ - // Set the title - (settings.show_title && pp_titles[set_position] != "" && typeof pp_titles[set_position] != "undefined") ? $ppt.html(unescape(pp_titles[set_position])) : $ppt.html(' '); - - imgPreloader = ""; - skipInjection = false; - - // Inject the proper content - switch(_getFileType(pp_images[set_position])){ - case 'image': - imgPreloader = new Image(); - - // Preload the neighbour images - nextImage = new Image(); - if(isSet && set_position < $(pp_images).size() -1) nextImage.src = pp_images[set_position + 1]; - prevImage = new Image(); - if(isSet && pp_images[set_position - 1]) prevImage.src = pp_images[set_position - 1]; - - $pp_pic_holder.find('#pp_full_res')[0].innerHTML = settings.image_markup.replace(/{path}/g,pp_images[set_position]); - - imgPreloader.onload = function(){ - // Fit item to viewport - pp_dimensions = _fitToViewport(imgPreloader.width,imgPreloader.height); - - _showContent(); - }; - - imgPreloader.onerror = function(){ - alert('Image cannot be loaded. Make sure the path is correct and image exist.'); - $.prettyPhoto.close(); - }; - - imgPreloader.src = pp_images[set_position]; - break; - - case 'youtube': - pp_dimensions = _fitToViewport(movie_width,movie_height); // Fit item to viewport - - // Regular youtube link - movie_id = getParam('v',pp_images[set_position]); - - // youtu.be link - if(movie_id == ""){ - movie_id = pp_images[set_position].split('youtu.be/'); - movie_id = movie_id[1]; - if(movie_id.indexOf('?') > 0) - movie_id = movie_id.substr(0,movie_id.indexOf('?')); // Strip anything after the ? - - if(movie_id.indexOf('&') > 0) - movie_id = movie_id.substr(0,movie_id.indexOf('&')); // Strip anything after the & - } - - movie = 'http://www.youtube.com/embed/'+movie_id; - (getParam('rel',pp_images[set_position])) ? movie+="?rel="+getParam('rel',pp_images[set_position]) : movie+="?rel=1"; - - if(settings.autoplay) movie += "&autoplay=1"; - - toInject = settings.iframe_markup.replace(/{width}/g,pp_dimensions['width']).replace(/{height}/g,pp_dimensions['height']).replace(/{wmode}/g,settings.wmode).replace(/{path}/g,movie); - break; - - case 'vimeo': - pp_dimensions = _fitToViewport(movie_width,movie_height); // Fit item to viewport - - movie_id = pp_images[set_position]; - var regExp = /http(s?):\/\/(www\.)?vimeo.com\/(\d+)/; - var match = movie_id.match(regExp); - - movie = 'http://player.vimeo.com/video/'+ match[3] +'?title=0&byline=0&portrait=0'; - if(settings.autoplay) movie += "&autoplay=1;"; - - vimeo_width = pp_dimensions['width'] + '/embed/?moog_width='+ pp_dimensions['width']; - - toInject = settings.iframe_markup.replace(/{width}/g,vimeo_width).replace(/{height}/g,pp_dimensions['height']).replace(/{path}/g,movie); - break; - - case 'quicktime': - pp_dimensions = _fitToViewport(movie_width,movie_height); // Fit item to viewport - pp_dimensions['height']+=15; pp_dimensions['contentHeight']+=15; pp_dimensions['containerHeight']+=15; // Add space for the control bar - - toInject = settings.quicktime_markup.replace(/{width}/g,pp_dimensions['width']).replace(/{height}/g,pp_dimensions['height']).replace(/{wmode}/g,settings.wmode).replace(/{path}/g,pp_images[set_position]).replace(/{autoplay}/g,settings.autoplay); - break; - - case 'flash': - pp_dimensions = _fitToViewport(movie_width,movie_height); // Fit item to viewport - - flash_vars = pp_images[set_position]; - flash_vars = flash_vars.substring(pp_images[set_position].indexOf('flashvars') + 10,pp_images[set_position].length); - - filename = pp_images[set_position]; - filename = filename.substring(0,filename.indexOf('?')); - - toInject = settings.flash_markup.replace(/{width}/g,pp_dimensions['width']).replace(/{height}/g,pp_dimensions['height']).replace(/{wmode}/g,settings.wmode).replace(/{path}/g,filename+'?'+flash_vars); - break; - - case 'iframe': - pp_dimensions = _fitToViewport(movie_width,movie_height); // Fit item to viewport - - frame_url = pp_images[set_position]; - frame_url = frame_url.substr(0,frame_url.indexOf('iframe')-1); - - toInject = settings.iframe_markup.replace(/{width}/g,pp_dimensions['width']).replace(/{height}/g,pp_dimensions['height']).replace(/{path}/g,frame_url); - break; - - case 'ajax': - doresize = false; // Make sure the dimensions are not resized. - pp_dimensions = _fitToViewport(movie_width,movie_height); - doresize = true; // Reset the dimensions - - skipInjection = true; - $.get(pp_images[set_position],function(responseHTML){ - toInject = settings.inline_markup.replace(/{content}/g,responseHTML); - $pp_pic_holder.find('#pp_full_res')[0].innerHTML = toInject; - _showContent(); - }); - - break; - - case 'custom': - pp_dimensions = _fitToViewport(movie_width,movie_height); // Fit item to viewport - - toInject = settings.custom_markup; - break; - - case 'inline': - // to get the item height clone it, apply default width, wrap it in the prettyPhoto containers , then delete - myClone = $(pp_images[set_position]).clone().append('
').css({'width':settings.default_width}).wrapInner('
').appendTo($('body')).show(); - doresize = false; // Make sure the dimensions are not resized. - pp_dimensions = _fitToViewport($(myClone).width(),$(myClone).height()); - doresize = true; // Reset the dimensions - $(myClone).remove(); - toInject = settings.inline_markup.replace(/{content}/g,$(pp_images[set_position]).html()); - break; - }; - - if(!imgPreloader && !skipInjection){ - $pp_pic_holder.find('#pp_full_res')[0].innerHTML = toInject; - - // Show content - _showContent(); - }; - }); - - return false; - }; - - - /** - * Change page in the prettyPhoto modal box - * @param direction {String} Direction of the paging, previous or next. - */ - $.prettyPhoto.changePage = function(direction){ - currentGalleryPage = 0; - - if(direction == 'previous') { - set_position--; - if (set_position < 0) set_position = $(pp_images).size()-1; - }else if(direction == 'next'){ - set_position++; - if(set_position > $(pp_images).size()-1) set_position = 0; - }else{ - set_position=direction; - }; - - rel_index = set_position; - - if(!doresize) doresize = true; // Allow the resizing of the images - if(settings.allow_expand) { - $('.pp_contract').removeClass('pp_contract').addClass('pp_expand'); - } - - _hideContent(function(){ $.prettyPhoto.open(); }); - }; - - - /** - * Change gallery page in the prettyPhoto modal box - * @param direction {String} Direction of the paging, previous or next. - */ - $.prettyPhoto.changeGalleryPage = function(direction){ - if(direction=='next'){ - currentGalleryPage ++; - - if(currentGalleryPage > totalPage) currentGalleryPage = 0; - }else if(direction=='previous'){ - currentGalleryPage --; - - if(currentGalleryPage < 0) currentGalleryPage = totalPage; - }else{ - currentGalleryPage = direction; - }; - - slide_speed = (direction == 'next' || direction == 'previous') ? settings.animation_speed : 0; - - slide_to = currentGalleryPage * (itemsPerPage * itemWidth); - - $pp_gallery.find('ul').animate({left:-slide_to},slide_speed); - }; - - - /** - * Start the slideshow... - */ - $.prettyPhoto.startSlideshow = function(){ - if(typeof pp_slideshow == 'undefined'){ - $pp_pic_holder.find('.pp_play').unbind('click').removeClass('pp_play').addClass('pp_pause').click(function(){ - $.prettyPhoto.stopSlideshow(); - return false; - }); - pp_slideshow = setInterval($.prettyPhoto.startSlideshow,settings.slideshow); - }else{ - $.prettyPhoto.changePage('next'); - }; - } - - - /** - * Stop the slideshow... - */ - $.prettyPhoto.stopSlideshow = function(){ - $pp_pic_holder.find('.pp_pause').unbind('click').removeClass('pp_pause').addClass('pp_play').click(function(){ - $.prettyPhoto.startSlideshow(); - return false; - }); - clearInterval(pp_slideshow); - pp_slideshow=undefined; - } - - - /** - * Closes prettyPhoto. - */ - $.prettyPhoto.close = function(){ - if($pp_overlay.is(":animated")) return; - - $.prettyPhoto.stopSlideshow(); - - $pp_pic_holder.stop().find('object,embed').css('visibility','hidden'); - - $('div.pp_pic_holder,div.ppt,.pp_fade').fadeOut(settings.animation_speed,function(){ $(this).remove(); }); - - $pp_overlay.fadeOut(settings.animation_speed, function(){ - - if(settings.hideflash) $('object,embed,iframe[src*=youtube],iframe[src*=vimeo]').css('visibility','visible'); // Show the flash - - $(this).remove(); // No more need for the prettyPhoto markup - - $(window).unbind('scroll.prettyphoto'); - - clearHashtag(); - - settings.callback(); - - doresize = true; - - pp_open = false; - - delete settings; - }); - }; - - /** - * Set the proper sizes on the containers and animate the content in. - */ - function _showContent(){ - $('.pp_loaderIcon').hide(); - - // Calculate the opened top position of the pic holder - projectedTop = scroll_pos['scrollTop'] + ((windowHeight/2) - (pp_dimensions['containerHeight']/2)); - if(projectedTop < 0) projectedTop = 0; - - $ppt.fadeTo(settings.animation_speed,1); - - // Resize the content holder - $pp_pic_holder.find('.pp_content') - .animate({ - height:pp_dimensions['contentHeight'], - width:pp_dimensions['contentWidth'] - },settings.animation_speed); - - // Resize picture the holder - $pp_pic_holder.animate({ - 'top': projectedTop, - 'left': ((windowWidth/2) - (pp_dimensions['containerWidth']/2) < 0) ? 0 : (windowWidth/2) - (pp_dimensions['containerWidth']/2), - width:pp_dimensions['containerWidth'] - },settings.animation_speed,function(){ - $pp_pic_holder.find('.pp_hoverContainer,#fullResImage').height(pp_dimensions['height']).width(pp_dimensions['width']); - - $pp_pic_holder.find('.pp_fade').fadeIn(settings.animation_speed); // Fade the new content - - // Show the nav - if(isSet && _getFileType(pp_images[set_position])=="image") { $pp_pic_holder.find('.pp_hoverContainer').show(); }else{ $pp_pic_holder.find('.pp_hoverContainer').hide(); } - - if(settings.allow_expand) { - if(pp_dimensions['resized']){ // Fade the resizing link if the image is resized - $('a.pp_expand,a.pp_contract').show(); - }else{ - $('a.pp_expand').hide(); - } - } - - if(settings.autoplay_slideshow && !pp_slideshow && !pp_open) $.prettyPhoto.startSlideshow(); - - settings.changepicturecallback(); // Callback! - - pp_open = true; - }); - - _insert_gallery(); - pp_settings.ajaxcallback(); - }; - - /** - * Hide the content...DUH! - */ - function _hideContent(callback){ - // Fade out the current picture - $pp_pic_holder.find('#pp_full_res object,#pp_full_res embed').css('visibility','hidden'); - $pp_pic_holder.find('.pp_fade').fadeOut(settings.animation_speed,function(){ - $('.pp_loaderIcon').show(); - - callback(); - }); - }; - - /** - * Check the item position in the gallery array, hide or show the navigation links - * @param setCount {integer} The total number of items in the set - */ - function _checkPosition(setCount){ - (setCount > 1) ? $('.pp_nav').show() : $('.pp_nav').hide(); // Hide the bottom nav if it's not a set. - }; - - /** - * Resize the item dimensions if it's bigger than the viewport - * @param width {integer} Width of the item to be opened - * @param height {integer} Height of the item to be opened - * @return An array containin the "fitted" dimensions - */ - function _fitToViewport(width,height){ - resized = false; - - _getDimensions(width,height); - - // Define them in case there's no resize needed - imageWidth = width, imageHeight = height; - - if( ((pp_containerWidth > windowWidth) || (pp_containerHeight > windowHeight)) && doresize && settings.allow_resize && !percentBased) { - resized = true, fitting = false; - - while (!fitting){ - if((pp_containerWidth > windowWidth)){ - imageWidth = (windowWidth - 200); - imageHeight = (height/width) * imageWidth; - }else if((pp_containerHeight > windowHeight)){ - imageHeight = (windowHeight - 200); - imageWidth = (width/height) * imageHeight; - }else{ - fitting = true; - }; - - pp_containerHeight = imageHeight, pp_containerWidth = imageWidth; - }; - - - - if((pp_containerWidth > windowWidth) || (pp_containerHeight > windowHeight)){ - _fitToViewport(pp_containerWidth,pp_containerHeight) - }; - - _getDimensions(imageWidth,imageHeight); - }; - - return { - width:Math.floor(imageWidth), - height:Math.floor(imageHeight), - containerHeight:Math.floor(pp_containerHeight), - containerWidth:Math.floor(pp_containerWidth) + (settings.horizontal_padding * 2), - contentHeight:Math.floor(pp_contentHeight), - contentWidth:Math.floor(pp_contentWidth), - resized:resized - }; - }; - - /** - * Get the containers dimensions according to the item size - * @param width {integer} Width of the item to be opened - * @param height {integer} Height of the item to be opened - */ - function _getDimensions(width,height){ - width = parseFloat(width); - height = parseFloat(height); - - // Get the details height, to do so, I need to clone it since it's invisible - $pp_details = $pp_pic_holder.find('.pp_details'); - $pp_details.width(width); - detailsHeight = parseFloat($pp_details.css('marginTop')) + parseFloat($pp_details.css('marginBottom')); - - $pp_details = $pp_details.clone().addClass(settings.theme).width(width).appendTo($('body')).css({ - 'position':'absolute', - 'top':-10000 - }); - detailsHeight += $pp_details.height(); - detailsHeight = (detailsHeight <= 34) ? 36 : detailsHeight; // Min-height for the details - $pp_details.remove(); - - // Get the titles height, to do so, I need to clone it since it's invisible - $pp_title = $pp_pic_holder.find('.ppt'); - $pp_title.width(width); - titleHeight = parseFloat($pp_title.css('marginTop')) + parseFloat($pp_title.css('marginBottom')); - $pp_title = $pp_title.clone().appendTo($('body')).css({ - 'position':'absolute', - 'top':-10000 - }); - titleHeight += $pp_title.height(); - $pp_title.remove(); - - // Get the container size, to resize the holder to the right dimensions - pp_contentHeight = height + detailsHeight; - pp_contentWidth = width; - pp_containerHeight = pp_contentHeight + titleHeight + $pp_pic_holder.find('.pp_top').height() + $pp_pic_holder.find('.pp_bottom').height(); - pp_containerWidth = width; - } - - function _getFileType(itemSrc){ - if (itemSrc.match(/youtube\.com\/watch/i) || itemSrc.match(/youtu\.be/i)) { - return 'youtube'; - }else if (itemSrc.match(/vimeo\.com/i)) { - return 'vimeo'; - }else if(itemSrc.match(/\b.mov\b/i)){ - return 'quicktime'; - }else if(itemSrc.match(/\b.swf\b/i)){ - return 'flash'; - }else if(itemSrc.match(/\biframe=true\b/i)){ - return 'iframe'; - }else if(itemSrc.match(/\bajax=true\b/i)){ - return 'ajax'; - }else if(itemSrc.match(/\bcustom=true\b/i)){ - return 'custom'; - }else if(itemSrc.substr(0,1) == '#'){ - return 'inline'; - }else{ - return 'image'; - }; - }; - - function _center_overlay(){ - if(doresize && typeof $pp_pic_holder != 'undefined') { - scroll_pos = _get_scroll(); - contentHeight = $pp_pic_holder.height(), contentwidth = $pp_pic_holder.width(); - - projectedTop = (windowHeight/2) + scroll_pos['scrollTop'] - (contentHeight/2); - if(projectedTop < 0) projectedTop = 0; - - if(contentHeight > windowHeight) - return; - - $pp_pic_holder.css({ - 'top': projectedTop, - 'left': (windowWidth/2) + scroll_pos['scrollLeft'] - (contentwidth/2) - }); - }; - }; - - function _get_scroll(){ - if (self.pageYOffset) { - return {scrollTop:self.pageYOffset,scrollLeft:self.pageXOffset}; - } else if (document.documentElement && document.documentElement.scrollTop) { // Explorer 6 Strict - return {scrollTop:document.documentElement.scrollTop,scrollLeft:document.documentElement.scrollLeft}; - } else if (document.body) {// all other Explorers - return {scrollTop:document.body.scrollTop,scrollLeft:document.body.scrollLeft}; - }; - }; - - function _resize_overlay() { - windowHeight = $(window).height(), windowWidth = $(window).width(); - - if(typeof $pp_overlay != "undefined") $pp_overlay.height($(document).height()).width(windowWidth); - }; - - function _insert_gallery(){ - if(isSet && settings.overlay_gallery && _getFileType(pp_images[set_position])=="image") { - itemWidth = 52+5; // 52 beign the thumb width, 5 being the right margin. - navWidth = (settings.theme == "facebook" || settings.theme == "pp_default") ? 50 : 30; // Define the arrow width depending on the theme - - itemsPerPage = Math.floor((pp_dimensions['containerWidth'] - 100 - navWidth) / itemWidth); - itemsPerPage = (itemsPerPage < pp_images.length) ? itemsPerPage : pp_images.length; - totalPage = Math.ceil(pp_images.length / itemsPerPage) - 1; - - // Hide the nav in the case there's no need for links - if(totalPage == 0){ - navWidth = 0; // No nav means no width! - $pp_gallery.find('.pp_arrow_next,.pp_arrow_previous').hide(); - }else{ - $pp_gallery.find('.pp_arrow_next,.pp_arrow_previous').show(); - }; - - galleryWidth = itemsPerPage * itemWidth; - fullGalleryWidth = pp_images.length * itemWidth; - - // Set the proper width to the gallery items - $pp_gallery - .css('margin-left',-((galleryWidth/2) + (navWidth/2))) - .find('div:first').width(galleryWidth+5) - .find('ul').width(fullGalleryWidth) - .find('li.selected').removeClass('selected'); - - goToPage = (Math.floor(set_position/itemsPerPage) < totalPage) ? Math.floor(set_position/itemsPerPage) : totalPage; - - $.prettyPhoto.changeGalleryPage(goToPage); - - $pp_gallery_li.filter(':eq('+set_position+')').addClass('selected'); - }else{ - $pp_pic_holder.find('.pp_content').unbind('mouseenter mouseleave'); - // $pp_gallery.hide(); - } - } - - function _build_overlay(caller){ - // Inject Social Tool markup into General markup - if(settings.social_tools) - facebook_like_link = settings.social_tools.replace('{location_href}', encodeURIComponent(location.href)); - - settings.markup = settings.markup.replace('{pp_social}',''); - - $('body').append(settings.markup); // Inject the markup - - $pp_pic_holder = $('.pp_pic_holder') , $ppt = $('.ppt'), $pp_overlay = $('div.pp_overlay'); // Set my global selectors - - // Inject the inline gallery! - if(isSet && settings.overlay_gallery) { - currentGalleryPage = 0; - toInject = ""; - for (var i=0; i < pp_images.length; i++) { - if(!pp_images[i].match(/\b(jpg|jpeg|png|gif)\b/gi)){ - classname = 'default'; - img_src = ''; - }else{ - classname = ''; - img_src = pp_images[i]; - } - toInject += "
  • "; - }; - - toInject = settings.gallery_markup.replace(/{gallery}/g,toInject); - - $pp_pic_holder.find('#pp_full_res').after(toInject); - - $pp_gallery = $('.pp_pic_holder .pp_gallery'), $pp_gallery_li = $pp_gallery.find('li'); // Set the gallery selectors - - $pp_gallery.find('.pp_arrow_next').click(function(){ - $.prettyPhoto.changeGalleryPage('next'); - $.prettyPhoto.stopSlideshow(); - return false; - }); - - $pp_gallery.find('.pp_arrow_previous').click(function(){ - $.prettyPhoto.changeGalleryPage('previous'); - $.prettyPhoto.stopSlideshow(); - return false; - }); - - $pp_pic_holder.find('.pp_content').hover( - function(){ - $pp_pic_holder.find('.pp_gallery:not(.disabled)').fadeIn(); - }, - function(){ - $pp_pic_holder.find('.pp_gallery:not(.disabled)').fadeOut(); - }); - - itemWidth = 52+5; // 52 beign the thumb width, 5 being the right margin. - $pp_gallery_li.each(function(i){ - $(this) - .find('a') - .click(function(){ - $.prettyPhoto.changePage(i); - $.prettyPhoto.stopSlideshow(); - return false; - }); - }); - }; - - - // Inject the play/pause if it's a slideshow - if(settings.slideshow){ - $pp_pic_holder.find('.pp_nav').prepend('Play') - $pp_pic_holder.find('.pp_nav .pp_play').click(function(){ - $.prettyPhoto.startSlideshow(); - return false; - }); - } - - $pp_pic_holder.attr('class','pp_pic_holder ' + settings.theme); // Set the proper theme - - $pp_overlay - .css({ - 'opacity':0, - 'height':$(document).height(), - 'width':$(window).width() - }) - .bind('click',function(){ - if(!settings.modal) $.prettyPhoto.close(); - }); - - $('a.pp_close').bind('click',function(){ $.prettyPhoto.close(); return false; }); - - - if(settings.allow_expand) { - $('a.pp_expand').bind('click',function(e){ - // Expand the image - if($(this).hasClass('pp_expand')){ - $(this).removeClass('pp_expand').addClass('pp_contract'); - doresize = false; - }else{ - $(this).removeClass('pp_contract').addClass('pp_expand'); - doresize = true; - }; - - _hideContent(function(){ $.prettyPhoto.open(); }); - - return false; - }); - } - - $pp_pic_holder.find('.pp_previous, .pp_nav .pp_arrow_previous').bind('click',function(){ - $.prettyPhoto.changePage('previous'); - $.prettyPhoto.stopSlideshow(); - return false; - }); - - $pp_pic_holder.find('.pp_next, .pp_nav .pp_arrow_next').bind('click',function(){ - $.prettyPhoto.changePage('next'); - $.prettyPhoto.stopSlideshow(); - return false; - }); - - _center_overlay(); // Center it - }; - - if(!pp_alreadyInitialized && getHashtag()){ - pp_alreadyInitialized = true; - - // Grab the rel index to trigger the click on the correct element - hashIndex = getHashtag(); - hashRel = hashIndex; - hashIndex = hashIndex.substring(hashIndex.indexOf('/')+1,hashIndex.length-1); - hashRel = hashRel.substring(0,hashRel.indexOf('/')); - - // Little timeout to make sure all the prettyPhoto initialize scripts has been run. - // Useful in the event the page contain several init scripts. - setTimeout(function(){ $("a["+pp_settings.hook+"^='"+hashRel+"']:eq("+hashIndex+")").trigger('click'); },50); - } - - return this.unbind('click.prettyphoto').bind('click.prettyphoto',$.prettyPhoto.initialize); // Return the jQuery object for chaining. The unbind method is used to avoid click conflict when the plugin is called more than once - }; - - function getHashtag(){ - var url = location.href; - hashtag = (url.indexOf('#prettyPhoto') !== -1) ? decodeURI(url.substring(url.indexOf('#prettyPhoto')+1,url.length)) : false; - - return hashtag; - }; - - function setHashtag(){ - if(typeof theRel == 'undefined') return; // theRel is set on normal calls, it's impossible to deeplink using the API - location.hash = theRel + '/'+rel_index+'/'; - }; - - function clearHashtag(){ - if ( location.href.indexOf('#prettyPhoto') !== -1 ) location.hash = "prettyPhoto"; - } - - function getParam(name,url){ - name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); - var regexS = "[\\?&]"+name+"=([^&#]*)"; - var regex = new RegExp( regexS ); - var results = regex.exec( url ); - return ( results == null ) ? "" : results[1]; - } - -})(jQuery); - -var pp_alreadyInitialized = false; // Used for the deep linking to make sure not to call the same function several times. diff --git a/mamweb/static/css/prettyPhoto.css b/mamweb/static/prettyPhoto/css/prettyPhoto.css similarity index 51% rename from mamweb/static/css/prettyPhoto.css rename to mamweb/static/prettyPhoto/css/prettyPhoto.css index a7e04122..ae43519b 100644 --- a/mamweb/static/css/prettyPhoto.css +++ b/mamweb/static/prettyPhoto/css/prettyPhoto.css @@ -15,23 +15,23 @@ div.pp_default .pp_bottom .pp_middle, div.pp_default .pp_bottom .pp_right { height: 13px; } - div.pp_default .pp_top .pp_left { background: url(../images/prettyPhoto/default/sprite.png) -78px -93px no-repeat; } /* Top left corner */ - div.pp_default .pp_top .pp_middle { background: url(../images/prettyPhoto/default/sprite_x.png) top left repeat-x; } /* Top pattern/color */ - div.pp_default .pp_top .pp_right { background: url(../images/prettyPhoto/default/sprite.png) -112px -93px no-repeat; } /* Top right corner */ + div.pp_default .pp_top .pp_left { background: url(../images/default/sprite.png) -78px -93px no-repeat; } /* Top left corner */ + div.pp_default .pp_top .pp_middle { background: url(../images/default/sprite_x.png) top left repeat-x; } /* Top pattern/color */ + div.pp_default .pp_top .pp_right { background: url(../images/default/sprite.png) -112px -93px no-repeat; } /* Top right corner */ div.pp_default .pp_content .ppt { color: #f8f8f8; } - div.pp_default .pp_content_container .pp_left { background: url(../images/prettyPhoto/default/sprite_y.png) -7px 0 repeat-y; padding-left: 13px; } - div.pp_default .pp_content_container .pp_right { background: url(../images/prettyPhoto/default/sprite_y.png) top right repeat-y; padding-right: 13px; } + div.pp_default .pp_content_container .pp_left { background: url(../images/default/sprite_y.png) -7px 0 repeat-y; padding-left: 13px; } + div.pp_default .pp_content_container .pp_right { background: url(../images/default/sprite_y.png) top right repeat-y; padding-right: 13px; } div.pp_default .pp_content { background-color: #fff; } /* Content background */ - div.pp_default .pp_next:hover { background: url(../images/prettyPhoto/default/sprite_next.png) center right no-repeat; cursor: pointer; } /* Next button */ - div.pp_default .pp_previous:hover { background: url(../images/prettyPhoto/default/sprite_prev.png) center left no-repeat; cursor: pointer; } /* Previous button */ - div.pp_default .pp_expand { background: url(../images/prettyPhoto/default/sprite.png) 0 -29px no-repeat; cursor: pointer; width: 28px; height: 28px; } /* Expand button */ - div.pp_default .pp_expand:hover { background: url(../images/prettyPhoto/default/sprite.png) 0 -56px no-repeat; cursor: pointer; } /* Expand button hover */ - div.pp_default .pp_contract { background: url(../images/prettyPhoto/default/sprite.png) 0 -84px no-repeat; cursor: pointer; width: 28px; height: 28px; } /* Contract button */ - div.pp_default .pp_contract:hover { background: url(../images/prettyPhoto/default/sprite.png) 0 -113px no-repeat; cursor: pointer; } /* Contract button hover */ - div.pp_default .pp_close { width: 30px; height: 30px; background: url(../images/prettyPhoto/default/sprite.png) 2px 1px no-repeat; cursor: pointer; } /* Close button */ + div.pp_default .pp_next:hover { background: url(../images/default/sprite_next.png) center right no-repeat; cursor: pointer; } /* Next button */ + div.pp_default .pp_previous:hover { background: url(../images/default/sprite_prev.png) center left no-repeat; cursor: pointer; } /* Previous button */ + div.pp_default .pp_expand { background: url(../images/default/sprite.png) 0 -29px no-repeat; cursor: pointer; width: 28px; height: 28px; } /* Expand button */ + div.pp_default .pp_expand:hover { background: url(../images/default/sprite.png) 0 -56px no-repeat; cursor: pointer; } /* Expand button hover */ + div.pp_default .pp_contract { background: url(../images/default/sprite.png) 0 -84px no-repeat; cursor: pointer; width: 28px; height: 28px; } /* Contract button */ + div.pp_default .pp_contract:hover { background: url(../images/default/sprite.png) 0 -113px no-repeat; cursor: pointer; } /* Contract button hover */ + div.pp_default .pp_close { width: 30px; height: 30px; background: url(../images/default/sprite.png) 2px 1px no-repeat; cursor: pointer; } /* Close button */ div.pp_default #pp_full_res .pp_inline { color: #000; } - div.pp_default .pp_gallery ul li a { background: url(../images/prettyPhoto/default/default_thumb.png) center center #f8f8f8; border:1px solid #aaa; } + div.pp_default .pp_gallery ul li a { background: url(../images/default/default_thumb.png) center center #f8f8f8; border:1px solid #aaa; } div.pp_default .pp_gallery ul li a:hover, div.pp_default .pp_gallery ul li.selected a { border-color: #fff; } div.pp_default .pp_social { margin-top: 7px; } @@ -39,11 +39,11 @@ div.pp_default .pp_gallery a.pp_arrow_previous, div.pp_default .pp_gallery a.pp_arrow_next { position: static; left: auto; } div.pp_default .pp_nav .pp_play, - div.pp_default .pp_nav .pp_pause { background: url(../images/prettyPhoto/default/sprite.png) -51px 1px no-repeat; height:30px; width:30px; } + div.pp_default .pp_nav .pp_pause { background: url(../images/default/sprite.png) -51px 1px no-repeat; height:30px; width:30px; } div.pp_default .pp_nav .pp_pause { background-position: -51px -29px; } div.pp_default .pp_details { position: relative; } div.pp_default a.pp_arrow_previous, - div.pp_default a.pp_arrow_next { background: url(../images/prettyPhoto/default/sprite.png) -31px -3px no-repeat; height: 20px; margin: 4px 0 0 0; width: 20px; } + div.pp_default a.pp_arrow_next { background: url(../images/default/sprite.png) -31px -3px no-repeat; height: 20px; margin: 4px 0 0 0; width: 20px; } div.pp_default a.pp_arrow_next { left: 52px; background-position: -82px -3px; } /* The next arrow in the bottom nav */ div.pp_default .pp_content_container .pp_details { margin-top: 5px; } div.pp_default .pp_nav { clear: none; height: 30px; width: 110px; position: relative; } @@ -53,11 +53,11 @@ div.pp_default .pp_description{ font-size: 11px; font-weight: bold; line-height: 14px; margin: 5px 50px 5px 0; } - div.pp_default .pp_bottom .pp_left { background: url(../images/prettyPhoto/default/sprite.png) -78px -127px no-repeat; } /* Bottom left corner */ - div.pp_default .pp_bottom .pp_middle { background: url(../images/prettyPhoto/default/sprite_x.png) bottom left repeat-x; } /* Bottom pattern/color */ - div.pp_default .pp_bottom .pp_right { background: url(../images/prettyPhoto/default/sprite.png) -112px -127px no-repeat; } /* Bottom right corner */ + div.pp_default .pp_bottom .pp_left { background: url(../images/default/sprite.png) -78px -127px no-repeat; } /* Bottom left corner */ + div.pp_default .pp_bottom .pp_middle { background: url(../images/default/sprite_x.png) bottom left repeat-x; } /* Bottom pattern/color */ + div.pp_default .pp_bottom .pp_right { background: url(../images/default/sprite.png) -112px -127px no-repeat; } /* Bottom right corner */ - div.pp_default .pp_loaderIcon { background: url(../images/prettyPhoto/default/loader.gif) center center no-repeat; } /* Loader icon */ + div.pp_default .pp_loaderIcon { background: url(../images/default/loader.gif) center center no-repeat; } /* Loader icon */ /* ---------------------------------- @@ -65,58 +65,58 @@ ----------------------------------- */ - div.light_rounded .pp_top .pp_left { background: url(../images/prettyPhoto/light_rounded/sprite.png) -88px -53px no-repeat; } /* Top left corner */ + div.light_rounded .pp_top .pp_left { background: url(../images/light_rounded/sprite.png) -88px -53px no-repeat; } /* Top left corner */ div.light_rounded .pp_top .pp_middle { background: #fff; } /* Top pattern/color */ - div.light_rounded .pp_top .pp_right { background: url(../images/prettyPhoto/light_rounded/sprite.png) -110px -53px no-repeat; } /* Top right corner */ + div.light_rounded .pp_top .pp_right { background: url(../images/light_rounded/sprite.png) -110px -53px no-repeat; } /* Top right corner */ div.light_rounded .pp_content .ppt { color: #000; } div.light_rounded .pp_content_container .pp_left, div.light_rounded .pp_content_container .pp_right { background: #fff; } div.light_rounded .pp_content { background-color: #fff; } /* Content background */ - div.light_rounded .pp_next:hover { background: url(../images/prettyPhoto/light_rounded/btnNext.png) center right no-repeat; cursor: pointer; } /* Next button */ - div.light_rounded .pp_previous:hover { background: url(../images/prettyPhoto/light_rounded/btnPrevious.png) center left no-repeat; cursor: pointer; } /* Previous button */ - div.light_rounded .pp_expand { background: url(../images/prettyPhoto/light_rounded/sprite.png) -31px -26px no-repeat; cursor: pointer; } /* Expand button */ - div.light_rounded .pp_expand:hover { background: url(../images/prettyPhoto/light_rounded/sprite.png) -31px -47px no-repeat; cursor: pointer; } /* Expand button hover */ - div.light_rounded .pp_contract { background: url(../images/prettyPhoto/light_rounded/sprite.png) 0 -26px no-repeat; cursor: pointer; } /* Contract button */ - div.light_rounded .pp_contract:hover { background: url(../images/prettyPhoto/light_rounded/sprite.png) 0 -47px no-repeat; cursor: pointer; } /* Contract button hover */ - div.light_rounded .pp_close { width: 75px; height: 22px; background: url(../images/prettyPhoto/light_rounded/sprite.png) -1px -1px no-repeat; cursor: pointer; } /* Close button */ + div.light_rounded .pp_next:hover { background: url(../images/light_rounded/btnNext.png) center right no-repeat; cursor: pointer; } /* Next button */ + div.light_rounded .pp_previous:hover { background: url(../images/light_rounded/btnPrevious.png) center left no-repeat; cursor: pointer; } /* Previous button */ + div.light_rounded .pp_expand { background: url(../images/light_rounded/sprite.png) -31px -26px no-repeat; cursor: pointer; } /* Expand button */ + div.light_rounded .pp_expand:hover { background: url(../images/light_rounded/sprite.png) -31px -47px no-repeat; cursor: pointer; } /* Expand button hover */ + div.light_rounded .pp_contract { background: url(../images/light_rounded/sprite.png) 0 -26px no-repeat; cursor: pointer; } /* Contract button */ + div.light_rounded .pp_contract:hover { background: url(../images/light_rounded/sprite.png) 0 -47px no-repeat; cursor: pointer; } /* Contract button hover */ + div.light_rounded .pp_close { width: 75px; height: 22px; background: url(../images/light_rounded/sprite.png) -1px -1px no-repeat; cursor: pointer; } /* Close button */ div.light_rounded .pp_details { position: relative; } div.light_rounded .pp_description { margin-right: 85px; } div.light_rounded #pp_full_res .pp_inline { color: #000; } div.light_rounded .pp_gallery a.pp_arrow_previous, div.light_rounded .pp_gallery a.pp_arrow_next { margin-top: 12px !important; } - div.light_rounded .pp_nav .pp_play { background: url(../images/prettyPhoto/light_rounded/sprite.png) -1px -100px no-repeat; height: 15px; width: 14px; } - div.light_rounded .pp_nav .pp_pause { background: url(../images/prettyPhoto/light_rounded/sprite.png) -24px -100px no-repeat; height: 15px; width: 14px; } + div.light_rounded .pp_nav .pp_play { background: url(../images/light_rounded/sprite.png) -1px -100px no-repeat; height: 15px; width: 14px; } + div.light_rounded .pp_nav .pp_pause { background: url(../images/light_rounded/sprite.png) -24px -100px no-repeat; height: 15px; width: 14px; } - div.light_rounded .pp_arrow_previous { background: url(../images/prettyPhoto/light_rounded/sprite.png) 0 -71px no-repeat; } /* The previous arrow in the bottom nav */ + div.light_rounded .pp_arrow_previous { background: url(../images/light_rounded/sprite.png) 0 -71px no-repeat; } /* The previous arrow in the bottom nav */ div.light_rounded .pp_arrow_previous.disabled { background-position: 0 -87px; cursor: default; } - div.light_rounded .pp_arrow_next { background: url(../images/prettyPhoto/light_rounded/sprite.png) -22px -71px no-repeat; } /* The next arrow in the bottom nav */ + div.light_rounded .pp_arrow_next { background: url(../images/light_rounded/sprite.png) -22px -71px no-repeat; } /* The next arrow in the bottom nav */ div.light_rounded .pp_arrow_next.disabled { background-position: -22px -87px; cursor: default; } - div.light_rounded .pp_bottom .pp_left { background: url(../images/prettyPhoto/light_rounded/sprite.png) -88px -80px no-repeat; } /* Bottom left corner */ + div.light_rounded .pp_bottom .pp_left { background: url(../images/light_rounded/sprite.png) -88px -80px no-repeat; } /* Bottom left corner */ div.light_rounded .pp_bottom .pp_middle { background: #fff; } /* Bottom pattern/color */ - div.light_rounded .pp_bottom .pp_right { background: url(../images/prettyPhoto/light_rounded/sprite.png) -110px -80px no-repeat; } /* Bottom right corner */ + div.light_rounded .pp_bottom .pp_right { background: url(../images/light_rounded/sprite.png) -110px -80px no-repeat; } /* Bottom right corner */ - div.light_rounded .pp_loaderIcon { background: url(../images/prettyPhoto/light_rounded/loader.gif) center center no-repeat; } /* Loader icon */ + div.light_rounded .pp_loaderIcon { background: url(../images/light_rounded/loader.gif) center center no-repeat; } /* Loader icon */ /* ---------------------------------- Dark Rounded Theme ----------------------------------- */ - div.dark_rounded .pp_top .pp_left { background: url(../images/prettyPhoto/dark_rounded/sprite.png) -88px -53px no-repeat; } /* Top left corner */ - div.dark_rounded .pp_top .pp_middle { background: url(../images/prettyPhoto/dark_rounded/contentPattern.png) top left repeat; } /* Top pattern/color */ - div.dark_rounded .pp_top .pp_right { background: url(../images/prettyPhoto/dark_rounded/sprite.png) -110px -53px no-repeat; } /* Top right corner */ + div.dark_rounded .pp_top .pp_left { background: url(../images/dark_rounded/sprite.png) -88px -53px no-repeat; } /* Top left corner */ + div.dark_rounded .pp_top .pp_middle { background: url(../images/dark_rounded/contentPattern.png) top left repeat; } /* Top pattern/color */ + div.dark_rounded .pp_top .pp_right { background: url(../images/dark_rounded/sprite.png) -110px -53px no-repeat; } /* Top right corner */ - div.dark_rounded .pp_content_container .pp_left { background: url(../images/prettyPhoto/dark_rounded/contentPattern.png) top left repeat-y; } /* Left Content background */ - div.dark_rounded .pp_content_container .pp_right { background: url(../images/prettyPhoto/dark_rounded/contentPattern.png) top right repeat-y; } /* Right Content background */ - div.dark_rounded .pp_content { background: url(../images/prettyPhoto/dark_rounded/contentPattern.png) top left repeat; } /* Content background */ - div.dark_rounded .pp_next:hover { background: url(../images/prettyPhoto/dark_rounded/btnNext.png) center right no-repeat; cursor: pointer; } /* Next button */ - div.dark_rounded .pp_previous:hover { background: url(../images/prettyPhoto/dark_rounded/btnPrevious.png) center left no-repeat; cursor: pointer; } /* Previous button */ - div.dark_rounded .pp_expand { background: url(../images/prettyPhoto/dark_rounded/sprite.png) -31px -26px no-repeat; cursor: pointer; } /* Expand button */ - div.dark_rounded .pp_expand:hover { background: url(../images/prettyPhoto/dark_rounded/sprite.png) -31px -47px no-repeat; cursor: pointer; } /* Expand button hover */ - div.dark_rounded .pp_contract { background: url(../images/prettyPhoto/dark_rounded/sprite.png) 0 -26px no-repeat; cursor: pointer; } /* Contract button */ - div.dark_rounded .pp_contract:hover { background: url(../images/prettyPhoto/dark_rounded/sprite.png) 0 -47px no-repeat; cursor: pointer; } /* Contract button hover */ - div.dark_rounded .pp_close { width: 75px; height: 22px; background: url(../images/prettyPhoto/dark_rounded/sprite.png) -1px -1px no-repeat; cursor: pointer; } /* Close button */ + div.dark_rounded .pp_content_container .pp_left { background: url(../images/dark_rounded/contentPattern.png) top left repeat-y; } /* Left Content background */ + div.dark_rounded .pp_content_container .pp_right { background: url(../images/dark_rounded/contentPattern.png) top right repeat-y; } /* Right Content background */ + div.dark_rounded .pp_content { background: url(../images/dark_rounded/contentPattern.png) top left repeat; } /* Content background */ + div.dark_rounded .pp_next:hover { background: url(../images/dark_rounded/btnNext.png) center right no-repeat; cursor: pointer; } /* Next button */ + div.dark_rounded .pp_previous:hover { background: url(../images/dark_rounded/btnPrevious.png) center left no-repeat; cursor: pointer; } /* Previous button */ + div.dark_rounded .pp_expand { background: url(../images/dark_rounded/sprite.png) -31px -26px no-repeat; cursor: pointer; } /* Expand button */ + div.dark_rounded .pp_expand:hover { background: url(../images/dark_rounded/sprite.png) -31px -47px no-repeat; cursor: pointer; } /* Expand button hover */ + div.dark_rounded .pp_contract { background: url(../images/dark_rounded/sprite.png) 0 -26px no-repeat; cursor: pointer; } /* Contract button */ + div.dark_rounded .pp_contract:hover { background: url(../images/dark_rounded/sprite.png) 0 -47px no-repeat; cursor: pointer; } /* Contract button hover */ + div.dark_rounded .pp_close { width: 75px; height: 22px; background: url(../images/dark_rounded/sprite.png) -1px -1px no-repeat; cursor: pointer; } /* Close button */ div.dark_rounded .pp_details { position: relative; } div.dark_rounded .pp_description { margin-right: 85px; } div.dark_rounded .currentTextHolder { color: #c4c4c4; } @@ -124,19 +124,19 @@ div.dark_rounded #pp_full_res .pp_inline { color: #fff; } div.dark_rounded .pp_gallery a.pp_arrow_previous, div.dark_rounded .pp_gallery a.pp_arrow_next { margin-top: 12px !important; } - div.dark_rounded .pp_nav .pp_play { background: url(../images/prettyPhoto/dark_rounded/sprite.png) -1px -100px no-repeat; height: 15px; width: 14px; } - div.dark_rounded .pp_nav .pp_pause { background: url(../images/prettyPhoto/dark_rounded/sprite.png) -24px -100px no-repeat; height: 15px; width: 14px; } + div.dark_rounded .pp_nav .pp_play { background: url(../images/dark_rounded/sprite.png) -1px -100px no-repeat; height: 15px; width: 14px; } + div.dark_rounded .pp_nav .pp_pause { background: url(../images/dark_rounded/sprite.png) -24px -100px no-repeat; height: 15px; width: 14px; } - div.dark_rounded .pp_arrow_previous { background: url(../images/prettyPhoto/dark_rounded/sprite.png) 0 -71px no-repeat; } /* The previous arrow in the bottom nav */ + div.dark_rounded .pp_arrow_previous { background: url(../images/dark_rounded/sprite.png) 0 -71px no-repeat; } /* The previous arrow in the bottom nav */ div.dark_rounded .pp_arrow_previous.disabled { background-position: 0 -87px; cursor: default; } - div.dark_rounded .pp_arrow_next { background: url(../images/prettyPhoto/dark_rounded/sprite.png) -22px -71px no-repeat; } /* The next arrow in the bottom nav */ + div.dark_rounded .pp_arrow_next { background: url(../images/dark_rounded/sprite.png) -22px -71px no-repeat; } /* The next arrow in the bottom nav */ div.dark_rounded .pp_arrow_next.disabled { background-position: -22px -87px; cursor: default; } - div.dark_rounded .pp_bottom .pp_left { background: url(../images/prettyPhoto/dark_rounded/sprite.png) -88px -80px no-repeat; } /* Bottom left corner */ - div.dark_rounded .pp_bottom .pp_middle { background: url(../images/prettyPhoto/dark_rounded/contentPattern.png) top left repeat; } /* Bottom pattern/color */ - div.dark_rounded .pp_bottom .pp_right { background: url(../images/prettyPhoto/dark_rounded/sprite.png) -110px -80px no-repeat; } /* Bottom right corner */ + div.dark_rounded .pp_bottom .pp_left { background: url(../images/dark_rounded/sprite.png) -88px -80px no-repeat; } /* Bottom left corner */ + div.dark_rounded .pp_bottom .pp_middle { background: url(../images/dark_rounded/contentPattern.png) top left repeat; } /* Bottom pattern/color */ + div.dark_rounded .pp_bottom .pp_right { background: url(../images/dark_rounded/sprite.png) -110px -80px no-repeat; } /* Bottom right corner */ - div.dark_rounded .pp_loaderIcon { background: url(../images/prettyPhoto/dark_rounded/loader.gif) center center no-repeat; } /* Loader icon */ + div.dark_rounded .pp_loaderIcon { background: url(../images/dark_rounded/loader.gif) center center no-repeat; } /* Loader icon */ /* ---------------------------------- @@ -150,29 +150,29 @@ div.dark_square .currentTextHolder { color: #c4c4c4; } div.dark_square .pp_description { color: #fff; } - div.dark_square .pp_loaderIcon { background: url(../images/prettyPhoto/dark_square/loader.gif) center center no-repeat; } /* Loader icon */ + div.dark_square .pp_loaderIcon { background: url(../images/dark_square/loader.gif) center center no-repeat; } /* Loader icon */ - div.dark_square .pp_expand { background: url(../images/prettyPhoto/dark_square/sprite.png) -31px -26px no-repeat; cursor: pointer; } /* Expand button */ - div.dark_square .pp_expand:hover { background: url(../images/prettyPhoto/dark_square/sprite.png) -31px -47px no-repeat; cursor: pointer; } /* Expand button hover */ - div.dark_square .pp_contract { background: url(../images/prettyPhoto/dark_square/sprite.png) 0 -26px no-repeat; cursor: pointer; } /* Contract button */ - div.dark_square .pp_contract:hover { background: url(../images/prettyPhoto/dark_square/sprite.png) 0 -47px no-repeat; cursor: pointer; } /* Contract button hover */ - div.dark_square .pp_close { width: 75px; height: 22px; background: url(../images/prettyPhoto/dark_square/sprite.png) -1px -1px no-repeat; cursor: pointer; } /* Close button */ + div.dark_square .pp_expand { background: url(../images/dark_square/sprite.png) -31px -26px no-repeat; cursor: pointer; } /* Expand button */ + div.dark_square .pp_expand:hover { background: url(../images/dark_square/sprite.png) -31px -47px no-repeat; cursor: pointer; } /* Expand button hover */ + div.dark_square .pp_contract { background: url(../images/dark_square/sprite.png) 0 -26px no-repeat; cursor: pointer; } /* Contract button */ + div.dark_square .pp_contract:hover { background: url(../images/dark_square/sprite.png) 0 -47px no-repeat; cursor: pointer; } /* Contract button hover */ + div.dark_square .pp_close { width: 75px; height: 22px; background: url(../images/dark_square/sprite.png) -1px -1px no-repeat; cursor: pointer; } /* Close button */ div.dark_square .pp_details { position: relative; } div.dark_square .pp_description { margin: 0 85px 0 0; } div.dark_square #pp_full_res .pp_inline { color: #fff; } div.dark_square .pp_gallery a.pp_arrow_previous, div.dark_square .pp_gallery a.pp_arrow_next { margin-top: 12px !important; } div.dark_square .pp_nav { clear: none; } - div.dark_square .pp_nav .pp_play { background: url(../images/prettyPhoto/dark_square/sprite.png) -1px -100px no-repeat; height: 15px; width: 14px; } - div.dark_square .pp_nav .pp_pause { background: url(../images/prettyPhoto/dark_square/sprite.png) -24px -100px no-repeat; height: 15px; width: 14px; } + div.dark_square .pp_nav .pp_play { background: url(../images/dark_square/sprite.png) -1px -100px no-repeat; height: 15px; width: 14px; } + div.dark_square .pp_nav .pp_pause { background: url(../images/dark_square/sprite.png) -24px -100px no-repeat; height: 15px; width: 14px; } - div.dark_square .pp_arrow_previous { background: url(../images/prettyPhoto/dark_square/sprite.png) 0 -71px no-repeat; } /* The previous arrow in the bottom nav */ + div.dark_square .pp_arrow_previous { background: url(../images/dark_square/sprite.png) 0 -71px no-repeat; } /* The previous arrow in the bottom nav */ div.dark_square .pp_arrow_previous.disabled { background-position: 0 -87px; cursor: default; } - div.dark_square .pp_arrow_next { background: url(../images/prettyPhoto/dark_square/sprite.png) -22px -71px no-repeat; } /* The next arrow in the bottom nav */ + div.dark_square .pp_arrow_next { background: url(../images/dark_square/sprite.png) -22px -71px no-repeat; } /* The next arrow in the bottom nav */ div.dark_square .pp_arrow_next.disabled { background-position: -22px -87px; cursor: default; } - div.dark_square .pp_next:hover { background: url(../images/prettyPhoto/dark_square/btnNext.png) center right no-repeat; cursor: pointer; } /* Next button */ - div.dark_square .pp_previous:hover { background: url(../images/prettyPhoto/dark_square/btnPrevious.png) center left no-repeat; cursor: pointer; } /* Previous button */ + div.dark_square .pp_next:hover { background: url(../images/dark_square/btnNext.png) center right no-repeat; cursor: pointer; } /* Next button */ + div.dark_square .pp_previous:hover { background: url(../images/dark_square/btnPrevious.png) center left no-repeat; cursor: pointer; } /* Previous button */ /* ---------------------------------- @@ -185,67 +185,67 @@ div.light_square .pp_content { background: #fff; } div.light_square .pp_content .ppt { color: #000; } - div.light_square .pp_expand { background: url(../images/prettyPhoto/light_square/sprite.png) -31px -26px no-repeat; cursor: pointer; } /* Expand button */ - div.light_square .pp_expand:hover { background: url(../images/prettyPhoto/light_square/sprite.png) -31px -47px no-repeat; cursor: pointer; } /* Expand button hover */ - div.light_square .pp_contract { background: url(../images/prettyPhoto/light_square/sprite.png) 0 -26px no-repeat; cursor: pointer; } /* Contract button */ - div.light_square .pp_contract:hover { background: url(../images/prettyPhoto/light_square/sprite.png) 0 -47px no-repeat; cursor: pointer; } /* Contract button hover */ - div.light_square .pp_close { width: 75px; height: 22px; background: url(../images/prettyPhoto/light_square/sprite.png) -1px -1px no-repeat; cursor: pointer; } /* Close button */ + div.light_square .pp_expand { background: url(../images/light_square/sprite.png) -31px -26px no-repeat; cursor: pointer; } /* Expand button */ + div.light_square .pp_expand:hover { background: url(../images/light_square/sprite.png) -31px -47px no-repeat; cursor: pointer; } /* Expand button hover */ + div.light_square .pp_contract { background: url(../images/light_square/sprite.png) 0 -26px no-repeat; cursor: pointer; } /* Contract button */ + div.light_square .pp_contract:hover { background: url(../images/light_square/sprite.png) 0 -47px no-repeat; cursor: pointer; } /* Contract button hover */ + div.light_square .pp_close { width: 75px; height: 22px; background: url(../images/light_square/sprite.png) -1px -1px no-repeat; cursor: pointer; } /* Close button */ div.light_square .pp_details { position: relative; } div.light_square .pp_description { margin-right: 85px; } div.light_square #pp_full_res .pp_inline { color: #000; } div.light_square .pp_gallery a.pp_arrow_previous, div.light_square .pp_gallery a.pp_arrow_next { margin-top: 12px !important; } - div.light_square .pp_nav .pp_play { background: url(../images/prettyPhoto/light_square/sprite.png) -1px -100px no-repeat; height: 15px; width: 14px; } - div.light_square .pp_nav .pp_pause { background: url(../images/prettyPhoto/light_square/sprite.png) -24px -100px no-repeat; height: 15px; width: 14px; } + div.light_square .pp_nav .pp_play { background: url(../images/light_square/sprite.png) -1px -100px no-repeat; height: 15px; width: 14px; } + div.light_square .pp_nav .pp_pause { background: url(../images/light_square/sprite.png) -24px -100px no-repeat; height: 15px; width: 14px; } - div.light_square .pp_arrow_previous { background: url(../images/prettyPhoto/light_square/sprite.png) 0 -71px no-repeat; } /* The previous arrow in the bottom nav */ + div.light_square .pp_arrow_previous { background: url(../images/light_square/sprite.png) 0 -71px no-repeat; } /* The previous arrow in the bottom nav */ div.light_square .pp_arrow_previous.disabled { background-position: 0 -87px; cursor: default; } - div.light_square .pp_arrow_next { background: url(../images/prettyPhoto/light_square/sprite.png) -22px -71px no-repeat; } /* The next arrow in the bottom nav */ + div.light_square .pp_arrow_next { background: url(../images/light_square/sprite.png) -22px -71px no-repeat; } /* The next arrow in the bottom nav */ div.light_square .pp_arrow_next.disabled { background-position: -22px -87px; cursor: default; } - div.light_square .pp_next:hover { background: url(../images/prettyPhoto/light_square/btnNext.png) center right no-repeat; cursor: pointer; } /* Next button */ - div.light_square .pp_previous:hover { background: url(../images/prettyPhoto/light_square/btnPrevious.png) center left no-repeat; cursor: pointer; } /* Previous button */ + div.light_square .pp_next:hover { background: url(../images/light_square/btnNext.png) center right no-repeat; cursor: pointer; } /* Next button */ + div.light_square .pp_previous:hover { background: url(../images/light_square/btnPrevious.png) center left no-repeat; cursor: pointer; } /* Previous button */ - div.light_square .pp_loaderIcon { background: url(../images/prettyPhoto/light_rounded/loader.gif) center center no-repeat; } /* Loader icon */ + div.light_square .pp_loaderIcon { background: url(../images/light_rounded/loader.gif) center center no-repeat; } /* Loader icon */ /* ---------------------------------- Facebook style Theme ----------------------------------- */ - div.facebook .pp_top .pp_left { background: url(../images/prettyPhoto/facebook/sprite.png) -88px -53px no-repeat; } /* Top left corner */ - div.facebook .pp_top .pp_middle { background: url(../images/prettyPhoto/facebook/contentPatternTop.png) top left repeat-x; } /* Top pattern/color */ - div.facebook .pp_top .pp_right { background: url(../images/prettyPhoto/facebook/sprite.png) -110px -53px no-repeat; } /* Top right corner */ + div.facebook .pp_top .pp_left { background: url(../images/facebook/sprite.png) -88px -53px no-repeat; } /* Top left corner */ + div.facebook .pp_top .pp_middle { background: url(../images/facebook/contentPatternTop.png) top left repeat-x; } /* Top pattern/color */ + div.facebook .pp_top .pp_right { background: url(../images/facebook/sprite.png) -110px -53px no-repeat; } /* Top right corner */ div.facebook .pp_content .ppt { color: #000; } - div.facebook .pp_content_container .pp_left { background: url(../images/prettyPhoto/facebook/contentPatternLeft.png) top left repeat-y; } /* Content background */ - div.facebook .pp_content_container .pp_right { background: url(../images/prettyPhoto/facebook/contentPatternRight.png) top right repeat-y; } /* Content background */ + div.facebook .pp_content_container .pp_left { background: url(../images/facebook/contentPatternLeft.png) top left repeat-y; } /* Content background */ + div.facebook .pp_content_container .pp_right { background: url(../images/facebook/contentPatternRight.png) top right repeat-y; } /* Content background */ div.facebook .pp_content { background: #fff; } /* Content background */ - div.facebook .pp_expand { background: url(../images/prettyPhoto/facebook/sprite.png) -31px -26px no-repeat; cursor: pointer; } /* Expand button */ - div.facebook .pp_expand:hover { background: url(../images/prettyPhoto/facebook/sprite.png) -31px -47px no-repeat; cursor: pointer; } /* Expand button hover */ - div.facebook .pp_contract { background: url(../images/prettyPhoto/facebook/sprite.png) 0 -26px no-repeat; cursor: pointer; } /* Contract button */ - div.facebook .pp_contract:hover { background: url(../images/prettyPhoto/facebook/sprite.png) 0 -47px no-repeat; cursor: pointer; } /* Contract button hover */ - div.facebook .pp_close { width: 22px; height: 22px; background: url(../images/prettyPhoto/facebook/sprite.png) -1px -1px no-repeat; cursor: pointer; } /* Close button */ + div.facebook .pp_expand { background: url(../images/facebook/sprite.png) -31px -26px no-repeat; cursor: pointer; } /* Expand button */ + div.facebook .pp_expand:hover { background: url(../images/facebook/sprite.png) -31px -47px no-repeat; cursor: pointer; } /* Expand button hover */ + div.facebook .pp_contract { background: url(../images/facebook/sprite.png) 0 -26px no-repeat; cursor: pointer; } /* Contract button */ + div.facebook .pp_contract:hover { background: url(../images/facebook/sprite.png) 0 -47px no-repeat; cursor: pointer; } /* Contract button hover */ + div.facebook .pp_close { width: 22px; height: 22px; background: url(../images/facebook/sprite.png) -1px -1px no-repeat; cursor: pointer; } /* Close button */ div.facebook .pp_details { position: relative; } div.facebook .pp_description { margin: 0 37px 0 0; } div.facebook #pp_full_res .pp_inline { color: #000; } - div.facebook .pp_loaderIcon { background: url(../images/prettyPhoto/facebook/loader.gif) center center no-repeat; } /* Loader icon */ + div.facebook .pp_loaderIcon { background: url(../images/facebook/loader.gif) center center no-repeat; } /* Loader icon */ - div.facebook .pp_arrow_previous { background: url(../images/prettyPhoto/facebook/sprite.png) 0 -71px no-repeat; height: 22px; margin-top: 0; width: 22px; } /* The previous arrow in the bottom nav */ + div.facebook .pp_arrow_previous { background: url(../images/facebook/sprite.png) 0 -71px no-repeat; height: 22px; margin-top: 0; width: 22px; } /* The previous arrow in the bottom nav */ div.facebook .pp_arrow_previous.disabled { background-position: 0 -96px; cursor: default; } - div.facebook .pp_arrow_next { background: url(../images/prettyPhoto/facebook/sprite.png) -32px -71px no-repeat; height: 22px; margin-top: 0; width: 22px; } /* The next arrow in the bottom nav */ + div.facebook .pp_arrow_next { background: url(../images/facebook/sprite.png) -32px -71px no-repeat; height: 22px; margin-top: 0; width: 22px; } /* The next arrow in the bottom nav */ div.facebook .pp_arrow_next.disabled { background-position: -32px -96px; cursor: default; } div.facebook .pp_nav { margin-top: 0; } div.facebook .pp_nav p { font-size: 15px; padding: 0 3px 0 4px; } - div.facebook .pp_nav .pp_play { background: url(../images/prettyPhoto/facebook/sprite.png) -1px -123px no-repeat; height: 22px; width: 22px; } - div.facebook .pp_nav .pp_pause { background: url(../images/prettyPhoto/facebook/sprite.png) -32px -123px no-repeat; height: 22px; width: 22px; } + div.facebook .pp_nav .pp_play { background: url(../images/facebook/sprite.png) -1px -123px no-repeat; height: 22px; width: 22px; } + div.facebook .pp_nav .pp_pause { background: url(../images/facebook/sprite.png) -32px -123px no-repeat; height: 22px; width: 22px; } - div.facebook .pp_next:hover { background: url(../images/prettyPhoto/facebook/btnNext.png) center right no-repeat; cursor: pointer; } /* Next button */ - div.facebook .pp_previous:hover { background: url(../images/prettyPhoto/facebook/btnPrevious.png) center left no-repeat; cursor: pointer; } /* Previous button */ + div.facebook .pp_next:hover { background: url(../images/facebook/btnNext.png) center right no-repeat; cursor: pointer; } /* Next button */ + div.facebook .pp_previous:hover { background: url(../images/facebook/btnPrevious.png) center left no-repeat; cursor: pointer; } /* Previous button */ - div.facebook .pp_bottom .pp_left { background: url(../images/prettyPhoto/facebook/sprite.png) -88px -80px no-repeat; } /* Bottom left corner */ - div.facebook .pp_bottom .pp_middle { background: url(../images/prettyPhoto/facebook/contentPatternBottom.png) top left repeat-x; } /* Bottom pattern/color */ - div.facebook .pp_bottom .pp_right { background: url(../images/prettyPhoto/facebook/sprite.png) -110px -80px no-repeat; } /* Bottom right corner */ + div.facebook .pp_bottom .pp_left { background: url(../images/facebook/sprite.png) -88px -80px no-repeat; } /* Bottom left corner */ + div.facebook .pp_bottom .pp_middle { background: url(../images/facebook/contentPatternBottom.png) top left repeat-x; } /* Bottom pattern/color */ + div.facebook .pp_bottom .pp_right { background: url(../images/facebook/sprite.png) -110px -80px no-repeat; } /* Bottom right corner */ /* ------------------------------------------------------------------------ @@ -413,7 +413,7 @@ } .pp_gallery li.default a { - background: url(../images/prettyPhoto/facebook/default_thumbnail.gif) 0 0 no-repeat; + background: url(../images/facebook/default_thumbnail.gif) 0 0 no-repeat; display: block; height: 33px; width: 50px; @@ -427,7 +427,7 @@ } a.pp_next { - background: url(../images/prettyPhoto/light_rounded/btnNext.png) 10000px 10000px no-repeat; + background: url(../images/light_rounded/btnNext.png) 10000px 10000px no-repeat; display: block; float: right; height: 100%; @@ -436,7 +436,7 @@ } a.pp_previous { - background: url(../images/prettyPhoto/light_rounded/btnNext.png) 10000px 10000px no-repeat; + background: url(../images/light_rounded/btnNext.png) 10000px 10000px no-repeat; display: block; float: left; height: 100%; @@ -522,4 +522,4 @@ font-size: 17px; margin: 0 0 5px 15px; z-index: 9999; - } \ No newline at end of file + } diff --git a/mamweb/static/images/prettyPhoto/dark_rounded/btnNext.png b/mamweb/static/prettyPhoto/images/dark_rounded/btnNext.png old mode 100755 new mode 100644 similarity index 100% rename from mamweb/static/images/prettyPhoto/dark_rounded/btnNext.png rename to mamweb/static/prettyPhoto/images/dark_rounded/btnNext.png diff --git a/mamweb/static/images/prettyPhoto/dark_rounded/btnPrevious.png b/mamweb/static/prettyPhoto/images/dark_rounded/btnPrevious.png old mode 100755 new mode 100644 similarity index 100% rename from mamweb/static/images/prettyPhoto/dark_rounded/btnPrevious.png rename to mamweb/static/prettyPhoto/images/dark_rounded/btnPrevious.png diff --git a/mamweb/static/images/prettyPhoto/dark_rounded/contentPattern.png b/mamweb/static/prettyPhoto/images/dark_rounded/contentPattern.png old mode 100755 new mode 100644 similarity index 100% rename from mamweb/static/images/prettyPhoto/dark_rounded/contentPattern.png rename to mamweb/static/prettyPhoto/images/dark_rounded/contentPattern.png diff --git a/mamweb/static/images/prettyPhoto/dark_rounded/default_thumbnail.gif b/mamweb/static/prettyPhoto/images/dark_rounded/default_thumbnail.gif old mode 100755 new mode 100644 similarity index 100% rename from mamweb/static/images/prettyPhoto/dark_rounded/default_thumbnail.gif rename to mamweb/static/prettyPhoto/images/dark_rounded/default_thumbnail.gif diff --git a/mamweb/static/images/prettyPhoto/dark_rounded/loader.gif b/mamweb/static/prettyPhoto/images/dark_rounded/loader.gif old mode 100755 new mode 100644 similarity index 100% rename from mamweb/static/images/prettyPhoto/dark_rounded/loader.gif rename to mamweb/static/prettyPhoto/images/dark_rounded/loader.gif diff --git a/mamweb/static/images/prettyPhoto/dark_rounded/sprite.png b/mamweb/static/prettyPhoto/images/dark_rounded/sprite.png old mode 100755 new mode 100644 similarity index 100% rename from mamweb/static/images/prettyPhoto/dark_rounded/sprite.png rename to mamweb/static/prettyPhoto/images/dark_rounded/sprite.png diff --git a/mamweb/static/images/prettyPhoto/dark_square/btnNext.png b/mamweb/static/prettyPhoto/images/dark_square/btnNext.png old mode 100755 new mode 100644 similarity index 100% rename from mamweb/static/images/prettyPhoto/dark_square/btnNext.png rename to mamweb/static/prettyPhoto/images/dark_square/btnNext.png diff --git a/mamweb/static/images/prettyPhoto/dark_square/btnPrevious.png b/mamweb/static/prettyPhoto/images/dark_square/btnPrevious.png old mode 100755 new mode 100644 similarity index 100% rename from mamweb/static/images/prettyPhoto/dark_square/btnPrevious.png rename to mamweb/static/prettyPhoto/images/dark_square/btnPrevious.png diff --git a/mamweb/static/images/prettyPhoto/dark_square/contentPattern.png b/mamweb/static/prettyPhoto/images/dark_square/contentPattern.png old mode 100755 new mode 100644 similarity index 100% rename from mamweb/static/images/prettyPhoto/dark_square/contentPattern.png rename to mamweb/static/prettyPhoto/images/dark_square/contentPattern.png diff --git a/mamweb/static/images/prettyPhoto/dark_square/default_thumbnail.gif b/mamweb/static/prettyPhoto/images/dark_square/default_thumbnail.gif old mode 100755 new mode 100644 similarity index 100% rename from mamweb/static/images/prettyPhoto/dark_square/default_thumbnail.gif rename to mamweb/static/prettyPhoto/images/dark_square/default_thumbnail.gif diff --git a/mamweb/static/images/prettyPhoto/dark_square/loader.gif b/mamweb/static/prettyPhoto/images/dark_square/loader.gif old mode 100755 new mode 100644 similarity index 100% rename from mamweb/static/images/prettyPhoto/dark_square/loader.gif rename to mamweb/static/prettyPhoto/images/dark_square/loader.gif diff --git a/mamweb/static/images/prettyPhoto/dark_square/sprite.png b/mamweb/static/prettyPhoto/images/dark_square/sprite.png old mode 100755 new mode 100644 similarity index 100% rename from mamweb/static/images/prettyPhoto/dark_square/sprite.png rename to mamweb/static/prettyPhoto/images/dark_square/sprite.png diff --git a/mamweb/static/images/prettyPhoto/default/default_thumb.png b/mamweb/static/prettyPhoto/images/default/default_thumb.png similarity index 100% rename from mamweb/static/images/prettyPhoto/default/default_thumb.png rename to mamweb/static/prettyPhoto/images/default/default_thumb.png diff --git a/mamweb/static/images/prettyPhoto/default/loader.gif b/mamweb/static/prettyPhoto/images/default/loader.gif similarity index 100% rename from mamweb/static/images/prettyPhoto/default/loader.gif rename to mamweb/static/prettyPhoto/images/default/loader.gif diff --git a/mamweb/static/images/prettyPhoto/default/sprite.png b/mamweb/static/prettyPhoto/images/default/sprite.png similarity index 100% rename from mamweb/static/images/prettyPhoto/default/sprite.png rename to mamweb/static/prettyPhoto/images/default/sprite.png diff --git a/mamweb/static/images/prettyPhoto/default/sprite_next.png b/mamweb/static/prettyPhoto/images/default/sprite_next.png similarity index 100% rename from mamweb/static/images/prettyPhoto/default/sprite_next.png rename to mamweb/static/prettyPhoto/images/default/sprite_next.png diff --git a/mamweb/static/images/prettyPhoto/default/sprite_prev.png b/mamweb/static/prettyPhoto/images/default/sprite_prev.png similarity index 100% rename from mamweb/static/images/prettyPhoto/default/sprite_prev.png rename to mamweb/static/prettyPhoto/images/default/sprite_prev.png diff --git a/mamweb/static/images/prettyPhoto/default/sprite_x.png b/mamweb/static/prettyPhoto/images/default/sprite_x.png similarity index 100% rename from mamweb/static/images/prettyPhoto/default/sprite_x.png rename to mamweb/static/prettyPhoto/images/default/sprite_x.png diff --git a/mamweb/static/images/prettyPhoto/default/sprite_y.png b/mamweb/static/prettyPhoto/images/default/sprite_y.png similarity index 100% rename from mamweb/static/images/prettyPhoto/default/sprite_y.png rename to mamweb/static/prettyPhoto/images/default/sprite_y.png diff --git a/mamweb/static/images/prettyPhoto/facebook/btnNext.png b/mamweb/static/prettyPhoto/images/facebook/btnNext.png old mode 100755 new mode 100644 similarity index 100% rename from mamweb/static/images/prettyPhoto/facebook/btnNext.png rename to mamweb/static/prettyPhoto/images/facebook/btnNext.png diff --git a/mamweb/static/images/prettyPhoto/facebook/btnPrevious.png b/mamweb/static/prettyPhoto/images/facebook/btnPrevious.png old mode 100755 new mode 100644 similarity index 100% rename from mamweb/static/images/prettyPhoto/facebook/btnPrevious.png rename to mamweb/static/prettyPhoto/images/facebook/btnPrevious.png diff --git a/mamweb/static/images/prettyPhoto/facebook/contentPatternBottom.png b/mamweb/static/prettyPhoto/images/facebook/contentPatternBottom.png old mode 100755 new mode 100644 similarity index 100% rename from mamweb/static/images/prettyPhoto/facebook/contentPatternBottom.png rename to mamweb/static/prettyPhoto/images/facebook/contentPatternBottom.png diff --git a/mamweb/static/images/prettyPhoto/facebook/contentPatternLeft.png b/mamweb/static/prettyPhoto/images/facebook/contentPatternLeft.png old mode 100755 new mode 100644 similarity index 100% rename from mamweb/static/images/prettyPhoto/facebook/contentPatternLeft.png rename to mamweb/static/prettyPhoto/images/facebook/contentPatternLeft.png diff --git a/mamweb/static/images/prettyPhoto/facebook/contentPatternRight.png b/mamweb/static/prettyPhoto/images/facebook/contentPatternRight.png old mode 100755 new mode 100644 similarity index 100% rename from mamweb/static/images/prettyPhoto/facebook/contentPatternRight.png rename to mamweb/static/prettyPhoto/images/facebook/contentPatternRight.png diff --git a/mamweb/static/images/prettyPhoto/facebook/contentPatternTop.png b/mamweb/static/prettyPhoto/images/facebook/contentPatternTop.png old mode 100755 new mode 100644 similarity index 100% rename from mamweb/static/images/prettyPhoto/facebook/contentPatternTop.png rename to mamweb/static/prettyPhoto/images/facebook/contentPatternTop.png diff --git a/mamweb/static/images/prettyPhoto/facebook/default_thumbnail.gif b/mamweb/static/prettyPhoto/images/facebook/default_thumbnail.gif old mode 100755 new mode 100644 similarity index 100% rename from mamweb/static/images/prettyPhoto/facebook/default_thumbnail.gif rename to mamweb/static/prettyPhoto/images/facebook/default_thumbnail.gif diff --git a/mamweb/static/images/prettyPhoto/facebook/loader.gif b/mamweb/static/prettyPhoto/images/facebook/loader.gif old mode 100755 new mode 100644 similarity index 100% rename from mamweb/static/images/prettyPhoto/facebook/loader.gif rename to mamweb/static/prettyPhoto/images/facebook/loader.gif diff --git a/mamweb/static/images/prettyPhoto/facebook/sprite.png b/mamweb/static/prettyPhoto/images/facebook/sprite.png old mode 100755 new mode 100644 similarity index 100% rename from mamweb/static/images/prettyPhoto/facebook/sprite.png rename to mamweb/static/prettyPhoto/images/facebook/sprite.png diff --git a/mamweb/static/images/prettyPhoto/light_rounded/btnNext.png b/mamweb/static/prettyPhoto/images/light_rounded/btnNext.png old mode 100755 new mode 100644 similarity index 100% rename from mamweb/static/images/prettyPhoto/light_rounded/btnNext.png rename to mamweb/static/prettyPhoto/images/light_rounded/btnNext.png diff --git a/mamweb/static/images/prettyPhoto/light_rounded/btnPrevious.png b/mamweb/static/prettyPhoto/images/light_rounded/btnPrevious.png old mode 100755 new mode 100644 similarity index 100% rename from mamweb/static/images/prettyPhoto/light_rounded/btnPrevious.png rename to mamweb/static/prettyPhoto/images/light_rounded/btnPrevious.png diff --git a/mamweb/static/images/prettyPhoto/light_rounded/default_thumbnail.gif b/mamweb/static/prettyPhoto/images/light_rounded/default_thumbnail.gif old mode 100755 new mode 100644 similarity index 100% rename from mamweb/static/images/prettyPhoto/light_rounded/default_thumbnail.gif rename to mamweb/static/prettyPhoto/images/light_rounded/default_thumbnail.gif diff --git a/mamweb/static/images/prettyPhoto/light_rounded/loader.gif b/mamweb/static/prettyPhoto/images/light_rounded/loader.gif old mode 100755 new mode 100644 similarity index 100% rename from mamweb/static/images/prettyPhoto/light_rounded/loader.gif rename to mamweb/static/prettyPhoto/images/light_rounded/loader.gif diff --git a/mamweb/static/images/prettyPhoto/light_rounded/sprite.png b/mamweb/static/prettyPhoto/images/light_rounded/sprite.png old mode 100755 new mode 100644 similarity index 100% rename from mamweb/static/images/prettyPhoto/light_rounded/sprite.png rename to mamweb/static/prettyPhoto/images/light_rounded/sprite.png diff --git a/mamweb/static/images/prettyPhoto/light_square/btnNext.png b/mamweb/static/prettyPhoto/images/light_square/btnNext.png old mode 100755 new mode 100644 similarity index 100% rename from mamweb/static/images/prettyPhoto/light_square/btnNext.png rename to mamweb/static/prettyPhoto/images/light_square/btnNext.png diff --git a/mamweb/static/images/prettyPhoto/light_square/btnPrevious.png b/mamweb/static/prettyPhoto/images/light_square/btnPrevious.png old mode 100755 new mode 100644 similarity index 100% rename from mamweb/static/images/prettyPhoto/light_square/btnPrevious.png rename to mamweb/static/prettyPhoto/images/light_square/btnPrevious.png diff --git a/mamweb/static/images/prettyPhoto/light_square/default_thumbnail.gif b/mamweb/static/prettyPhoto/images/light_square/default_thumbnail.gif old mode 100755 new mode 100644 similarity index 100% rename from mamweb/static/images/prettyPhoto/light_square/default_thumbnail.gif rename to mamweb/static/prettyPhoto/images/light_square/default_thumbnail.gif diff --git a/mamweb/static/images/prettyPhoto/light_square/loader.gif b/mamweb/static/prettyPhoto/images/light_square/loader.gif old mode 100755 new mode 100644 similarity index 100% rename from mamweb/static/images/prettyPhoto/light_square/loader.gif rename to mamweb/static/prettyPhoto/images/light_square/loader.gif diff --git a/mamweb/static/images/prettyPhoto/light_square/sprite.png b/mamweb/static/prettyPhoto/images/light_square/sprite.png old mode 100755 new mode 100644 similarity index 100% rename from mamweb/static/images/prettyPhoto/light_square/sprite.png rename to mamweb/static/prettyPhoto/images/light_square/sprite.png diff --git a/mamweb/static/images/prettyPhoto_uncompressed_3.1.5/js/jquery.prettyPhoto.js b/mamweb/static/prettyPhoto/js/jquery.prettyPhoto.js similarity index 100% rename from mamweb/static/images/prettyPhoto_uncompressed_3.1.5/js/jquery.prettyPhoto.js rename to mamweb/static/prettyPhoto/js/jquery.prettyPhoto.js diff --git a/mamweb/templates/base.html b/mamweb/templates/base.html index c55ca7f2..da6f67e1 100644 --- a/mamweb/templates/base.html +++ b/mamweb/templates/base.html @@ -11,7 +11,7 @@ - + @@ -120,7 +120,7 @@ - + diff --git a/vue_frontend/src/components/TreeNodeRoot.vue b/vue_frontend/src/components/TreeNodeRoot.vue index 674d0fda..408efce5 100644 --- a/vue_frontend/src/components/TreeNodeRoot.vue +++ b/vue_frontend/src/components/TreeNodeRoot.vue @@ -73,5 +73,9 @@ export default { From c731af9ccd7d414fa66cd85e06461fbebd960ab0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Wed, 14 Feb 2024 08:28:30 +0100 Subject: [PATCH 039/225] =?UTF-8?q?P=C5=99esun=20css=20galerie=20do=20gale?= =?UTF-8?q?rie?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- {mamweb => galerie}/static/css/galerie.css | 19 +++++++++++++++++++ galerie/templates/galerie/Galerie.html | 2 +- galerie/templates/galerie/GalerieNahled.html | 2 +- galerie/templates/galerie/GalerieNew.html | 2 +- galerie/templates/galerie/base.html | 6 ++++++ mamweb/static/css/modules.css | 18 ------------------ mamweb/templates/base.html | 1 - vue_frontend/src/components/TreeNodeRoot.vue | 1 - 8 files changed, 28 insertions(+), 23 deletions(-) rename {mamweb => galerie}/static/css/galerie.css (89%) create mode 100644 galerie/templates/galerie/base.html diff --git a/mamweb/static/css/galerie.css b/galerie/static/css/galerie.css similarity index 89% rename from mamweb/static/css/galerie.css rename to galerie/static/css/galerie.css index 6ee1a676..46df8552 100644 --- a/mamweb/static/css/galerie.css +++ b/galerie/static/css/galerie.css @@ -165,3 +165,22 @@ margin-top: -3em; /* #FIXME */ } } + + +/* plus a minus tlacitka */ +.mam-org-only-galerie { + background: var(--orgovska-svetla-fialova); + padding: 10px; + margin: 10px 10px 10px -20px; + border: #333 2px dashed; + float: left; +} + +.mam-org-only-galerie a{ + padding: 3px 5px; + margin: 5px; + border-radius: 20px; + background-color: var(--tmava-oranzova);; + color: var(--barva-pozadi); + float: left; +} diff --git a/galerie/templates/galerie/Galerie.html b/galerie/templates/galerie/Galerie.html index aadc969e..ff8ebfe3 100644 --- a/galerie/templates/galerie/Galerie.html +++ b/galerie/templates/galerie/Galerie.html @@ -1,4 +1,4 @@ -{% extends "base.html" %} +{% extends "galerie/base.html" %} {% block nadpis1a %} diff --git a/galerie/templates/galerie/GalerieNahled.html b/galerie/templates/galerie/GalerieNahled.html index ec0d5f67..87794680 100644 --- a/galerie/templates/galerie/GalerieNahled.html +++ b/galerie/templates/galerie/GalerieNahled.html @@ -1,4 +1,4 @@ -{% extends "base.html" %} +{% extends "galerie/base.html" %} {% block nadpis1a %} Galerie {{galerie.nazev}} diff --git a/galerie/templates/galerie/GalerieNew.html b/galerie/templates/galerie/GalerieNew.html index 1b549232..d974224c 100644 --- a/galerie/templates/galerie/GalerieNew.html +++ b/galerie/templates/galerie/GalerieNew.html @@ -1,4 +1,4 @@ -{% extends "base.html" %} +{% extends "galerie/base.html" %} {% block content %} diff --git a/galerie/templates/galerie/base.html b/galerie/templates/galerie/base.html new file mode 100644 index 00000000..032f16b2 --- /dev/null +++ b/galerie/templates/galerie/base.html @@ -0,0 +1,6 @@ +{% extends "base.html" %} +{% load static %} + +{% block custom_css %} + +{% endblock %} diff --git a/mamweb/static/css/modules.css b/mamweb/static/css/modules.css index 15fb9a5e..5302b673 100644 --- a/mamweb/static/css/modules.css +++ b/mamweb/static/css/modules.css @@ -19,24 +19,6 @@ li.mam-org-only { padding: 3px 0px; margin: -2px 0px; } - -/* plus a minus tlacitka */ -.mam-org-only-galerie { - background: var(--orgovska-svetla-fialova); - padding: 10px; - margin: 10px 10px 10px -20px; - border: #333 2px dashed; - float: left; -} - -.mam-org-only-galerie a{ - padding: 3px 5px; - margin: 5px; - border-radius: 20px; - background-color: var(--tmava-oranzova);; - color: var(--barva-pozadi); - float: left; -} /**********************************/ diff --git a/mamweb/templates/base.html b/mamweb/templates/base.html index 5a0b55c6..027f296f 100644 --- a/mamweb/templates/base.html +++ b/mamweb/templates/base.html @@ -14,7 +14,6 @@ - diff --git a/vue_frontend/src/components/TreeNodeRoot.vue b/vue_frontend/src/components/TreeNodeRoot.vue index 408efce5..7bb107ca 100644 --- a/vue_frontend/src/components/TreeNodeRoot.vue +++ b/vue_frontend/src/components/TreeNodeRoot.vue @@ -75,7 +75,6 @@ export default { From eec9abb9c1b49a07dac6332256ce4f15ce6d8001 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Wed, 14 Feb 2024 08:32:36 +0100 Subject: [PATCH 040/225] =?UTF-8?q?Dosp=C4=9Bl=20jsem=20k=20n=C3=A1zoru,?= =?UTF-8?q?=20=C5=BEe=20PrettyPhoto=20se=20na=20webu=20nepou=C5=BE=C3=ADv?= =?UTF-8?q?=C3=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/css.rst | 3 +- mamweb/static/prettyPhoto/css/prettyPhoto.css | 525 ---------- .../images/dark_rounded/btnNext.png | Bin 1411 -> 0 bytes .../images/dark_rounded/btnPrevious.png | Bin 1442 -> 0 bytes .../images/dark_rounded/contentPattern.png | Bin 130 -> 0 bytes .../images/dark_rounded/default_thumbnail.gif | Bin 227 -> 0 bytes .../images/dark_rounded/loader.gif | Bin 2545 -> 0 bytes .../images/dark_rounded/sprite.png | Bin 4076 -> 0 bytes .../images/dark_square/btnNext.png | Bin 1411 -> 0 bytes .../images/dark_square/btnPrevious.png | Bin 1442 -> 0 bytes .../images/dark_square/contentPattern.png | Bin 121 -> 0 bytes .../images/dark_square/default_thumbnail.gif | Bin 227 -> 0 bytes .../prettyPhoto/images/dark_square/loader.gif | Bin 2545 -> 0 bytes .../prettyPhoto/images/dark_square/sprite.png | Bin 3507 -> 0 bytes .../images/default/default_thumb.png | Bin 1537 -> 0 bytes .../prettyPhoto/images/default/loader.gif | Bin 6331 -> 0 bytes .../prettyPhoto/images/default/sprite.png | Bin 6682 -> 0 bytes .../images/default/sprite_next.png | Bin 1358 -> 0 bytes .../images/default/sprite_prev.png | Bin 1376 -> 0 bytes .../prettyPhoto/images/default/sprite_x.png | Bin 1097 -> 0 bytes .../prettyPhoto/images/default/sprite_y.png | Bin 1162 -> 0 bytes .../prettyPhoto/images/facebook/btnNext.png | Bin 845 -> 0 bytes .../images/facebook/btnPrevious.png | Bin 828 -> 0 bytes .../images/facebook/contentPatternBottom.png | Bin 142 -> 0 bytes .../images/facebook/contentPatternLeft.png | Bin 137 -> 0 bytes .../images/facebook/contentPatternRight.png | Bin 136 -> 0 bytes .../images/facebook/contentPatternTop.png | Bin 142 -> 0 bytes .../images/facebook/default_thumbnail.gif | Bin 227 -> 0 bytes .../prettyPhoto/images/facebook/loader.gif | Bin 2545 -> 0 bytes .../prettyPhoto/images/facebook/sprite.png | Bin 4227 -> 0 bytes .../images/light_rounded/btnNext.png | Bin 1411 -> 0 bytes .../images/light_rounded/btnPrevious.png | Bin 1442 -> 0 bytes .../light_rounded/default_thumbnail.gif | Bin 227 -> 0 bytes .../images/light_rounded/loader.gif | Bin 2545 -> 0 bytes .../images/light_rounded/sprite.png | Bin 4099 -> 0 bytes .../images/light_square/btnNext.png | Bin 1411 -> 0 bytes .../images/light_square/btnPrevious.png | Bin 1442 -> 0 bytes .../images/light_square/default_thumbnail.gif | Bin 227 -> 0 bytes .../images/light_square/loader.gif | Bin 2545 -> 0 bytes .../images/light_square/sprite.png | Bin 3507 -> 0 bytes .../prettyPhoto/js/jquery.prettyPhoto.js | 911 ------------------ mamweb/templates/base.html | 11 - 42 files changed, 1 insertion(+), 1449 deletions(-) delete mode 100644 mamweb/static/prettyPhoto/css/prettyPhoto.css delete mode 100644 mamweb/static/prettyPhoto/images/dark_rounded/btnNext.png delete mode 100644 mamweb/static/prettyPhoto/images/dark_rounded/btnPrevious.png delete mode 100644 mamweb/static/prettyPhoto/images/dark_rounded/contentPattern.png delete mode 100644 mamweb/static/prettyPhoto/images/dark_rounded/default_thumbnail.gif delete mode 100644 mamweb/static/prettyPhoto/images/dark_rounded/loader.gif delete mode 100644 mamweb/static/prettyPhoto/images/dark_rounded/sprite.png delete mode 100644 mamweb/static/prettyPhoto/images/dark_square/btnNext.png delete mode 100644 mamweb/static/prettyPhoto/images/dark_square/btnPrevious.png delete mode 100644 mamweb/static/prettyPhoto/images/dark_square/contentPattern.png delete mode 100644 mamweb/static/prettyPhoto/images/dark_square/default_thumbnail.gif delete mode 100644 mamweb/static/prettyPhoto/images/dark_square/loader.gif delete mode 100644 mamweb/static/prettyPhoto/images/dark_square/sprite.png delete mode 100644 mamweb/static/prettyPhoto/images/default/default_thumb.png delete mode 100644 mamweb/static/prettyPhoto/images/default/loader.gif delete mode 100644 mamweb/static/prettyPhoto/images/default/sprite.png delete mode 100644 mamweb/static/prettyPhoto/images/default/sprite_next.png delete mode 100644 mamweb/static/prettyPhoto/images/default/sprite_prev.png delete mode 100644 mamweb/static/prettyPhoto/images/default/sprite_x.png delete mode 100644 mamweb/static/prettyPhoto/images/default/sprite_y.png delete mode 100644 mamweb/static/prettyPhoto/images/facebook/btnNext.png delete mode 100644 mamweb/static/prettyPhoto/images/facebook/btnPrevious.png delete mode 100644 mamweb/static/prettyPhoto/images/facebook/contentPatternBottom.png delete mode 100644 mamweb/static/prettyPhoto/images/facebook/contentPatternLeft.png delete mode 100644 mamweb/static/prettyPhoto/images/facebook/contentPatternRight.png delete mode 100644 mamweb/static/prettyPhoto/images/facebook/contentPatternTop.png delete mode 100644 mamweb/static/prettyPhoto/images/facebook/default_thumbnail.gif delete mode 100644 mamweb/static/prettyPhoto/images/facebook/loader.gif delete mode 100644 mamweb/static/prettyPhoto/images/facebook/sprite.png delete mode 100644 mamweb/static/prettyPhoto/images/light_rounded/btnNext.png delete mode 100644 mamweb/static/prettyPhoto/images/light_rounded/btnPrevious.png delete mode 100644 mamweb/static/prettyPhoto/images/light_rounded/default_thumbnail.gif delete mode 100644 mamweb/static/prettyPhoto/images/light_rounded/loader.gif delete mode 100644 mamweb/static/prettyPhoto/images/light_rounded/sprite.png delete mode 100644 mamweb/static/prettyPhoto/images/light_square/btnNext.png delete mode 100644 mamweb/static/prettyPhoto/images/light_square/btnPrevious.png delete mode 100644 mamweb/static/prettyPhoto/images/light_square/default_thumbnail.gif delete mode 100644 mamweb/static/prettyPhoto/images/light_square/loader.gif delete mode 100644 mamweb/static/prettyPhoto/images/light_square/sprite.png delete mode 100644 mamweb/static/prettyPhoto/js/jquery.prettyPhoto.js diff --git a/docs/css.rst b/docs/css.rst index 3efe266f..a6cf96b1 100644 --- a/docs/css.rst +++ b/docs/css.rst @@ -11,10 +11,9 @@ CSSka do Dále jsem separoval CSSka pro **galerii** (potřebuje hodně specifických stylů). Stejně tak **korekturovátko** má styly separátně. -Dále web (asi) používá dva externí frameworky (v separátních složkách – mají k sobě i JS a podobné věci): +Dále web (asi) používá externí frameworky (v separátních složkách – mají k sobě i JS a podobné věci): - bootstrap: dělá nějaké basic stylování, *web je na něm hodně závislý* (například jsem zjistil, že bootstrap přidává ``font-size:14px``, bez čehož se web úplně rozpadne) -- pretty photo: ??? (něco s obrázky) Pak jsou tu ``mamweb-dev.css`` a ``printtable.css``, co jsem si ještě nerozmyslel, co s tím. diff --git a/mamweb/static/prettyPhoto/css/prettyPhoto.css b/mamweb/static/prettyPhoto/css/prettyPhoto.css deleted file mode 100644 index ae43519b..00000000 --- a/mamweb/static/prettyPhoto/css/prettyPhoto.css +++ /dev/null @@ -1,525 +0,0 @@ -/* ------------------------------------------------------------------------ - This you can edit. -------------------------------------------------------------------------- */ - - /* ---------------------------------- - Default Theme - ----------------------------------- */ - - div.pp_default .pp_top, - div.pp_default .pp_top .pp_middle, - div.pp_default .pp_top .pp_left, - div.pp_default .pp_top .pp_right, - div.pp_default .pp_bottom, - div.pp_default .pp_bottom .pp_left, - div.pp_default .pp_bottom .pp_middle, - div.pp_default .pp_bottom .pp_right { height: 13px; } - - div.pp_default .pp_top .pp_left { background: url(../images/default/sprite.png) -78px -93px no-repeat; } /* Top left corner */ - div.pp_default .pp_top .pp_middle { background: url(../images/default/sprite_x.png) top left repeat-x; } /* Top pattern/color */ - div.pp_default .pp_top .pp_right { background: url(../images/default/sprite.png) -112px -93px no-repeat; } /* Top right corner */ - - div.pp_default .pp_content .ppt { color: #f8f8f8; } - div.pp_default .pp_content_container .pp_left { background: url(../images/default/sprite_y.png) -7px 0 repeat-y; padding-left: 13px; } - div.pp_default .pp_content_container .pp_right { background: url(../images/default/sprite_y.png) top right repeat-y; padding-right: 13px; } - div.pp_default .pp_content { background-color: #fff; } /* Content background */ - div.pp_default .pp_next:hover { background: url(../images/default/sprite_next.png) center right no-repeat; cursor: pointer; } /* Next button */ - div.pp_default .pp_previous:hover { background: url(../images/default/sprite_prev.png) center left no-repeat; cursor: pointer; } /* Previous button */ - div.pp_default .pp_expand { background: url(../images/default/sprite.png) 0 -29px no-repeat; cursor: pointer; width: 28px; height: 28px; } /* Expand button */ - div.pp_default .pp_expand:hover { background: url(../images/default/sprite.png) 0 -56px no-repeat; cursor: pointer; } /* Expand button hover */ - div.pp_default .pp_contract { background: url(../images/default/sprite.png) 0 -84px no-repeat; cursor: pointer; width: 28px; height: 28px; } /* Contract button */ - div.pp_default .pp_contract:hover { background: url(../images/default/sprite.png) 0 -113px no-repeat; cursor: pointer; } /* Contract button hover */ - div.pp_default .pp_close { width: 30px; height: 30px; background: url(../images/default/sprite.png) 2px 1px no-repeat; cursor: pointer; } /* Close button */ - div.pp_default #pp_full_res .pp_inline { color: #000; } - div.pp_default .pp_gallery ul li a { background: url(../images/default/default_thumb.png) center center #f8f8f8; border:1px solid #aaa; } - div.pp_default .pp_gallery ul li a:hover, - div.pp_default .pp_gallery ul li.selected a { border-color: #fff; } - div.pp_default .pp_social { margin-top: 7px; } - - div.pp_default .pp_gallery a.pp_arrow_previous, - div.pp_default .pp_gallery a.pp_arrow_next { position: static; left: auto; } - div.pp_default .pp_nav .pp_play, - div.pp_default .pp_nav .pp_pause { background: url(../images/default/sprite.png) -51px 1px no-repeat; height:30px; width:30px; } - div.pp_default .pp_nav .pp_pause { background-position: -51px -29px; } - div.pp_default .pp_details { position: relative; } - div.pp_default a.pp_arrow_previous, - div.pp_default a.pp_arrow_next { background: url(../images/default/sprite.png) -31px -3px no-repeat; height: 20px; margin: 4px 0 0 0; width: 20px; } - div.pp_default a.pp_arrow_next { left: 52px; background-position: -82px -3px; } /* The next arrow in the bottom nav */ - div.pp_default .pp_content_container .pp_details { margin-top: 5px; } - div.pp_default .pp_nav { clear: none; height: 30px; width: 110px; position: relative; } - div.pp_default .pp_nav .currentTextHolder{ font-family: Georgia; font-style: italic; color:#999; font-size: 11px; left: 75px; line-height: 25px; margin: 0; padding: 0 0 0 10px; position: absolute; top: 2px; } - - div.pp_default .pp_close:hover, div.pp_default .pp_nav .pp_play:hover, div.pp_default .pp_nav .pp_pause:hover, div.pp_default .pp_arrow_next:hover, div.pp_default .pp_arrow_previous:hover { opacity:0.7; } - - div.pp_default .pp_description{ font-size: 11px; font-weight: bold; line-height: 14px; margin: 5px 50px 5px 0; } - - div.pp_default .pp_bottom .pp_left { background: url(../images/default/sprite.png) -78px -127px no-repeat; } /* Bottom left corner */ - div.pp_default .pp_bottom .pp_middle { background: url(../images/default/sprite_x.png) bottom left repeat-x; } /* Bottom pattern/color */ - div.pp_default .pp_bottom .pp_right { background: url(../images/default/sprite.png) -112px -127px no-repeat; } /* Bottom right corner */ - - div.pp_default .pp_loaderIcon { background: url(../images/default/loader.gif) center center no-repeat; } /* Loader icon */ - - - /* ---------------------------------- - Light Rounded Theme - ----------------------------------- */ - - - div.light_rounded .pp_top .pp_left { background: url(../images/light_rounded/sprite.png) -88px -53px no-repeat; } /* Top left corner */ - div.light_rounded .pp_top .pp_middle { background: #fff; } /* Top pattern/color */ - div.light_rounded .pp_top .pp_right { background: url(../images/light_rounded/sprite.png) -110px -53px no-repeat; } /* Top right corner */ - - div.light_rounded .pp_content .ppt { color: #000; } - div.light_rounded .pp_content_container .pp_left, - div.light_rounded .pp_content_container .pp_right { background: #fff; } - div.light_rounded .pp_content { background-color: #fff; } /* Content background */ - div.light_rounded .pp_next:hover { background: url(../images/light_rounded/btnNext.png) center right no-repeat; cursor: pointer; } /* Next button */ - div.light_rounded .pp_previous:hover { background: url(../images/light_rounded/btnPrevious.png) center left no-repeat; cursor: pointer; } /* Previous button */ - div.light_rounded .pp_expand { background: url(../images/light_rounded/sprite.png) -31px -26px no-repeat; cursor: pointer; } /* Expand button */ - div.light_rounded .pp_expand:hover { background: url(../images/light_rounded/sprite.png) -31px -47px no-repeat; cursor: pointer; } /* Expand button hover */ - div.light_rounded .pp_contract { background: url(../images/light_rounded/sprite.png) 0 -26px no-repeat; cursor: pointer; } /* Contract button */ - div.light_rounded .pp_contract:hover { background: url(../images/light_rounded/sprite.png) 0 -47px no-repeat; cursor: pointer; } /* Contract button hover */ - div.light_rounded .pp_close { width: 75px; height: 22px; background: url(../images/light_rounded/sprite.png) -1px -1px no-repeat; cursor: pointer; } /* Close button */ - div.light_rounded .pp_details { position: relative; } - div.light_rounded .pp_description { margin-right: 85px; } - div.light_rounded #pp_full_res .pp_inline { color: #000; } - div.light_rounded .pp_gallery a.pp_arrow_previous, - div.light_rounded .pp_gallery a.pp_arrow_next { margin-top: 12px !important; } - div.light_rounded .pp_nav .pp_play { background: url(../images/light_rounded/sprite.png) -1px -100px no-repeat; height: 15px; width: 14px; } - div.light_rounded .pp_nav .pp_pause { background: url(../images/light_rounded/sprite.png) -24px -100px no-repeat; height: 15px; width: 14px; } - - div.light_rounded .pp_arrow_previous { background: url(../images/light_rounded/sprite.png) 0 -71px no-repeat; } /* The previous arrow in the bottom nav */ - div.light_rounded .pp_arrow_previous.disabled { background-position: 0 -87px; cursor: default; } - div.light_rounded .pp_arrow_next { background: url(../images/light_rounded/sprite.png) -22px -71px no-repeat; } /* The next arrow in the bottom nav */ - div.light_rounded .pp_arrow_next.disabled { background-position: -22px -87px; cursor: default; } - - div.light_rounded .pp_bottom .pp_left { background: url(../images/light_rounded/sprite.png) -88px -80px no-repeat; } /* Bottom left corner */ - div.light_rounded .pp_bottom .pp_middle { background: #fff; } /* Bottom pattern/color */ - div.light_rounded .pp_bottom .pp_right { background: url(../images/light_rounded/sprite.png) -110px -80px no-repeat; } /* Bottom right corner */ - - div.light_rounded .pp_loaderIcon { background: url(../images/light_rounded/loader.gif) center center no-repeat; } /* Loader icon */ - - /* ---------------------------------- - Dark Rounded Theme - ----------------------------------- */ - - div.dark_rounded .pp_top .pp_left { background: url(../images/dark_rounded/sprite.png) -88px -53px no-repeat; } /* Top left corner */ - div.dark_rounded .pp_top .pp_middle { background: url(../images/dark_rounded/contentPattern.png) top left repeat; } /* Top pattern/color */ - div.dark_rounded .pp_top .pp_right { background: url(../images/dark_rounded/sprite.png) -110px -53px no-repeat; } /* Top right corner */ - - div.dark_rounded .pp_content_container .pp_left { background: url(../images/dark_rounded/contentPattern.png) top left repeat-y; } /* Left Content background */ - div.dark_rounded .pp_content_container .pp_right { background: url(../images/dark_rounded/contentPattern.png) top right repeat-y; } /* Right Content background */ - div.dark_rounded .pp_content { background: url(../images/dark_rounded/contentPattern.png) top left repeat; } /* Content background */ - div.dark_rounded .pp_next:hover { background: url(../images/dark_rounded/btnNext.png) center right no-repeat; cursor: pointer; } /* Next button */ - div.dark_rounded .pp_previous:hover { background: url(../images/dark_rounded/btnPrevious.png) center left no-repeat; cursor: pointer; } /* Previous button */ - div.dark_rounded .pp_expand { background: url(../images/dark_rounded/sprite.png) -31px -26px no-repeat; cursor: pointer; } /* Expand button */ - div.dark_rounded .pp_expand:hover { background: url(../images/dark_rounded/sprite.png) -31px -47px no-repeat; cursor: pointer; } /* Expand button hover */ - div.dark_rounded .pp_contract { background: url(../images/dark_rounded/sprite.png) 0 -26px no-repeat; cursor: pointer; } /* Contract button */ - div.dark_rounded .pp_contract:hover { background: url(../images/dark_rounded/sprite.png) 0 -47px no-repeat; cursor: pointer; } /* Contract button hover */ - div.dark_rounded .pp_close { width: 75px; height: 22px; background: url(../images/dark_rounded/sprite.png) -1px -1px no-repeat; cursor: pointer; } /* Close button */ - div.dark_rounded .pp_details { position: relative; } - div.dark_rounded .pp_description { margin-right: 85px; } - div.dark_rounded .currentTextHolder { color: #c4c4c4; } - div.dark_rounded .pp_description { color: #fff; } - div.dark_rounded #pp_full_res .pp_inline { color: #fff; } - div.dark_rounded .pp_gallery a.pp_arrow_previous, - div.dark_rounded .pp_gallery a.pp_arrow_next { margin-top: 12px !important; } - div.dark_rounded .pp_nav .pp_play { background: url(../images/dark_rounded/sprite.png) -1px -100px no-repeat; height: 15px; width: 14px; } - div.dark_rounded .pp_nav .pp_pause { background: url(../images/dark_rounded/sprite.png) -24px -100px no-repeat; height: 15px; width: 14px; } - - div.dark_rounded .pp_arrow_previous { background: url(../images/dark_rounded/sprite.png) 0 -71px no-repeat; } /* The previous arrow in the bottom nav */ - div.dark_rounded .pp_arrow_previous.disabled { background-position: 0 -87px; cursor: default; } - div.dark_rounded .pp_arrow_next { background: url(../images/dark_rounded/sprite.png) -22px -71px no-repeat; } /* The next arrow in the bottom nav */ - div.dark_rounded .pp_arrow_next.disabled { background-position: -22px -87px; cursor: default; } - - div.dark_rounded .pp_bottom .pp_left { background: url(../images/dark_rounded/sprite.png) -88px -80px no-repeat; } /* Bottom left corner */ - div.dark_rounded .pp_bottom .pp_middle { background: url(../images/dark_rounded/contentPattern.png) top left repeat; } /* Bottom pattern/color */ - div.dark_rounded .pp_bottom .pp_right { background: url(../images/dark_rounded/sprite.png) -110px -80px no-repeat; } /* Bottom right corner */ - - div.dark_rounded .pp_loaderIcon { background: url(../images/dark_rounded/loader.gif) center center no-repeat; } /* Loader icon */ - - - /* ---------------------------------- - Dark Square Theme - ----------------------------------- */ - - div.dark_square .pp_left , - div.dark_square .pp_middle, - div.dark_square .pp_right, - div.dark_square .pp_content { background: #000; } - - div.dark_square .currentTextHolder { color: #c4c4c4; } - div.dark_square .pp_description { color: #fff; } - div.dark_square .pp_loaderIcon { background: url(../images/dark_square/loader.gif) center center no-repeat; } /* Loader icon */ - - div.dark_square .pp_expand { background: url(../images/dark_square/sprite.png) -31px -26px no-repeat; cursor: pointer; } /* Expand button */ - div.dark_square .pp_expand:hover { background: url(../images/dark_square/sprite.png) -31px -47px no-repeat; cursor: pointer; } /* Expand button hover */ - div.dark_square .pp_contract { background: url(../images/dark_square/sprite.png) 0 -26px no-repeat; cursor: pointer; } /* Contract button */ - div.dark_square .pp_contract:hover { background: url(../images/dark_square/sprite.png) 0 -47px no-repeat; cursor: pointer; } /* Contract button hover */ - div.dark_square .pp_close { width: 75px; height: 22px; background: url(../images/dark_square/sprite.png) -1px -1px no-repeat; cursor: pointer; } /* Close button */ - div.dark_square .pp_details { position: relative; } - div.dark_square .pp_description { margin: 0 85px 0 0; } - div.dark_square #pp_full_res .pp_inline { color: #fff; } - div.dark_square .pp_gallery a.pp_arrow_previous, - div.dark_square .pp_gallery a.pp_arrow_next { margin-top: 12px !important; } - div.dark_square .pp_nav { clear: none; } - div.dark_square .pp_nav .pp_play { background: url(../images/dark_square/sprite.png) -1px -100px no-repeat; height: 15px; width: 14px; } - div.dark_square .pp_nav .pp_pause { background: url(../images/dark_square/sprite.png) -24px -100px no-repeat; height: 15px; width: 14px; } - - div.dark_square .pp_arrow_previous { background: url(../images/dark_square/sprite.png) 0 -71px no-repeat; } /* The previous arrow in the bottom nav */ - div.dark_square .pp_arrow_previous.disabled { background-position: 0 -87px; cursor: default; } - div.dark_square .pp_arrow_next { background: url(../images/dark_square/sprite.png) -22px -71px no-repeat; } /* The next arrow in the bottom nav */ - div.dark_square .pp_arrow_next.disabled { background-position: -22px -87px; cursor: default; } - - div.dark_square .pp_next:hover { background: url(../images/dark_square/btnNext.png) center right no-repeat; cursor: pointer; } /* Next button */ - div.dark_square .pp_previous:hover { background: url(../images/dark_square/btnPrevious.png) center left no-repeat; cursor: pointer; } /* Previous button */ - - - /* ---------------------------------- - Light Square Theme - ----------------------------------- */ - - div.light_square .pp_left , - div.light_square .pp_middle, - div.light_square .pp_right, - div.light_square .pp_content { background: #fff; } - - div.light_square .pp_content .ppt { color: #000; } - div.light_square .pp_expand { background: url(../images/light_square/sprite.png) -31px -26px no-repeat; cursor: pointer; } /* Expand button */ - div.light_square .pp_expand:hover { background: url(../images/light_square/sprite.png) -31px -47px no-repeat; cursor: pointer; } /* Expand button hover */ - div.light_square .pp_contract { background: url(../images/light_square/sprite.png) 0 -26px no-repeat; cursor: pointer; } /* Contract button */ - div.light_square .pp_contract:hover { background: url(../images/light_square/sprite.png) 0 -47px no-repeat; cursor: pointer; } /* Contract button hover */ - div.light_square .pp_close { width: 75px; height: 22px; background: url(../images/light_square/sprite.png) -1px -1px no-repeat; cursor: pointer; } /* Close button */ - div.light_square .pp_details { position: relative; } - div.light_square .pp_description { margin-right: 85px; } - div.light_square #pp_full_res .pp_inline { color: #000; } - div.light_square .pp_gallery a.pp_arrow_previous, - div.light_square .pp_gallery a.pp_arrow_next { margin-top: 12px !important; } - div.light_square .pp_nav .pp_play { background: url(../images/light_square/sprite.png) -1px -100px no-repeat; height: 15px; width: 14px; } - div.light_square .pp_nav .pp_pause { background: url(../images/light_square/sprite.png) -24px -100px no-repeat; height: 15px; width: 14px; } - - div.light_square .pp_arrow_previous { background: url(../images/light_square/sprite.png) 0 -71px no-repeat; } /* The previous arrow in the bottom nav */ - div.light_square .pp_arrow_previous.disabled { background-position: 0 -87px; cursor: default; } - div.light_square .pp_arrow_next { background: url(../images/light_square/sprite.png) -22px -71px no-repeat; } /* The next arrow in the bottom nav */ - div.light_square .pp_arrow_next.disabled { background-position: -22px -87px; cursor: default; } - - div.light_square .pp_next:hover { background: url(../images/light_square/btnNext.png) center right no-repeat; cursor: pointer; } /* Next button */ - div.light_square .pp_previous:hover { background: url(../images/light_square/btnPrevious.png) center left no-repeat; cursor: pointer; } /* Previous button */ - - div.light_square .pp_loaderIcon { background: url(../images/light_rounded/loader.gif) center center no-repeat; } /* Loader icon */ - - - /* ---------------------------------- - Facebook style Theme - ----------------------------------- */ - - div.facebook .pp_top .pp_left { background: url(../images/facebook/sprite.png) -88px -53px no-repeat; } /* Top left corner */ - div.facebook .pp_top .pp_middle { background: url(../images/facebook/contentPatternTop.png) top left repeat-x; } /* Top pattern/color */ - div.facebook .pp_top .pp_right { background: url(../images/facebook/sprite.png) -110px -53px no-repeat; } /* Top right corner */ - - div.facebook .pp_content .ppt { color: #000; } - div.facebook .pp_content_container .pp_left { background: url(../images/facebook/contentPatternLeft.png) top left repeat-y; } /* Content background */ - div.facebook .pp_content_container .pp_right { background: url(../images/facebook/contentPatternRight.png) top right repeat-y; } /* Content background */ - div.facebook .pp_content { background: #fff; } /* Content background */ - div.facebook .pp_expand { background: url(../images/facebook/sprite.png) -31px -26px no-repeat; cursor: pointer; } /* Expand button */ - div.facebook .pp_expand:hover { background: url(../images/facebook/sprite.png) -31px -47px no-repeat; cursor: pointer; } /* Expand button hover */ - div.facebook .pp_contract { background: url(../images/facebook/sprite.png) 0 -26px no-repeat; cursor: pointer; } /* Contract button */ - div.facebook .pp_contract:hover { background: url(../images/facebook/sprite.png) 0 -47px no-repeat; cursor: pointer; } /* Contract button hover */ - div.facebook .pp_close { width: 22px; height: 22px; background: url(../images/facebook/sprite.png) -1px -1px no-repeat; cursor: pointer; } /* Close button */ - div.facebook .pp_details { position: relative; } - div.facebook .pp_description { margin: 0 37px 0 0; } - div.facebook #pp_full_res .pp_inline { color: #000; } - div.facebook .pp_loaderIcon { background: url(../images/facebook/loader.gif) center center no-repeat; } /* Loader icon */ - - div.facebook .pp_arrow_previous { background: url(../images/facebook/sprite.png) 0 -71px no-repeat; height: 22px; margin-top: 0; width: 22px; } /* The previous arrow in the bottom nav */ - div.facebook .pp_arrow_previous.disabled { background-position: 0 -96px; cursor: default; } - div.facebook .pp_arrow_next { background: url(../images/facebook/sprite.png) -32px -71px no-repeat; height: 22px; margin-top: 0; width: 22px; } /* The next arrow in the bottom nav */ - div.facebook .pp_arrow_next.disabled { background-position: -32px -96px; cursor: default; } - div.facebook .pp_nav { margin-top: 0; } - div.facebook .pp_nav p { font-size: 15px; padding: 0 3px 0 4px; } - div.facebook .pp_nav .pp_play { background: url(../images/facebook/sprite.png) -1px -123px no-repeat; height: 22px; width: 22px; } - div.facebook .pp_nav .pp_pause { background: url(../images/facebook/sprite.png) -32px -123px no-repeat; height: 22px; width: 22px; } - - div.facebook .pp_next:hover { background: url(../images/facebook/btnNext.png) center right no-repeat; cursor: pointer; } /* Next button */ - div.facebook .pp_previous:hover { background: url(../images/facebook/btnPrevious.png) center left no-repeat; cursor: pointer; } /* Previous button */ - - div.facebook .pp_bottom .pp_left { background: url(../images/facebook/sprite.png) -88px -80px no-repeat; } /* Bottom left corner */ - div.facebook .pp_bottom .pp_middle { background: url(../images/facebook/contentPatternBottom.png) top left repeat-x; } /* Bottom pattern/color */ - div.facebook .pp_bottom .pp_right { background: url(../images/facebook/sprite.png) -110px -80px no-repeat; } /* Bottom right corner */ - - -/* ------------------------------------------------------------------------ - DO NOT CHANGE -------------------------------------------------------------------------- */ - - div.pp_pic_holder a:focus { outline:none; } - - div.pp_overlay { - background: #000; - display: none; - left: 0; - position: absolute; - top: 0; - width: 100%; - z-index: 9500; - } - - div.pp_pic_holder { - display: none; - position: absolute; - width: 100px; - z-index: 10000; - } - - - .pp_top { - height: 20px; - position: relative; - } - * html .pp_top { padding: 0 20px; } - - .pp_top .pp_left { - height: 20px; - left: 0; - position: absolute; - width: 20px; - } - .pp_top .pp_middle { - height: 20px; - left: 20px; - position: absolute; - right: 20px; - } - * html .pp_top .pp_middle { - left: 0; - position: static; - } - - .pp_top .pp_right { - height: 20px; - left: auto; - position: absolute; - right: 0; - top: 0; - width: 20px; - } - - .pp_content { height: 40px; min-width: 40px; } - * html .pp_content { width: 40px; } - - .pp_fade { display: none; } - - .pp_content_container { - position: relative; - text-align: left; - width: 100%; - } - - .pp_content_container .pp_left { padding-left: 20px; } - .pp_content_container .pp_right { padding-right: 20px; } - - .pp_content_container .pp_details { - float: left; - margin: 10px 0 2px 0; - } - .pp_description { - display: none; - margin: 0; - } - - .pp_social { float: left; margin: 0; } - .pp_social .facebook { float: left; margin-left: 5px; width: 55px; overflow: hidden; } - .pp_social .twitter { float: left; } - - .pp_nav { - clear: right; - float: left; - margin: 3px 10px 0 0; - } - - .pp_nav p { - float: left; - margin: 2px 4px; - white-space: nowrap; - } - - .pp_nav .pp_play, - .pp_nav .pp_pause { - float: left; - margin-right: 4px; - text-indent: -10000px; - } - - a.pp_arrow_previous, - a.pp_arrow_next { - display: block; - float: left; - height: 15px; - margin-top: 3px; - overflow: hidden; - text-indent: -10000px; - width: 14px; - } - - .pp_hoverContainer { - position: absolute; - top: 0; - width: 100%; - z-index: 2000; - } - - .pp_gallery { - display: none; - left: 50%; - margin-top: -50px; - position: absolute; - z-index: 10000; - } - - .pp_gallery div { - float: left; - overflow: hidden; - position: relative; - } - - .pp_gallery ul { - float: left; - height: 35px; - margin: 0 0 0 5px; - padding: 0; - position: relative; - white-space: nowrap; - } - - .pp_gallery ul a { - border: 1px #000 solid; - border: 1px rgba(0,0,0,0.5) solid; - display: block; - float: left; - height: 33px; - overflow: hidden; - } - - .pp_gallery ul a:hover, - .pp_gallery li.selected a { border-color: #fff; } - - .pp_gallery ul a img { border: 0; } - - .pp_gallery li { - display: block; - float: left; - margin: 0 5px 0 0; - padding: 0; - } - - .pp_gallery li.default a { - background: url(../images/facebook/default_thumbnail.gif) 0 0 no-repeat; - display: block; - height: 33px; - width: 50px; - } - - .pp_gallery li.default a img { display: none; } - - .pp_gallery .pp_arrow_previous, - .pp_gallery .pp_arrow_next { - margin-top: 7px !important; - } - - a.pp_next { - background: url(../images/light_rounded/btnNext.png) 10000px 10000px no-repeat; - display: block; - float: right; - height: 100%; - text-indent: -10000px; - width: 49%; - } - - a.pp_previous { - background: url(../images/light_rounded/btnNext.png) 10000px 10000px no-repeat; - display: block; - float: left; - height: 100%; - text-indent: -10000px; - width: 49%; - } - - a.pp_expand, - a.pp_contract { - cursor: pointer; - display: none; - height: 20px; - position: absolute; - right: 30px; - text-indent: -10000px; - top: 10px; - width: 20px; - z-index: 20000; - } - - a.pp_close { - position: absolute; right: 0; top: 0; - display: block; - line-height:22px; - text-indent: -10000px; - } - - .pp_bottom { - height: 20px; - position: relative; - } - * html .pp_bottom { padding: 0 20px; } - - .pp_bottom .pp_left { - height: 20px; - left: 0; - position: absolute; - width: 20px; - } - .pp_bottom .pp_middle { - height: 20px; - left: 20px; - position: absolute; - right: 20px; - } - * html .pp_bottom .pp_middle { - left: 0; - position: static; - } - - .pp_bottom .pp_right { - height: 20px; - left: auto; - position: absolute; - right: 0; - top: 0; - width: 20px; - } - - .pp_loaderIcon { - display: block; - height: 24px; - left: 50%; - margin: -12px 0 0 -12px; - position: absolute; - top: 50%; - width: 24px; - } - - #pp_full_res { - line-height: 1 !important; - } - - #pp_full_res .pp_inline { - text-align: left; - } - - #pp_full_res .pp_inline p { margin: 0 0 15px 0; } - - div.ppt { - color: #fff; - display: none; - font-size: 17px; - margin: 0 0 5px 15px; - z-index: 9999; - } diff --git a/mamweb/static/prettyPhoto/images/dark_rounded/btnNext.png b/mamweb/static/prettyPhoto/images/dark_rounded/btnNext.png deleted file mode 100644 index b28c1ef3d595d5af9db1f2a4378cfd64407ed5c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1411 zcmV-}1$_F6P)$9a05|MJUF0->4SGK<7F5TJ=lWKN6+&IhzfIXTxP_BAUYSlC~k)ya96~A ztE!1Fs3@{uSCwU7suGg-Dqm*4{6%~bnXhbax0`G>8;y^TlaJ!y=Z$>*$bCxrnvF(o z`x+M)R}d8y<%*4sb=vKA7v=~-N$_0n-ZRLqHxCaF-bMz>;maqN%k>M_92kbLQc)rz zB8pyLU&UAqOwrNN6cZCek&%%UV)*w#qa-FKlGEv|W5{3m+Nvr57=wC&(2ff5mzNh( z17JKGEL7k>2JHbJV~7v<&GHpkvnUX*@G!g&=-b;{j2C0X$H#{?xZRXAJPcs=9iF5m z$;ezRVzj2FM&MRfRz${TF_i##NF31cG^#Z`@cilNNv;SVRNO-;YUtmzPp;pO=?M$H&KXa&kgtWo0s6lPBgmI5?pE{Cs(iF?a`l;~DyD zeo-f&{o>+6-iK$tg6sHliqT3V>L zx0mkj?xbHsLxUI=K#h%!R99C=xw*MwjGUYtIy^k2!oou8>FJR^X=!QH*48EpNJ&YN zz7-V})Y{rg#l^)k2J7^-2D?WJrFf_^uu26000%G@R$X09v$M0`^;N^cP^fA+Q(jhM zR905f>guZ8WBY@$Q1eGn3BF&S-6IO?Hdx z>uV}0DWR^eF6oE&U>w5J%A>2v)`ghfQje?W0Dg6KC9&Gv+$?R{&z#uwe4u1DKR++| z0`pl5JPg3TzCNn2uNR5JkaKf$B7Z_1&}6(^FbrUZ(Z+b=uwC z6(A&3NPBN@PmI#h(ILt+GyQw^>CHgU3XH4^;Dv>Sz>|8Qt(jZ55^YOLN}|opO-W|v z)`SB2*4EZaaw;z`7Z10$w~KTUvj`0&EQiD4JrpU!n-28IYLy5594xT8W%)a>_yR`3 z4uAv%?*STd2moYs%#XI6ogI-V+As$Uv9+}&&z6>!Bm^*iV`GB~3JU1x=tz`+@o0Yw z+J^WV9UU#@iT~smWm{7`EZfx7BohS#jDGsnrH2m_UXQDI4>Bu&@Eaf)XZ|(~k9jZ_ z_ZWxq`emr|Xzc63$X|%rJll+IY;0_V?|(O6W`YCeEnxjf(UTDFL-@J*W=y-;YJV`; zte&CGf|v^iSUrL(V1rF)A^YGM9v(j6)c=JS`mZnWV1WUv&|&|TH8L{d9vmF}hxfbR z82m3^-_rhKSS4+OhpU&ZpOyf34Gj(b&6|EdCyLJu@m1w&8bCiKt?{ei;p}BIk$v;W z;K0BD2qXDg#@j>#gM45R2lxBQbC~&$0rR=di9ZMN#~@dC2t52le+>RFzyR~BA^19M RLBjw5002ovPDHLkV1n=}nO*<@ diff --git a/mamweb/static/prettyPhoto/images/dark_rounded/btnPrevious.png b/mamweb/static/prettyPhoto/images/dark_rounded/btnPrevious.png deleted file mode 100644 index e0cd9c49af7fe2f6ab694843bdd3b90ce9217cb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1442 zcmV;T1zq}yP)DPR}?-yIFE=Eh>D`1 zxDZ4LPAETaM%Rg1tJM?Bq#w*j8W7$G%8Lw&qL>a zCw-c0=k{xpz@y)ROWmrvb?SWQJHxHA4-E}n(SMgP*YTP@kUTy+|!o71v*0Uj9&rU)Awvb?t|yrluuz?lkGJ^!4>Q=_3#Yh7?%3ySpO=mYhx}U&DY{ ztyUfuiv?p_UHazs_V(+RmX<#~!COX0NBtf&z+PNj(ACuyg9R|V-7WxmjW|KE>|Uds z@STc?cg@YsKf-UK&-yU{K0Q69%gakX4+sdLz`#JA)xX(ON1M&Y_pk=Ql>x3!!mdfe z!^0^!IG908e&ZRJBWj|fqrXs78-l{_=_v@jjIfe|ffq^G2m?4m^pL_e6dJiF1qN%N zN7iBv{W#*>#30@cz{pcPr!(of7J!S2ium5d#02Y>wRk`5Q93?XY=7I{-o9Wrc}-P4 zijR+f<+;7RJ8Nysxo|~Jaii!%Fot>rm`FYk+ zS69dHT3lRYgFQtzUOxh`I6)W|z%w&5?&_^S2ghNqocjra(~1+%0Vc$oy}iBE*4D=J zf`S5W8<5G#N$Tn8;ro!p#6)%$WMgB4Iy*brNyEd#%-Ht!Hs$8#((&;zr$TIOEG;Z7 z@LUWu*&qh%L!_jnsm&{8?^!)!Wk?@MMb%{ePRf%0|=@*@(HY=il?Tga{EH4qxvIv(ca)R=-l7m z=dj0mge~-X6I1W@6l_i33LLtW&2z{I<5w2)1HBr?f(#o-m~a)XCyiluc>E>604H)GzA+XomH+?%07*qoM6N<$f}$awVgLXD diff --git a/mamweb/static/prettyPhoto/images/dark_rounded/contentPattern.png b/mamweb/static/prettyPhoto/images/dark_rounded/contentPattern.png deleted file mode 100644 index e5a047c3a7efb0f8085e0b70523299af00a5dbd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!fo6;Bt(kcwMLDG3QT&O5jsIO33Mko90i<6^cxDT}NJ0fqt! a2NIKlt||NsBb%*?E=uIA+AG%zrD`0!y=R1_N<+vm@pjg5^ZBqW4{ zgcKDO=ggUN^5n@6A3hv7aNygwZyp{VGiT1cdi82iQIVXS9M~i*gyK&Yu&54*1lh^J znxLT2my$UzW7WEx*ZT@|&X?rguUPlK=KX)mqpTdl9&9X0-U1vFe5XV=OIC<1TA^wB zAR@v0R&G+mkFG;kP93Sa$EGmNNLpZ-!L!AgPrAh9_7P-L(M E0LAB0sQ>@~ diff --git a/mamweb/static/prettyPhoto/images/dark_rounded/loader.gif b/mamweb/static/prettyPhoto/images/dark_rounded/loader.gif deleted file mode 100644 index 50820eedd904647a76c4c2c1d830d4339588c08d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2545 zcma*pYg7~I83*u}xzA)~n25ScZ5t-T5>nU=30MS$Xhdjjt5TMMW#9(@)N1wHw{N#>*%A~K6dfI%mzSs0>1;MzQc{x1WQvWAEi5cd zO-&6A4ejdcYHV!G&dwej90WgkdA*fGvWCM(P; z$dsjIrxfkWO-cJGD`!tG@Op!gxcHQxYYW#Q0eW60s};c7^ldElX7vkaqh-b(7r4^0 z+UAb0ZSr75<*E5h0II=##CBs?6qZq|wUb!3#%m$M1s7pTB@&S06@9Ay z-h5f_b9-#xd~c$}>EX+VI*I%()}0TCh#*z{qN+;rk#%*HM(Q=fSuu34zchyM3e)?`6^f~$^~ z0L(`R@{+Sb&Lw^rQ0mE&rsN{19?LGi8VEttI=`{N-icg!PPcINvze}`ss#~~E`&+u zLbM5e>i*sa;(5N^{?)@C{Y}}!YN8g;6QZ;cANQNPJ-Nt=h#5XnucjTE3{bk)~0FmXzWdpB5>Zy)m`E2tm_CcnpIfqNU+@bKQydj=IwV zTyutJD5yo*h7Dj4WQ}P<9L%LeFnacSCsO3N5pIvX4hH0%iP-$*y7rv*%*Qc)j;EmW z-mi|`{kHYCazV_H3nL>$47PQ#5YXQnr$}wI&wcr@=kZ1#eg!+#&@)Bc1U9(*cd`I# z%)^=g#F56s=CvHdJ@QPLEeg)N^*V4>aPW!^n{-oJw+~n{T?uQnOqQ|67o&Wra3kj~ zmAZ3|x(4m>=2n}t+vbOyw4bh&GstNhHdGB?2pRx>gF^$ChIy<0=d!7qV$XlP6VHk`U}S=M5)om<(f8q3iQk zYG|Bgahee;Ls{S0WIffD*~Y^)CSUQw@&j#Wd|^??$zfXtW(Iw7j+Mq=5o)@5yFgtY z3d6oYdc1APw%)G~Jcuq~0;(?G6F#?AES#&0E{T>)Z(k{t*WY&5I+E?QMtN(E4RVvz zdn~6azL}H7T6ge<>4C;SBcmS4vGe}t%wNr?EeYZhrui~;S7~?-@1Vh(fyEDV=&7N3M|fReKPNa}sSNhdVs+rpOitDW8pX6l>^lDsUvo$c$X?+;-k zG}O%~)wtgxWGV2;RxP_8XXXx8BXs$Cg*s|OzZ>l4@i1EsFPWdKUR<%xPVd;b{N)E( z$%oEzXyux%p7u8;eZu-R#`m3yF=G{BRn@k#=4Ph;;2|T5OA@2^m%^fO2fwRgw@R{( zIO9xB;5jah#gmjV0q*WR$wrlG*GZ+}?36LEVopx8&UoR5|FP2X(gg*>F2Q`DOOWzT zKy$O1#JGKIqQfYwpC&#w#q@DPqW?2e#VL|C9rwWEFAWIx{OQyh2QiYjN9*YZVSoMS zFA84%7}x9g)1Aex=0uh3IjS_3TZ$cycqP0)!%# zOBK66#7X}`IVZ(={4$W>L=h`Z1T4#AR|_aHZ=cBtyvh4h;coJH!AS0chIeuLuVE;J zMU;zXpKv4ew*ej2mcLgY77c0rcaD7i-OHBM_w!bI7sLh;$kU&9zltxt1OD2qL|J;&bhtXwqAHM6xRf*yD4ofPQO{_whBa&Y*iCFs_G=IgnfD{l3X!rx368LCX1Vtw#^VR1=jt|2}Q-YZ8)R$_o? zXe&>PWnSYgc3wT8Sa({7?q-O!oyI_c#1%&XjP`}73A_%VXfsOf$8jS`uD`Yq!wLCq zId#TxPJTy@wTF!w78H#BZ=C+$RSaM?39k!c*vN7#tXBU3;O}dHT^_;L4G+E)eAx!e z$jjz9$B$QQ^7DdOx|rFAG2&g6TUH)%6sqBDIU>PP0|HTYo)Bxj(VK#x1f+}5(H#tw zbb4iqfOZ2a4yFe~)DXD?&}9Ik^#%!PL|Z?cDZK2Tl4%H^Jh*rZTQDq<@>&LjL8>&bmbP;{9$V1f72|-IC6J*aS0@jCMCW#2N6=@ z4`AZpxsaAsVQ@O2`+(k0w?jjrokZ16XhMUc+v!dQ8ajnupX>w}bRm9Xw)Di6(Qq#i K>KdTlt$zd2^$V2% diff --git a/mamweb/static/prettyPhoto/images/dark_rounded/sprite.png b/mamweb/static/prettyPhoto/images/dark_rounded/sprite.png deleted file mode 100644 index fb8c0f83d715aec1014b77f0b44002a07a635052..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4076 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 RLBjw5002ovPDHLkV1n=}nO*<@ diff --git a/mamweb/static/prettyPhoto/images/dark_square/btnPrevious.png b/mamweb/static/prettyPhoto/images/dark_square/btnPrevious.png deleted file mode 100644 index e0cd9c49af7fe2f6ab694843bdd3b90ce9217cb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1442 zcmV;T1zq}yP)DPR}?-yIFE=Eh>D`1 zxDZ4LPAETaM%Rg1tJM?Bq#w*j8W7$G%8Lw&qL>a zCw-c0=k{xpz@y)ROWmrvb?SWQJHxHA4-E}n(SMgP*YTP@kUTy+|!o71v*0Uj9&rU)Awvb?t|yrluuz?lkGJ^!4>Q=_3#Yh7?%3ySpO=mYhx}U&DY{ ztyUfuiv?p_UHazs_V(+RmX<#~!COX0NBtf&z+PNj(ACuyg9R|V-7WxmjW|KE>|Uds z@STc?cg@YsKf-UK&-yU{K0Q69%gakX4+sdLz`#JA)xX(ON1M&Y_pk=Ql>x3!!mdfe z!^0^!IG908e&ZRJBWj|fqrXs78-l{_=_v@jjIfe|ffq^G2m?4m^pL_e6dJiF1qN%N zN7iBv{W#*>#30@cz{pcPr!(of7J!S2ium5d#02Y>wRk`5Q93?XY=7I{-o9Wrc}-P4 zijR+f<+;7RJ8Nysxo|~Jaii!%Fot>rm`FYk+ zS69dHT3lRYgFQtzUOxh`I6)W|z%w&5?&_^S2ghNqocjra(~1+%0Vc$oy}iBE*4D=J zf`S5W8<5G#N$Tn8;ro!p#6)%$WMgB4Iy*brNyEd#%-Ht!Hs$8#((&;zr$TIOEG;Z7 z@LUWu*&qh%L!_jnsm&{8?^!)!Wk?@MMb%{ePRf%0|=@*@(HY=il?Tga{EH4qxvIv(ca)R=-l7m z=dj0mge~-X6I1W@6l_i33LLtW&2z{I<5w2)1HBr?f(#o-m~a)XCyiluc>E>604H)GzA+XomH+?%07*qoM6N<$f}$awVgLXD diff --git a/mamweb/static/prettyPhoto/images/dark_square/contentPattern.png b/mamweb/static/prettyPhoto/images/dark_square/contentPattern.png deleted file mode 100644 index 7b50aff880e57ea386400d763dbddf82fff72be6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 121 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4NtU=qlmzFem6RtIr7}3CIKlt||NsBb%*?E=uIA+AG%zrD`0!y=R1_N<+vm@pjg5^ZBqW4{ zgcKDO=ggUN^5n@6A3hv7aNygwZyp{VGiT1cdi82iQIVXS9M~i*gyK&Yu&54*1lh^J znxLT2my$UzW7WEx*ZT@|&X?rguUPlK=KX)mqpTdl9&9X0-U1vFe5XV=OIC<1TA^wB zAR@v0R&G+mkFG;kP93Sa$EGmNNLpZ-!L!AgPrAh9_7P-L(M E0LAB0sQ>@~ diff --git a/mamweb/static/prettyPhoto/images/dark_square/loader.gif b/mamweb/static/prettyPhoto/images/dark_square/loader.gif deleted file mode 100644 index 50820eedd904647a76c4c2c1d830d4339588c08d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2545 zcma*pYg7~I83*u}xzA)~n25ScZ5t-T5>nU=30MS$Xhdjjt5TMMW#9(@)N1wHw{N#>*%A~K6dfI%mzSs0>1;MzQc{x1WQvWAEi5cd zO-&6A4ejdcYHV!G&dwej90WgkdA*fGvWCM(P; z$dsjIrxfkWO-cJGD`!tG@Op!gxcHQxYYW#Q0eW60s};c7^ldElX7vkaqh-b(7r4^0 z+UAb0ZSr75<*E5h0II=##CBs?6qZq|wUb!3#%m$M1s7pTB@&S06@9Ay z-h5f_b9-#xd~c$}>EX+VI*I%()}0TCh#*z{qN+;rk#%*HM(Q=fSuu34zchyM3e)?`6^f~$^~ z0L(`R@{+Sb&Lw^rQ0mE&rsN{19?LGi8VEttI=`{N-icg!PPcINvze}`ss#~~E`&+u zLbM5e>i*sa;(5N^{?)@C{Y}}!YN8g;6QZ;cANQNPJ-Nt=h#5XnucjTE3{bk)~0FmXzWdpB5>Zy)m`E2tm_CcnpIfqNU+@bKQydj=IwV zTyutJD5yo*h7Dj4WQ}P<9L%LeFnacSCsO3N5pIvX4hH0%iP-$*y7rv*%*Qc)j;EmW z-mi|`{kHYCazV_H3nL>$47PQ#5YXQnr$}wI&wcr@=kZ1#eg!+#&@)Bc1U9(*cd`I# z%)^=g#F56s=CvHdJ@QPLEeg)N^*V4>aPW!^n{-oJw+~n{T?uQnOqQ|67o&Wra3kj~ zmAZ3|x(4m>=2n}t+vbOyw4bh&GstNhHdGB?2pRx>gF^$ChIy<0=d!7qV$XlP6VHk`U}S=M5)om<(f8q3iQk zYG|Bgahee;Ls{S0WIffD*~Y^)CSUQw@&j#Wd|^??$zfXtW(Iw7j+Mq=5o)@5yFgtY z3d6oYdc1APw%)G~Jcuq~0;(?G6F#?AES#&0E{T>)Z(k{t*WY&5I+E?QMtN(E4RVvz zdn~6azL}H7T6ge<>4C;SBcmS4vGe}t%wNr?EeYZhrui~;S7~?-@1Vh(fyEDV=&7N3M|fReKPNa}sSNhdVs+rpOitDW8pX6l>^lDsUvo$c$X?+;-k zG}O%~)wtgxWGV2;RxP_8XXXx8BXs$Cg*s|OzZ>l4@i1EsFPWdKUR<%xPVd;b{N)E( z$%oEzXyux%p7u8;eZu-R#`m3yF=G{BRn@k#=4Ph;;2|T5OA@2^m%^fO2fwRgw@R{( zIO9xB;5jah#gmjV0q*WR$wrlG*GZ+}?36LEVopx8&UoR5|FP2X(gg*>F2Q`DOOWzT zKy$O1#JGKIqQfYwpC&#w#q@DPqW?2e#VL|C9rwWEFAWIx{OQyh2QiYjN9*YZVSoMS zFA84%7}x9g)1Aex=0uh3IjS_3TZ$cycqP0)!%# zOBK66#7X}`IVZ(={4$W>L=h`Z1T4#AR|_aHZ=cBtyvh4h;coJH!AS0chIeuLuVE;J zMU;zXpKv4ew*ej2mcLgY77c0rcaD7i-OHBM_w!bI7sLh;$kU&9zltxt1OD2qL|J;&bhtXwqAHM6xRf*yD4ofPQO{_whBa&Y*iCFs_G=IgnfD{l3X!rx368LCX1Vtw#^VR1=jt|2}Q-YZ8)R$_o? zXe&>PWnSYgc3wT8Sa({7?q-O!oyI_c#1%&XjP`}73A_%VXfsOf$8jS`uD`Yq!wLCq zId#TxPJTy@wTF!w78H#BZ=C+$RSaM?39k!c*vN7#tXBU3;O}dHT^_;L4G+E)eAx!e z$jjz9$B$QQ^7DdOx|rFAG2&g6TUH)%6sqBDIU>PP0|HTYo)Bxj(VK#x1f+}5(H#tw zbb4iqfOZ2a4yFe~)DXD?&}9Ik^#%!PL|Z?cDZK2Tl4%H^Jh*rZTQDq<@>&LjL8>&bmbP;{9$V1f72|-IC6J*aS0@jCMCW#2N6=@ z4`AZpxsaAsVQ@O2`+(k0w?jjrokZ16XhMUc+v!dQ8ajnupX>w}bRm9Xw)Di6(Qq#i K>KdTlt$zd2^$V2% diff --git a/mamweb/static/prettyPhoto/images/dark_square/sprite.png b/mamweb/static/prettyPhoto/images/dark_square/sprite.png deleted file mode 100644 index 4fe354752455e070ebb56f42a60fc2233de45bd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3507 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 diff --git a/mamweb/static/prettyPhoto/images/default/default_thumb.png b/mamweb/static/prettyPhoto/images/default/default_thumb.png deleted file mode 100644 index 1a26e4b16e18db9e0979a6ba5ecb9e1e1c8753e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1537 zcmeAS@N?(olHy`uVBq!ia0vp^MnJ5{!2~2lDSr z1<%~X^wgl##FWaylc_cg49rTIArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XP}#GU}m6TW~gUq zY+`P1uA^XNU}&IkV5Dzoq-$tyWo%?+V4wg6Nh+i#(Mch>H3D2mX;thjEr=FDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_pOiaoz zEwNPsx)kDt+yc06!V;*iRM zRQ;gT;{4L0WMIUlDTAykuyQU+O)SYT3dzsUfrVl~Mt(_taYlZDf^)E`f^TASW*&$S zR`2U;<(XGpl9-pA>gi&u1T;Y}Gc(1?#n{Qv$p(%8_*)y>$@ z#MQtErq?AuximL5uLPzy1)RB67F)=Cl-0%Nhmu^a?8hh0T^w9mUDEGv?>K8d)wzGgml>(n6(8(9 zLQ`Ch#S2apT=}rXs&X^0zh+&mx?FYr+U#jM&p!XmF}n>!Z>NQKA5GdC6{|P> z^2;lGmp8sGkxst-wyf7pS!InB58L6Yy>5IL4?h&>bP;&9@TlG|3th49u+^emt$*tN zdmg^;Yue+sIBvao_fZ+XX8WkksIZaiEUTJwq;9`_|M4e% zU3SxfhI=h7TH7ymYDPlEe(|R&oOc4=Tn{~SQG5F739G|ai+gJ%H$D6tw`B5(cf0TQ zMeSQrGMz2Vdufo~bZrr?n>pY77p~A!)0y}y{i;}wfugc`t-_fUBcP+T=39SO2rAyM zpBeR{cwfc~^WP~(GtWH#{IOzAA6KcOi{#|)d*A-5U(7KJ_WW~CWlPlBh`km&eN;Yr ze*d=iV1mNYPKgAk?cU2TKQG#Tn^!UG#jPb_t8c#j=Aht^HeXct(m@_MzIGpHwe!p8 zh!q6S|9RMhqy4Z_zyFd{qnS+y6__V7r5~zU$aB4H_t}UePj+sp+n(Sm=$UCEHRW^V z8NEkWUY10-N(yVbS7mfI82S`kd;k4t!q0_`SEsVE@%8Myap6pg^V0upjEa2XseZE? z#Fl;wZnjw7z%enSq+%NHRp;%&a~@9m^r+^be~*WvxYNc}&6gKXPYY_Umg(lx+a^@* y;MyFr{@1hJHY$01i`>iV{`=Qlt`e)`G+_9kRR3W^dd`1Pq3r4E=d#Wzp$PyqQ%Md0 diff --git a/mamweb/static/prettyPhoto/images/default/loader.gif b/mamweb/static/prettyPhoto/images/default/loader.gif deleted file mode 100644 index 35d397c9e430c2ee8f1d95d8fe47da79a399e746..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6331 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 diff --git a/mamweb/static/prettyPhoto/images/default/sprite_prev.png b/mamweb/static/prettyPhoto/images/default/sprite_prev.png deleted file mode 100644 index 1ee486514b9c4b3b36381fb0a3ecc3fe3a9f93ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1376 zcmeAS@N?(olHy`uVBq!ia0vp^(m*W7!3HGnN~S&oQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS=07?{&CLn2Bde0{8v^Ko2Tt~skz|cV7z)0WFNY~KZ%Gk)tz(4^Clz_GsrKDK}xwt{?0`hE?GD=Dctn~HE z%ggo3jrH=2()A53EiFN27#ZmTRp=I1=9MH?=;jqG!%T2VElw`VEGWs$&r<-In3$Ab zT4JjNbScCOxdpzyaD(%Tp#cR9GX09g0)0b01O41wkiWpHi%Wu15zfG>x;Uh=AXPso zwK%`DC>aHCFybnZQU%%yG$2F3nBNEAe!(RRYTBrDUd98JJrb z7#fLwm{}MaS~$5GxtTec8X6j#Sr}Lvz|6p=*TvY$(85Px?R(JoBXH0dq_dFl$J7T(M(dV4UFT;uunK>&^82S%(5dj_qH< z=*S}&*wSLt6i`q!QRxTIxr2f63j((D&Glk4bUrY>phW8*BX?6W+sOqktDKkpQupx5 zXVR6ue5HEf1!nmc?&=yMi}nq)%8Sz3BLd=JXKh?K+7<-V*=#&TPw-;cK67S}GK<|Nij=gN9YBUX)mA zh;Wt6nYpa?jR{w8>=%xtco;q0>$PNpn+{JB>CZJBh}qL}?smVM58)0;KA0$JUrYeg;& z`Zd*yb!iaiy4OwuEEavuaqHW^R{1VJZ{q8`Htg`n3YU!$NAk8euX}wXZ+pqCT^BPJ z#OS&6*%zD7^m$=gy7{Jy)!buA8xPd&ci$S-yVv~VhnTftC!T*6wD6m-=uw2vEBzb) zJAUTw+1zqA^5CK6cbK&!IHc6)T`_#r`{L{G&(>L4)9l6MnRpmD^*T?NvsT^(m3f}7 KelF{r5}E+5_2k|F diff --git a/mamweb/static/prettyPhoto/images/default/sprite_x.png b/mamweb/static/prettyPhoto/images/default/sprite_x.png deleted file mode 100644 index d4433ab0d6933357b0e91f6fc72662f1bda39f51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1097 zcmbVLO;6N77_MS)MM;nwo`!OD+nJVacbl!qZo9GxMY61M6Jla%XW0hYsqNr)@gitU zylOlc4<0o}{R2vrqcPk(8T|()dhl$R?gx4x7@ee@d1v0|dB5*3E?gQNIXA*_+-P;q zsIh&UePU)f{cnx$v2B8y4Z1{{v~5S2n{~+w236l)#WifZof{u;k>iG%UcEsZ*1YBr zU$9dhA@M_o=D6Za657rhreFoHdV$V=fAfw9o~!d$a~8D1GH!Wun-N~xT&O#nYfi!C zXD)zZqA>y=QyV1ydJt=g&Ubk=c22KF9&}acn$Gu}YFLY)Od-qNm-<7vZO%>`ip1QBDbm4j7r}YlXSjCX{d=}yWJMrvOuC$5fuuBltYrT zOd}h20%|AOAf6g97&vw!FQgs`K+0&ZkPWKy%+p>7erQ<-#6jFo6ibI+L$%|2C&Xe6$7CaNSUs9k12D_o(S}k*=8bka@>o&qb%Qt?J`QNr(0TSE zxSp#)l!pkZ(@>S5l1C_Csz?>3ltV~X@~{909EV|*ilM4T-jGeDgpdjIrcx=$NHQxj znl_;{z*d8p+JS=yc0Fddk1ZdG)yfgJDT(TYtPeV1u|+6}TO{cS;gKmB`?-2V?{#)EVtouJX6PYt&+8lp0%ixN2V0t`geI^_X4-VMGL~Jy6 zKR$WN#;Q{_X6wo4Z(nB5a^TF+ZXNu3_4DNLbMD@?Q;%;wd+_qd&iL`t#Y|>vIrDXA v@AlYOS2{KcPTc)Bp*T@``(m<(x-<2j`?UP<(dqds5yw{5Trggju5a%Hri)27 diff --git a/mamweb/static/prettyPhoto/images/default/sprite_y.png b/mamweb/static/prettyPhoto/images/default/sprite_y.png deleted file mode 100644 index 7786ab5128c53a952830a3494898ee3ff5d00cf2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1162 zcmc&!O;6N77_K29hOj@tkHe%~Jh1IdcemX(RKjk%vg#r(E3SzeN;}Io&`xb<*+OD4 z+)VVuMg0+qSCJ@*7xCcT-$25F5O2ik?iM`|OuRTrJM&K8=Xt;Te0JtWX5{h+$8nkJ zv{7ff&YsPS!|Z*0^0~^kOVn)AInttCE5zKCLl!Zpde#!IW6N24@)b{T+)&GHG-a)@DJOgcuYAn6;q{fs6!{ z%PWd94kU=62qh6oS)^z=NrMm!7SF7OPD`sBm4PiL>3o~gKoiAow<~mW0tuHyq^fGd zAxT-Lk&V`TYQ$>O)M}^1el$oFOPLs3frtbs zdR`J&PdlP@{M(H)wWG#bfWrIa4knWWu5;SJWJm z%t{XBO(><`@kg_ySF8h*<7w+N;dFSg&n6~J zMq}&NO*U2^s>W0!{&DdAedZY)<@R3ff7{#MeyEL&yty`H>_4?0tak3+^Tzp;f5#1RUtWw}*f@CfG5I@G%^BluX<_phuCz@w diff --git a/mamweb/static/prettyPhoto/images/facebook/btnNext.png b/mamweb/static/prettyPhoto/images/facebook/btnNext.png deleted file mode 100644 index e809c3b64219468c4c744a4d4f086460ee6c8d6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 845 zcmV-T1G4;yP)*<*4T)FKQHep0ar5R4IgX^MaUqaei9+gx zK#oWha#RSUqSL<~3WaX<08-Gx({VYS&ijjti?_uR@~-8hZnyh^-|xRkG^9)>qkKN! zl-KJu5DVD?g=ju>xm?$Xh5WNRfWqOh&EardB^DA(E|(8RqtR)b&DNLlZLpn(p$eGi z`&orTF|@qAJk2o7i&QGLOI##dQYw|htE;OsCX;E5SV%0DN;Q&9CZ9}9OsI*4#8Ru( zs`d5t$3~-Zgjh%{jYc!Jv9U2@Fc^l3g~ZZowHMRr^dp^4H$*HXmR_&dE-fvYh=wc_ z3Pro!zDX=(u~^)J?Id2QRE~*+q-lEBVzIU=>}-WHNh1mRj|C z{RryGSG}%2dIs5OG>&IyXXA-Pf+n(PJ^^_=p4YKhtVrbXN3+>v=jP@Tkw~P_@2sjT zkSxnK1A)L=Fc{1u5vVJW3kwTxA&MW7NQ7^ieW(jp1wGI&cw?UNjUh#S6ZTw zv=GQ`i9&7*fyB)~dlCbzaP#I3d4f*+W2B^a+`I*CAvtuW2}tDH;^r%83popX4~!3$ z21E#lBbNccM_ivBiM@4iz~BDKto|Fa71itLv{we-TU_n~*cW_|z`dHEQ5#*7zXcco X7c=PvI!UA-00000NkvXXu0mjfDKUXP diff --git a/mamweb/static/prettyPhoto/images/facebook/btnPrevious.png b/mamweb/static/prettyPhoto/images/facebook/btnPrevious.png deleted file mode 100644 index 0812542cccfdfd9d1644ed721516c00fc6a03c24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 828 zcmV-C1H=4@P)-u>SFdGE)KMkDk;;yCW4W(C*+z6Lgc zFY;|dX$bxTZi7F9Ykb?Ev7Z9+0(b#Di=?A%@H+V0SwP+b-vz6X^fUlhz#FH5w1aOW z>FYhXjK+9>tc(C6K29qsq!R2vYzeYKq^0;HM*iEn3dyhunl7I|_Lf8F%zmrz~qC>8(u37?tz=A@d z;A9Eu^ZBm8EZ(OHC@SRA($eKGUEgAT#MYKR>U_=krgrTCLzGCqW>sR_j!;SbU_@ z>9k_30n{Na7RzL*R9Z9`40^Fva;lIflj&T!Tz+UY8fV1ZkEuc?lS!M|Y!>~BMitWI z@l@*ddPCNbolfTfwv9}q(b$$PBv!N8+;=z}nO3W{BU?zUTCMgIKwq}o?OoYIVpXfv zzTIwr-tBh3%N7!Ab91xja=BjgdcD4o;|hL2|JNaXZ*Om3tyYI+an&jm3OjJ0e1)N8 zm#)W^%jH_j%gdR;U~nK?NUT&U)mT|s$sU4a3yBqv$LqmhFgF|yN3w;)T3cJIg~Q=> zSOkYO`kz1&5zOWX$XY6pBwI)T3Gl0cf_{;tYag+xA0&`1Mj=}ykXwvGZjnIZVxV2d z06REt5=gvZR~UnQgX1RMC#&dK5s<{S!N)sRu@ZhTcfdAuRQ4h@;f#9=euwxvJ2}?Y zy#{|B_b~9cW8qbFRO5p`9$yjx>@&E_r{*VgLY3ri0R{lIBCT m-o+D*vL38xWMObn^tomvpcVhX~C5P hfz0h)jSP%z43bA#R32EIs{v|b@O1TaS?83{1OPdrCnx{_ diff --git a/mamweb/static/prettyPhoto/images/facebook/contentPatternRight.png b/mamweb/static/prettyPhoto/images/facebook/contentPatternRight.png deleted file mode 100644 index 76e50d0f5c6a8d0ee5f69b82493d94805f93d47b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 136 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!foEl(H6kcwMLfB0E=SQwO*la-k#HgqC} m{yP{*X)b2tGiPRG;$g@#WM60<^5zjxFN3G6pUXO@geCwXd?|PU diff --git a/mamweb/static/prettyPhoto/images/facebook/default_thumbnail.gif b/mamweb/static/prettyPhoto/images/facebook/default_thumbnail.gif deleted file mode 100644 index 2b1280f32756805aaa557cea32c70b05a2aa46b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 227 zcmZ?wbhEHbG-6O>IKlt||NsBb%*?E=uIA+AG%zrD`0!y=R1_N<+vm@pjg5^ZBqW4{ zgcKDO=ggUN^5n@6A3hv7aNygwZyp{VGiT1cdi82iQIVXS9M~i*gyK&Yu&54*1lh^J znxLT2my$UzW7WEx*ZT@|&X?rguUPlK=KX)mqpTdl9&9X0-U1vFe5XV=OIC<1TA^wB zAR@v0R&G+mkFG;kP93Sa$EGmNNLpZ-!L!AgPrAh9_7P-L(M E0LAB0sQ>@~ diff --git a/mamweb/static/prettyPhoto/images/facebook/loader.gif b/mamweb/static/prettyPhoto/images/facebook/loader.gif deleted file mode 100644 index 7ac990cf04f2323f9723518bfd72ce102222cefa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2545 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 ZU;uc#vp>^SEa3nE002ovPDHLkV1iA65^4Yd diff --git a/mamweb/static/prettyPhoto/images/light_rounded/btnNext.png b/mamweb/static/prettyPhoto/images/light_rounded/btnNext.png deleted file mode 100644 index b28c1ef3d595d5af9db1f2a4378cfd64407ed5c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1411 zcmV-}1$_F6P)$9a05|MJUF0->4SGK<7F5TJ=lWKN6+&IhzfIXTxP_BAUYSlC~k)ya96~A ztE!1Fs3@{uSCwU7suGg-Dqm*4{6%~bnXhbax0`G>8;y^TlaJ!y=Z$>*$bCxrnvF(o z`x+M)R}d8y<%*4sb=vKA7v=~-N$_0n-ZRLqHxCaF-bMz>;maqN%k>M_92kbLQc)rz zB8pyLU&UAqOwrNN6cZCek&%%UV)*w#qa-FKlGEv|W5{3m+Nvr57=wC&(2ff5mzNh( z17JKGEL7k>2JHbJV~7v<&GHpkvnUX*@G!g&=-b;{j2C0X$H#{?xZRXAJPcs=9iF5m z$;ezRVzj2FM&MRfRz${TF_i##NF31cG^#Z`@cilNNv;SVRNO-;YUtmzPp;pO=?M$H&KXa&kgtWo0s6lPBgmI5?pE{Cs(iF?a`l;~DyD zeo-f&{o>+6-iK$tg6sHliqT3V>L zx0mkj?xbHsLxUI=K#h%!R99C=xw*MwjGUYtIy^k2!oou8>FJR^X=!QH*48EpNJ&YN zz7-V})Y{rg#l^)k2J7^-2D?WJrFf_^uu26000%G@R$X09v$M0`^;N^cP^fA+Q(jhM zR905f>guZ8WBY@$Q1eGn3BF&S-6IO?Hdx z>uV}0DWR^eF6oE&U>w5J%A>2v)`ghfQje?W0Dg6KC9&Gv+$?R{&z#uwe4u1DKR++| z0`pl5JPg3TzCNn2uNR5JkaKf$B7Z_1&}6(^FbrUZ(Z+b=uwC z6(A&3NPBN@PmI#h(ILt+GyQw^>CHgU3XH4^;Dv>Sz>|8Qt(jZ55^YOLN}|opO-W|v z)`SB2*4EZaaw;z`7Z10$w~KTUvj`0&EQiD4JrpU!n-28IYLy5594xT8W%)a>_yR`3 z4uAv%?*STd2moYs%#XI6ogI-V+As$Uv9+}&&z6>!Bm^*iV`GB~3JU1x=tz`+@o0Yw z+J^WV9UU#@iT~smWm{7`EZfx7BohS#jDGsnrH2m_UXQDI4>Bu&@Eaf)XZ|(~k9jZ_ z_ZWxq`emr|Xzc63$X|%rJll+IY;0_V?|(O6W`YCeEnxjf(UTDFL-@J*W=y-;YJV`; zte&CGf|v^iSUrL(V1rF)A^YGM9v(j6)c=JS`mZnWV1WUv&|&|TH8L{d9vmF}hxfbR z82m3^-_rhKSS4+OhpU&ZpOyf34Gj(b&6|EdCyLJu@m1w&8bCiKt?{ei;p}BIk$v;W z;K0BD2qXDg#@j>#gM45R2lxBQbC~&$0rR=di9ZMN#~@dC2t52le+>RFzyR~BA^19M RLBjw5002ovPDHLkV1n=}nO*<@ diff --git a/mamweb/static/prettyPhoto/images/light_rounded/btnPrevious.png b/mamweb/static/prettyPhoto/images/light_rounded/btnPrevious.png deleted file mode 100644 index e0cd9c49af7fe2f6ab694843bdd3b90ce9217cb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1442 zcmV;T1zq}yP)DPR}?-yIFE=Eh>D`1 zxDZ4LPAETaM%Rg1tJM?Bq#w*j8W7$G%8Lw&qL>a zCw-c0=k{xpz@y)ROWmrvb?SWQJHxHA4-E}n(SMgP*YTP@kUTy+|!o71v*0Uj9&rU)Awvb?t|yrluuz?lkGJ^!4>Q=_3#Yh7?%3ySpO=mYhx}U&DY{ ztyUfuiv?p_UHazs_V(+RmX<#~!COX0NBtf&z+PNj(ACuyg9R|V-7WxmjW|KE>|Uds z@STc?cg@YsKf-UK&-yU{K0Q69%gakX4+sdLz`#JA)xX(ON1M&Y_pk=Ql>x3!!mdfe z!^0^!IG908e&ZRJBWj|fqrXs78-l{_=_v@jjIfe|ffq^G2m?4m^pL_e6dJiF1qN%N zN7iBv{W#*>#30@cz{pcPr!(of7J!S2ium5d#02Y>wRk`5Q93?XY=7I{-o9Wrc}-P4 zijR+f<+;7RJ8Nysxo|~Jaii!%Fot>rm`FYk+ zS69dHT3lRYgFQtzUOxh`I6)W|z%w&5?&_^S2ghNqocjra(~1+%0Vc$oy}iBE*4D=J zf`S5W8<5G#N$Tn8;ro!p#6)%$WMgB4Iy*brNyEd#%-Ht!Hs$8#((&;zr$TIOEG;Z7 z@LUWu*&qh%L!_jnsm&{8?^!)!Wk?@MMb%{ePRf%0|=@*@(HY=il?Tga{EH4qxvIv(ca)R=-l7m z=dj0mge~-X6I1W@6l_i33LLtW&2z{I<5w2)1HBr?f(#o-m~a)XCyiluc>E>604H)GzA+XomH+?%07*qoM6N<$f}$awVgLXD diff --git a/mamweb/static/prettyPhoto/images/light_rounded/default_thumbnail.gif b/mamweb/static/prettyPhoto/images/light_rounded/default_thumbnail.gif deleted file mode 100644 index 2b1280f32756805aaa557cea32c70b05a2aa46b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 227 zcmZ?wbhEHbG-6O>IKlt||NsBb%*?E=uIA+AG%zrD`0!y=R1_N<+vm@pjg5^ZBqW4{ zgcKDO=ggUN^5n@6A3hv7aNygwZyp{VGiT1cdi82iQIVXS9M~i*gyK&Yu&54*1lh^J znxLT2my$UzW7WEx*ZT@|&X?rguUPlK=KX)mqpTdl9&9X0-U1vFe5XV=OIC<1TA^wB zAR@v0R&G+mkFG;kP93Sa$EGmNNLpZ-!L!AgPrAh9_7P-L(M E0LAB0sQ>@~ diff --git a/mamweb/static/prettyPhoto/images/light_rounded/loader.gif b/mamweb/static/prettyPhoto/images/light_rounded/loader.gif deleted file mode 100644 index 7ac990cf04f2323f9723518bfd72ce102222cefa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2545 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 RLBjw5002ovPDHLkV1n=}nO*<@ diff --git a/mamweb/static/prettyPhoto/images/light_square/btnPrevious.png b/mamweb/static/prettyPhoto/images/light_square/btnPrevious.png deleted file mode 100644 index e0cd9c49af7fe2f6ab694843bdd3b90ce9217cb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1442 zcmV;T1zq}yP)DPR}?-yIFE=Eh>D`1 zxDZ4LPAETaM%Rg1tJM?Bq#w*j8W7$G%8Lw&qL>a zCw-c0=k{xpz@y)ROWmrvb?SWQJHxHA4-E}n(SMgP*YTP@kUTy+|!o71v*0Uj9&rU)Awvb?t|yrluuz?lkGJ^!4>Q=_3#Yh7?%3ySpO=mYhx}U&DY{ ztyUfuiv?p_UHazs_V(+RmX<#~!COX0NBtf&z+PNj(ACuyg9R|V-7WxmjW|KE>|Uds z@STc?cg@YsKf-UK&-yU{K0Q69%gakX4+sdLz`#JA)xX(ON1M&Y_pk=Ql>x3!!mdfe z!^0^!IG908e&ZRJBWj|fqrXs78-l{_=_v@jjIfe|ffq^G2m?4m^pL_e6dJiF1qN%N zN7iBv{W#*>#30@cz{pcPr!(of7J!S2ium5d#02Y>wRk`5Q93?XY=7I{-o9Wrc}-P4 zijR+f<+;7RJ8Nysxo|~Jaii!%Fot>rm`FYk+ zS69dHT3lRYgFQtzUOxh`I6)W|z%w&5?&_^S2ghNqocjra(~1+%0Vc$oy}iBE*4D=J zf`S5W8<5G#N$Tn8;ro!p#6)%$WMgB4Iy*brNyEd#%-Ht!Hs$8#((&;zr$TIOEG;Z7 z@LUWu*&qh%L!_jnsm&{8?^!)!Wk?@MMb%{ePRf%0|=@*@(HY=il?Tga{EH4qxvIv(ca)R=-l7m z=dj0mge~-X6I1W@6l_i33LLtW&2z{I<5w2)1HBr?f(#o-m~a)XCyiluc>E>604H)GzA+XomH+?%07*qoM6N<$f}$awVgLXD diff --git a/mamweb/static/prettyPhoto/images/light_square/default_thumbnail.gif b/mamweb/static/prettyPhoto/images/light_square/default_thumbnail.gif deleted file mode 100644 index 2b1280f32756805aaa557cea32c70b05a2aa46b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 227 zcmZ?wbhEHbG-6O>IKlt||NsBb%*?E=uIA+AG%zrD`0!y=R1_N<+vm@pjg5^ZBqW4{ zgcKDO=ggUN^5n@6A3hv7aNygwZyp{VGiT1cdi82iQIVXS9M~i*gyK&Yu&54*1lh^J znxLT2my$UzW7WEx*ZT@|&X?rguUPlK=KX)mqpTdl9&9X0-U1vFe5XV=OIC<1TA^wB zAR@v0R&G+mkFG;kP93Sa$EGmNNLpZ-!L!AgPrAh9_7P-L(M E0LAB0sQ>@~ diff --git a/mamweb/static/prettyPhoto/images/light_square/loader.gif b/mamweb/static/prettyPhoto/images/light_square/loader.gif deleted file mode 100644 index 7ac990cf04f2323f9723518bfd72ce102222cefa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2545 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 diff --git a/mamweb/static/prettyPhoto/js/jquery.prettyPhoto.js b/mamweb/static/prettyPhoto/js/jquery.prettyPhoto.js deleted file mode 100644 index 0436a493..00000000 --- a/mamweb/static/prettyPhoto/js/jquery.prettyPhoto.js +++ /dev/null @@ -1,911 +0,0 @@ -/* ------------------------------------------------------------------------ - Class: prettyPhoto - Use: Lightbox clone for jQuery - Author: Stephane Caron (http://www.no-margin-for-errors.com) - Version: 3.1.5 -------------------------------------------------------------------------- */ -(function($) { - $.prettyPhoto = {version: '3.1.5'}; - - $.fn.prettyPhoto = function(pp_settings) { - pp_settings = jQuery.extend({ - hook: 'rel', /* the attribute tag to use for prettyPhoto hooks. default: 'rel'. For HTML5, use "data-rel" or similar. */ - animation_speed: 'fast', /* fast/slow/normal */ - ajaxcallback: function() {}, - slideshow: 5000, /* false OR interval time in ms */ - autoplay_slideshow: false, /* true/false */ - opacity: 0.80, /* Value between 0 and 1 */ - show_title: true, /* true/false */ - allow_resize: true, /* Resize the photos bigger than viewport. true/false */ - allow_expand: true, /* Allow the user to expand a resized image. true/false */ - default_width: 500, - default_height: 344, - counter_separator_label: '/', /* The separator for the gallery counter 1 "of" 2 */ - theme: 'pp_default', /* light_rounded / dark_rounded / light_square / dark_square / facebook */ - horizontal_padding: 20, /* The padding on each side of the picture */ - hideflash: false, /* Hides all the flash object on a page, set to TRUE if flash appears over prettyPhoto */ - wmode: 'opaque', /* Set the flash wmode attribute */ - autoplay: true, /* Automatically start videos: True/False */ - modal: false, /* If set to true, only the close button will close the window */ - deeplinking: true, /* Allow prettyPhoto to update the url to enable deeplinking. */ - overlay_gallery: true, /* If set to true, a gallery will overlay the fullscreen image on mouse over */ - overlay_gallery_max: 30, /* Maximum number of pictures in the overlay gallery */ - keyboard_shortcuts: true, /* Set to false if you open forms inside prettyPhoto */ - changepicturecallback: function(){}, /* Called everytime an item is shown/changed */ - callback: function(){}, /* Called when prettyPhoto is closed */ - ie6_fallback: true, - markup: '

    \ -
     
    \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    \ - Expand \ -
    \ - next \ - previous \ -
    \ -
    \ -
    \ -
    \ - Previous \ -

    0/0

    \ - Next \ -
    \ -

    \ -
    {pp_social}
    \ - Close \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    ', - gallery_markup: '', - image_markup: '', - flash_markup: '', - quicktime_markup: '', - iframe_markup: '', - inline_markup: '
    {content}
    ', - custom_markup: '', - social_tools: '' /* html or false to disable */ - }, pp_settings); - - // Global variables accessible only by prettyPhoto - var matchedObjects = this, percentBased = false, pp_dimensions, pp_open, - - // prettyPhoto container specific - pp_contentHeight, pp_contentWidth, pp_containerHeight, pp_containerWidth, - - // Window size - windowHeight = $(window).height(), windowWidth = $(window).width(), - - // Global elements - pp_slideshow; - - doresize = true, scroll_pos = _get_scroll(); - - // Window/Keyboard events - $(window).unbind('resize.prettyphoto').bind('resize.prettyphoto',function(){ _center_overlay(); _resize_overlay(); }); - - if(pp_settings.keyboard_shortcuts) { - $(document).unbind('keydown.prettyphoto').bind('keydown.prettyphoto',function(e){ - if(typeof $pp_pic_holder != 'undefined'){ - if($pp_pic_holder.is(':visible')){ - switch(e.keyCode){ - case 37: - $.prettyPhoto.changePage('previous'); - e.preventDefault(); - break; - case 39: - $.prettyPhoto.changePage('next'); - e.preventDefault(); - break; - case 27: - if(!settings.modal) - $.prettyPhoto.close(); - e.preventDefault(); - break; - }; - // return false; - }; - }; - }); - }; - - /** - * Initialize prettyPhoto. - */ - $.prettyPhoto.initialize = function() { - - settings = pp_settings; - - if(settings.theme == 'pp_default') settings.horizontal_padding = 16; - - // Find out if the picture is part of a set - theRel = $(this).attr(settings.hook); - galleryRegExp = /\[(?:.*)\]/; - isSet = (galleryRegExp.exec(theRel)) ? true : false; - - // Put the SRCs, TITLEs, ALTs into an array. - pp_images = (isSet) ? jQuery.map(matchedObjects, function(n, i){ if($(n).attr(settings.hook).indexOf(theRel) != -1) return $(n).attr('href'); }) : $.makeArray($(this).attr('href')); - pp_titles = (isSet) ? jQuery.map(matchedObjects, function(n, i){ if($(n).attr(settings.hook).indexOf(theRel) != -1) return ($(n).find('img').attr('alt')) ? $(n).find('img').attr('alt') : ""; }) : $.makeArray($(this).find('img').attr('alt')); - pp_descriptions = (isSet) ? jQuery.map(matchedObjects, function(n, i){ if($(n).attr(settings.hook).indexOf(theRel) != -1) return ($(n).attr('title')) ? $(n).attr('title') : ""; }) : $.makeArray($(this).attr('title')); - - if(pp_images.length > settings.overlay_gallery_max) settings.overlay_gallery = false; - - set_position = jQuery.inArray($(this).attr('href'), pp_images); // Define where in the array the clicked item is positionned - rel_index = (isSet) ? set_position : $("a["+settings.hook+"^='"+theRel+"']").index($(this)); - - _build_overlay(this); // Build the overlay {this} being the caller - - if(settings.allow_resize) - $(window).bind('scroll.prettyphoto',function(){ _center_overlay(); }); - - - $.prettyPhoto.open(); - - return false; - } - - - /** - * Opens the prettyPhoto modal box. - * @param image {String,Array} Full path to the image to be open, can also be an array containing full images paths. - * @param title {String,Array} The title to be displayed with the picture, can also be an array containing all the titles. - * @param description {String,Array} The description to be displayed with the picture, can also be an array containing all the descriptions. - */ - $.prettyPhoto.open = function(event) { - if(typeof settings == "undefined"){ // Means it's an API call, need to manually get the settings and set the variables - settings = pp_settings; - pp_images = $.makeArray(arguments[0]); - pp_titles = (arguments[1]) ? $.makeArray(arguments[1]) : $.makeArray(""); - pp_descriptions = (arguments[2]) ? $.makeArray(arguments[2]) : $.makeArray(""); - isSet = (pp_images.length > 1) ? true : false; - set_position = (arguments[3])? arguments[3]: 0; - _build_overlay(event.target); // Build the overlay {this} being the caller - } - - if(settings.hideflash) $('object,embed,iframe[src*=youtube],iframe[src*=vimeo]').css('visibility','hidden'); // Hide the flash - - _checkPosition($(pp_images).size()); // Hide the next/previous links if on first or last images. - - $('.pp_loaderIcon').show(); - - if(settings.deeplinking) - setHashtag(); - - // Rebuild Facebook Like Button with updated href - if(settings.social_tools){ - facebook_like_link = settings.social_tools.replace('{location_href}', encodeURIComponent(location.href)); - $pp_pic_holder.find('.pp_social').html(facebook_like_link); - } - - // Fade the content in - if($ppt.is(':hidden')) $ppt.css('opacity',0).show(); - $pp_overlay.show().fadeTo(settings.animation_speed,settings.opacity); - - // Display the current position - $pp_pic_holder.find('.currentTextHolder').text((set_position+1) + settings.counter_separator_label + $(pp_images).size()); - - // Set the description - if(typeof pp_descriptions[set_position] != 'undefined' && pp_descriptions[set_position] != ""){ - $pp_pic_holder.find('.pp_description').show().html(unescape(pp_descriptions[set_position])); - }else{ - $pp_pic_holder.find('.pp_description').hide(); - } - - // Get the dimensions - movie_width = ( parseFloat(getParam('width',pp_images[set_position])) ) ? getParam('width',pp_images[set_position]) : settings.default_width.toString(); - movie_height = ( parseFloat(getParam('height',pp_images[set_position])) ) ? getParam('height',pp_images[set_position]) : settings.default_height.toString(); - - // If the size is % based, calculate according to window dimensions - percentBased=false; - if(movie_height.indexOf('%') != -1) { movie_height = parseFloat(($(window).height() * parseFloat(movie_height) / 100) - 150); percentBased = true; } - if(movie_width.indexOf('%') != -1) { movie_width = parseFloat(($(window).width() * parseFloat(movie_width) / 100) - 150); percentBased = true; } - - // Fade the holder - $pp_pic_holder.fadeIn(function(){ - // Set the title - (settings.show_title && pp_titles[set_position] != "" && typeof pp_titles[set_position] != "undefined") ? $ppt.html(unescape(pp_titles[set_position])) : $ppt.html(' '); - - imgPreloader = ""; - skipInjection = false; - - // Inject the proper content - switch(_getFileType(pp_images[set_position])){ - case 'image': - imgPreloader = new Image(); - - // Preload the neighbour images - nextImage = new Image(); - if(isSet && set_position < $(pp_images).size() -1) nextImage.src = pp_images[set_position + 1]; - prevImage = new Image(); - if(isSet && pp_images[set_position - 1]) prevImage.src = pp_images[set_position - 1]; - - $pp_pic_holder.find('#pp_full_res')[0].innerHTML = settings.image_markup.replace(/{path}/g,pp_images[set_position]); - - imgPreloader.onload = function(){ - // Fit item to viewport - pp_dimensions = _fitToViewport(imgPreloader.width,imgPreloader.height); - - _showContent(); - }; - - imgPreloader.onerror = function(){ - alert('Image cannot be loaded. Make sure the path is correct and image exist.'); - $.prettyPhoto.close(); - }; - - imgPreloader.src = pp_images[set_position]; - break; - - case 'youtube': - pp_dimensions = _fitToViewport(movie_width,movie_height); // Fit item to viewport - - // Regular youtube link - movie_id = getParam('v',pp_images[set_position]); - - // youtu.be link - if(movie_id == ""){ - movie_id = pp_images[set_position].split('youtu.be/'); - movie_id = movie_id[1]; - if(movie_id.indexOf('?') > 0) - movie_id = movie_id.substr(0,movie_id.indexOf('?')); // Strip anything after the ? - - if(movie_id.indexOf('&') > 0) - movie_id = movie_id.substr(0,movie_id.indexOf('&')); // Strip anything after the & - } - - movie = 'http://www.youtube.com/embed/'+movie_id; - (getParam('rel',pp_images[set_position])) ? movie+="?rel="+getParam('rel',pp_images[set_position]) : movie+="?rel=1"; - - if(settings.autoplay) movie += "&autoplay=1"; - - toInject = settings.iframe_markup.replace(/{width}/g,pp_dimensions['width']).replace(/{height}/g,pp_dimensions['height']).replace(/{wmode}/g,settings.wmode).replace(/{path}/g,movie); - break; - - case 'vimeo': - pp_dimensions = _fitToViewport(movie_width,movie_height); // Fit item to viewport - - movie_id = pp_images[set_position]; - var regExp = /http(s?):\/\/(www\.)?vimeo.com\/(\d+)/; - var match = movie_id.match(regExp); - - movie = 'http://player.vimeo.com/video/'+ match[3] +'?title=0&byline=0&portrait=0'; - if(settings.autoplay) movie += "&autoplay=1;"; - - vimeo_width = pp_dimensions['width'] + '/embed/?moog_width='+ pp_dimensions['width']; - - toInject = settings.iframe_markup.replace(/{width}/g,vimeo_width).replace(/{height}/g,pp_dimensions['height']).replace(/{path}/g,movie); - break; - - case 'quicktime': - pp_dimensions = _fitToViewport(movie_width,movie_height); // Fit item to viewport - pp_dimensions['height']+=15; pp_dimensions['contentHeight']+=15; pp_dimensions['containerHeight']+=15; // Add space for the control bar - - toInject = settings.quicktime_markup.replace(/{width}/g,pp_dimensions['width']).replace(/{height}/g,pp_dimensions['height']).replace(/{wmode}/g,settings.wmode).replace(/{path}/g,pp_images[set_position]).replace(/{autoplay}/g,settings.autoplay); - break; - - case 'flash': - pp_dimensions = _fitToViewport(movie_width,movie_height); // Fit item to viewport - - flash_vars = pp_images[set_position]; - flash_vars = flash_vars.substring(pp_images[set_position].indexOf('flashvars') + 10,pp_images[set_position].length); - - filename = pp_images[set_position]; - filename = filename.substring(0,filename.indexOf('?')); - - toInject = settings.flash_markup.replace(/{width}/g,pp_dimensions['width']).replace(/{height}/g,pp_dimensions['height']).replace(/{wmode}/g,settings.wmode).replace(/{path}/g,filename+'?'+flash_vars); - break; - - case 'iframe': - pp_dimensions = _fitToViewport(movie_width,movie_height); // Fit item to viewport - - frame_url = pp_images[set_position]; - frame_url = frame_url.substr(0,frame_url.indexOf('iframe')-1); - - toInject = settings.iframe_markup.replace(/{width}/g,pp_dimensions['width']).replace(/{height}/g,pp_dimensions['height']).replace(/{path}/g,frame_url); - break; - - case 'ajax': - doresize = false; // Make sure the dimensions are not resized. - pp_dimensions = _fitToViewport(movie_width,movie_height); - doresize = true; // Reset the dimensions - - skipInjection = true; - $.get(pp_images[set_position],function(responseHTML){ - toInject = settings.inline_markup.replace(/{content}/g,responseHTML); - $pp_pic_holder.find('#pp_full_res')[0].innerHTML = toInject; - _showContent(); - }); - - break; - - case 'custom': - pp_dimensions = _fitToViewport(movie_width,movie_height); // Fit item to viewport - - toInject = settings.custom_markup; - break; - - case 'inline': - // to get the item height clone it, apply default width, wrap it in the prettyPhoto containers , then delete - myClone = $(pp_images[set_position]).clone().append('
    ').css({'width':settings.default_width}).wrapInner('
    ').appendTo($('body')).show(); - doresize = false; // Make sure the dimensions are not resized. - pp_dimensions = _fitToViewport($(myClone).width(),$(myClone).height()); - doresize = true; // Reset the dimensions - $(myClone).remove(); - toInject = settings.inline_markup.replace(/{content}/g,$(pp_images[set_position]).html()); - break; - }; - - if(!imgPreloader && !skipInjection){ - $pp_pic_holder.find('#pp_full_res')[0].innerHTML = toInject; - - // Show content - _showContent(); - }; - }); - - return false; - }; - - - /** - * Change page in the prettyPhoto modal box - * @param direction {String} Direction of the paging, previous or next. - */ - $.prettyPhoto.changePage = function(direction){ - currentGalleryPage = 0; - - if(direction == 'previous') { - set_position--; - if (set_position < 0) set_position = $(pp_images).size()-1; - }else if(direction == 'next'){ - set_position++; - if(set_position > $(pp_images).size()-1) set_position = 0; - }else{ - set_position=direction; - }; - - rel_index = set_position; - - if(!doresize) doresize = true; // Allow the resizing of the images - if(settings.allow_expand) { - $('.pp_contract').removeClass('pp_contract').addClass('pp_expand'); - } - - _hideContent(function(){ $.prettyPhoto.open(); }); - }; - - - /** - * Change gallery page in the prettyPhoto modal box - * @param direction {String} Direction of the paging, previous or next. - */ - $.prettyPhoto.changeGalleryPage = function(direction){ - if(direction=='next'){ - currentGalleryPage ++; - - if(currentGalleryPage > totalPage) currentGalleryPage = 0; - }else if(direction=='previous'){ - currentGalleryPage --; - - if(currentGalleryPage < 0) currentGalleryPage = totalPage; - }else{ - currentGalleryPage = direction; - }; - - slide_speed = (direction == 'next' || direction == 'previous') ? settings.animation_speed : 0; - - slide_to = currentGalleryPage * (itemsPerPage * itemWidth); - - $pp_gallery.find('ul').animate({left:-slide_to},slide_speed); - }; - - - /** - * Start the slideshow... - */ - $.prettyPhoto.startSlideshow = function(){ - if(typeof pp_slideshow == 'undefined'){ - $pp_pic_holder.find('.pp_play').unbind('click').removeClass('pp_play').addClass('pp_pause').click(function(){ - $.prettyPhoto.stopSlideshow(); - return false; - }); - pp_slideshow = setInterval($.prettyPhoto.startSlideshow,settings.slideshow); - }else{ - $.prettyPhoto.changePage('next'); - }; - } - - - /** - * Stop the slideshow... - */ - $.prettyPhoto.stopSlideshow = function(){ - $pp_pic_holder.find('.pp_pause').unbind('click').removeClass('pp_pause').addClass('pp_play').click(function(){ - $.prettyPhoto.startSlideshow(); - return false; - }); - clearInterval(pp_slideshow); - pp_slideshow=undefined; - } - - - /** - * Closes prettyPhoto. - */ - $.prettyPhoto.close = function(){ - if($pp_overlay.is(":animated")) return; - - $.prettyPhoto.stopSlideshow(); - - $pp_pic_holder.stop().find('object,embed').css('visibility','hidden'); - - $('div.pp_pic_holder,div.ppt,.pp_fade').fadeOut(settings.animation_speed,function(){ $(this).remove(); }); - - $pp_overlay.fadeOut(settings.animation_speed, function(){ - - if(settings.hideflash) $('object,embed,iframe[src*=youtube],iframe[src*=vimeo]').css('visibility','visible'); // Show the flash - - $(this).remove(); // No more need for the prettyPhoto markup - - $(window).unbind('scroll.prettyphoto'); - - clearHashtag(); - - settings.callback(); - - doresize = true; - - pp_open = false; - - delete settings; - }); - }; - - /** - * Set the proper sizes on the containers and animate the content in. - */ - function _showContent(){ - $('.pp_loaderIcon').hide(); - - // Calculate the opened top position of the pic holder - projectedTop = scroll_pos['scrollTop'] + ((windowHeight/2) - (pp_dimensions['containerHeight']/2)); - if(projectedTop < 0) projectedTop = 0; - - $ppt.fadeTo(settings.animation_speed,1); - - // Resize the content holder - $pp_pic_holder.find('.pp_content') - .animate({ - height:pp_dimensions['contentHeight'], - width:pp_dimensions['contentWidth'] - },settings.animation_speed); - - // Resize picture the holder - $pp_pic_holder.animate({ - 'top': projectedTop, - 'left': ((windowWidth/2) - (pp_dimensions['containerWidth']/2) < 0) ? 0 : (windowWidth/2) - (pp_dimensions['containerWidth']/2), - width:pp_dimensions['containerWidth'] - },settings.animation_speed,function(){ - $pp_pic_holder.find('.pp_hoverContainer,#fullResImage').height(pp_dimensions['height']).width(pp_dimensions['width']); - - $pp_pic_holder.find('.pp_fade').fadeIn(settings.animation_speed); // Fade the new content - - // Show the nav - if(isSet && _getFileType(pp_images[set_position])=="image") { $pp_pic_holder.find('.pp_hoverContainer').show(); }else{ $pp_pic_holder.find('.pp_hoverContainer').hide(); } - - if(settings.allow_expand) { - if(pp_dimensions['resized']){ // Fade the resizing link if the image is resized - $('a.pp_expand,a.pp_contract').show(); - }else{ - $('a.pp_expand').hide(); - } - } - - if(settings.autoplay_slideshow && !pp_slideshow && !pp_open) $.prettyPhoto.startSlideshow(); - - settings.changepicturecallback(); // Callback! - - pp_open = true; - }); - - _insert_gallery(); - pp_settings.ajaxcallback(); - }; - - /** - * Hide the content...DUH! - */ - function _hideContent(callback){ - // Fade out the current picture - $pp_pic_holder.find('#pp_full_res object,#pp_full_res embed').css('visibility','hidden'); - $pp_pic_holder.find('.pp_fade').fadeOut(settings.animation_speed,function(){ - $('.pp_loaderIcon').show(); - - callback(); - }); - }; - - /** - * Check the item position in the gallery array, hide or show the navigation links - * @param setCount {integer} The total number of items in the set - */ - function _checkPosition(setCount){ - (setCount > 1) ? $('.pp_nav').show() : $('.pp_nav').hide(); // Hide the bottom nav if it's not a set. - }; - - /** - * Resize the item dimensions if it's bigger than the viewport - * @param width {integer} Width of the item to be opened - * @param height {integer} Height of the item to be opened - * @return An array containin the "fitted" dimensions - */ - function _fitToViewport(width,height){ - resized = false; - - _getDimensions(width,height); - - // Define them in case there's no resize needed - imageWidth = width, imageHeight = height; - - if( ((pp_containerWidth > windowWidth) || (pp_containerHeight > windowHeight)) && doresize && settings.allow_resize && !percentBased) { - resized = true, fitting = false; - - while (!fitting){ - if((pp_containerWidth > windowWidth)){ - imageWidth = (windowWidth - 200); - imageHeight = (height/width) * imageWidth; - }else if((pp_containerHeight > windowHeight)){ - imageHeight = (windowHeight - 200); - imageWidth = (width/height) * imageHeight; - }else{ - fitting = true; - }; - - pp_containerHeight = imageHeight, pp_containerWidth = imageWidth; - }; - - - - if((pp_containerWidth > windowWidth) || (pp_containerHeight > windowHeight)){ - _fitToViewport(pp_containerWidth,pp_containerHeight) - }; - - _getDimensions(imageWidth,imageHeight); - }; - - return { - width:Math.floor(imageWidth), - height:Math.floor(imageHeight), - containerHeight:Math.floor(pp_containerHeight), - containerWidth:Math.floor(pp_containerWidth) + (settings.horizontal_padding * 2), - contentHeight:Math.floor(pp_contentHeight), - contentWidth:Math.floor(pp_contentWidth), - resized:resized - }; - }; - - /** - * Get the containers dimensions according to the item size - * @param width {integer} Width of the item to be opened - * @param height {integer} Height of the item to be opened - */ - function _getDimensions(width,height){ - width = parseFloat(width); - height = parseFloat(height); - - // Get the details height, to do so, I need to clone it since it's invisible - $pp_details = $pp_pic_holder.find('.pp_details'); - $pp_details.width(width); - detailsHeight = parseFloat($pp_details.css('marginTop')) + parseFloat($pp_details.css('marginBottom')); - - $pp_details = $pp_details.clone().addClass(settings.theme).width(width).appendTo($('body')).css({ - 'position':'absolute', - 'top':-10000 - }); - detailsHeight += $pp_details.height(); - detailsHeight = (detailsHeight <= 34) ? 36 : detailsHeight; // Min-height for the details - $pp_details.remove(); - - // Get the titles height, to do so, I need to clone it since it's invisible - $pp_title = $pp_pic_holder.find('.ppt'); - $pp_title.width(width); - titleHeight = parseFloat($pp_title.css('marginTop')) + parseFloat($pp_title.css('marginBottom')); - $pp_title = $pp_title.clone().appendTo($('body')).css({ - 'position':'absolute', - 'top':-10000 - }); - titleHeight += $pp_title.height(); - $pp_title.remove(); - - // Get the container size, to resize the holder to the right dimensions - pp_contentHeight = height + detailsHeight; - pp_contentWidth = width; - pp_containerHeight = pp_contentHeight + titleHeight + $pp_pic_holder.find('.pp_top').height() + $pp_pic_holder.find('.pp_bottom').height(); - pp_containerWidth = width; - } - - function _getFileType(itemSrc){ - if (itemSrc.match(/youtube\.com\/watch/i) || itemSrc.match(/youtu\.be/i)) { - return 'youtube'; - }else if (itemSrc.match(/vimeo\.com/i)) { - return 'vimeo'; - }else if(itemSrc.match(/\b.mov\b/i)){ - return 'quicktime'; - }else if(itemSrc.match(/\b.swf\b/i)){ - return 'flash'; - }else if(itemSrc.match(/\biframe=true\b/i)){ - return 'iframe'; - }else if(itemSrc.match(/\bajax=true\b/i)){ - return 'ajax'; - }else if(itemSrc.match(/\bcustom=true\b/i)){ - return 'custom'; - }else if(itemSrc.substr(0,1) == '#'){ - return 'inline'; - }else{ - return 'image'; - }; - }; - - function _center_overlay(){ - if(doresize && typeof $pp_pic_holder != 'undefined') { - scroll_pos = _get_scroll(); - contentHeight = $pp_pic_holder.height(), contentwidth = $pp_pic_holder.width(); - - projectedTop = (windowHeight/2) + scroll_pos['scrollTop'] - (contentHeight/2); - if(projectedTop < 0) projectedTop = 0; - - if(contentHeight > windowHeight) - return; - - $pp_pic_holder.css({ - 'top': projectedTop, - 'left': (windowWidth/2) + scroll_pos['scrollLeft'] - (contentwidth/2) - }); - }; - }; - - function _get_scroll(){ - if (self.pageYOffset) { - return {scrollTop:self.pageYOffset,scrollLeft:self.pageXOffset}; - } else if (document.documentElement && document.documentElement.scrollTop) { // Explorer 6 Strict - return {scrollTop:document.documentElement.scrollTop,scrollLeft:document.documentElement.scrollLeft}; - } else if (document.body) {// all other Explorers - return {scrollTop:document.body.scrollTop,scrollLeft:document.body.scrollLeft}; - }; - }; - - function _resize_overlay() { - windowHeight = $(window).height(), windowWidth = $(window).width(); - - if(typeof $pp_overlay != "undefined") $pp_overlay.height($(document).height()).width(windowWidth); - }; - - function _insert_gallery(){ - if(isSet && settings.overlay_gallery && _getFileType(pp_images[set_position])=="image") { - itemWidth = 52+5; // 52 beign the thumb width, 5 being the right margin. - navWidth = (settings.theme == "facebook" || settings.theme == "pp_default") ? 50 : 30; // Define the arrow width depending on the theme - - itemsPerPage = Math.floor((pp_dimensions['containerWidth'] - 100 - navWidth) / itemWidth); - itemsPerPage = (itemsPerPage < pp_images.length) ? itemsPerPage : pp_images.length; - totalPage = Math.ceil(pp_images.length / itemsPerPage) - 1; - - // Hide the nav in the case there's no need for links - if(totalPage == 0){ - navWidth = 0; // No nav means no width! - $pp_gallery.find('.pp_arrow_next,.pp_arrow_previous').hide(); - }else{ - $pp_gallery.find('.pp_arrow_next,.pp_arrow_previous').show(); - }; - - galleryWidth = itemsPerPage * itemWidth; - fullGalleryWidth = pp_images.length * itemWidth; - - // Set the proper width to the gallery items - $pp_gallery - .css('margin-left',-((galleryWidth/2) + (navWidth/2))) - .find('div:first').width(galleryWidth+5) - .find('ul').width(fullGalleryWidth) - .find('li.selected').removeClass('selected'); - - goToPage = (Math.floor(set_position/itemsPerPage) < totalPage) ? Math.floor(set_position/itemsPerPage) : totalPage; - - $.prettyPhoto.changeGalleryPage(goToPage); - - $pp_gallery_li.filter(':eq('+set_position+')').addClass('selected'); - }else{ - $pp_pic_holder.find('.pp_content').unbind('mouseenter mouseleave'); - // $pp_gallery.hide(); - } - } - - function _build_overlay(caller){ - // Inject Social Tool markup into General markup - if(settings.social_tools) - facebook_like_link = settings.social_tools.replace('{location_href}', encodeURIComponent(location.href)); - - settings.markup = settings.markup.replace('{pp_social}',''); - - $('body').append(settings.markup); // Inject the markup - - $pp_pic_holder = $('.pp_pic_holder') , $ppt = $('.ppt'), $pp_overlay = $('div.pp_overlay'); // Set my global selectors - - // Inject the inline gallery! - if(isSet && settings.overlay_gallery) { - currentGalleryPage = 0; - toInject = ""; - for (var i=0; i < pp_images.length; i++) { - if(!pp_images[i].match(/\b(jpg|jpeg|png|gif)\b/gi)){ - classname = 'default'; - img_src = ''; - }else{ - classname = ''; - img_src = pp_images[i]; - } - toInject += "
  • "; - }; - - toInject = settings.gallery_markup.replace(/{gallery}/g,toInject); - - $pp_pic_holder.find('#pp_full_res').after(toInject); - - $pp_gallery = $('.pp_pic_holder .pp_gallery'), $pp_gallery_li = $pp_gallery.find('li'); // Set the gallery selectors - - $pp_gallery.find('.pp_arrow_next').click(function(){ - $.prettyPhoto.changeGalleryPage('next'); - $.prettyPhoto.stopSlideshow(); - return false; - }); - - $pp_gallery.find('.pp_arrow_previous').click(function(){ - $.prettyPhoto.changeGalleryPage('previous'); - $.prettyPhoto.stopSlideshow(); - return false; - }); - - $pp_pic_holder.find('.pp_content').hover( - function(){ - $pp_pic_holder.find('.pp_gallery:not(.disabled)').fadeIn(); - }, - function(){ - $pp_pic_holder.find('.pp_gallery:not(.disabled)').fadeOut(); - }); - - itemWidth = 52+5; // 52 beign the thumb width, 5 being the right margin. - $pp_gallery_li.each(function(i){ - $(this) - .find('a') - .click(function(){ - $.prettyPhoto.changePage(i); - $.prettyPhoto.stopSlideshow(); - return false; - }); - }); - }; - - - // Inject the play/pause if it's a slideshow - if(settings.slideshow){ - $pp_pic_holder.find('.pp_nav').prepend('Play') - $pp_pic_holder.find('.pp_nav .pp_play').click(function(){ - $.prettyPhoto.startSlideshow(); - return false; - }); - } - - $pp_pic_holder.attr('class','pp_pic_holder ' + settings.theme); // Set the proper theme - - $pp_overlay - .css({ - 'opacity':0, - 'height':$(document).height(), - 'width':$(window).width() - }) - .bind('click',function(){ - if(!settings.modal) $.prettyPhoto.close(); - }); - - $('a.pp_close').bind('click',function(){ $.prettyPhoto.close(); return false; }); - - - if(settings.allow_expand) { - $('a.pp_expand').bind('click',function(e){ - // Expand the image - if($(this).hasClass('pp_expand')){ - $(this).removeClass('pp_expand').addClass('pp_contract'); - doresize = false; - }else{ - $(this).removeClass('pp_contract').addClass('pp_expand'); - doresize = true; - }; - - _hideContent(function(){ $.prettyPhoto.open(); }); - - return false; - }); - } - - $pp_pic_holder.find('.pp_previous, .pp_nav .pp_arrow_previous').bind('click',function(){ - $.prettyPhoto.changePage('previous'); - $.prettyPhoto.stopSlideshow(); - return false; - }); - - $pp_pic_holder.find('.pp_next, .pp_nav .pp_arrow_next').bind('click',function(){ - $.prettyPhoto.changePage('next'); - $.prettyPhoto.stopSlideshow(); - return false; - }); - - _center_overlay(); // Center it - }; - - if(!pp_alreadyInitialized && getHashtag()){ - pp_alreadyInitialized = true; - - // Grab the rel index to trigger the click on the correct element - hashIndex = getHashtag(); - hashRel = hashIndex; - hashIndex = hashIndex.substring(hashIndex.indexOf('/')+1,hashIndex.length-1); - hashRel = hashRel.substring(0,hashRel.indexOf('/')); - - // Little timeout to make sure all the prettyPhoto initialize scripts has been run. - // Useful in the event the page contain several init scripts. - setTimeout(function(){ $("a["+pp_settings.hook+"^='"+hashRel+"']:eq("+hashIndex+")").trigger('click'); },50); - } - - return this.unbind('click.prettyphoto').bind('click.prettyphoto',$.prettyPhoto.initialize); // Return the jQuery object for chaining. The unbind method is used to avoid click conflict when the plugin is called more than once - }; - - function getHashtag(){ - var url = location.href; - hashtag = (url.indexOf('#prettyPhoto') !== -1) ? decodeURI(url.substring(url.indexOf('#prettyPhoto')+1,url.length)) : false; - - return hashtag; - }; - - function setHashtag(){ - if(typeof theRel == 'undefined') return; // theRel is set on normal calls, it's impossible to deeplink using the API - location.hash = theRel + '/'+rel_index+'/'; - }; - - function clearHashtag(){ - if ( location.href.indexOf('#prettyPhoto') !== -1 ) location.hash = "prettyPhoto"; - } - - function getParam(name,url){ - name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); - var regexS = "[\\?&]"+name+"=([^&#]*)"; - var regex = new RegExp( regexS ); - var results = regex.exec( url ); - return ( results == null ) ? "" : results[1]; - } - -})(jQuery); - -var pp_alreadyInitialized = false; // Used for the deep linking to make sure not to call the same function several times. diff --git a/mamweb/templates/base.html b/mamweb/templates/base.html index 027f296f..c30a98bf 100644 --- a/mamweb/templates/base.html +++ b/mamweb/templates/base.html @@ -14,7 +14,6 @@ - @@ -123,16 +122,6 @@ - - {% if april == 2021 %} - {% if april == 2021 %} +{% endif %} + + + +{% if april == 2023 %} + +{% endif %} \ No newline at end of file diff --git a/mamweb/templates/base.html b/mamweb/templates/base.html index f8012564..b8ba0039 100644 --- a/mamweb/templates/base.html +++ b/mamweb/templates/base.html @@ -121,64 +121,7 @@ - {% if april == 2021 %} - - {% endif %} - {% if april == 2023 %} - - {% endif %} + {% include 'april.html' %} {% block js %}{% endblock %} From 9cca7beba5e267266c3269c805756a9def29a877 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Wed, 14 Feb 2024 09:19:45 +0100 Subject: [PATCH 043/225] Update bootstrapu --- docs/css.rst | 2 +- .../static/bootstrap/css/bootstrap-theme.css | 469 - mamweb/static/bootstrap/css/bootstrap.css | 16543 +++++++++++----- .../fonts/glyphicons-halflings-regular.eot | Bin 20335 -> 0 bytes .../fonts/glyphicons-halflings-regular.svg | 229 - .../fonts/glyphicons-halflings-regular.ttf | Bin 41280 -> 0 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 23320 -> 0 bytes mamweb/static/bootstrap/js/bootstrap.js | 6308 ++++-- mamweb/static/css/base.css | 3 +- 9 files changed, 15384 insertions(+), 8170 deletions(-) delete mode 100644 mamweb/static/bootstrap/css/bootstrap-theme.css delete mode 100644 mamweb/static/bootstrap/fonts/glyphicons-halflings-regular.eot delete mode 100644 mamweb/static/bootstrap/fonts/glyphicons-halflings-regular.svg delete mode 100644 mamweb/static/bootstrap/fonts/glyphicons-halflings-regular.ttf delete mode 100644 mamweb/static/bootstrap/fonts/glyphicons-halflings-regular.woff diff --git a/docs/css.rst b/docs/css.rst index a6cf96b1..b2ec20ed 100644 --- a/docs/css.rst +++ b/docs/css.rst @@ -13,7 +13,7 @@ Dále jsem separoval CSSka pro **galerii** (potřebuje hodně specifických styl Dále web (asi) používá externí frameworky (v separátních složkách – mají k sobě i JS a podobné věci): -- bootstrap: dělá nějaké basic stylování, *web je na něm hodně závislý* (například jsem zjistil, že bootstrap přidává ``font-size:14px``, bez čehož se web úplně rozpadne) +- bootstrap: dělá nějaké basic stylování, *web je na něm hodně závislý* (například jsem zjistil, že bootstrap kdysi přidával ``font-size:14px``, bez čehož se web úplně rozpadnul) Pak jsou tu ``mamweb-dev.css`` a ``printtable.css``, co jsem si ještě nerozmyslel, co s tím. diff --git a/mamweb/static/bootstrap/css/bootstrap-theme.css b/mamweb/static/bootstrap/css/bootstrap-theme.css deleted file mode 100644 index eb845eb5..00000000 --- a/mamweb/static/bootstrap/css/bootstrap-theme.css +++ /dev/null @@ -1,469 +0,0 @@ -/*! - * Bootstrap v3.3.1 (http://getbootstrap.com) - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -.btn-default, -.btn-primary, -.btn-success, -.btn-info, -.btn-warning, -.btn-danger { - text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); -} -.btn-default:active, -.btn-primary:active, -.btn-success:active, -.btn-info:active, -.btn-warning:active, -.btn-danger:active, -.btn-default.active, -.btn-primary.active, -.btn-success.active, -.btn-info.active, -.btn-warning.active, -.btn-danger.active { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); -} -.btn-default .badge, -.btn-primary .badge, -.btn-success .badge, -.btn-info .badge, -.btn-warning .badge, -.btn-danger .badge { - text-shadow: none; -} -.btn:active, -.btn.active { - background-image: none; -} -.btn-default { - text-shadow: 0 1px 0 #fff; - background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%); - background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0)); - background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #dbdbdb; - border-color: #ccc; -} -.btn-default:hover, -.btn-default:focus { - background-color: #e0e0e0; - background-position: 0 -15px; -} -.btn-default:active, -.btn-default.active { - background-color: #e0e0e0; - border-color: #dbdbdb; -} -.btn-default:disabled, -.btn-default[disabled] { - background-color: #e0e0e0; - background-image: none; -} -.btn-primary { - background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88)); - background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #245580; -} -.btn-primary:hover, -.btn-primary:focus { - background-color: #265a88; - background-position: 0 -15px; -} -.btn-primary:active, -.btn-primary.active { - background-color: #265a88; - border-color: #245580; -} -.btn-primary:disabled, -.btn-primary[disabled] { - background-color: #265a88; - background-image: none; -} -.btn-success { - background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%); - background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641)); - background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #3e8f3e; -} -.btn-success:hover, -.btn-success:focus { - background-color: #419641; - background-position: 0 -15px; -} -.btn-success:active, -.btn-success.active { - background-color: #419641; - border-color: #3e8f3e; -} -.btn-success:disabled, -.btn-success[disabled] { - background-color: #419641; - background-image: none; -} -.btn-info { - background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); - background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2)); - background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #28a4c9; -} -.btn-info:hover, -.btn-info:focus { - background-color: #2aabd2; - background-position: 0 -15px; -} -.btn-info:active, -.btn-info.active { - background-color: #2aabd2; - border-color: #28a4c9; -} -.btn-info:disabled, -.btn-info[disabled] { - background-color: #2aabd2; - background-image: none; -} -.btn-warning { - background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); - background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316)); - background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #e38d13; -} -.btn-warning:hover, -.btn-warning:focus { - background-color: #eb9316; - background-position: 0 -15px; -} -.btn-warning:active, -.btn-warning.active { - background-color: #eb9316; - border-color: #e38d13; -} -.btn-warning:disabled, -.btn-warning[disabled] { - background-color: #eb9316; - background-image: none; -} -.btn-danger { - background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%); - background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a)); - background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #b92c28; -} -.btn-danger:hover, -.btn-danger:focus { - background-color: #c12e2a; - background-position: 0 -15px; -} -.btn-danger:active, -.btn-danger.active { - background-color: #c12e2a; - border-color: #b92c28; -} -.btn-danger:disabled, -.btn-danger[disabled] { - background-color: #c12e2a; - background-image: none; -} -.thumbnail, -.img-thumbnail { - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); - box-shadow: 0 1px 2px rgba(0, 0, 0, .075); -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - background-color: #e8e8e8; - background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); - background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); - background-repeat: repeat-x; -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - background-color: #2e6da4; - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); - background-repeat: repeat-x; -} -.navbar-default { - background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%); - background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8)); - background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); -} -.navbar-default .navbar-nav > .open > a, -.navbar-default .navbar-nav > .active > a { - background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); - background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2)); - background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0); - background-repeat: repeat-x; - -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); - box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); -} -.navbar-brand, -.navbar-nav > li > a { - text-shadow: 0 1px 0 rgba(255, 255, 255, .25); -} -.navbar-inverse { - background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%); - background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222)); - background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; -} -.navbar-inverse .navbar-nav > .open > a, -.navbar-inverse .navbar-nav > .active > a { - background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%); - background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f)); - background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0); - background-repeat: repeat-x; - -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); - box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); -} -.navbar-inverse .navbar-brand, -.navbar-inverse .navbar-nav > li > a { - text-shadow: 0 -1px 0 rgba(0, 0, 0, .25); -} -.navbar-static-top, -.navbar-fixed-top, -.navbar-fixed-bottom { - border-radius: 0; -} -@media (max-width: 767px) { - .navbar .navbar-nav .open .dropdown-menu > .active > a, - .navbar .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #fff; - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); - background-repeat: repeat-x; - } -} -.alert { - text-shadow: 0 1px 0 rgba(255, 255, 255, .2); - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); -} -.alert-success { - background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); - background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc)); - background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0); - background-repeat: repeat-x; - border-color: #b2dba1; -} -.alert-info { - background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%); - background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0)); - background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0); - background-repeat: repeat-x; - border-color: #9acfea; -} -.alert-warning { - background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); - background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0)); - background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0); - background-repeat: repeat-x; - border-color: #f5e79e; -} -.alert-danger { - background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); - background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3)); - background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0); - background-repeat: repeat-x; - border-color: #dca7a7; -} -.progress { - background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); - background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5)); - background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar { - background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090)); - background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-success { - background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%); - background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44)); - background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-info { - background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); - background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5)); - background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-warning { - background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); - background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f)); - background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-danger { - background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%); - background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c)); - background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-striped { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.list-group { - border-radius: 4px; - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); - box-shadow: 0 1px 2px rgba(0, 0, 0, .075); -} -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - text-shadow: 0 -1px 0 #286090; - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0); - background-repeat: repeat-x; - border-color: #2b669a; -} -.list-group-item.active .badge, -.list-group-item.active:hover .badge, -.list-group-item.active:focus .badge { - text-shadow: none; -} -.panel { - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05); - box-shadow: 0 1px 2px rgba(0, 0, 0, .05); -} -.panel-default > .panel-heading { - background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); - background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); - background-repeat: repeat-x; -} -.panel-primary > .panel-heading { - background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); - background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); - background-repeat: repeat-x; -} -.panel-success > .panel-heading { - background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); - background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6)); - background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0); - background-repeat: repeat-x; -} -.panel-info > .panel-heading { - background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); - background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3)); - background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0); - background-repeat: repeat-x; -} -.panel-warning > .panel-heading { - background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); - background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc)); - background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0); - background-repeat: repeat-x; -} -.panel-danger > .panel-heading { - background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%); - background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc)); - background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0); - background-repeat: repeat-x; -} -.well { - background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); - background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); - background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5)); - background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0); - background-repeat: repeat-x; - border-color: #dcdcdc; - -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); - box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); -} diff --git a/mamweb/static/bootstrap/css/bootstrap.css b/mamweb/static/bootstrap/css/bootstrap.css index bd20fe85..30aae55e 100644 --- a/mamweb/static/bootstrap/css/bootstrap.css +++ b/mamweb/static/bootstrap/css/bootstrap.css @@ -1,6331 +1,12068 @@ +@charset "UTF-8"; /*! - * Bootstrap v3.3.1 (http://getbootstrap.com) - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * Bootstrap v5.3.2 (https://getbootstrap.com/) + * Copyright 2011-2023 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ +:root, +[data-bs-theme=light] { + --bs-blue: #0d6efd; + --bs-indigo: #6610f2; + --bs-purple: #6f42c1; + --bs-pink: #d63384; + --bs-red: #dc3545; + --bs-orange: #fd7e14; + --bs-yellow: #ffc107; + --bs-green: #198754; + --bs-teal: #20c997; + --bs-cyan: #0dcaf0; + --bs-black: #000; + --bs-white: #fff; + --bs-gray: #6c757d; + --bs-gray-dark: #343a40; + --bs-gray-100: #f8f9fa; + --bs-gray-200: #e9ecef; + --bs-gray-300: #dee2e6; + --bs-gray-400: #ced4da; + --bs-gray-500: #adb5bd; + --bs-gray-600: #6c757d; + --bs-gray-700: #495057; + --bs-gray-800: #343a40; + --bs-gray-900: #212529; + --bs-primary: #0d6efd; + --bs-secondary: #6c757d; + --bs-success: #198754; + --bs-info: #0dcaf0; + --bs-warning: #ffc107; + --bs-danger: #dc3545; + --bs-light: #f8f9fa; + --bs-dark: #212529; + --bs-primary-rgb: 13, 110, 253; + --bs-secondary-rgb: 108, 117, 125; + --bs-success-rgb: 25, 135, 84; + --bs-info-rgb: 13, 202, 240; + --bs-warning-rgb: 255, 193, 7; + --bs-danger-rgb: 220, 53, 69; + --bs-light-rgb: 248, 249, 250; + --bs-dark-rgb: 33, 37, 41; + --bs-primary-text-emphasis: #052c65; + --bs-secondary-text-emphasis: #2b2f32; + --bs-success-text-emphasis: #0a3622; + --bs-info-text-emphasis: #055160; + --bs-warning-text-emphasis: #664d03; + --bs-danger-text-emphasis: #58151c; + --bs-light-text-emphasis: #495057; + --bs-dark-text-emphasis: #495057; + --bs-primary-bg-subtle: #cfe2ff; + --bs-secondary-bg-subtle: #e2e3e5; + --bs-success-bg-subtle: #d1e7dd; + --bs-info-bg-subtle: #cff4fc; + --bs-warning-bg-subtle: #fff3cd; + --bs-danger-bg-subtle: #f8d7da; + --bs-light-bg-subtle: #fcfcfd; + --bs-dark-bg-subtle: #ced4da; + --bs-primary-border-subtle: #9ec5fe; + --bs-secondary-border-subtle: #c4c8cb; + --bs-success-border-subtle: #a3cfbb; + --bs-info-border-subtle: #9eeaf9; + --bs-warning-border-subtle: #ffe69c; + --bs-danger-border-subtle: #f1aeb5; + --bs-light-border-subtle: #e9ecef; + --bs-dark-border-subtle: #adb5bd; + --bs-white-rgb: 255, 255, 255; + --bs-black-rgb: 0, 0, 0; + --bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0)); + --bs-body-font-family: var(--bs-font-sans-serif); + --bs-body-font-size: 1rem; + --bs-body-font-weight: 400; + --bs-body-line-height: 1.5; + --bs-body-color: #212529; + --bs-body-color-rgb: 33, 37, 41; + --bs-body-bg: #fff; + --bs-body-bg-rgb: 255, 255, 255; + --bs-emphasis-color: #000; + --bs-emphasis-color-rgb: 0, 0, 0; + --bs-secondary-color: rgba(33, 37, 41, 0.75); + --bs-secondary-color-rgb: 33, 37, 41; + --bs-secondary-bg: #e9ecef; + --bs-secondary-bg-rgb: 233, 236, 239; + --bs-tertiary-color: rgba(33, 37, 41, 0.5); + --bs-tertiary-color-rgb: 33, 37, 41; + --bs-tertiary-bg: #f8f9fa; + --bs-tertiary-bg-rgb: 248, 249, 250; + --bs-heading-color: inherit; + --bs-link-color: #0d6efd; + --bs-link-color-rgb: 13, 110, 253; + --bs-link-decoration: underline; + --bs-link-hover-color: #0a58ca; + --bs-link-hover-color-rgb: 10, 88, 202; + --bs-code-color: #d63384; + --bs-highlight-color: #212529; + --bs-highlight-bg: #fff3cd; + --bs-border-width: 1px; + --bs-border-style: solid; + --bs-border-color: #dee2e6; + --bs-border-color-translucent: rgba(0, 0, 0, 0.175); + --bs-border-radius: 0.375rem; + --bs-border-radius-sm: 0.25rem; + --bs-border-radius-lg: 0.5rem; + --bs-border-radius-xl: 1rem; + --bs-border-radius-xxl: 2rem; + --bs-border-radius-2xl: var(--bs-border-radius-xxl); + --bs-border-radius-pill: 50rem; + --bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); + --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); + --bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175); + --bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075); + --bs-focus-ring-width: 0.25rem; + --bs-focus-ring-opacity: 0.25; + --bs-focus-ring-color: rgba(13, 110, 253, 0.25); + --bs-form-valid-color: #198754; + --bs-form-valid-border-color: #198754; + --bs-form-invalid-color: #dc3545; + --bs-form-invalid-border-color: #dc3545; +} -/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ -html { - font-family: sans-serif; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; +[data-bs-theme=dark] { + color-scheme: dark; + --bs-body-color: #dee2e6; + --bs-body-color-rgb: 222, 226, 230; + --bs-body-bg: #212529; + --bs-body-bg-rgb: 33, 37, 41; + --bs-emphasis-color: #fff; + --bs-emphasis-color-rgb: 255, 255, 255; + --bs-secondary-color: rgba(222, 226, 230, 0.75); + --bs-secondary-color-rgb: 222, 226, 230; + --bs-secondary-bg: #343a40; + --bs-secondary-bg-rgb: 52, 58, 64; + --bs-tertiary-color: rgba(222, 226, 230, 0.5); + --bs-tertiary-color-rgb: 222, 226, 230; + --bs-tertiary-bg: #2b3035; + --bs-tertiary-bg-rgb: 43, 48, 53; + --bs-primary-text-emphasis: #6ea8fe; + --bs-secondary-text-emphasis: #a7acb1; + --bs-success-text-emphasis: #75b798; + --bs-info-text-emphasis: #6edff6; + --bs-warning-text-emphasis: #ffda6a; + --bs-danger-text-emphasis: #ea868f; + --bs-light-text-emphasis: #f8f9fa; + --bs-dark-text-emphasis: #dee2e6; + --bs-primary-bg-subtle: #031633; + --bs-secondary-bg-subtle: #161719; + --bs-success-bg-subtle: #051b11; + --bs-info-bg-subtle: #032830; + --bs-warning-bg-subtle: #332701; + --bs-danger-bg-subtle: #2c0b0e; + --bs-light-bg-subtle: #343a40; + --bs-dark-bg-subtle: #1a1d20; + --bs-primary-border-subtle: #084298; + --bs-secondary-border-subtle: #41464b; + --bs-success-border-subtle: #0f5132; + --bs-info-border-subtle: #087990; + --bs-warning-border-subtle: #997404; + --bs-danger-border-subtle: #842029; + --bs-light-border-subtle: #495057; + --bs-dark-border-subtle: #343a40; + --bs-heading-color: inherit; + --bs-link-color: #6ea8fe; + --bs-link-hover-color: #8bb9fe; + --bs-link-color-rgb: 110, 168, 254; + --bs-link-hover-color-rgb: 139, 185, 254; + --bs-code-color: #e685b5; + --bs-highlight-color: #dee2e6; + --bs-highlight-bg: #664d03; + --bs-border-color: #495057; + --bs-border-color-translucent: rgba(255, 255, 255, 0.15); + --bs-form-valid-color: #75b798; + --bs-form-valid-border-color: #75b798; + --bs-form-invalid-color: #ea868f; + --bs-form-invalid-border-color: #ea868f; +} + +*, +*::before, +*::after { + box-sizing: border-box; } + +@media (prefers-reduced-motion: no-preference) { + :root { + scroll-behavior: smooth; + } +} + body { margin: 0; + font-family: var(--bs-body-font-family); + font-size: var(--bs-body-font-size); + font-weight: var(--bs-body-font-weight); + line-height: var(--bs-body-line-height); + color: var(--bs-body-color); + text-align: var(--bs-body-text-align); + background-color: var(--bs-body-bg); + -webkit-text-size-adjust: 100%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -menu, -nav, -section, -summary { - display: block; + +hr { + margin: 1rem 0; + color: inherit; + border: 0; + border-top: var(--bs-border-width) solid; + opacity: 0.25; } -audio, -canvas, -progress, -video { - display: inline-block; - vertical-align: baseline; + +h6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 { + margin-top: 0; + margin-bottom: 0.5rem; + font-weight: 500; + line-height: 1.2; + color: var(--bs-heading-color); } -audio:not([controls]) { - display: none; - height: 0; + +h1, .h1 { + font-size: calc(1.375rem + 1.5vw); } -[hidden], -template { - display: none; +@media (min-width: 1200px) { + h1, .h1 { + font-size: 2.5rem; + } } -a { - background-color: transparent; + +h2, .h2 { + font-size: calc(1.325rem + 0.9vw); } -a:active, -a:hover { - outline: 0; +@media (min-width: 1200px) { + h2, .h2 { + font-size: 2rem; + } +} + +h3, .h3 { + font-size: calc(1.3rem + 0.6vw); +} +@media (min-width: 1200px) { + h3, .h3 { + font-size: 1.75rem; + } +} + +h4, .h4 { + font-size: calc(1.275rem + 0.3vw); +} +@media (min-width: 1200px) { + h4, .h4 { + font-size: 1.5rem; + } +} + +h5, .h5 { + font-size: 1.25rem; +} + +h6, .h6 { + font-size: 1rem; } + +p { + margin-top: 0; + margin-bottom: 1rem; +} + abbr[title] { - border-bottom: 1px dotted; + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + cursor: help; + -webkit-text-decoration-skip-ink: none; + text-decoration-skip-ink: none; } -b, -strong { - font-weight: bold; + +address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; +} + +ol, +ul { + padding-left: 2rem; +} + +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1rem; +} + +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; } -dfn { - font-style: italic; + +dt { + font-weight: 700; } -h1 { - margin: .67em 0; - font-size: 2em; + +dd { + margin-bottom: 0.5rem; + margin-left: 0; } -mark { - color: #000; - background: #ff0; + +blockquote { + margin: 0 0 1rem; } -small { - font-size: 80%; + +b, +strong { + font-weight: bolder; +} + +small, .small { + font-size: 0.875em; +} + +mark, .mark { + padding: 0.1875em; + color: var(--bs-highlight-color); + background-color: var(--bs-highlight-bg); } + sub, sup { position: relative; - font-size: 75%; + font-size: 0.75em; line-height: 0; vertical-align: baseline; } -sup { - top: -.5em; -} + sub { - bottom: -.25em; -} -img { - border: 0; + bottom: -0.25em; } -svg:not(:root) { - overflow: hidden; + +sup { + top: -0.5em; } -figure { - margin: 1em 40px; + +a { + color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1)); + text-decoration: underline; } -hr { - height: 0; - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; +a:hover { + --bs-link-color-rgb: var(--bs-link-hover-color-rgb); } -pre { - overflow: auto; + +a:not([href]):not([class]), a:not([href]):not([class]):hover { + color: inherit; + text-decoration: none; } + +pre, code, kbd, -pre, samp { - font-family: monospace, monospace; + font-family: var(--bs-font-monospace); font-size: 1em; } -button, -input, -optgroup, -select, -textarea { - margin: 0; - font: inherit; - color: inherit; -} -button { - overflow: visible; -} -button, -select { - text-transform: none; -} -button, -html input[type="button"], -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; - cursor: pointer; -} -button[disabled], -html input[disabled] { - cursor: default; -} -button::-moz-focus-inner, -input::-moz-focus-inner { - padding: 0; - border: 0; -} -input { - line-height: normal; -} -input[type="checkbox"], -input[type="radio"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - padding: 0; + +pre { + display: block; + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; + font-size: 0.875em; } -input[type="number"]::-webkit-inner-spin-button, -input[type="number"]::-webkit-outer-spin-button { - height: auto; +pre code { + font-size: inherit; + color: inherit; + word-break: normal; } -input[type="search"] { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; - -webkit-appearance: textfield; + +code { + font-size: 0.875em; + color: var(--bs-code-color); + word-wrap: break-word; } -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; +a > code { + color: inherit; } -fieldset { - padding: .35em .625em .75em; - margin: 0 2px; - border: 1px solid #c0c0c0; + +kbd { + padding: 0.1875rem 0.375rem; + font-size: 0.875em; + color: var(--bs-body-bg); + background-color: var(--bs-body-color); + border-radius: 0.25rem; } -legend { +kbd kbd { padding: 0; - border: 0; + font-size: 1em; } -textarea { - overflow: auto; + +figure { + margin: 0 0 1rem; } -optgroup { - font-weight: bold; + +img, +svg { + vertical-align: middle; } + table { - border-spacing: 0; + caption-side: bottom; border-collapse: collapse; } + +caption { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + color: var(--bs-secondary-color); + text-align: left; +} + +th { + text-align: inherit; + text-align: -webkit-match-parent; +} + +thead, +tbody, +tfoot, +tr, td, th { - padding: 0; + border-color: inherit; + border-style: solid; + border-width: 0; } -/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ -@media print { - *, - *:before, - *:after { - color: #000 !important; - text-shadow: none !important; - background: transparent !important; - -webkit-box-shadow: none !important; - box-shadow: none !important; - } - a, - a:visited { - text-decoration: underline; - } - a[href]:after { - content: " (" attr(href) ")"; - } - abbr[title]:after { - content: " (" attr(title) ")"; - } - a[href^="#"]:after, - a[href^="javascript:"]:after { - content: ""; - } - pre, - blockquote { - border: 1px solid #999; - page-break-inside: avoid; - } - thead { - display: table-header-group; - } - tr, - img { - page-break-inside: avoid; - } - img { - max-width: 100% !important; - } - p, - h2, - h3 { - orphans: 3; - widows: 3; - } - h2, - h3 { - page-break-after: avoid; - } - select { - background: #fff !important; - } - .navbar { - display: none; - } - .btn > .caret, - .dropup > .btn > .caret { - border-top-color: #000 !important; - } - .label { - border: 1px solid #000; - } - .table { - border-collapse: collapse !important; - } - .table td, - .table th { - background-color: #fff !important; - } - .table-bordered th, - .table-bordered td { - border: 1px solid #ddd !important; - } +label { + display: inline-block; } -@font-face { - font-family: 'Glyphicons Halflings'; - src: url('../fonts/glyphicons-halflings-regular.eot'); - src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); +button { + border-radius: 0; } -.glyphicon { - position: relative; - top: 1px; - display: inline-block; - font-family: 'Glyphicons Halflings'; - font-style: normal; - font-weight: normal; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; +button:focus:not(:focus-visible) { + outline: 0; } -.glyphicon-asterisk:before { - content: "\2a"; + +input, +button, +select, +optgroup, +textarea { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; } -.glyphicon-plus:before { - content: "\2b"; + +button, +select { + text-transform: none; } -.glyphicon-euro:before, -.glyphicon-eur:before { - content: "\20ac"; + +[role=button] { + cursor: pointer; } -.glyphicon-minus:before { - content: "\2212"; + +select { + word-wrap: normal; } -.glyphicon-cloud:before { - content: "\2601"; +select:disabled { + opacity: 1; } -.glyphicon-envelope:before { - content: "\2709"; + +[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator { + display: none !important; } -.glyphicon-pencil:before { - content: "\270f"; + +button, +[type=button], +[type=reset], +[type=submit] { + -webkit-appearance: button; } -.glyphicon-glass:before { - content: "\e001"; +button:not(:disabled), +[type=button]:not(:disabled), +[type=reset]:not(:disabled), +[type=submit]:not(:disabled) { + cursor: pointer; } -.glyphicon-music:before { - content: "\e002"; + +::-moz-focus-inner { + padding: 0; + border-style: none; } -.glyphicon-search:before { - content: "\e003"; + +textarea { + resize: vertical; } -.glyphicon-heart:before { - content: "\e005"; + +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; } -.glyphicon-star:before { - content: "\e006"; + +legend { + float: left; + width: 100%; + padding: 0; + margin-bottom: 0.5rem; + font-size: calc(1.275rem + 0.3vw); + line-height: inherit; } -.glyphicon-star-empty:before { - content: "\e007"; +@media (min-width: 1200px) { + legend { + font-size: 1.5rem; + } } -.glyphicon-user:before { - content: "\e008"; +legend + * { + clear: left; } -.glyphicon-film:before { - content: "\e009"; + +::-webkit-datetime-edit-fields-wrapper, +::-webkit-datetime-edit-text, +::-webkit-datetime-edit-minute, +::-webkit-datetime-edit-hour-field, +::-webkit-datetime-edit-day-field, +::-webkit-datetime-edit-month-field, +::-webkit-datetime-edit-year-field { + padding: 0; } -.glyphicon-th-large:before { - content: "\e010"; + +::-webkit-inner-spin-button { + height: auto; } -.glyphicon-th:before { - content: "\e011"; + +[type=search] { + -webkit-appearance: textfield; + outline-offset: -2px; } -.glyphicon-th-list:before { - content: "\e012"; -} -.glyphicon-ok:before { - content: "\e013"; -} -.glyphicon-remove:before { - content: "\e014"; -} -.glyphicon-zoom-in:before { - content: "\e015"; -} -.glyphicon-zoom-out:before { - content: "\e016"; -} -.glyphicon-off:before { - content: "\e017"; -} -.glyphicon-signal:before { - content: "\e018"; -} -.glyphicon-cog:before { - content: "\e019"; -} -.glyphicon-trash:before { - content: "\e020"; -} -.glyphicon-home:before { - content: "\e021"; -} -.glyphicon-file:before { - content: "\e022"; -} -.glyphicon-time:before { - content: "\e023"; -} -.glyphicon-road:before { - content: "\e024"; -} -.glyphicon-download-alt:before { - content: "\e025"; -} -.glyphicon-download:before { - content: "\e026"; -} -.glyphicon-upload:before { - content: "\e027"; -} -.glyphicon-inbox:before { - content: "\e028"; -} -.glyphicon-play-circle:before { - content: "\e029"; -} -.glyphicon-repeat:before { - content: "\e030"; -} -.glyphicon-refresh:before { - content: "\e031"; -} -.glyphicon-list-alt:before { - content: "\e032"; -} -.glyphicon-lock:before { - content: "\e033"; -} -.glyphicon-flag:before { - content: "\e034"; -} -.glyphicon-headphones:before { - content: "\e035"; -} -.glyphicon-volume-off:before { - content: "\e036"; -} -.glyphicon-volume-down:before { - content: "\e037"; -} -.glyphicon-volume-up:before { - content: "\e038"; -} -.glyphicon-qrcode:before { - content: "\e039"; -} -.glyphicon-barcode:before { - content: "\e040"; -} -.glyphicon-tag:before { - content: "\e041"; -} -.glyphicon-tags:before { - content: "\e042"; -} -.glyphicon-book:before { - content: "\e043"; -} -.glyphicon-bookmark:before { - content: "\e044"; -} -.glyphicon-print:before { - content: "\e045"; -} -.glyphicon-camera:before { - content: "\e046"; -} -.glyphicon-font:before { - content: "\e047"; -} -.glyphicon-bold:before { - content: "\e048"; -} -.glyphicon-italic:before { - content: "\e049"; -} -.glyphicon-text-height:before { - content: "\e050"; -} -.glyphicon-text-width:before { - content: "\e051"; -} -.glyphicon-align-left:before { - content: "\e052"; -} -.glyphicon-align-center:before { - content: "\e053"; -} -.glyphicon-align-right:before { - content: "\e054"; -} -.glyphicon-align-justify:before { - content: "\e055"; -} -.glyphicon-list:before { - content: "\e056"; -} -.glyphicon-indent-left:before { - content: "\e057"; -} -.glyphicon-indent-right:before { - content: "\e058"; -} -.glyphicon-facetime-video:before { - content: "\e059"; -} -.glyphicon-picture:before { - content: "\e060"; -} -.glyphicon-map-marker:before { - content: "\e062"; -} -.glyphicon-adjust:before { - content: "\e063"; -} -.glyphicon-tint:before { - content: "\e064"; -} -.glyphicon-edit:before { - content: "\e065"; -} -.glyphicon-share:before { - content: "\e066"; -} -.glyphicon-check:before { - content: "\e067"; -} -.glyphicon-move:before { - content: "\e068"; -} -.glyphicon-step-backward:before { - content: "\e069"; -} -.glyphicon-fast-backward:before { - content: "\e070"; -} -.glyphicon-backward:before { - content: "\e071"; -} -.glyphicon-play:before { - content: "\e072"; -} -.glyphicon-pause:before { - content: "\e073"; -} -.glyphicon-stop:before { - content: "\e074"; -} -.glyphicon-forward:before { - content: "\e075"; -} -.glyphicon-fast-forward:before { - content: "\e076"; -} -.glyphicon-step-forward:before { - content: "\e077"; -} -.glyphicon-eject:before { - content: "\e078"; -} -.glyphicon-chevron-left:before { - content: "\e079"; -} -.glyphicon-chevron-right:before { - content: "\e080"; -} -.glyphicon-plus-sign:before { - content: "\e081"; -} -.glyphicon-minus-sign:before { - content: "\e082"; -} -.glyphicon-remove-sign:before { - content: "\e083"; -} -.glyphicon-ok-sign:before { - content: "\e084"; -} -.glyphicon-question-sign:before { - content: "\e085"; -} -.glyphicon-info-sign:before { - content: "\e086"; -} -.glyphicon-screenshot:before { - content: "\e087"; -} -.glyphicon-remove-circle:before { - content: "\e088"; -} -.glyphicon-ok-circle:before { - content: "\e089"; -} -.glyphicon-ban-circle:before { - content: "\e090"; -} -.glyphicon-arrow-left:before { - content: "\e091"; -} -.glyphicon-arrow-right:before { - content: "\e092"; -} -.glyphicon-arrow-up:before { - content: "\e093"; -} -.glyphicon-arrow-down:before { - content: "\e094"; -} -.glyphicon-share-alt:before { - content: "\e095"; -} -.glyphicon-resize-full:before { - content: "\e096"; -} -.glyphicon-resize-small:before { - content: "\e097"; -} -.glyphicon-exclamation-sign:before { - content: "\e101"; -} -.glyphicon-gift:before { - content: "\e102"; -} -.glyphicon-leaf:before { - content: "\e103"; -} -.glyphicon-fire:before { - content: "\e104"; + +/* rtl:raw: +[type="tel"], +[type="url"], +[type="email"], +[type="number"] { + direction: ltr; +} +*/ +::-webkit-search-decoration { + -webkit-appearance: none; } -.glyphicon-eye-open:before { - content: "\e105"; + +::-webkit-color-swatch-wrapper { + padding: 0; } -.glyphicon-eye-close:before { - content: "\e106"; + +::-webkit-file-upload-button { + font: inherit; + -webkit-appearance: button; } -.glyphicon-warning-sign:before { - content: "\e107"; + +::file-selector-button { + font: inherit; + -webkit-appearance: button; } -.glyphicon-plane:before { - content: "\e108"; + +output { + display: inline-block; } -.glyphicon-calendar:before { - content: "\e109"; + +iframe { + border: 0; } -.glyphicon-random:before { - content: "\e110"; + +summary { + display: list-item; + cursor: pointer; } -.glyphicon-comment:before { - content: "\e111"; + +progress { + vertical-align: baseline; } -.glyphicon-magnet:before { - content: "\e112"; + +[hidden] { + display: none !important; } -.glyphicon-chevron-up:before { - content: "\e113"; + +.lead { + font-size: 1.25rem; + font-weight: 300; } -.glyphicon-chevron-down:before { - content: "\e114"; + +.display-1 { + font-size: calc(1.625rem + 4.5vw); + font-weight: 300; + line-height: 1.2; } -.glyphicon-retweet:before { - content: "\e115"; +@media (min-width: 1200px) { + .display-1 { + font-size: 5rem; + } } -.glyphicon-shopping-cart:before { - content: "\e116"; + +.display-2 { + font-size: calc(1.575rem + 3.9vw); + font-weight: 300; + line-height: 1.2; } -.glyphicon-folder-close:before { - content: "\e117"; +@media (min-width: 1200px) { + .display-2 { + font-size: 4.5rem; + } } -.glyphicon-folder-open:before { - content: "\e118"; + +.display-3 { + font-size: calc(1.525rem + 3.3vw); + font-weight: 300; + line-height: 1.2; } -.glyphicon-resize-vertical:before { - content: "\e119"; +@media (min-width: 1200px) { + .display-3 { + font-size: 4rem; + } } -.glyphicon-resize-horizontal:before { - content: "\e120"; + +.display-4 { + font-size: calc(1.475rem + 2.7vw); + font-weight: 300; + line-height: 1.2; } -.glyphicon-hdd:before { - content: "\e121"; +@media (min-width: 1200px) { + .display-4 { + font-size: 3.5rem; + } } -.glyphicon-bullhorn:before { - content: "\e122"; + +.display-5 { + font-size: calc(1.425rem + 2.1vw); + font-weight: 300; + line-height: 1.2; } -.glyphicon-bell:before { - content: "\e123"; +@media (min-width: 1200px) { + .display-5 { + font-size: 3rem; + } } -.glyphicon-certificate:before { - content: "\e124"; + +.display-6 { + font-size: calc(1.375rem + 1.5vw); + font-weight: 300; + line-height: 1.2; } -.glyphicon-thumbs-up:before { - content: "\e125"; +@media (min-width: 1200px) { + .display-6 { + font-size: 2.5rem; + } } -.glyphicon-thumbs-down:before { - content: "\e126"; + +.list-unstyled { + padding-left: 0; + list-style: none; } -.glyphicon-hand-right:before { - content: "\e127"; + +.list-inline { + padding-left: 0; + list-style: none; } -.glyphicon-hand-left:before { - content: "\e128"; + +.list-inline-item { + display: inline-block; } -.glyphicon-hand-up:before { - content: "\e129"; +.list-inline-item:not(:last-child) { + margin-right: 0.5rem; } -.glyphicon-hand-down:before { - content: "\e130"; + +.initialism { + font-size: 0.875em; + text-transform: uppercase; } -.glyphicon-circle-arrow-right:before { - content: "\e131"; + +.blockquote { + margin-bottom: 1rem; + font-size: 1.25rem; } -.glyphicon-circle-arrow-left:before { - content: "\e132"; +.blockquote > :last-child { + margin-bottom: 0; } -.glyphicon-circle-arrow-up:before { - content: "\e133"; + +.blockquote-footer { + margin-top: -1rem; + margin-bottom: 1rem; + font-size: 0.875em; + color: #6c757d; } -.glyphicon-circle-arrow-down:before { - content: "\e134"; +.blockquote-footer::before { + content: "— "; } -.glyphicon-globe:before { - content: "\e135"; + +.img-fluid { + max-width: 100%; + height: auto; } -.glyphicon-wrench:before { - content: "\e136"; + +.img-thumbnail { + padding: 0.25rem; + background-color: var(--bs-body-bg); + border: var(--bs-border-width) solid var(--bs-border-color); + border-radius: var(--bs-border-radius); + max-width: 100%; + height: auto; } -.glyphicon-tasks:before { - content: "\e137"; + +.figure { + display: inline-block; } -.glyphicon-filter:before { - content: "\e138"; + +.figure-img { + margin-bottom: 0.5rem; + line-height: 1; } -.glyphicon-briefcase:before { - content: "\e139"; + +.figure-caption { + font-size: 0.875em; + color: var(--bs-secondary-color); } -.glyphicon-fullscreen:before { - content: "\e140"; + +.container, +.container-fluid, +.container-xxl, +.container-xl, +.container-lg, +.container-md, +.container-sm { + --bs-gutter-x: 1.5rem; + --bs-gutter-y: 0; + width: 100%; + padding-right: calc(var(--bs-gutter-x) * 0.5); + padding-left: calc(var(--bs-gutter-x) * 0.5); + margin-right: auto; + margin-left: auto; } -.glyphicon-dashboard:before { - content: "\e141"; + +@media (min-width: 576px) { + .container-sm, .container { + max-width: 540px; + } } -.glyphicon-paperclip:before { - content: "\e142"; +@media (min-width: 768px) { + .container-md, .container-sm, .container { + max-width: 720px; + } } -.glyphicon-heart-empty:before { - content: "\e143"; +@media (min-width: 992px) { + .container-lg, .container-md, .container-sm, .container { + max-width: 960px; + } } -.glyphicon-link:before { - content: "\e144"; +@media (min-width: 1200px) { + .container-xl, .container-lg, .container-md, .container-sm, .container { + max-width: 1140px; + } } -.glyphicon-phone:before { - content: "\e145"; +@media (min-width: 1400px) { + .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container { + max-width: 1320px; + } } -.glyphicon-pushpin:before { - content: "\e146"; +:root { + --bs-breakpoint-xs: 0; + --bs-breakpoint-sm: 576px; + --bs-breakpoint-md: 768px; + --bs-breakpoint-lg: 992px; + --bs-breakpoint-xl: 1200px; + --bs-breakpoint-xxl: 1400px; } -.glyphicon-usd:before { - content: "\e148"; + +.row { + --bs-gutter-x: 1.5rem; + --bs-gutter-y: 0; + display: flex; + flex-wrap: wrap; + margin-top: calc(-1 * var(--bs-gutter-y)); + margin-right: calc(-0.5 * var(--bs-gutter-x)); + margin-left: calc(-0.5 * var(--bs-gutter-x)); +} +.row > * { + flex-shrink: 0; + width: 100%; + max-width: 100%; + padding-right: calc(var(--bs-gutter-x) * 0.5); + padding-left: calc(var(--bs-gutter-x) * 0.5); + margin-top: var(--bs-gutter-y); } -.glyphicon-gbp:before { - content: "\e149"; + +.col { + flex: 1 0 0%; } -.glyphicon-sort:before { - content: "\e150"; + +.row-cols-auto > * { + flex: 0 0 auto; + width: auto; } -.glyphicon-sort-by-alphabet:before { - content: "\e151"; + +.row-cols-1 > * { + flex: 0 0 auto; + width: 100%; } -.glyphicon-sort-by-alphabet-alt:before { - content: "\e152"; + +.row-cols-2 > * { + flex: 0 0 auto; + width: 50%; } -.glyphicon-sort-by-order:before { - content: "\e153"; + +.row-cols-3 > * { + flex: 0 0 auto; + width: 33.33333333%; } -.glyphicon-sort-by-order-alt:before { - content: "\e154"; + +.row-cols-4 > * { + flex: 0 0 auto; + width: 25%; } -.glyphicon-sort-by-attributes:before { - content: "\e155"; + +.row-cols-5 > * { + flex: 0 0 auto; + width: 20%; } -.glyphicon-sort-by-attributes-alt:before { - content: "\e156"; + +.row-cols-6 > * { + flex: 0 0 auto; + width: 16.66666667%; } -.glyphicon-unchecked:before { - content: "\e157"; + +.col-auto { + flex: 0 0 auto; + width: auto; } -.glyphicon-expand:before { - content: "\e158"; + +.col-1 { + flex: 0 0 auto; + width: 8.33333333%; } -.glyphicon-collapse-down:before { - content: "\e159"; + +.col-2 { + flex: 0 0 auto; + width: 16.66666667%; } -.glyphicon-collapse-up:before { - content: "\e160"; + +.col-3 { + flex: 0 0 auto; + width: 25%; } -.glyphicon-log-in:before { - content: "\e161"; + +.col-4 { + flex: 0 0 auto; + width: 33.33333333%; } -.glyphicon-flash:before { - content: "\e162"; + +.col-5 { + flex: 0 0 auto; + width: 41.66666667%; } -.glyphicon-log-out:before { - content: "\e163"; + +.col-6 { + flex: 0 0 auto; + width: 50%; } -.glyphicon-new-window:before { - content: "\e164"; + +.col-7 { + flex: 0 0 auto; + width: 58.33333333%; } -.glyphicon-record:before { - content: "\e165"; + +.col-8 { + flex: 0 0 auto; + width: 66.66666667%; } -.glyphicon-save:before { - content: "\e166"; + +.col-9 { + flex: 0 0 auto; + width: 75%; } -.glyphicon-open:before { - content: "\e167"; + +.col-10 { + flex: 0 0 auto; + width: 83.33333333%; } -.glyphicon-saved:before { - content: "\e168"; + +.col-11 { + flex: 0 0 auto; + width: 91.66666667%; } -.glyphicon-import:before { - content: "\e169"; + +.col-12 { + flex: 0 0 auto; + width: 100%; } -.glyphicon-export:before { - content: "\e170"; + +.offset-1 { + margin-left: 8.33333333%; } -.glyphicon-send:before { - content: "\e171"; + +.offset-2 { + margin-left: 16.66666667%; } -.glyphicon-floppy-disk:before { - content: "\e172"; + +.offset-3 { + margin-left: 25%; } -.glyphicon-floppy-saved:before { - content: "\e173"; + +.offset-4 { + margin-left: 33.33333333%; } -.glyphicon-floppy-remove:before { - content: "\e174"; + +.offset-5 { + margin-left: 41.66666667%; } -.glyphicon-floppy-save:before { - content: "\e175"; + +.offset-6 { + margin-left: 50%; } -.glyphicon-floppy-open:before { - content: "\e176"; + +.offset-7 { + margin-left: 58.33333333%; } -.glyphicon-credit-card:before { - content: "\e177"; + +.offset-8 { + margin-left: 66.66666667%; } -.glyphicon-transfer:before { - content: "\e178"; + +.offset-9 { + margin-left: 75%; } -.glyphicon-cutlery:before { - content: "\e179"; + +.offset-10 { + margin-left: 83.33333333%; } -.glyphicon-header:before { - content: "\e180"; + +.offset-11 { + margin-left: 91.66666667%; } -.glyphicon-compressed:before { - content: "\e181"; + +.g-0, +.gx-0 { + --bs-gutter-x: 0; } -.glyphicon-earphone:before { - content: "\e182"; + +.g-0, +.gy-0 { + --bs-gutter-y: 0; } -.glyphicon-phone-alt:before { - content: "\e183"; + +.g-1, +.gx-1 { + --bs-gutter-x: 0.25rem; } -.glyphicon-tower:before { - content: "\e184"; + +.g-1, +.gy-1 { + --bs-gutter-y: 0.25rem; } -.glyphicon-stats:before { - content: "\e185"; + +.g-2, +.gx-2 { + --bs-gutter-x: 0.5rem; } -.glyphicon-sd-video:before { - content: "\e186"; + +.g-2, +.gy-2 { + --bs-gutter-y: 0.5rem; } -.glyphicon-hd-video:before { - content: "\e187"; + +.g-3, +.gx-3 { + --bs-gutter-x: 1rem; } -.glyphicon-subtitles:before { - content: "\e188"; + +.g-3, +.gy-3 { + --bs-gutter-y: 1rem; } -.glyphicon-sound-stereo:before { - content: "\e189"; + +.g-4, +.gx-4 { + --bs-gutter-x: 1.5rem; } -.glyphicon-sound-dolby:before { - content: "\e190"; + +.g-4, +.gy-4 { + --bs-gutter-y: 1.5rem; } -.glyphicon-sound-5-1:before { - content: "\e191"; + +.g-5, +.gx-5 { + --bs-gutter-x: 3rem; } -.glyphicon-sound-6-1:before { - content: "\e192"; + +.g-5, +.gy-5 { + --bs-gutter-y: 3rem; } -.glyphicon-sound-7-1:before { - content: "\e193"; -} -.glyphicon-copyright-mark:before { - content: "\e194"; -} -.glyphicon-registration-mark:before { - content: "\e195"; -} -.glyphicon-cloud-download:before { - content: "\e197"; -} -.glyphicon-cloud-upload:before { - content: "\e198"; -} -.glyphicon-tree-conifer:before { - content: "\e199"; -} -.glyphicon-tree-deciduous:before { - content: "\e200"; -} -* { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -*:before, -*:after { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -html { - font-size: 10px; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} -body { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - line-height: 1.42857143; - color: #333; - background-color: #fff; -} -input, -button, -select, -textarea { - font-family: inherit; - font-size: inherit; - line-height: inherit; -} -a { - color: #337ab7; - text-decoration: none; -} -a:hover, -a:focus { - color: #23527c; - text-decoration: underline; -} -a:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -figure { - margin: 0; -} -img { - vertical-align: middle; -} -.img-responsive, -.thumbnail > img, -.thumbnail a > img, -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - display: block; - max-width: 100%; - height: auto; -} -.img-rounded { - border-radius: 6px; -} -.img-thumbnail { - display: inline-block; - max-width: 100%; - height: auto; - padding: 4px; - line-height: 1.42857143; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 4px; - -webkit-transition: all .2s ease-in-out; - -o-transition: all .2s ease-in-out; - transition: all .2s ease-in-out; -} -.img-circle { - border-radius: 50%; -} -hr { - margin-top: 20px; - margin-bottom: 20px; - border: 0; - border-top: 1px solid #eee; -} -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; -} -.sr-only-focusable:active, -.sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - margin: 0; - overflow: visible; - clip: auto; -} -h1, -h2, -h3, -h4, -h5, -h6, -.h1, -.h2, -.h3, -.h4, -.h5, -.h6 { - font-family: inherit; - font-weight: 500; - line-height: 1.1; - color: inherit; -} -h1 small, -h2 small, -h3 small, -h4 small, -h5 small, -h6 small, -.h1 small, -.h2 small, -.h3 small, -.h4 small, -.h5 small, -.h6 small, -h1 .small, -h2 .small, -h3 .small, -h4 .small, -h5 .small, -h6 .small, -.h1 .small, -.h2 .small, -.h3 .small, -.h4 .small, -.h5 .small, -.h6 .small { - font-weight: normal; - line-height: 1; - color: #777; -} -h1, -.h1, -h2, -.h2, -h3, -.h3 { - margin-top: 20px; - margin-bottom: 10px; -} -h1 small, -.h1 small, -h2 small, -.h2 small, -h3 small, -.h3 small, -h1 .small, -.h1 .small, -h2 .small, -.h2 .small, -h3 .small, -.h3 .small { - font-size: 65%; -} -h4, -.h4, -h5, -.h5, -h6, -.h6 { - margin-top: 10px; - margin-bottom: 10px; -} -h4 small, -.h4 small, -h5 small, -.h5 small, -h6 small, -.h6 small, -h4 .small, -.h4 .small, -h5 .small, -.h5 .small, -h6 .small, -.h6 .small { - font-size: 75%; -} -h1, -.h1 { - font-size: 36px; -} -h2, -.h2 { - font-size: 30px; -} -h3, -.h3 { - font-size: 24px; -} -h4, -.h4 { - font-size: 18px; -} -h5, -.h5 { - font-size: 14px; -} -h6, -.h6 { - font-size: 12px; -} -p { - margin: 0 0 10px; -} -.lead { - margin-bottom: 20px; - font-size: 16px; - font-weight: 300; - line-height: 1.4; -} -@media (min-width: 768px) { - .lead { - font-size: 21px; +@media (min-width: 576px) { + .col-sm { + flex: 1 0 0%; } -} -small, -.small { - font-size: 85%; -} -mark, -.mark { - padding: .2em; - background-color: #fcf8e3; -} -.text-left { - text-align: left; -} -.text-right { - text-align: right; -} -.text-center { - text-align: center; -} -.text-justify { - text-align: justify; -} -.text-nowrap { - white-space: nowrap; -} -.text-lowercase { - text-transform: lowercase; -} -.text-uppercase { - text-transform: uppercase; -} -.text-capitalize { - text-transform: capitalize; -} -.text-muted { - color: #777; -} -.text-primary { - color: #337ab7; -} -a.text-primary:hover { - color: #286090; -} -.text-success { - color: #3c763d; -} -a.text-success:hover { - color: #2b542c; -} -.text-info { - color: #31708f; -} -a.text-info:hover { - color: #245269; -} -.text-warning { - color: #8a6d3b; -} -a.text-warning:hover { - color: #66512c; -} -.text-danger { - color: #a94442; -} -a.text-danger:hover { - color: #843534; -} -.bg-primary { - color: #fff; - background-color: #337ab7; -} -a.bg-primary:hover { - background-color: #286090; -} -.bg-success { - background-color: #dff0d8; -} -a.bg-success:hover { - background-color: #c1e2b3; -} -.bg-info { - background-color: #d9edf7; -} -a.bg-info:hover { - background-color: #afd9ee; -} -.bg-warning { - background-color: #fcf8e3; -} -a.bg-warning:hover { - background-color: #f7ecb5; -} -.bg-danger { - background-color: #f2dede; -} -a.bg-danger:hover { - background-color: #e4b9b9; -} -.page-header { - padding-bottom: 9px; - margin: 40px 0 20px; - border-bottom: 1px solid #eee; -} -ul, -ol { - margin-top: 0; - margin-bottom: 10px; -} -ul ul, -ol ul, -ul ol, -ol ol { - margin-bottom: 0; -} -.list-unstyled { - padding-left: 0; - list-style: none; -} -.list-inline { - padding-left: 0; - margin-left: -5px; - list-style: none; -} -.list-inline > li { - display: inline-block; - padding-right: 5px; - padding-left: 5px; -} -dl { - margin-top: 0; - margin-bottom: 20px; -} -dt, -dd { - line-height: 1.42857143; -} -dt { - font-weight: bold; -} -dd { - margin-left: 0; -} -@media (min-width: 768px) { - .dl-horizontal dt { - float: left; - width: 160px; - overflow: hidden; - clear: left; - text-align: right; - text-overflow: ellipsis; - white-space: nowrap; + .row-cols-sm-auto > * { + flex: 0 0 auto; + width: auto; } - .dl-horizontal dd { - margin-left: 180px; + .row-cols-sm-1 > * { + flex: 0 0 auto; + width: 100%; } -} -abbr[title], -abbr[data-original-title] { - cursor: help; - border-bottom: 1px dotted #777; -} -.initialism { - font-size: 90%; - text-transform: uppercase; -} -blockquote { - padding: 10px 20px; - margin: 0 0 20px; - font-size: 17.5px; - border-left: 5px solid #eee; -} -blockquote p:last-child, -blockquote ul:last-child, -blockquote ol:last-child { - margin-bottom: 0; -} -blockquote footer, -blockquote small, -blockquote .small { - display: block; - font-size: 80%; - line-height: 1.42857143; - color: #777; -} -blockquote footer:before, -blockquote small:before, -blockquote .small:before { - content: '\2014 \00A0'; -} -.blockquote-reverse, -blockquote.pull-right { - padding-right: 15px; - padding-left: 0; - text-align: right; - border-right: 5px solid #eee; - border-left: 0; -} -.blockquote-reverse footer:before, -blockquote.pull-right footer:before, -.blockquote-reverse small:before, -blockquote.pull-right small:before, -.blockquote-reverse .small:before, -blockquote.pull-right .small:before { - content: ''; -} -.blockquote-reverse footer:after, -blockquote.pull-right footer:after, -.blockquote-reverse small:after, -blockquote.pull-right small:after, -.blockquote-reverse .small:after, -blockquote.pull-right .small:after { - content: '\00A0 \2014'; -} -address { - margin-bottom: 20px; - font-style: normal; - line-height: 1.42857143; -} -code, -kbd, -pre, -samp { - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; -} -code { - padding: 2px 4px; - font-size: 90%; - color: #c7254e; - background-color: #f9f2f4; - border-radius: 4px; -} -kbd { - padding: 2px 4px; - font-size: 90%; - color: #fff; - background-color: #333; - border-radius: 3px; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); -} -kbd kbd { - padding: 0; - font-size: 100%; - font-weight: bold; - -webkit-box-shadow: none; - box-shadow: none; -} -pre { - display: block; - padding: 9.5px; - margin: 0 0 10px; - font-size: 13px; - line-height: 1.42857143; - color: #333; - word-break: break-all; - word-wrap: break-word; - background-color: #f5f5f5; - border: 1px solid #ccc; - border-radius: 4px; -} -pre code { - padding: 0; - font-size: inherit; - color: inherit; - white-space: pre-wrap; - background-color: transparent; - border-radius: 0; -} -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; -} -.container { - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} -@media (min-width: 768px) { - .container { - width: 750px; + .row-cols-sm-2 > * { + flex: 0 0 auto; + width: 50%; } -} -@media (min-width: 992px) { - .container { - width: 970px; + .row-cols-sm-3 > * { + flex: 0 0 auto; + width: 33.33333333%; } -} -/*@media (min-width: 1200px) { - .container { - width: 1170px; + .row-cols-sm-4 > * { + flex: 0 0 auto; + width: 25%; } -}*/ -.container-fluid { - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} -.row { - margin-right: -15px; - margin-left: -15px; -} -.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { - position: relative; - min-height: 1px; - padding-right: 15px; - padding-left: 15px; -} -.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { - float: left; -} -.col-xs-12 { - width: 100%; -} -.col-xs-11 { - width: 91.66666667%; -} -.col-xs-10 { - width: 83.33333333%; -} -.col-xs-9 { - width: 75%; -} -.col-xs-8 { - width: 66.66666667%; -} -.col-xs-7 { - width: 58.33333333%; -} -.col-xs-6 { - width: 50%; -} -.col-xs-5 { - width: 41.66666667%; -} -.col-xs-4 { - width: 33.33333333%; -} -.col-xs-3 { - width: 25%; -} -.col-xs-2 { - width: 16.66666667%; -} -.col-xs-1 { - width: 8.33333333%; -} -.col-xs-pull-12 { - right: 100%; -} -.col-xs-pull-11 { - right: 91.66666667%; -} -.col-xs-pull-10 { - right: 83.33333333%; -} -.col-xs-pull-9 { - right: 75%; -} -.col-xs-pull-8 { - right: 66.66666667%; -} -.col-xs-pull-7 { - right: 58.33333333%; -} -.col-xs-pull-6 { - right: 50%; -} -.col-xs-pull-5 { - right: 41.66666667%; -} -.col-xs-pull-4 { - right: 33.33333333%; -} -.col-xs-pull-3 { - right: 25%; -} -.col-xs-pull-2 { - right: 16.66666667%; -} -.col-xs-pull-1 { - right: 8.33333333%; -} -.col-xs-pull-0 { - right: auto; -} -.col-xs-push-12 { - left: 100%; -} -.col-xs-push-11 { - left: 91.66666667%; -} -.col-xs-push-10 { - left: 83.33333333%; -} -.col-xs-push-9 { - left: 75%; -} -.col-xs-push-8 { - left: 66.66666667%; -} -.col-xs-push-7 { - left: 58.33333333%; -} -.col-xs-push-6 { - left: 50%; -} -.col-xs-push-5 { - left: 41.66666667%; -} -.col-xs-push-4 { - left: 33.33333333%; -} -.col-xs-push-3 { - left: 25%; -} -.col-xs-push-2 { - left: 16.66666667%; -} -.col-xs-push-1 { - left: 8.33333333%; -} -.col-xs-push-0 { - left: auto; -} -.col-xs-offset-12 { - margin-left: 100%; -} -.col-xs-offset-11 { - margin-left: 91.66666667%; -} -.col-xs-offset-10 { - margin-left: 83.33333333%; -} -.col-xs-offset-9 { - margin-left: 75%; -} -.col-xs-offset-8 { - margin-left: 66.66666667%; -} -.col-xs-offset-7 { - margin-left: 58.33333333%; -} -.col-xs-offset-6 { - margin-left: 50%; -} -.col-xs-offset-5 { - margin-left: 41.66666667%; -} -.col-xs-offset-4 { - margin-left: 33.33333333%; -} -.col-xs-offset-3 { - margin-left: 25%; -} -.col-xs-offset-2 { - margin-left: 16.66666667%; -} -.col-xs-offset-1 { - margin-left: 8.33333333%; -} -.col-xs-offset-0 { - margin-left: 0; -} -@media (min-width: 768px) { - .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { - float: left; - } - .col-sm-12 { - width: 100%; + .row-cols-sm-5 > * { + flex: 0 0 auto; + width: 20%; } - .col-sm-11 { - width: 91.66666667%; + .row-cols-sm-6 > * { + flex: 0 0 auto; + width: 16.66666667%; } - .col-sm-10 { - width: 83.33333333%; + .col-sm-auto { + flex: 0 0 auto; + width: auto; } - .col-sm-9 { - width: 75%; + .col-sm-1 { + flex: 0 0 auto; + width: 8.33333333%; } - .col-sm-8 { - width: 66.66666667%; + .col-sm-2 { + flex: 0 0 auto; + width: 16.66666667%; } - .col-sm-7 { - width: 58.33333333%; + .col-sm-3 { + flex: 0 0 auto; + width: 25%; } - .col-sm-6 { - width: 50%; + .col-sm-4 { + flex: 0 0 auto; + width: 33.33333333%; } .col-sm-5 { + flex: 0 0 auto; width: 41.66666667%; } - .col-sm-4 { - width: 33.33333333%; - } - .col-sm-3 { - width: 25%; + .col-sm-6 { + flex: 0 0 auto; + width: 50%; } - .col-sm-2 { - width: 16.66666667%; + .col-sm-7 { + flex: 0 0 auto; + width: 58.33333333%; } - .col-sm-1 { - width: 8.33333333%; + .col-sm-8 { + flex: 0 0 auto; + width: 66.66666667%; } - .col-sm-pull-12 { - right: 100%; + .col-sm-9 { + flex: 0 0 auto; + width: 75%; } - .col-sm-pull-11 { - right: 91.66666667%; + .col-sm-10 { + flex: 0 0 auto; + width: 83.33333333%; } - .col-sm-pull-10 { - right: 83.33333333%; + .col-sm-11 { + flex: 0 0 auto; + width: 91.66666667%; } - .col-sm-pull-9 { - right: 75%; + .col-sm-12 { + flex: 0 0 auto; + width: 100%; } - .col-sm-pull-8 { - right: 66.66666667%; + .offset-sm-0 { + margin-left: 0; } - .col-sm-pull-7 { - right: 58.33333333%; + .offset-sm-1 { + margin-left: 8.33333333%; } - .col-sm-pull-6 { - right: 50%; + .offset-sm-2 { + margin-left: 16.66666667%; } - .col-sm-pull-5 { - right: 41.66666667%; + .offset-sm-3 { + margin-left: 25%; } - .col-sm-pull-4 { - right: 33.33333333%; + .offset-sm-4 { + margin-left: 33.33333333%; } - .col-sm-pull-3 { - right: 25%; + .offset-sm-5 { + margin-left: 41.66666667%; } - .col-sm-pull-2 { - right: 16.66666667%; + .offset-sm-6 { + margin-left: 50%; } - .col-sm-pull-1 { - right: 8.33333333%; + .offset-sm-7 { + margin-left: 58.33333333%; } - .col-sm-pull-0 { - right: auto; + .offset-sm-8 { + margin-left: 66.66666667%; } - .col-sm-push-12 { - left: 100%; + .offset-sm-9 { + margin-left: 75%; } - .col-sm-push-11 { - left: 91.66666667%; + .offset-sm-10 { + margin-left: 83.33333333%; } - .col-sm-push-10 { - left: 83.33333333%; + .offset-sm-11 { + margin-left: 91.66666667%; } - .col-sm-push-9 { - left: 75%; + .g-sm-0, + .gx-sm-0 { + --bs-gutter-x: 0; } - .col-sm-push-8 { - left: 66.66666667%; + .g-sm-0, + .gy-sm-0 { + --bs-gutter-y: 0; } - .col-sm-push-7 { - left: 58.33333333%; + .g-sm-1, + .gx-sm-1 { + --bs-gutter-x: 0.25rem; } - .col-sm-push-6 { - left: 50%; + .g-sm-1, + .gy-sm-1 { + --bs-gutter-y: 0.25rem; } - .col-sm-push-5 { - left: 41.66666667%; + .g-sm-2, + .gx-sm-2 { + --bs-gutter-x: 0.5rem; } - .col-sm-push-4 { - left: 33.33333333%; + .g-sm-2, + .gy-sm-2 { + --bs-gutter-y: 0.5rem; } - .col-sm-push-3 { - left: 25%; + .g-sm-3, + .gx-sm-3 { + --bs-gutter-x: 1rem; } - .col-sm-push-2 { - left: 16.66666667%; + .g-sm-3, + .gy-sm-3 { + --bs-gutter-y: 1rem; } - .col-sm-push-1 { - left: 8.33333333%; + .g-sm-4, + .gx-sm-4 { + --bs-gutter-x: 1.5rem; } - .col-sm-push-0 { - left: auto; + .g-sm-4, + .gy-sm-4 { + --bs-gutter-y: 1.5rem; } - .col-sm-offset-12 { - margin-left: 100%; + .g-sm-5, + .gx-sm-5 { + --bs-gutter-x: 3rem; } - .col-sm-offset-11 { - margin-left: 91.66666667%; + .g-sm-5, + .gy-sm-5 { + --bs-gutter-y: 3rem; } - .col-sm-offset-10 { - margin-left: 83.33333333%; +} +@media (min-width: 768px) { + .col-md { + flex: 1 0 0%; } - .col-sm-offset-9 { - margin-left: 75%; + .row-cols-md-auto > * { + flex: 0 0 auto; + width: auto; } - .col-sm-offset-8 { - margin-left: 66.66666667%; + .row-cols-md-1 > * { + flex: 0 0 auto; + width: 100%; } - .col-sm-offset-7 { - margin-left: 58.33333333%; + .row-cols-md-2 > * { + flex: 0 0 auto; + width: 50%; } - .col-sm-offset-6 { - margin-left: 50%; + .row-cols-md-3 > * { + flex: 0 0 auto; + width: 33.33333333%; } - .col-sm-offset-5 { - margin-left: 41.66666667%; + .row-cols-md-4 > * { + flex: 0 0 auto; + width: 25%; } - .col-sm-offset-4 { - margin-left: 33.33333333%; + .row-cols-md-5 > * { + flex: 0 0 auto; + width: 20%; } - .col-sm-offset-3 { - margin-left: 25%; + .row-cols-md-6 > * { + flex: 0 0 auto; + width: 16.66666667%; } - .col-sm-offset-2 { - margin-left: 16.66666667%; + .col-md-auto { + flex: 0 0 auto; + width: auto; } - .col-sm-offset-1 { - margin-left: 8.33333333%; + .col-md-1 { + flex: 0 0 auto; + width: 8.33333333%; } - .col-sm-offset-0 { - margin-left: 0; + .col-md-2 { + flex: 0 0 auto; + width: 16.66666667%; } -} -@media (min-width: 992px) { - .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { - float: left; + .col-md-3 { + flex: 0 0 auto; + width: 25%; } - .col-md-12 { - width: 100%; + .col-md-4 { + flex: 0 0 auto; + width: 33.33333333%; } - .col-md-11 { - width: 91.66666667%; + .col-md-5 { + flex: 0 0 auto; + width: 41.66666667%; } - .col-md-10 { - width: 83.33333333%; + .col-md-6 { + flex: 0 0 auto; + width: 50%; } - .col-md-9 { - width: 75%; + .col-md-7 { + flex: 0 0 auto; + width: 58.33333333%; } .col-md-8 { + flex: 0 0 auto; width: 66.66666667%; } - .col-md-7 { - width: 58.33333333%; - } - .col-md-6 { - width: 50%; + .col-md-9 { + flex: 0 0 auto; + width: 75%; } - .col-md-5 { - width: 41.66666667%; + .col-md-10 { + flex: 0 0 auto; + width: 83.33333333%; } - .col-md-4 { - width: 33.33333333%; + .col-md-11 { + flex: 0 0 auto; + width: 91.66666667%; } - .col-md-3 { - width: 25%; + .col-md-12 { + flex: 0 0 auto; + width: 100%; } - .col-md-2 { - width: 16.66666667%; + .offset-md-0 { + margin-left: 0; } - .col-md-1 { - width: 8.33333333%; + .offset-md-1 { + margin-left: 8.33333333%; } - .col-md-pull-12 { - right: 100%; + .offset-md-2 { + margin-left: 16.66666667%; } - .col-md-pull-11 { - right: 91.66666667%; + .offset-md-3 { + margin-left: 25%; } - .col-md-pull-10 { - right: 83.33333333%; + .offset-md-4 { + margin-left: 33.33333333%; } - .col-md-pull-9 { - right: 75%; + .offset-md-5 { + margin-left: 41.66666667%; } - .col-md-pull-8 { - right: 66.66666667%; + .offset-md-6 { + margin-left: 50%; } - .col-md-pull-7 { - right: 58.33333333%; + .offset-md-7 { + margin-left: 58.33333333%; } - .col-md-pull-6 { - right: 50%; + .offset-md-8 { + margin-left: 66.66666667%; } - .col-md-pull-5 { - right: 41.66666667%; + .offset-md-9 { + margin-left: 75%; } - .col-md-pull-4 { - right: 33.33333333%; + .offset-md-10 { + margin-left: 83.33333333%; } - .col-md-pull-3 { - right: 25%; + .offset-md-11 { + margin-left: 91.66666667%; } - .col-md-pull-2 { - right: 16.66666667%; + .g-md-0, + .gx-md-0 { + --bs-gutter-x: 0; } - .col-md-pull-1 { - right: 8.33333333%; + .g-md-0, + .gy-md-0 { + --bs-gutter-y: 0; } - .col-md-pull-0 { - right: auto; + .g-md-1, + .gx-md-1 { + --bs-gutter-x: 0.25rem; } - .col-md-push-12 { - left: 100%; + .g-md-1, + .gy-md-1 { + --bs-gutter-y: 0.25rem; } - .col-md-push-11 { - left: 91.66666667%; + .g-md-2, + .gx-md-2 { + --bs-gutter-x: 0.5rem; } - .col-md-push-10 { - left: 83.33333333%; + .g-md-2, + .gy-md-2 { + --bs-gutter-y: 0.5rem; } - .col-md-push-9 { - left: 75%; + .g-md-3, + .gx-md-3 { + --bs-gutter-x: 1rem; } - .col-md-push-8 { - left: 66.66666667%; + .g-md-3, + .gy-md-3 { + --bs-gutter-y: 1rem; } - .col-md-push-7 { - left: 58.33333333%; + .g-md-4, + .gx-md-4 { + --bs-gutter-x: 1.5rem; } - .col-md-push-6 { - left: 50%; + .g-md-4, + .gy-md-4 { + --bs-gutter-y: 1.5rem; } - .col-md-push-5 { - left: 41.66666667%; + .g-md-5, + .gx-md-5 { + --bs-gutter-x: 3rem; } - .col-md-push-4 { - left: 33.33333333%; + .g-md-5, + .gy-md-5 { + --bs-gutter-y: 3rem; } - .col-md-push-3 { - left: 25%; +} +@media (min-width: 992px) { + .col-lg { + flex: 1 0 0%; } - .col-md-push-2 { - left: 16.66666667%; + .row-cols-lg-auto > * { + flex: 0 0 auto; + width: auto; } - .col-md-push-1 { - left: 8.33333333%; + .row-cols-lg-1 > * { + flex: 0 0 auto; + width: 100%; } - .col-md-push-0 { - left: auto; + .row-cols-lg-2 > * { + flex: 0 0 auto; + width: 50%; } - .col-md-offset-12 { - margin-left: 100%; + .row-cols-lg-3 > * { + flex: 0 0 auto; + width: 33.33333333%; } - .col-md-offset-11 { - margin-left: 91.66666667%; + .row-cols-lg-4 > * { + flex: 0 0 auto; + width: 25%; } - .col-md-offset-10 { - margin-left: 83.33333333%; + .row-cols-lg-5 > * { + flex: 0 0 auto; + width: 20%; } - .col-md-offset-9 { - margin-left: 75%; + .row-cols-lg-6 > * { + flex: 0 0 auto; + width: 16.66666667%; } - .col-md-offset-8 { - margin-left: 66.66666667%; + .col-lg-auto { + flex: 0 0 auto; + width: auto; } - .col-md-offset-7 { - margin-left: 58.33333333%; + .col-lg-1 { + flex: 0 0 auto; + width: 8.33333333%; } - .col-md-offset-6 { - margin-left: 50%; + .col-lg-2 { + flex: 0 0 auto; + width: 16.66666667%; } - .col-md-offset-5 { - margin-left: 41.66666667%; + .col-lg-3 { + flex: 0 0 auto; + width: 25%; } - .col-md-offset-4 { - margin-left: 33.33333333%; + .col-lg-4 { + flex: 0 0 auto; + width: 33.33333333%; } - .col-md-offset-3 { - margin-left: 25%; + .col-lg-5 { + flex: 0 0 auto; + width: 41.66666667%; } - .col-md-offset-2 { - margin-left: 16.66666667%; + .col-lg-6 { + flex: 0 0 auto; + width: 50%; } - .col-md-offset-1 { - margin-left: 8.33333333%; + .col-lg-7 { + flex: 0 0 auto; + width: 58.33333333%; } - .col-md-offset-0 { - margin-left: 0; + .col-lg-8 { + flex: 0 0 auto; + width: 66.66666667%; } -} -/*@media (min-width: 1200px) { - .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { - float: left; + .col-lg-9 { + flex: 0 0 auto; + width: 75%; } - .col-lg-12 { - width: 100%; + .col-lg-10 { + flex: 0 0 auto; + width: 83.33333333%; } .col-lg-11 { + flex: 0 0 auto; width: 91.66666667%; } - .col-lg-10 { - width: 83.33333333%; + .col-lg-12 { + flex: 0 0 auto; + width: 100%; } - .col-lg-9 { - width: 75%; + .offset-lg-0 { + margin-left: 0; } - .col-lg-8 { - width: 66.66666667%; + .offset-lg-1 { + margin-left: 8.33333333%; } - .col-lg-7 { - width: 58.33333333%; + .offset-lg-2 { + margin-left: 16.66666667%; } - .col-lg-6 { - width: 50%; + .offset-lg-3 { + margin-left: 25%; } - .col-lg-5 { - width: 41.66666667%; + .offset-lg-4 { + margin-left: 33.33333333%; } - .col-lg-4 { - width: 33.33333333%; + .offset-lg-5 { + margin-left: 41.66666667%; } - .col-lg-3 { + .offset-lg-6 { + margin-left: 50%; + } + .offset-lg-7 { + margin-left: 58.33333333%; + } + .offset-lg-8 { + margin-left: 66.66666667%; + } + .offset-lg-9 { + margin-left: 75%; + } + .offset-lg-10 { + margin-left: 83.33333333%; + } + .offset-lg-11 { + margin-left: 91.66666667%; + } + .g-lg-0, + .gx-lg-0 { + --bs-gutter-x: 0; + } + .g-lg-0, + .gy-lg-0 { + --bs-gutter-y: 0; + } + .g-lg-1, + .gx-lg-1 { + --bs-gutter-x: 0.25rem; + } + .g-lg-1, + .gy-lg-1 { + --bs-gutter-y: 0.25rem; + } + .g-lg-2, + .gx-lg-2 { + --bs-gutter-x: 0.5rem; + } + .g-lg-2, + .gy-lg-2 { + --bs-gutter-y: 0.5rem; + } + .g-lg-3, + .gx-lg-3 { + --bs-gutter-x: 1rem; + } + .g-lg-3, + .gy-lg-3 { + --bs-gutter-y: 1rem; + } + .g-lg-4, + .gx-lg-4 { + --bs-gutter-x: 1.5rem; + } + .g-lg-4, + .gy-lg-4 { + --bs-gutter-y: 1.5rem; + } + .g-lg-5, + .gx-lg-5 { + --bs-gutter-x: 3rem; + } + .g-lg-5, + .gy-lg-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 1200px) { + .col-xl { + flex: 1 0 0%; + } + .row-cols-xl-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-xl-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-xl-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-xl-3 > * { + flex: 0 0 auto; + width: 33.33333333%; + } + .row-cols-xl-4 > * { + flex: 0 0 auto; width: 25%; } - .col-lg-2 { + .row-cols-xl-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-xl-6 > * { + flex: 0 0 auto; width: 16.66666667%; } - .col-lg-1 { + .col-xl-auto { + flex: 0 0 auto; + width: auto; + } + .col-xl-1 { + flex: 0 0 auto; width: 8.33333333%; } - .col-lg-pull-12 { - right: 100%; + .col-xl-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xl-3 { + flex: 0 0 auto; + width: 25%; + } + .col-xl-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-xl-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-xl-6 { + flex: 0 0 auto; + width: 50%; + } + .col-xl-7 { + flex: 0 0 auto; + width: 58.33333333%; } - .col-lg-pull-11 { - right: 91.66666667%; + .col-xl-8 { + flex: 0 0 auto; + width: 66.66666667%; } - .col-lg-pull-10 { - right: 83.33333333%; + .col-xl-9 { + flex: 0 0 auto; + width: 75%; } - .col-lg-pull-9 { - right: 75%; + .col-xl-10 { + flex: 0 0 auto; + width: 83.33333333%; } - .col-lg-pull-8 { - right: 66.66666667%; + .col-xl-11 { + flex: 0 0 auto; + width: 91.66666667%; } - .col-lg-pull-7 { - right: 58.33333333%; + .col-xl-12 { + flex: 0 0 auto; + width: 100%; } - .col-lg-pull-6 { - right: 50%; + .offset-xl-0 { + margin-left: 0; } - .col-lg-pull-5 { - right: 41.66666667%; + .offset-xl-1 { + margin-left: 8.33333333%; } - .col-lg-pull-4 { - right: 33.33333333%; + .offset-xl-2 { + margin-left: 16.66666667%; } - .col-lg-pull-3 { - right: 25%; + .offset-xl-3 { + margin-left: 25%; } - .col-lg-pull-2 { - right: 16.66666667%; + .offset-xl-4 { + margin-left: 33.33333333%; } - .col-lg-pull-1 { - right: 8.33333333%; + .offset-xl-5 { + margin-left: 41.66666667%; } - .col-lg-pull-0 { - right: auto; + .offset-xl-6 { + margin-left: 50%; } - .col-lg-push-12 { - left: 100%; + .offset-xl-7 { + margin-left: 58.33333333%; } - .col-lg-push-11 { - left: 91.66666667%; + .offset-xl-8 { + margin-left: 66.66666667%; } - .col-lg-push-10 { - left: 83.33333333%; + .offset-xl-9 { + margin-left: 75%; } - .col-lg-push-9 { - left: 75%; + .offset-xl-10 { + margin-left: 83.33333333%; } - .col-lg-push-8 { - left: 66.66666667%; + .offset-xl-11 { + margin-left: 91.66666667%; } - .col-lg-push-7 { - left: 58.33333333%; + .g-xl-0, + .gx-xl-0 { + --bs-gutter-x: 0; } - .col-lg-push-6 { - left: 50%; + .g-xl-0, + .gy-xl-0 { + --bs-gutter-y: 0; } - .col-lg-push-5 { - left: 41.66666667%; + .g-xl-1, + .gx-xl-1 { + --bs-gutter-x: 0.25rem; } - .col-lg-push-4 { - left: 33.33333333%; + .g-xl-1, + .gy-xl-1 { + --bs-gutter-y: 0.25rem; } - .col-lg-push-3 { - left: 25%; + .g-xl-2, + .gx-xl-2 { + --bs-gutter-x: 0.5rem; } - .col-lg-push-2 { - left: 16.66666667%; + .g-xl-2, + .gy-xl-2 { + --bs-gutter-y: 0.5rem; } - .col-lg-push-1 { - left: 8.33333333%; + .g-xl-3, + .gx-xl-3 { + --bs-gutter-x: 1rem; } - .col-lg-push-0 { - left: auto; + .g-xl-3, + .gy-xl-3 { + --bs-gutter-y: 1rem; } - .col-lg-offset-12 { - margin-left: 100%; + .g-xl-4, + .gx-xl-4 { + --bs-gutter-x: 1.5rem; } - .col-lg-offset-11 { - margin-left: 91.66666667%; + .g-xl-4, + .gy-xl-4 { + --bs-gutter-y: 1.5rem; } - .col-lg-offset-10 { - margin-left: 83.33333333%; + .g-xl-5, + .gx-xl-5 { + --bs-gutter-x: 3rem; } - .col-lg-offset-9 { - margin-left: 75%; + .g-xl-5, + .gy-xl-5 { + --bs-gutter-y: 3rem; } - .col-lg-offset-8 { - margin-left: 66.66666667%; +} +@media (min-width: 1400px) { + .col-xxl { + flex: 1 0 0%; } - .col-lg-offset-7 { - margin-left: 58.33333333%; + .row-cols-xxl-auto > * { + flex: 0 0 auto; + width: auto; } - .col-lg-offset-6 { - margin-left: 50%; + .row-cols-xxl-1 > * { + flex: 0 0 auto; + width: 100%; } - .col-lg-offset-5 { - margin-left: 41.66666667%; + .row-cols-xxl-2 > * { + flex: 0 0 auto; + width: 50%; } - .col-lg-offset-4 { - margin-left: 33.33333333%; + .row-cols-xxl-3 > * { + flex: 0 0 auto; + width: 33.33333333%; } - .col-lg-offset-3 { - margin-left: 25%; + .row-cols-xxl-4 > * { + flex: 0 0 auto; + width: 25%; } - .col-lg-offset-2 { - margin-left: 16.66666667%; + .row-cols-xxl-5 > * { + flex: 0 0 auto; + width: 20%; } - .col-lg-offset-1 { - margin-left: 8.33333333%; + .row-cols-xxl-6 > * { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xxl-auto { + flex: 0 0 auto; + width: auto; + } + .col-xxl-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-xxl-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xxl-3 { + flex: 0 0 auto; + width: 25%; } - .col-lg-offset-0 { + .col-xxl-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-xxl-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-xxl-6 { + flex: 0 0 auto; + width: 50%; + } + .col-xxl-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-xxl-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-xxl-9 { + flex: 0 0 auto; + width: 75%; + } + .col-xxl-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-xxl-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-xxl-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-xxl-0 { margin-left: 0; } -}*/ -table { - background-color: transparent; -} -caption { - padding-top: 8px; - padding-bottom: 8px; - color: #777; - text-align: left; -} -th { - text-align: left; + .offset-xxl-1 { + margin-left: 8.33333333%; + } + .offset-xxl-2 { + margin-left: 16.66666667%; + } + .offset-xxl-3 { + margin-left: 25%; + } + .offset-xxl-4 { + margin-left: 33.33333333%; + } + .offset-xxl-5 { + margin-left: 41.66666667%; + } + .offset-xxl-6 { + margin-left: 50%; + } + .offset-xxl-7 { + margin-left: 58.33333333%; + } + .offset-xxl-8 { + margin-left: 66.66666667%; + } + .offset-xxl-9 { + margin-left: 75%; + } + .offset-xxl-10 { + margin-left: 83.33333333%; + } + .offset-xxl-11 { + margin-left: 91.66666667%; + } + .g-xxl-0, + .gx-xxl-0 { + --bs-gutter-x: 0; + } + .g-xxl-0, + .gy-xxl-0 { + --bs-gutter-y: 0; + } + .g-xxl-1, + .gx-xxl-1 { + --bs-gutter-x: 0.25rem; + } + .g-xxl-1, + .gy-xxl-1 { + --bs-gutter-y: 0.25rem; + } + .g-xxl-2, + .gx-xxl-2 { + --bs-gutter-x: 0.5rem; + } + .g-xxl-2, + .gy-xxl-2 { + --bs-gutter-y: 0.5rem; + } + .g-xxl-3, + .gx-xxl-3 { + --bs-gutter-x: 1rem; + } + .g-xxl-3, + .gy-xxl-3 { + --bs-gutter-y: 1rem; + } + .g-xxl-4, + .gx-xxl-4 { + --bs-gutter-x: 1.5rem; + } + .g-xxl-4, + .gy-xxl-4 { + --bs-gutter-y: 1.5rem; + } + .g-xxl-5, + .gx-xxl-5 { + --bs-gutter-x: 3rem; + } + .g-xxl-5, + .gy-xxl-5 { + --bs-gutter-y: 3rem; + } } .table { + --bs-table-color-type: initial; + --bs-table-bg-type: initial; + --bs-table-color-state: initial; + --bs-table-bg-state: initial; + --bs-table-color: var(--bs-emphasis-color); + --bs-table-bg: var(--bs-body-bg); + --bs-table-border-color: var(--bs-border-color); + --bs-table-accent-bg: transparent; + --bs-table-striped-color: var(--bs-emphasis-color); + --bs-table-striped-bg: rgba(var(--bs-emphasis-color-rgb), 0.05); + --bs-table-active-color: var(--bs-emphasis-color); + --bs-table-active-bg: rgba(var(--bs-emphasis-color-rgb), 0.1); + --bs-table-hover-color: var(--bs-emphasis-color); + --bs-table-hover-bg: rgba(var(--bs-emphasis-color-rgb), 0.075); width: 100%; - max-width: 100%; - margin-bottom: 20px; -} -.table > thead > tr > th, -.table > tbody > tr > th, -.table > tfoot > tr > th, -.table > thead > tr > td, -.table > tbody > tr > td, -.table > tfoot > tr > td { - padding: 8px; - line-height: 1.42857143; + margin-bottom: 1rem; vertical-align: top; - border-top: 1px solid #ddd; + border-color: var(--bs-table-border-color); +} +.table > :not(caption) > * > * { + padding: 0.5rem 0.5rem; + color: var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color))); + background-color: var(--bs-table-bg); + border-bottom-width: var(--bs-border-width); + box-shadow: inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg))); } -.table > thead > tr > th { +.table > tbody { + vertical-align: inherit; +} +.table > thead { vertical-align: bottom; - border-bottom: 2px solid #ddd; -} -.table > caption + thead > tr:first-child > th, -.table > colgroup + thead > tr:first-child > th, -.table > thead:first-child > tr:first-child > th, -.table > caption + thead > tr:first-child > td, -.table > colgroup + thead > tr:first-child > td, -.table > thead:first-child > tr:first-child > td { - border-top: 0; } -.table > tbody + tbody { - border-top: 2px solid #ddd; + +.table-group-divider { + border-top: calc(var(--bs-border-width) * 2) solid currentcolor; } -.table .table { - background-color: #fff; + +.caption-top { + caption-side: top; +} + +.table-sm > :not(caption) > * > * { + padding: 0.25rem 0.25rem; +} + +.table-bordered > :not(caption) > * { + border-width: var(--bs-border-width) 0; } -.table-condensed > thead > tr > th, -.table-condensed > tbody > tr > th, -.table-condensed > tfoot > tr > th, -.table-condensed > thead > tr > td, -.table-condensed > tbody > tr > td, -.table-condensed > tfoot > tr > td { - padding: 5px; +.table-bordered > :not(caption) > * > * { + border-width: 0 var(--bs-border-width); } -.table-bordered { - border: 1px solid #ddd; + +.table-borderless > :not(caption) > * > * { + border-bottom-width: 0; } -.table-bordered > thead > tr > th, -.table-bordered > tbody > tr > th, -.table-bordered > tfoot > tr > th, -.table-bordered > thead > tr > td, -.table-bordered > tbody > tr > td, -.table-bordered > tfoot > tr > td { - border: 1px solid #ddd; +.table-borderless > :not(:first-child) { + border-top-width: 0; } -.table-bordered > thead > tr > th, -.table-bordered > thead > tr > td { - border-bottom-width: 2px; + +.table-striped > tbody > tr:nth-of-type(odd) > * { + --bs-table-color-type: var(--bs-table-striped-color); + --bs-table-bg-type: var(--bs-table-striped-bg); } -.table-striped > tbody > tr:nth-child(odd) { - background-color: #f9f9f9; + +.table-striped-columns > :not(caption) > tr > :nth-child(even) { + --bs-table-color-type: var(--bs-table-striped-color); + --bs-table-bg-type: var(--bs-table-striped-bg); } -.table-hover > tbody > tr:hover { - background-color: #f5f5f5; + +.table-active { + --bs-table-color-state: var(--bs-table-active-color); + --bs-table-bg-state: var(--bs-table-active-bg); } -table col[class*="col-"] { - position: static; - display: table-column; - float: none; + +.table-hover > tbody > tr:hover > * { + --bs-table-color-state: var(--bs-table-hover-color); + --bs-table-bg-state: var(--bs-table-hover-bg); } -table td[class*="col-"], -table th[class*="col-"] { - position: static; - display: table-cell; - float: none; -} -.table > thead > tr > td.active, -.table > tbody > tr > td.active, -.table > tfoot > tr > td.active, -.table > thead > tr > th.active, -.table > tbody > tr > th.active, -.table > tfoot > tr > th.active, -.table > thead > tr.active > td, -.table > tbody > tr.active > td, -.table > tfoot > tr.active > td, -.table > thead > tr.active > th, -.table > tbody > tr.active > th, -.table > tfoot > tr.active > th { - background-color: #f5f5f5; -} -.table-hover > tbody > tr > td.active:hover, -.table-hover > tbody > tr > th.active:hover, -.table-hover > tbody > tr.active:hover > td, -.table-hover > tbody > tr:hover > .active, -.table-hover > tbody > tr.active:hover > th { - background-color: #e8e8e8; -} -.table > thead > tr > td.success, -.table > tbody > tr > td.success, -.table > tfoot > tr > td.success, -.table > thead > tr > th.success, -.table > tbody > tr > th.success, -.table > tfoot > tr > th.success, -.table > thead > tr.success > td, -.table > tbody > tr.success > td, -.table > tfoot > tr.success > td, -.table > thead > tr.success > th, -.table > tbody > tr.success > th, -.table > tfoot > tr.success > th { - background-color: #dff0d8; -} -.table-hover > tbody > tr > td.success:hover, -.table-hover > tbody > tr > th.success:hover, -.table-hover > tbody > tr.success:hover > td, -.table-hover > tbody > tr:hover > .success, -.table-hover > tbody > tr.success:hover > th { - background-color: #d0e9c6; -} -.table > thead > tr > td.info, -.table > tbody > tr > td.info, -.table > tfoot > tr > td.info, -.table > thead > tr > th.info, -.table > tbody > tr > th.info, -.table > tfoot > tr > th.info, -.table > thead > tr.info > td, -.table > tbody > tr.info > td, -.table > tfoot > tr.info > td, -.table > thead > tr.info > th, -.table > tbody > tr.info > th, -.table > tfoot > tr.info > th { - background-color: #d9edf7; -} -.table-hover > tbody > tr > td.info:hover, -.table-hover > tbody > tr > th.info:hover, -.table-hover > tbody > tr.info:hover > td, -.table-hover > tbody > tr:hover > .info, -.table-hover > tbody > tr.info:hover > th { - background-color: #c4e3f3; -} -.table > thead > tr > td.warning, -.table > tbody > tr > td.warning, -.table > tfoot > tr > td.warning, -.table > thead > tr > th.warning, -.table > tbody > tr > th.warning, -.table > tfoot > tr > th.warning, -.table > thead > tr.warning > td, -.table > tbody > tr.warning > td, -.table > tfoot > tr.warning > td, -.table > thead > tr.warning > th, -.table > tbody > tr.warning > th, -.table > tfoot > tr.warning > th { - background-color: #fcf8e3; -} -.table-hover > tbody > tr > td.warning:hover, -.table-hover > tbody > tr > th.warning:hover, -.table-hover > tbody > tr.warning:hover > td, -.table-hover > tbody > tr:hover > .warning, -.table-hover > tbody > tr.warning:hover > th { - background-color: #faf2cc; -} -.table > thead > tr > td.danger, -.table > tbody > tr > td.danger, -.table > tfoot > tr > td.danger, -.table > thead > tr > th.danger, -.table > tbody > tr > th.danger, -.table > tfoot > tr > th.danger, -.table > thead > tr.danger > td, -.table > tbody > tr.danger > td, -.table > tfoot > tr.danger > td, -.table > thead > tr.danger > th, -.table > tbody > tr.danger > th, -.table > tfoot > tr.danger > th { - background-color: #f2dede; -} -.table-hover > tbody > tr > td.danger:hover, -.table-hover > tbody > tr > th.danger:hover, -.table-hover > tbody > tr.danger:hover > td, -.table-hover > tbody > tr:hover > .danger, -.table-hover > tbody > tr.danger:hover > th { - background-color: #ebcccc; + +.table-primary { + --bs-table-color: #000; + --bs-table-bg: #cfe2ff; + --bs-table-border-color: #a6b5cc; + --bs-table-striped-bg: #c5d7f2; + --bs-table-striped-color: #000; + --bs-table-active-bg: #bacbe6; + --bs-table-active-color: #000; + --bs-table-hover-bg: #bfd1ec; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-secondary { + --bs-table-color: #000; + --bs-table-bg: #e2e3e5; + --bs-table-border-color: #b5b6b7; + --bs-table-striped-bg: #d7d8da; + --bs-table-striped-color: #000; + --bs-table-active-bg: #cbccce; + --bs-table-active-color: #000; + --bs-table-hover-bg: #d1d2d4; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-success { + --bs-table-color: #000; + --bs-table-bg: #d1e7dd; + --bs-table-border-color: #a7b9b1; + --bs-table-striped-bg: #c7dbd2; + --bs-table-striped-color: #000; + --bs-table-active-bg: #bcd0c7; + --bs-table-active-color: #000; + --bs-table-hover-bg: #c1d6cc; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-info { + --bs-table-color: #000; + --bs-table-bg: #cff4fc; + --bs-table-border-color: #a6c3ca; + --bs-table-striped-bg: #c5e8ef; + --bs-table-striped-color: #000; + --bs-table-active-bg: #badce3; + --bs-table-active-color: #000; + --bs-table-hover-bg: #bfe2e9; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-warning { + --bs-table-color: #000; + --bs-table-bg: #fff3cd; + --bs-table-border-color: #ccc2a4; + --bs-table-striped-bg: #f2e7c3; + --bs-table-striped-color: #000; + --bs-table-active-bg: #e6dbb9; + --bs-table-active-color: #000; + --bs-table-hover-bg: #ece1be; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-danger { + --bs-table-color: #000; + --bs-table-bg: #f8d7da; + --bs-table-border-color: #c6acae; + --bs-table-striped-bg: #eccccf; + --bs-table-striped-color: #000; + --bs-table-active-bg: #dfc2c4; + --bs-table-active-color: #000; + --bs-table-hover-bg: #e5c7ca; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-light { + --bs-table-color: #000; + --bs-table-bg: #f8f9fa; + --bs-table-border-color: #c6c7c8; + --bs-table-striped-bg: #ecedee; + --bs-table-striped-color: #000; + --bs-table-active-bg: #dfe0e1; + --bs-table-active-color: #000; + --bs-table-hover-bg: #e5e6e7; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-dark { + --bs-table-color: #fff; + --bs-table-bg: #212529; + --bs-table-border-color: #4d5154; + --bs-table-striped-bg: #2c3034; + --bs-table-striped-color: #fff; + --bs-table-active-bg: #373b3e; + --bs-table-active-color: #fff; + --bs-table-hover-bg: #323539; + --bs-table-hover-color: #fff; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); } + .table-responsive { - min-height: .01%; overflow-x: auto; + -webkit-overflow-scrolling: touch; } -@media screen and (max-width: 767px) { - .table-responsive { - width: 100%; - margin-bottom: 15px; - overflow-y: hidden; - -ms-overflow-style: -ms-autohiding-scrollbar; - border: 1px solid #ddd; - } - .table-responsive > .table { - margin-bottom: 0; - } - .table-responsive > .table > thead > tr > th, - .table-responsive > .table > tbody > tr > th, - .table-responsive > .table > tfoot > tr > th, - .table-responsive > .table > thead > tr > td, - .table-responsive > .table > tbody > tr > td, - .table-responsive > .table > tfoot > tr > td { - white-space: nowrap; - } - .table-responsive > .table-bordered { - border: 0; + +@media (max-width: 575.98px) { + .table-responsive-sm { + overflow-x: auto; + -webkit-overflow-scrolling: touch; } - .table-responsive > .table-bordered > thead > tr > th:first-child, - .table-responsive > .table-bordered > tbody > tr > th:first-child, - .table-responsive > .table-bordered > tfoot > tr > th:first-child, - .table-responsive > .table-bordered > thead > tr > td:first-child, - .table-responsive > .table-bordered > tbody > tr > td:first-child, - .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; +} +@media (max-width: 767.98px) { + .table-responsive-md { + overflow-x: auto; + -webkit-overflow-scrolling: touch; } - .table-responsive > .table-bordered > thead > tr > th:last-child, - .table-responsive > .table-bordered > tbody > tr > th:last-child, - .table-responsive > .table-bordered > tfoot > tr > th:last-child, - .table-responsive > .table-bordered > thead > tr > td:last-child, - .table-responsive > .table-bordered > tbody > tr > td:last-child, - .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; +} +@media (max-width: 991.98px) { + .table-responsive-lg { + overflow-x: auto; + -webkit-overflow-scrolling: touch; } - .table-responsive > .table-bordered > tbody > tr:last-child > th, - .table-responsive > .table-bordered > tfoot > tr:last-child > th, - .table-responsive > .table-bordered > tbody > tr:last-child > td, - .table-responsive > .table-bordered > tfoot > tr:last-child > td { - border-bottom: 0; +} +@media (max-width: 1199.98px) { + .table-responsive-xl { + overflow-x: auto; + -webkit-overflow-scrolling: touch; } } -fieldset { - min-width: 0; - padding: 0; - margin: 0; - border: 0; +@media (max-width: 1399.98px) { + .table-responsive-xxl { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } } -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: 20px; - font-size: 21px; - line-height: inherit; - color: #333; - border: 0; - border-bottom: 1px solid #e5e5e5; +.form-label { + margin-bottom: 0.5rem; } -label { - display: inline-block; - max-width: 100%; - margin-bottom: 5px; - font-weight: bold; + +.col-form-label { + padding-top: calc(0.375rem + var(--bs-border-width)); + padding-bottom: calc(0.375rem + var(--bs-border-width)); + margin-bottom: 0; + font-size: inherit; + line-height: 1.5; } -input[type="search"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; + +.col-form-label-lg { + padding-top: calc(0.5rem + var(--bs-border-width)); + padding-bottom: calc(0.5rem + var(--bs-border-width)); + font-size: 1.25rem; } -input[type="radio"], -input[type="checkbox"] { - margin: 4px 0 0; - margin-top: 1px \9; - line-height: normal; + +.col-form-label-sm { + padding-top: calc(0.25rem + var(--bs-border-width)); + padding-bottom: calc(0.25rem + var(--bs-border-width)); + font-size: 0.875rem; } -input[type="file"] { - display: block; + +.form-text { + margin-top: 0.25rem; + font-size: 0.875em; + color: var(--bs-secondary-color); } -input[type="range"] { + +.form-control { display: block; width: 100%; + padding: 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: var(--bs-body-color); + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: var(--bs-body-bg); + background-clip: padding-box; + border: var(--bs-border-width) solid var(--bs-border-color); + border-radius: var(--bs-border-radius); + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } -select[multiple], -select[size] { - height: auto; -} -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; +@media (prefers-reduced-motion: reduce) { + .form-control { + transition: none; + } } -output { - display: block; - padding-top: 7px; - font-size: 14px; - line-height: 1.42857143; - color: #555; +.form-control[type=file] { + overflow: hidden; } -.form-control { - display: block; - width: 100%; - height: 34px; - padding: 6px 12px; - font-size: 14px; - line-height: 1.42857143; - color: #555; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; - -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +.form-control[type=file]:not(:disabled):not([readonly]) { + cursor: pointer; } .form-control:focus { - border-color: #66afe9; + color: var(--bs-body-color); + background-color: var(--bs-body-bg); + border-color: #86b7fe; outline: 0; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); } -.form-control::-moz-placeholder { - color: #999; - opacity: 1; -} -.form-control:-ms-input-placeholder { - color: #999; +.form-control::-webkit-date-and-time-value { + min-width: 85px; + height: 1.5em; + margin: 0; } -.form-control::-webkit-input-placeholder { - color: #999; +.form-control::-webkit-datetime-edit { + display: block; + padding: 0; } -.form-control[disabled], -.form-control[readonly], -fieldset[disabled] .form-control { - cursor: not-allowed; - background-color: #eee; +.form-control::-moz-placeholder { + color: var(--bs-secondary-color); opacity: 1; } -textarea.form-control { - height: auto; +.form-control::placeholder { + color: var(--bs-secondary-color); + opacity: 1; } -input[type="search"] { - -webkit-appearance: none; +.form-control:disabled { + background-color: var(--bs-secondary-bg); + opacity: 1; } -@media screen and (-webkit-min-device-pixel-ratio: 0) { - input[type="date"], - input[type="time"], - input[type="datetime-local"], - input[type="month"] { - line-height: 34px; - } - input[type="date"].input-sm, - input[type="time"].input-sm, - input[type="datetime-local"].input-sm, - input[type="month"].input-sm { - line-height: 30px; +.form-control::-webkit-file-upload-button { + padding: 0.375rem 0.75rem; + margin: -0.375rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.75rem; + color: var(--bs-body-color); + background-color: var(--bs-tertiary-bg); + pointer-events: none; + border-color: inherit; + border-style: solid; + border-width: 0; + border-inline-end-width: var(--bs-border-width); + border-radius: 0; + -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +.form-control::file-selector-button { + padding: 0.375rem 0.75rem; + margin: -0.375rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.75rem; + color: var(--bs-body-color); + background-color: var(--bs-tertiary-bg); + pointer-events: none; + border-color: inherit; + border-style: solid; + border-width: 0; + border-inline-end-width: var(--bs-border-width); + border-radius: 0; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-control::-webkit-file-upload-button { + -webkit-transition: none; + transition: none; } - input[type="date"].input-lg, - input[type="time"].input-lg, - input[type="datetime-local"].input-lg, - input[type="month"].input-lg { - line-height: 46px; + .form-control::file-selector-button { + transition: none; } } -.form-group { - margin-bottom: 15px; -} -.radio, -.checkbox { - position: relative; - display: block; - margin-top: 10px; - margin-bottom: 10px; -} -.radio label, -.checkbox label { - min-height: 20px; - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - cursor: pointer; -} -.radio input[type="radio"], -.radio-inline input[type="radio"], -.checkbox input[type="checkbox"], -.checkbox-inline input[type="checkbox"] { - position: absolute; - margin-top: 4px \9; - margin-left: -20px; +.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button { + background-color: var(--bs-secondary-bg); } -.radio + .radio, -.checkbox + .checkbox { - margin-top: -5px; +.form-control:hover:not(:disabled):not([readonly])::file-selector-button { + background-color: var(--bs-secondary-bg); } -.radio-inline, -.checkbox-inline { - display: inline-block; - padding-left: 20px; + +.form-control-plaintext { + display: block; + width: 100%; + padding: 0.375rem 0; margin-bottom: 0; - font-weight: normal; - vertical-align: middle; - cursor: pointer; + line-height: 1.5; + color: var(--bs-body-color); + background-color: transparent; + border: solid transparent; + border-width: var(--bs-border-width) 0; } -.radio-inline + .radio-inline, -.checkbox-inline + .checkbox-inline { - margin-top: 0; - margin-left: 10px; -} -input[type="radio"][disabled], -input[type="checkbox"][disabled], -input[type="radio"].disabled, -input[type="checkbox"].disabled, -fieldset[disabled] input[type="radio"], -fieldset[disabled] input[type="checkbox"] { - cursor: not-allowed; -} -.radio-inline.disabled, -.checkbox-inline.disabled, -fieldset[disabled] .radio-inline, -fieldset[disabled] .checkbox-inline { - cursor: not-allowed; -} -.radio.disabled label, -.checkbox.disabled label, -fieldset[disabled] .radio label, -fieldset[disabled] .checkbox label { - cursor: not-allowed; -} -.form-control-static { - padding-top: 7px; - padding-bottom: 7px; - margin-bottom: 0; +.form-control-plaintext:focus { + outline: 0; } -.form-control-static.input-lg, -.form-control-static.input-sm { +.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { padding-right: 0; padding-left: 0; } -.input-sm, -.form-group-sm .form-control { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; + +.form-control-sm { + min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2)); + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + border-radius: var(--bs-border-radius-sm); +} +.form-control-sm::-webkit-file-upload-button { + padding: 0.25rem 0.5rem; + margin: -0.25rem -0.5rem; + -webkit-margin-end: 0.5rem; + margin-inline-end: 0.5rem; +} +.form-control-sm::file-selector-button { + padding: 0.25rem 0.5rem; + margin: -0.25rem -0.5rem; + -webkit-margin-end: 0.5rem; + margin-inline-end: 0.5rem; } -select.input-sm, -select.form-group-sm .form-control { - height: 30px; - line-height: 30px; + +.form-control-lg { + min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2)); + padding: 0.5rem 1rem; + font-size: 1.25rem; + border-radius: var(--bs-border-radius-lg); +} +.form-control-lg::-webkit-file-upload-button { + padding: 0.5rem 1rem; + margin: -0.5rem -1rem; + -webkit-margin-end: 1rem; + margin-inline-end: 1rem; +} +.form-control-lg::file-selector-button { + padding: 0.5rem 1rem; + margin: -0.5rem -1rem; + -webkit-margin-end: 1rem; + margin-inline-end: 1rem; } -textarea.input-sm, -textarea.form-group-sm .form-control, -select[multiple].input-sm, -select[multiple].form-group-sm .form-control { - height: auto; + +textarea.form-control { + min-height: calc(1.5em + 0.75rem + calc(var(--bs-border-width) * 2)); } -.input-lg, -.form-group-lg .form-control { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.33; - border-radius: 6px; -} -select.input-lg, -select.form-group-lg .form-control { - height: 46px; - line-height: 46px; -} -textarea.input-lg, -textarea.form-group-lg .form-control, -select[multiple].input-lg, -select[multiple].form-group-lg .form-control { - height: auto; +textarea.form-control-sm { + min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2)); } -.has-feedback { - position: relative; +textarea.form-control-lg { + min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2)); } -.has-feedback .form-control { - padding-right: 42.5px; + +.form-control-color { + width: 3rem; + height: calc(1.5em + 0.75rem + calc(var(--bs-border-width) * 2)); + padding: 0.375rem; } -.form-control-feedback { - position: absolute; - top: 0; - right: 0; - z-index: 2; - display: block; - width: 34px; - height: 34px; - line-height: 34px; - text-align: center; - pointer-events: none; +.form-control-color:not(:disabled):not([readonly]) { + cursor: pointer; } -.input-lg + .form-control-feedback { - width: 46px; - height: 46px; - line-height: 46px; +.form-control-color::-moz-color-swatch { + border: 0 !important; + border-radius: var(--bs-border-radius); } -.input-sm + .form-control-feedback { - width: 30px; - height: 30px; - line-height: 30px; -} -.has-success .help-block, -.has-success .control-label, -.has-success .radio, -.has-success .checkbox, -.has-success .radio-inline, -.has-success .checkbox-inline, -.has-success.radio label, -.has-success.checkbox label, -.has-success.radio-inline label, -.has-success.checkbox-inline label { - color: #3c763d; -} -.has-success .form-control { - border-color: #3c763d; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -} -.has-success .form-control:focus { - border-color: #2b542c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; -} -.has-success .input-group-addon { - color: #3c763d; - background-color: #dff0d8; - border-color: #3c763d; -} -.has-success .form-control-feedback { - color: #3c763d; -} -.has-warning .help-block, -.has-warning .control-label, -.has-warning .radio, -.has-warning .checkbox, -.has-warning .radio-inline, -.has-warning .checkbox-inline, -.has-warning.radio label, -.has-warning.checkbox label, -.has-warning.radio-inline label, -.has-warning.checkbox-inline label { - color: #8a6d3b; -} -.has-warning .form-control { - border-color: #8a6d3b; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -} -.has-warning .form-control:focus { - border-color: #66512c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; -} -.has-warning .input-group-addon { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #8a6d3b; -} -.has-warning .form-control-feedback { - color: #8a6d3b; -} -.has-error .help-block, -.has-error .control-label, -.has-error .radio, -.has-error .checkbox, -.has-error .radio-inline, -.has-error .checkbox-inline, -.has-error.radio label, -.has-error.checkbox label, -.has-error.radio-inline label, -.has-error.checkbox-inline label { - color: #a94442; -} -.has-error .form-control { - border-color: #a94442; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -} -.has-error .form-control:focus { - border-color: #843534; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; -} -.has-error .input-group-addon { - color: #a94442; - background-color: #f2dede; - border-color: #a94442; -} -.has-error .form-control-feedback { - color: #a94442; -} -.has-feedback label ~ .form-control-feedback { - top: 25px; -} -.has-feedback label.sr-only ~ .form-control-feedback { - top: 0; +.form-control-color::-webkit-color-swatch { + border: 0 !important; + border-radius: var(--bs-border-radius); +} +.form-control-color.form-control-sm { + height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2)); +} +.form-control-color.form-control-lg { + height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2)); } -.help-block { + +.form-select { + --bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); display: block; - margin-top: 5px; - margin-bottom: 10px; - color: #737373; + width: 100%; + padding: 0.375rem 2.25rem 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: var(--bs-body-color); + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: var(--bs-body-bg); + background-image: var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none); + background-repeat: no-repeat; + background-position: right 0.75rem center; + background-size: 16px 12px; + border: var(--bs-border-width) solid var(--bs-border-color); + border-radius: var(--bs-border-radius); + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-select { + transition: none; + } +} +.form-select:focus { + border-color: #86b7fe; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); } -@media (min-width: 768px) { - .form-inline .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .form-inline .form-control-static { - display: inline-block; - } - .form-inline .input-group { - display: inline-table; - vertical-align: middle; - } - .form-inline .input-group .input-group-addon, - .form-inline .input-group .input-group-btn, - .form-inline .input-group .form-control { - width: auto; - } - .form-inline .input-group > .form-control { - width: 100%; - } - .form-inline .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio, - .form-inline .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio label, - .form-inline .checkbox label { - padding-left: 0; - } - .form-inline .radio input[type="radio"], - .form-inline .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; - } - .form-inline .has-feedback .form-control-feedback { - top: 0; - } +.form-select[multiple], .form-select[size]:not([size="1"]) { + padding-right: 0.75rem; + background-image: none; } -.form-horizontal .radio, -.form-horizontal .checkbox, -.form-horizontal .radio-inline, -.form-horizontal .checkbox-inline { - padding-top: 7px; - margin-top: 0; - margin-bottom: 0; +.form-select:disabled { + background-color: var(--bs-secondary-bg); } -.form-horizontal .radio, -.form-horizontal .checkbox { - min-height: 27px; +.form-select:-moz-focusring { + color: transparent; + text-shadow: 0 0 0 var(--bs-body-color); } -.form-horizontal .form-group { - margin-right: -15px; - margin-left: -15px; + +.form-select-sm { + padding-top: 0.25rem; + padding-bottom: 0.25rem; + padding-left: 0.5rem; + font-size: 0.875rem; + border-radius: var(--bs-border-radius-sm); } -@media (min-width: 768px) { - .form-horizontal .control-label { - padding-top: 7px; - margin-bottom: 0; - text-align: right; - } + +.form-select-lg { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 1rem; + font-size: 1.25rem; + border-radius: var(--bs-border-radius-lg); } -.form-horizontal .has-feedback .form-control-feedback { - right: 15px; + +[data-bs-theme=dark] .form-select { + --bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); } -@media (min-width: 768px) { - .form-horizontal .form-group-lg .control-label { - padding-top: 14.3px; - } + +.form-check { + display: block; + min-height: 1.5rem; + padding-left: 1.5em; + margin-bottom: 0.125rem; } -@media (min-width: 768px) { - .form-horizontal .form-group-sm .control-label { - padding-top: 6px; - } +.form-check .form-check-input { + float: left; + margin-left: -1.5em; } -.btn { - display: inline-block; - padding: 6px 12px; - margin-bottom: 0; - font-size: 14px; - font-weight: normal; - line-height: 1.42857143; - text-align: center; - white-space: nowrap; - vertical-align: middle; - -ms-touch-action: manipulation; - touch-action: manipulation; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-image: none; - border: 1px solid transparent; - border-radius: 4px; -} -.btn:focus, -.btn:active:focus, -.btn.active:focus, -.btn.focus, -.btn:active.focus, -.btn.active.focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; + +.form-check-reverse { + padding-right: 1.5em; + padding-left: 0; + text-align: right; } -.btn:hover, -.btn:focus, -.btn.focus { - color: #333; - text-decoration: none; +.form-check-reverse .form-check-input { + float: right; + margin-right: -1.5em; + margin-left: 0; } -.btn:active, -.btn.active { - background-image: none; - outline: 0; - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + +.form-check-input { + --bs-form-check-bg: var(--bs-body-bg); + flex-shrink: 0; + width: 1em; + height: 1em; + margin-top: 0.25em; + vertical-align: top; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: var(--bs-form-check-bg); + background-image: var(--bs-form-check-bg-image); + background-repeat: no-repeat; + background-position: center; + background-size: contain; + border: var(--bs-border-width) solid var(--bs-border-color); + -webkit-print-color-adjust: exact; + color-adjust: exact; + print-color-adjust: exact; +} +.form-check-input[type=checkbox] { + border-radius: 0.25em; +} +.form-check-input[type=radio] { + border-radius: 50%; } -.btn.disabled, -.btn[disabled], -fieldset[disabled] .btn { - pointer-events: none; - cursor: not-allowed; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - box-shadow: none; - opacity: .65; -} -.btn-default { - color: #333; - background-color: #fff; - border-color: #ccc; -} -.btn-default:hover, -.btn-default:focus, -.btn-default.focus, -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - color: #333; - background-color: #e6e6e6; - border-color: #adadad; -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - background-image: none; +.form-check-input:active { + filter: brightness(90%); } -.btn-default.disabled, -.btn-default[disabled], -fieldset[disabled] .btn-default, -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled.focus, -.btn-default[disabled].focus, -fieldset[disabled] .btn-default.focus, -.btn-default.disabled:active, -.btn-default[disabled]:active, -fieldset[disabled] .btn-default:active, -.btn-default.disabled.active, -.btn-default[disabled].active, -fieldset[disabled] .btn-default.active { - background-color: #fff; - border-color: #ccc; +.form-check-input:focus { + border-color: #86b7fe; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); } -.btn-default .badge { - color: #fff; - background-color: #333; +.form-check-input:checked { + background-color: #0d6efd; + border-color: #0d6efd; } -.btn-primary { - color: #fff; - background-color: #337ab7; - border-color: #2e6da4; -} -.btn-primary:hover, -.btn-primary:focus, -.btn-primary.focus, -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - color: #fff; - background-color: #286090; - border-color: #204d74; +.form-check-input:checked[type=checkbox] { + --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e"); } -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - background-image: none; +.form-check-input:checked[type=radio] { + --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e"); } -.btn-primary.disabled, -.btn-primary[disabled], -fieldset[disabled] .btn-primary, -.btn-primary.disabled:hover, -.btn-primary[disabled]:hover, -fieldset[disabled] .btn-primary:hover, -.btn-primary.disabled:focus, -.btn-primary[disabled]:focus, -fieldset[disabled] .btn-primary:focus, -.btn-primary.disabled.focus, -.btn-primary[disabled].focus, -fieldset[disabled] .btn-primary.focus, -.btn-primary.disabled:active, -.btn-primary[disabled]:active, -fieldset[disabled] .btn-primary:active, -.btn-primary.disabled.active, -.btn-primary[disabled].active, -fieldset[disabled] .btn-primary.active { - background-color: #337ab7; - border-color: #2e6da4; -} -.btn-primary .badge { - color: #337ab7; - background-color: #fff; +.form-check-input[type=checkbox]:indeterminate { + background-color: #0d6efd; + border-color: #0d6efd; + --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e"); } -.btn-success { - color: #fff; - background-color: #5cb85c; - border-color: #4cae4c; -} -.btn-success:hover, -.btn-success:focus, -.btn-success.focus, -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - color: #fff; - background-color: #449d44; - border-color: #398439; +.form-check-input:disabled { + pointer-events: none; + filter: none; + opacity: 0.5; } -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - background-image: none; +.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label { + cursor: default; + opacity: 0.5; } -.btn-success.disabled, -.btn-success[disabled], -fieldset[disabled] .btn-success, -.btn-success.disabled:hover, -.btn-success[disabled]:hover, -fieldset[disabled] .btn-success:hover, -.btn-success.disabled:focus, -.btn-success[disabled]:focus, -fieldset[disabled] .btn-success:focus, -.btn-success.disabled.focus, -.btn-success[disabled].focus, -fieldset[disabled] .btn-success.focus, -.btn-success.disabled:active, -.btn-success[disabled]:active, -fieldset[disabled] .btn-success:active, -.btn-success.disabled.active, -.btn-success[disabled].active, -fieldset[disabled] .btn-success.active { - background-color: #5cb85c; - border-color: #4cae4c; -} -.btn-success .badge { - color: #5cb85c; - background-color: #fff; + +.form-switch { + padding-left: 2.5em; } -.btn-info { - color: #fff; - background-color: #5bc0de; - border-color: #46b8da; -} -.btn-info:hover, -.btn-info:focus, -.btn-info.focus, -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - color: #fff; - background-color: #31b0d5; - border-color: #269abc; +.form-switch .form-check-input { + --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e"); + width: 2em; + margin-left: -2.5em; + background-image: var(--bs-form-switch-bg); + background-position: left center; + border-radius: 2em; + transition: background-position 0.15s ease-in-out; } -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - background-image: none; +@media (prefers-reduced-motion: reduce) { + .form-switch .form-check-input { + transition: none; + } } -.btn-info.disabled, -.btn-info[disabled], -fieldset[disabled] .btn-info, -.btn-info.disabled:hover, -.btn-info[disabled]:hover, -fieldset[disabled] .btn-info:hover, -.btn-info.disabled:focus, -.btn-info[disabled]:focus, -fieldset[disabled] .btn-info:focus, -.btn-info.disabled.focus, -.btn-info[disabled].focus, -fieldset[disabled] .btn-info.focus, -.btn-info.disabled:active, -.btn-info[disabled]:active, -fieldset[disabled] .btn-info:active, -.btn-info.disabled.active, -.btn-info[disabled].active, -fieldset[disabled] .btn-info.active { - background-color: #5bc0de; - border-color: #46b8da; -} -.btn-info .badge { - color: #5bc0de; - background-color: #fff; +.form-switch .form-check-input:focus { + --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e"); } -.btn-warning { - color: #fff; - background-color: #f0ad4e; - border-color: #eea236; -} -.btn-warning:hover, -.btn-warning:focus, -.btn-warning.focus, -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - color: #fff; - background-color: #ec971f; - border-color: #d58512; +.form-switch .form-check-input:checked { + background-position: right center; + --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"); } -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - background-image: none; +.form-switch.form-check-reverse { + padding-right: 2.5em; + padding-left: 0; } -.btn-warning.disabled, -.btn-warning[disabled], -fieldset[disabled] .btn-warning, -.btn-warning.disabled:hover, -.btn-warning[disabled]:hover, -fieldset[disabled] .btn-warning:hover, -.btn-warning.disabled:focus, -.btn-warning[disabled]:focus, -fieldset[disabled] .btn-warning:focus, -.btn-warning.disabled.focus, -.btn-warning[disabled].focus, -fieldset[disabled] .btn-warning.focus, -.btn-warning.disabled:active, -.btn-warning[disabled]:active, -fieldset[disabled] .btn-warning:active, -.btn-warning.disabled.active, -.btn-warning[disabled].active, -fieldset[disabled] .btn-warning.active { - background-color: #f0ad4e; - border-color: #eea236; -} -.btn-warning .badge { - color: #f0ad4e; - background-color: #fff; +.form-switch.form-check-reverse .form-check-input { + margin-right: -2.5em; + margin-left: 0; } -.btn-danger { - color: #fff; - background-color: #d9534f; - border-color: #d43f3a; -} -.btn-danger:hover, -.btn-danger:focus, -.btn-danger.focus, -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - color: #fff; - background-color: #c9302c; - border-color: #ac2925; + +.form-check-inline { + display: inline-block; + margin-right: 1rem; } -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - background-image: none; + +.btn-check { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; } -.btn-danger.disabled, -.btn-danger[disabled], -fieldset[disabled] .btn-danger, -.btn-danger.disabled:hover, -.btn-danger[disabled]:hover, -fieldset[disabled] .btn-danger:hover, -.btn-danger.disabled:focus, -.btn-danger[disabled]:focus, -fieldset[disabled] .btn-danger:focus, -.btn-danger.disabled.focus, -.btn-danger[disabled].focus, -fieldset[disabled] .btn-danger.focus, -.btn-danger.disabled:active, -.btn-danger[disabled]:active, -fieldset[disabled] .btn-danger:active, -.btn-danger.disabled.active, -.btn-danger[disabled].active, -fieldset[disabled] .btn-danger.active { - background-color: #d9534f; - border-color: #d43f3a; -} -.btn-danger .badge { - color: #d9534f; - background-color: #fff; +.btn-check[disabled] + .btn, .btn-check:disabled + .btn { + pointer-events: none; + filter: none; + opacity: 0.65; } -.btn-link { - font-weight: normal; - color: #337ab7; - border-radius: 0; + +[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus) { + --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e"); } -.btn-link, -.btn-link:active, -.btn-link.active, -.btn-link[disabled], -fieldset[disabled] .btn-link { + +.form-range { + width: 100%; + height: 1.5rem; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; background-color: transparent; - -webkit-box-shadow: none; - box-shadow: none; } -.btn-link, -.btn-link:hover, -.btn-link:focus, -.btn-link:active { - border-color: transparent; +.form-range:focus { + outline: 0; } -.btn-link:hover, -.btn-link:focus { - color: #23527c; - text-decoration: underline; - background-color: transparent; +.form-range:focus::-webkit-slider-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25); } -.btn-link[disabled]:hover, -fieldset[disabled] .btn-link:hover, -.btn-link[disabled]:focus, -fieldset[disabled] .btn-link:focus { - color: #777; - text-decoration: none; +.form-range:focus::-moz-range-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25); } -.btn-lg, -.btn-group-lg > .btn { - padding: 10px 16px; - font-size: 18px; - line-height: 1.33; - border-radius: 6px; -} -.btn-sm, -.btn-group-sm > .btn { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; +.form-range::-moz-focus-outer { + border: 0; } -.btn-xs, -.btn-group-xs > .btn { - padding: 1px 5px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; +.form-range::-webkit-slider-thumb { + width: 1rem; + height: 1rem; + margin-top: -0.25rem; + -webkit-appearance: none; + appearance: none; + background-color: #0d6efd; + border: 0; + border-radius: 1rem; + -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } -.btn-block { - display: block; - width: 100%; +@media (prefers-reduced-motion: reduce) { + .form-range::-webkit-slider-thumb { + -webkit-transition: none; + transition: none; + } } -.btn-block + .btn-block { - margin-top: 5px; +.form-range::-webkit-slider-thumb:active { + background-color: #b6d4fe; } -input[type="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { +.form-range::-webkit-slider-runnable-track { width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: var(--bs-secondary-bg); + border-color: transparent; + border-radius: 1rem; +} +.form-range::-moz-range-thumb { + width: 1rem; + height: 1rem; + -moz-appearance: none; + appearance: none; + background-color: #0d6efd; + border: 0; + border-radius: 1rem; + -moz-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } -.fade { - opacity: 0; - -webkit-transition: opacity .15s linear; - -o-transition: opacity .15s linear; - transition: opacity .15s linear; -} -.fade.in { - opacity: 1; +@media (prefers-reduced-motion: reduce) { + .form-range::-moz-range-thumb { + -moz-transition: none; + transition: none; + } } -.collapse { - display: none; - visibility: hidden; +.form-range::-moz-range-thumb:active { + background-color: #b6d4fe; } -.collapse.in { - display: block; - visibility: visible; +.form-range::-moz-range-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: var(--bs-secondary-bg); + border-color: transparent; + border-radius: 1rem; } -tr.collapse.in { - display: table-row; +.form-range:disabled { + pointer-events: none; } -tbody.collapse.in { - display: table-row-group; +.form-range:disabled::-webkit-slider-thumb { + background-color: var(--bs-secondary-color); } -.collapsing { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition-timing-function: ease; - -o-transition-timing-function: ease; - transition-timing-function: ease; - -webkit-transition-duration: .35s; - -o-transition-duration: .35s; - transition-duration: .35s; - -webkit-transition-property: height, visibility; - -o-transition-property: height, visibility; - transition-property: height, visibility; -} -.caret { - display: inline-block; - width: 0; - height: 0; - margin-left: 2px; - vertical-align: middle; - border-top: 4px solid; - border-right: 4px solid transparent; - border-left: 4px solid transparent; +.form-range:disabled::-moz-range-thumb { + background-color: var(--bs-secondary-color); } -.dropdown { + +.form-floating { position: relative; } -.dropdown-toggle:focus { - outline: 0; +.form-floating > .form-control, +.form-floating > .form-control-plaintext, +.form-floating > .form-select { + height: calc(3.5rem + calc(var(--bs-border-width) * 2)); + min-height: calc(3.5rem + calc(var(--bs-border-width) * 2)); + line-height: 1.25; } -.dropdown-menu { +.form-floating > label { position: absolute; - top: 100%; + top: 0; left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 160px; - padding: 5px 0; - margin: 2px 0 0; - font-size: 14px; - text-align: left; - list-style: none; - background-color: #fff; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, .15); - border-radius: 4px; - -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); - box-shadow: 0 6px 12px rgba(0, 0, 0, .175); -} -.dropdown-menu.pull-right { - right: 0; - left: auto; -} -.dropdown-menu .divider { - height: 1px; - margin: 9px 0; + z-index: 2; + height: 100%; + padding: 1rem 0.75rem; overflow: hidden; - background-color: #e5e5e5; -} -.dropdown-menu > li > a { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: 1.42857143; - color: #333; + text-align: start; + text-overflow: ellipsis; white-space: nowrap; + pointer-events: none; + border: var(--bs-border-width) solid transparent; + transform-origin: 0 0; + transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out; } -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - color: #262626; - text-decoration: none; - background-color: #f5f5f5; +@media (prefers-reduced-motion: reduce) { + .form-floating > label { + transition: none; + } } -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - color: #fff; - text-decoration: none; - background-color: #337ab7; - outline: 0; +.form-floating > .form-control, +.form-floating > .form-control-plaintext { + padding: 1rem 0.75rem; } -.dropdown-menu > .disabled > a, -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - color: #777; +.form-floating > .form-control::-moz-placeholder, .form-floating > .form-control-plaintext::-moz-placeholder { + color: transparent; } -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - text-decoration: none; - cursor: not-allowed; - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +.form-floating > .form-control::placeholder, +.form-floating > .form-control-plaintext::placeholder { + color: transparent; } -.open > .dropdown-menu { - display: block; +.form-floating > .form-control:not(:-moz-placeholder-shown), .form-floating > .form-control-plaintext:not(:-moz-placeholder-shown) { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown), +.form-floating > .form-control-plaintext:focus, +.form-floating > .form-control-plaintext:not(:placeholder-shown) { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:-webkit-autofill, +.form-floating > .form-control-plaintext:-webkit-autofill { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-select { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label { + color: rgba(var(--bs-body-color-rgb), 0.65); + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > .form-control:focus ~ label, +.form-floating > .form-control:not(:placeholder-shown) ~ label, +.form-floating > .form-control-plaintext ~ label, +.form-floating > .form-select ~ label { + color: rgba(var(--bs-body-color-rgb), 0.65); + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label::after { + position: absolute; + inset: 1rem 0.375rem; + z-index: -1; + height: 1.5em; + content: ""; + background-color: var(--bs-body-bg); + border-radius: var(--bs-border-radius); } -.open > a { - outline: 0; +.form-floating > .form-control:focus ~ label::after, +.form-floating > .form-control:not(:placeholder-shown) ~ label::after, +.form-floating > .form-control-plaintext ~ label::after, +.form-floating > .form-select ~ label::after { + position: absolute; + inset: 1rem 0.375rem; + z-index: -1; + height: 1.5em; + content: ""; + background-color: var(--bs-body-bg); + border-radius: var(--bs-border-radius); } -.dropdown-menu-right { - right: 0; - left: auto; +.form-floating > .form-control:-webkit-autofill ~ label { + color: rgba(var(--bs-body-color-rgb), 0.65); + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); } -.dropdown-menu-left { - right: auto; - left: 0; +.form-floating > .form-control-plaintext ~ label { + border-width: var(--bs-border-width) 0; } -.dropdown-header { - display: block; - padding: 3px 20px; - font-size: 12px; - line-height: 1.42857143; - color: #777; - white-space: nowrap; +.form-floating > :disabled ~ label, +.form-floating > .form-control:disabled ~ label { + color: #6c757d; } -.dropdown-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 990; +.form-floating > :disabled ~ label::after, +.form-floating > .form-control:disabled ~ label::after { + background-color: var(--bs-secondary-bg); } -.pull-right > .dropdown-menu { - right: 0; - left: auto; + +.input-group { + position: relative; + display: flex; + flex-wrap: wrap; + align-items: stretch; + width: 100%; } -.dropup .caret, -.navbar-fixed-bottom .dropdown .caret { - content: ""; - border-top: 0; - border-bottom: 4px solid; -} -.dropup .dropdown-menu, -.navbar-fixed-bottom .dropdown .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 1px; -} -@media (min-width: 768px) { - .navbar-right .dropdown-menu { - right: 0; - left: auto; - } - .navbar-right .dropdown-menu-left { - right: auto; - left: 0; - } -} -.btn-group, -.btn-group-vertical { +.input-group > .form-control, +.input-group > .form-select, +.input-group > .form-floating { position: relative; - display: inline-block; - vertical-align: middle; + flex: 1 1 auto; + width: 1%; + min-width: 0; } -.btn-group > .btn, -.btn-group-vertical > .btn { - position: relative; - float: left; +.input-group > .form-control:focus, +.input-group > .form-select:focus, +.input-group > .form-floating:focus-within { + z-index: 5; } -.btn-group > .btn:hover, -.btn-group-vertical > .btn:hover, -.btn-group > .btn:focus, -.btn-group-vertical > .btn:focus, -.btn-group > .btn:active, -.btn-group-vertical > .btn:active, -.btn-group > .btn.active, -.btn-group-vertical > .btn.active { +.input-group .btn { + position: relative; z-index: 2; } -.btn-group .btn + .btn, -.btn-group .btn + .btn-group, -.btn-group .btn-group + .btn, -.btn-group .btn-group + .btn-group { - margin-left: -1px; -} -.btn-toolbar { - margin-left: -5px; +.input-group .btn:focus { + z-index: 5; } -.btn-toolbar .btn-group, -.btn-toolbar .input-group { - float: left; + +.input-group-text { + display: flex; + align-items: center; + padding: 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: var(--bs-body-color); + text-align: center; + white-space: nowrap; + background-color: var(--bs-tertiary-bg); + border: var(--bs-border-width) solid var(--bs-border-color); + border-radius: var(--bs-border-radius); } -.btn-toolbar > .btn, -.btn-toolbar > .btn-group, -.btn-toolbar > .input-group { - margin-left: 5px; + +.input-group-lg > .form-control, +.input-group-lg > .form-select, +.input-group-lg > .input-group-text, +.input-group-lg > .btn { + padding: 0.5rem 1rem; + font-size: 1.25rem; + border-radius: var(--bs-border-radius-lg); } -.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { - border-radius: 0; + +.input-group-sm > .form-control, +.input-group-sm > .form-select, +.input-group-sm > .input-group-text, +.input-group-sm > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + border-radius: var(--bs-border-radius-sm); } -.btn-group > .btn:first-child { - margin-left: 0; + +.input-group-lg > .form-select, +.input-group-sm > .form-select { + padding-right: 3rem; } -.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + +.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating), +.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3), +.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-control, +.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-select { border-top-right-radius: 0; border-bottom-right-radius: 0; } -.btn-group > .btn:last-child:not(:first-child), -.btn-group > .dropdown-toggle:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group > .btn-group { - float: left; -} -.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group > .btn-group:first-child > .btn:last-child, -.btn-group > .btn-group:first-child > .dropdown-toggle { +.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating), +.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4), +.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-control, +.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-select { border-top-right-radius: 0; border-bottom-right-radius: 0; } -.btn-group > .btn-group:last-child > .btn:first-child { +.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) { + margin-left: calc(var(--bs-border-width) * -1); border-top-left-radius: 0; border-bottom-left-radius: 0; } -.btn-group .dropdown-toggle:active, -.btn-group.open .dropdown-toggle { - outline: 0; -} -.btn-group > .btn + .dropdown-toggle { - padding-right: 8px; - padding-left: 8px; +.input-group > .form-floating:not(:first-child) > .form-control, +.input-group > .form-floating:not(:first-child) > .form-select { + border-top-left-radius: 0; + border-bottom-left-radius: 0; } -.btn-group > .btn-lg + .dropdown-toggle { - padding-right: 12px; - padding-left: 12px; + +.valid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 0.875em; + color: var(--bs-form-valid-color); } -.btn-group.open .dropdown-toggle { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + +.valid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: 0.1rem; + font-size: 0.875rem; + color: #fff; + background-color: var(--bs-success); + border-radius: var(--bs-border-radius); } -.btn-group.open .dropdown-toggle.btn-link { - -webkit-box-shadow: none; - box-shadow: none; + +.was-validated :valid ~ .valid-feedback, +.was-validated :valid ~ .valid-tooltip, +.is-valid ~ .valid-feedback, +.is-valid ~ .valid-tooltip { + display: block; } -.btn .caret { - margin-left: 0; + +.was-validated .form-control:valid, .form-control.is-valid { + border-color: var(--bs-form-valid-border-color); + padding-right: calc(1.5em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.375em + 0.1875rem) center; + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} +.was-validated .form-control:valid:focus, .form-control.is-valid:focus { + border-color: var(--bs-form-valid-border-color); + box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25); } -.btn-lg .caret { - border-width: 5px 5px 0; - border-bottom-width: 0; + +.was-validated textarea.form-control:valid, textarea.form-control.is-valid { + padding-right: calc(1.5em + 0.75rem); + background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); } -.dropup .btn-lg .caret { - border-width: 0 5px 5px; + +.was-validated .form-select:valid, .form-select.is-valid { + border-color: var(--bs-form-valid-border-color); } -.btn-group-vertical > .btn, -.btn-group-vertical > .btn-group, -.btn-group-vertical > .btn-group > .btn { - display: block; - float: none; - width: 100%; - max-width: 100%; +.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size="1"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size="1"] { + --bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); + padding-right: 4.125rem; + background-position: right 0.75rem center, center right 2.25rem; + background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } -.btn-group-vertical > .btn-group > .btn { - float: none; +.was-validated .form-select:valid:focus, .form-select.is-valid:focus { + border-color: var(--bs-form-valid-border-color); + box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25); } -.btn-group-vertical > .btn + .btn, -.btn-group-vertical > .btn + .btn-group, -.btn-group-vertical > .btn-group + .btn, -.btn-group-vertical > .btn-group + .btn-group { - margin-top: -1px; - margin-left: 0; + +.was-validated .form-control-color:valid, .form-control-color.is-valid { + width: calc(3rem + calc(1.5em + 0.75rem)); } -.btn-group-vertical > .btn:not(:first-child):not(:last-child) { - border-radius: 0; + +.was-validated .form-check-input:valid, .form-check-input.is-valid { + border-color: var(--bs-form-valid-border-color); } -.btn-group-vertical > .btn:first-child:not(:last-child) { - border-top-right-radius: 4px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; +.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked { + background-color: var(--bs-form-valid-color); } -.btn-group-vertical > .btn:last-child:not(:first-child) { - border-top-left-radius: 0; - border-top-right-radius: 0; - border-bottom-left-radius: 4px; +.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus { + box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25); } -.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; +.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { + color: var(--bs-form-valid-color); } -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; + +.form-check-inline .form-check-input ~ .valid-feedback { + margin-left: 0.5em; } -.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-top-left-radius: 0; - border-top-right-radius: 0; + +.was-validated .input-group > .form-control:not(:focus):valid, .input-group > .form-control:not(:focus).is-valid, +.was-validated .input-group > .form-select:not(:focus):valid, +.input-group > .form-select:not(:focus).is-valid, +.was-validated .input-group > .form-floating:not(:focus-within):valid, +.input-group > .form-floating:not(:focus-within).is-valid { + z-index: 3; } -.btn-group-justified { - display: table; + +.invalid-feedback { + display: none; width: 100%; - table-layout: fixed; - border-collapse: separate; + margin-top: 0.25rem; + font-size: 0.875em; + color: var(--bs-form-invalid-color); } -.btn-group-justified > .btn, -.btn-group-justified > .btn-group { - display: table-cell; - float: none; - width: 1%; + +.invalid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: 0.1rem; + font-size: 0.875rem; + color: #fff; + background-color: var(--bs-danger); + border-radius: var(--bs-border-radius); } -.btn-group-justified > .btn-group .btn { - width: 100%; + +.was-validated :invalid ~ .invalid-feedback, +.was-validated :invalid ~ .invalid-tooltip, +.is-invalid ~ .invalid-feedback, +.is-invalid ~ .invalid-tooltip { + display: block; } -.btn-group-justified > .btn-group .dropdown-menu { - left: auto; + +.was-validated .form-control:invalid, .form-control.is-invalid { + border-color: var(--bs-form-invalid-border-color); + padding-right: calc(1.5em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.375em + 0.1875rem) center; + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} +.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus { + border-color: var(--bs-form-invalid-border-color); + box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25); } -[data-toggle="buttons"] > .btn input[type="radio"], -[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], -[data-toggle="buttons"] > .btn input[type="checkbox"], -[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none; + +.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid { + padding-right: calc(1.5em + 0.75rem); + background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); } -.input-group { - position: relative; - display: table; - border-collapse: separate; + +.was-validated .form-select:invalid, .form-select.is-invalid { + border-color: var(--bs-form-invalid-border-color); } -.input-group[class*="col-"] { - float: none; - padding-right: 0; - padding-left: 0; +.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size="1"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size="1"] { + --bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e"); + padding-right: 4.125rem; + background-position: right 0.75rem center, center right 2.25rem; + background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } -.input-group .form-control { - position: relative; - z-index: 2; - float: left; - width: 100%; - margin-bottom: 0; +.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus { + border-color: var(--bs-form-invalid-border-color); + box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25); } -.input-group-lg > .form-control, -.input-group-lg > .input-group-addon, -.input-group-lg > .input-group-btn > .btn { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.33; - border-radius: 6px; -} -select.input-group-lg > .form-control, -select.input-group-lg > .input-group-addon, -select.input-group-lg > .input-group-btn > .btn { - height: 46px; - line-height: 46px; -} -textarea.input-group-lg > .form-control, -textarea.input-group-lg > .input-group-addon, -textarea.input-group-lg > .input-group-btn > .btn, -select[multiple].input-group-lg > .form-control, -select[multiple].input-group-lg > .input-group-addon, -select[multiple].input-group-lg > .input-group-btn > .btn { - height: auto; + +.was-validated .form-control-color:invalid, .form-control-color.is-invalid { + width: calc(3rem + calc(1.5em + 0.75rem)); } -.input-group-sm > .form-control, -.input-group-sm > .input-group-addon, -.input-group-sm > .input-group-btn > .btn { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.input-group-sm > .form-control, -select.input-group-sm > .input-group-addon, -select.input-group-sm > .input-group-btn > .btn { - height: 30px; - line-height: 30px; -} -textarea.input-group-sm > .form-control, -textarea.input-group-sm > .input-group-addon, -textarea.input-group-sm > .input-group-btn > .btn, -select[multiple].input-group-sm > .form-control, -select[multiple].input-group-sm > .input-group-addon, -select[multiple].input-group-sm > .input-group-btn > .btn { - height: auto; + +.was-validated .form-check-input:invalid, .form-check-input.is-invalid { + border-color: var(--bs-form-invalid-border-color); } -.input-group-addon, -.input-group-btn, -.input-group .form-control { - display: table-cell; +.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked { + background-color: var(--bs-form-invalid-color); } -.input-group-addon:not(:first-child):not(:last-child), -.input-group-btn:not(:first-child):not(:last-child), -.input-group .form-control:not(:first-child):not(:last-child) { - border-radius: 0; +.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus { + box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25); } -.input-group-addon, -.input-group-btn { - width: 1%; - white-space: nowrap; - vertical-align: middle; +.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { + color: var(--bs-form-invalid-color); } -.input-group-addon { - padding: 6px 12px; - font-size: 14px; - font-weight: normal; - line-height: 1; - color: #555; - text-align: center; - background-color: #eee; - border: 1px solid #ccc; - border-radius: 4px; -} -.input-group-addon.input-sm { - padding: 5px 10px; - font-size: 12px; - border-radius: 3px; -} -.input-group-addon.input-lg { - padding: 10px 16px; - font-size: 18px; - border-radius: 6px; -} -.input-group-addon input[type="radio"], -.input-group-addon input[type="checkbox"] { - margin-top: 0; + +.form-check-inline .form-check-input ~ .invalid-feedback { + margin-left: 0.5em; } -.input-group .form-control:first-child, -.input-group-addon:first-child, -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group > .btn, -.input-group-btn:first-child > .dropdown-toggle, -.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), -.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { - border-top-right-radius: 0; - border-bottom-right-radius: 0; + +.was-validated .input-group > .form-control:not(:focus):invalid, .input-group > .form-control:not(:focus).is-invalid, +.was-validated .input-group > .form-select:not(:focus):invalid, +.input-group > .form-select:not(:focus).is-invalid, +.was-validated .input-group > .form-floating:not(:focus-within):invalid, +.input-group > .form-floating:not(:focus-within).is-invalid { + z-index: 4; } -.input-group-addon:first-child { - border-right: 0; + +.btn { + --bs-btn-padding-x: 0.75rem; + --bs-btn-padding-y: 0.375rem; + --bs-btn-font-family: ; + --bs-btn-font-size: 1rem; + --bs-btn-font-weight: 400; + --bs-btn-line-height: 1.5; + --bs-btn-color: var(--bs-body-color); + --bs-btn-bg: transparent; + --bs-btn-border-width: var(--bs-border-width); + --bs-btn-border-color: transparent; + --bs-btn-border-radius: var(--bs-border-radius); + --bs-btn-hover-border-color: transparent; + --bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075); + --bs-btn-disabled-opacity: 0.65; + --bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5); + display: inline-block; + padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x); + font-family: var(--bs-btn-font-family); + font-size: var(--bs-btn-font-size); + font-weight: var(--bs-btn-font-weight); + line-height: var(--bs-btn-line-height); + color: var(--bs-btn-color); + text-align: center; + text-decoration: none; + vertical-align: middle; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + border: var(--bs-btn-border-width) solid var(--bs-btn-border-color); + border-radius: var(--bs-btn-border-radius); + background-color: var(--bs-btn-bg); + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .btn { + transition: none; + } +} +.btn:hover { + color: var(--bs-btn-hover-color); + background-color: var(--bs-btn-hover-bg); + border-color: var(--bs-btn-hover-border-color); +} +.btn-check + .btn:hover { + color: var(--bs-btn-color); + background-color: var(--bs-btn-bg); + border-color: var(--bs-btn-border-color); +} +.btn:focus-visible { + color: var(--bs-btn-hover-color); + background-color: var(--bs-btn-hover-bg); + border-color: var(--bs-btn-hover-border-color); + outline: 0; + box-shadow: var(--bs-btn-focus-box-shadow); } -.input-group .form-control:last-child, -.input-group-addon:last-child, -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group > .btn, -.input-group-btn:last-child > .dropdown-toggle, -.input-group-btn:first-child > .btn:not(:first-child), -.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { - border-top-left-radius: 0; - border-bottom-left-radius: 0; +.btn-check:focus-visible + .btn { + border-color: var(--bs-btn-hover-border-color); + outline: 0; + box-shadow: var(--bs-btn-focus-box-shadow); } -.input-group-addon:last-child { - border-left: 0; +.btn-check:checked + .btn, :not(.btn-check) + .btn:active, .btn:first-child:active, .btn.active, .btn.show { + color: var(--bs-btn-active-color); + background-color: var(--bs-btn-active-bg); + border-color: var(--bs-btn-active-border-color); } -.input-group-btn { - position: relative; - font-size: 0; - white-space: nowrap; +.btn-check:checked + .btn:focus-visible, :not(.btn-check) + .btn:active:focus-visible, .btn:first-child:active:focus-visible, .btn.active:focus-visible, .btn.show:focus-visible { + box-shadow: var(--bs-btn-focus-box-shadow); } -.input-group-btn > .btn { - position: relative; +.btn:disabled, .btn.disabled, fieldset:disabled .btn { + color: var(--bs-btn-disabled-color); + pointer-events: none; + background-color: var(--bs-btn-disabled-bg); + border-color: var(--bs-btn-disabled-border-color); + opacity: var(--bs-btn-disabled-opacity); } -.input-group-btn > .btn + .btn { - margin-left: -1px; + +.btn-primary { + --bs-btn-color: #fff; + --bs-btn-bg: #0d6efd; + --bs-btn-border-color: #0d6efd; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #0b5ed7; + --bs-btn-hover-border-color: #0a58ca; + --bs-btn-focus-shadow-rgb: 49, 132, 253; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #0a58ca; + --bs-btn-active-border-color: #0a53be; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #0d6efd; + --bs-btn-disabled-border-color: #0d6efd; } -.input-group-btn > .btn:hover, -.input-group-btn > .btn:focus, -.input-group-btn > .btn:active { - z-index: 2; + +.btn-secondary { + --bs-btn-color: #fff; + --bs-btn-bg: #6c757d; + --bs-btn-border-color: #6c757d; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #5c636a; + --bs-btn-hover-border-color: #565e64; + --bs-btn-focus-shadow-rgb: 130, 138, 145; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #565e64; + --bs-btn-active-border-color: #51585e; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #6c757d; + --bs-btn-disabled-border-color: #6c757d; } -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group { - margin-right: -1px; + +.btn-success { + --bs-btn-color: #fff; + --bs-btn-bg: #198754; + --bs-btn-border-color: #198754; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #157347; + --bs-btn-hover-border-color: #146c43; + --bs-btn-focus-shadow-rgb: 60, 153, 110; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #146c43; + --bs-btn-active-border-color: #13653f; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #198754; + --bs-btn-disabled-border-color: #198754; } -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group { - margin-left: -1px; + +.btn-info { + --bs-btn-color: #000; + --bs-btn-bg: #0dcaf0; + --bs-btn-border-color: #0dcaf0; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #31d2f2; + --bs-btn-hover-border-color: #25cff2; + --bs-btn-focus-shadow-rgb: 11, 172, 204; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #3dd5f3; + --bs-btn-active-border-color: #25cff2; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #0dcaf0; + --bs-btn-disabled-border-color: #0dcaf0; } -.nav { - padding-left: 0; - margin-bottom: 0; - list-style: none; + +.btn-warning { + --bs-btn-color: #000; + --bs-btn-bg: #ffc107; + --bs-btn-border-color: #ffc107; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #ffca2c; + --bs-btn-hover-border-color: #ffc720; + --bs-btn-focus-shadow-rgb: 217, 164, 6; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #ffcd39; + --bs-btn-active-border-color: #ffc720; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #ffc107; + --bs-btn-disabled-border-color: #ffc107; } -.nav > li { - position: relative; - display: block; + +.btn-danger { + --bs-btn-color: #fff; + --bs-btn-bg: #dc3545; + --bs-btn-border-color: #dc3545; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #bb2d3b; + --bs-btn-hover-border-color: #b02a37; + --bs-btn-focus-shadow-rgb: 225, 83, 97; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #b02a37; + --bs-btn-active-border-color: #a52834; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #dc3545; + --bs-btn-disabled-border-color: #dc3545; } -.nav > li > a { - position: relative; - display: block; - padding: 10px 15px; + +.btn-light { + --bs-btn-color: #000; + --bs-btn-bg: #f8f9fa; + --bs-btn-border-color: #f8f9fa; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #d3d4d5; + --bs-btn-hover-border-color: #c6c7c8; + --bs-btn-focus-shadow-rgb: 211, 212, 213; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #c6c7c8; + --bs-btn-active-border-color: #babbbc; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #f8f9fa; + --bs-btn-disabled-border-color: #f8f9fa; } -.nav > li > a:hover, -.nav > li > a:focus { - text-decoration: none; - background-color: #eee; + +.btn-dark { + --bs-btn-color: #fff; + --bs-btn-bg: #212529; + --bs-btn-border-color: #212529; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #424649; + --bs-btn-hover-border-color: #373b3e; + --bs-btn-focus-shadow-rgb: 66, 70, 73; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #4d5154; + --bs-btn-active-border-color: #373b3e; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #212529; + --bs-btn-disabled-border-color: #212529; } -.nav > li.disabled > a { - color: #777; + +.btn-outline-primary { + --bs-btn-color: #0d6efd; + --bs-btn-border-color: #0d6efd; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #0d6efd; + --bs-btn-hover-border-color: #0d6efd; + --bs-btn-focus-shadow-rgb: 13, 110, 253; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #0d6efd; + --bs-btn-active-border-color: #0d6efd; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #0d6efd; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #0d6efd; + --bs-gradient: none; } -.nav > li.disabled > a:hover, -.nav > li.disabled > a:focus { - color: #777; - text-decoration: none; - cursor: not-allowed; - background-color: transparent; + +.btn-outline-secondary { + --bs-btn-color: #6c757d; + --bs-btn-border-color: #6c757d; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #6c757d; + --bs-btn-hover-border-color: #6c757d; + --bs-btn-focus-shadow-rgb: 108, 117, 125; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #6c757d; + --bs-btn-active-border-color: #6c757d; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #6c757d; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #6c757d; + --bs-gradient: none; } -.nav .open > a, -.nav .open > a:hover, -.nav .open > a:focus { - background-color: #eee; - border-color: #337ab7; + +.btn-outline-success { + --bs-btn-color: #198754; + --bs-btn-border-color: #198754; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #198754; + --bs-btn-hover-border-color: #198754; + --bs-btn-focus-shadow-rgb: 25, 135, 84; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #198754; + --bs-btn-active-border-color: #198754; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #198754; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #198754; + --bs-gradient: none; } -.nav .nav-divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; + +.btn-outline-info { + --bs-btn-color: #0dcaf0; + --bs-btn-border-color: #0dcaf0; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #0dcaf0; + --bs-btn-hover-border-color: #0dcaf0; + --bs-btn-focus-shadow-rgb: 13, 202, 240; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #0dcaf0; + --bs-btn-active-border-color: #0dcaf0; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #0dcaf0; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #0dcaf0; + --bs-gradient: none; } -.nav > li > a > img { - max-width: none; + +.btn-outline-warning { + --bs-btn-color: #ffc107; + --bs-btn-border-color: #ffc107; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #ffc107; + --bs-btn-hover-border-color: #ffc107; + --bs-btn-focus-shadow-rgb: 255, 193, 7; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #ffc107; + --bs-btn-active-border-color: #ffc107; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #ffc107; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #ffc107; + --bs-gradient: none; } -.nav-tabs { - border-bottom: 1px solid #ddd; + +.btn-outline-danger { + --bs-btn-color: #dc3545; + --bs-btn-border-color: #dc3545; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #dc3545; + --bs-btn-hover-border-color: #dc3545; + --bs-btn-focus-shadow-rgb: 220, 53, 69; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #dc3545; + --bs-btn-active-border-color: #dc3545; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #dc3545; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #dc3545; + --bs-gradient: none; } -.nav-tabs > li { - float: left; - margin-bottom: -1px; + +.btn-outline-light { + --bs-btn-color: #f8f9fa; + --bs-btn-border-color: #f8f9fa; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #f8f9fa; + --bs-btn-hover-border-color: #f8f9fa; + --bs-btn-focus-shadow-rgb: 248, 249, 250; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #f8f9fa; + --bs-btn-active-border-color: #f8f9fa; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #f8f9fa; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #f8f9fa; + --bs-gradient: none; } -.nav-tabs > li > a { - margin-right: 2px; - line-height: 1.42857143; - border: 1px solid transparent; - border-radius: 4px 4px 0 0; + +.btn-outline-dark { + --bs-btn-color: #212529; + --bs-btn-border-color: #212529; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #212529; + --bs-btn-hover-border-color: #212529; + --bs-btn-focus-shadow-rgb: 33, 37, 41; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #212529; + --bs-btn-active-border-color: #212529; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #212529; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #212529; + --bs-gradient: none; } -.nav-tabs > li > a:hover { - border-color: #eee #eee #ddd; + +.btn-link { + --bs-btn-font-weight: 400; + --bs-btn-color: var(--bs-link-color); + --bs-btn-bg: transparent; + --bs-btn-border-color: transparent; + --bs-btn-hover-color: var(--bs-link-hover-color); + --bs-btn-hover-border-color: transparent; + --bs-btn-active-color: var(--bs-link-hover-color); + --bs-btn-active-border-color: transparent; + --bs-btn-disabled-color: #6c757d; + --bs-btn-disabled-border-color: transparent; + --bs-btn-box-shadow: 0 0 0 #000; + --bs-btn-focus-shadow-rgb: 49, 132, 253; + text-decoration: underline; } -.nav-tabs > li.active > a, -.nav-tabs > li.active > a:hover, -.nav-tabs > li.active > a:focus { - color: #555; - cursor: default; - background-color: #fff; - border: 1px solid #ddd; - border-bottom-color: transparent; +.btn-link:focus-visible { + color: var(--bs-btn-color); } -.nav-tabs.nav-justified { - width: 100%; - border-bottom: 0; +.btn-link:hover { + color: var(--bs-btn-hover-color); } -.nav-tabs.nav-justified > li { - float: none; + +.btn-lg, .btn-group-lg > .btn { + --bs-btn-padding-y: 0.5rem; + --bs-btn-padding-x: 1rem; + --bs-btn-font-size: 1.25rem; + --bs-btn-border-radius: var(--bs-border-radius-lg); } -.nav-tabs.nav-justified > li > a { - margin-bottom: 5px; - text-align: center; + +.btn-sm, .btn-group-sm > .btn { + --bs-btn-padding-y: 0.25rem; + --bs-btn-padding-x: 0.5rem; + --bs-btn-font-size: 0.875rem; + --bs-btn-border-radius: var(--bs-border-radius-sm); } -.nav-tabs.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; + +.fade { + transition: opacity 0.15s linear; } -@media (min-width: 768px) { - .nav-tabs.nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-tabs.nav-justified > li > a { - margin-bottom: 0; +@media (prefers-reduced-motion: reduce) { + .fade { + transition: none; } } -.nav-tabs.nav-justified > li > a { - margin-right: 0; - border-radius: 4px; +.fade:not(.show) { + opacity: 0; } -.nav-tabs.nav-justified > .active > a, -.nav-tabs.nav-justified > .active > a:hover, -.nav-tabs.nav-justified > .active > a:focus { - border: 1px solid #ddd; + +.collapse:not(.show) { + display: none; } -@media (min-width: 768px) { - .nav-tabs.nav-justified > li > a { - border-bottom: 1px solid #ddd; - border-radius: 4px 4px 0 0; - } - .nav-tabs.nav-justified > .active > a, - .nav-tabs.nav-justified > .active > a:hover, - .nav-tabs.nav-justified > .active > a:focus { - border-bottom-color: #fff; + +.collapsing { + height: 0; + overflow: hidden; + transition: height 0.35s ease; +} +@media (prefers-reduced-motion: reduce) { + .collapsing { + transition: none; } } -.nav-pills > li { - float: left; +.collapsing.collapse-horizontal { + width: 0; + height: auto; + transition: width 0.35s ease; } -.nav-pills > li > a { - border-radius: 4px; +@media (prefers-reduced-motion: reduce) { + .collapsing.collapse-horizontal { + transition: none; + } } -.nav-pills > li + li { - margin-left: 2px; + +.dropup, +.dropend, +.dropdown, +.dropstart, +.dropup-center, +.dropdown-center { + position: relative; } -.nav-pills > li.active > a, -.nav-pills > li.active > a:hover, -.nav-pills > li.active > a:focus { - color: #fff; - background-color: #337ab7; + +.dropdown-toggle { + white-space: nowrap; } -.nav-stacked > li { - float: none; +.dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid; + border-right: 0.3em solid transparent; + border-bottom: 0; + border-left: 0.3em solid transparent; } -.nav-stacked > li + li { - margin-top: 2px; +.dropdown-toggle:empty::after { margin-left: 0; } -.nav-justified { - width: 100%; + +.dropdown-menu { + --bs-dropdown-zindex: 1000; + --bs-dropdown-min-width: 10rem; + --bs-dropdown-padding-x: 0; + --bs-dropdown-padding-y: 0.5rem; + --bs-dropdown-spacer: 0.125rem; + --bs-dropdown-font-size: 1rem; + --bs-dropdown-color: var(--bs-body-color); + --bs-dropdown-bg: var(--bs-body-bg); + --bs-dropdown-border-color: var(--bs-border-color-translucent); + --bs-dropdown-border-radius: var(--bs-border-radius); + --bs-dropdown-border-width: var(--bs-border-width); + --bs-dropdown-inner-border-radius: calc(var(--bs-border-radius) - var(--bs-border-width)); + --bs-dropdown-divider-bg: var(--bs-border-color-translucent); + --bs-dropdown-divider-margin-y: 0.5rem; + --bs-dropdown-box-shadow: var(--bs-box-shadow); + --bs-dropdown-link-color: var(--bs-body-color); + --bs-dropdown-link-hover-color: var(--bs-body-color); + --bs-dropdown-link-hover-bg: var(--bs-tertiary-bg); + --bs-dropdown-link-active-color: #fff; + --bs-dropdown-link-active-bg: #0d6efd; + --bs-dropdown-link-disabled-color: var(--bs-tertiary-color); + --bs-dropdown-item-padding-x: 1rem; + --bs-dropdown-item-padding-y: 0.25rem; + --bs-dropdown-header-color: #6c757d; + --bs-dropdown-header-padding-x: 1rem; + --bs-dropdown-header-padding-y: 0.5rem; + position: absolute; + z-index: var(--bs-dropdown-zindex); + display: none; + min-width: var(--bs-dropdown-min-width); + padding: var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x); + margin: 0; + font-size: var(--bs-dropdown-font-size); + color: var(--bs-dropdown-color); + text-align: left; + list-style: none; + background-color: var(--bs-dropdown-bg); + background-clip: padding-box; + border: var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color); + border-radius: var(--bs-dropdown-border-radius); } -.nav-justified > li { - float: none; +.dropdown-menu[data-bs-popper] { + top: 100%; + left: 0; + margin-top: var(--bs-dropdown-spacer); } -.nav-justified > li > a { - margin-bottom: 5px; - text-align: center; + +.dropdown-menu-start { + --bs-position: start; } -.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; +.dropdown-menu-start[data-bs-popper] { + right: auto; + left: 0; } -@media (min-width: 768px) { - .nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs-justified { - border-bottom: 0; -} -.nav-tabs-justified > li > a { - margin-right: 0; - border-radius: 4px; + +.dropdown-menu-end { + --bs-position: end; } -.nav-tabs-justified > .active > a, -.nav-tabs-justified > .active > a:hover, -.nav-tabs-justified > .active > a:focus { - border: 1px solid #ddd; +.dropdown-menu-end[data-bs-popper] { + right: 0; + left: auto; } -@media (min-width: 768px) { - .nav-tabs-justified > li > a { - border-bottom: 1px solid #ddd; - border-radius: 4px 4px 0 0; + +@media (min-width: 576px) { + .dropdown-menu-sm-start { + --bs-position: start; } - .nav-tabs-justified > .active > a, - .nav-tabs-justified > .active > a:hover, - .nav-tabs-justified > .active > a:focus { - border-bottom-color: #fff; + .dropdown-menu-sm-start[data-bs-popper] { + right: auto; + left: 0; } -} -.tab-content > .tab-pane { - display: none; - visibility: hidden; -} -.tab-content > .active { - display: block; - visibility: visible; -} -.nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.navbar { - position: relative; - min-height: 50px; - margin-bottom: 20px; - border: 1px solid transparent; -} -@media (min-width: 768px) { - .navbar { - border-radius: 4px; + .dropdown-menu-sm-end { + --bs-position: end; } -} -@media (min-width: 768px) { - .navbar-header { - float: left; + .dropdown-menu-sm-end[data-bs-popper] { + right: 0; + left: auto; } } -.navbar-collapse { - padding-right: 15px; - padding-left: 15px; - overflow-x: visible; - -webkit-overflow-scrolling: touch; - border-top: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); -} -.navbar-collapse.in { - overflow-y: auto; -} @media (min-width: 768px) { - .navbar-collapse { - width: auto; - border-top: 0; - -webkit-box-shadow: none; - box-shadow: none; - } - .navbar-collapse.collapse { - display: block !important; - height: auto !important; - padding-bottom: 0; - overflow: visible !important; - visibility: visible !important; - } - .navbar-collapse.in { - overflow-y: visible; + .dropdown-menu-md-start { + --bs-position: start; } - .navbar-fixed-top .navbar-collapse, - .navbar-static-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - padding-right: 0; - padding-left: 0; + .dropdown-menu-md-start[data-bs-popper] { + right: auto; + left: 0; } -} -.navbar-fixed-top .navbar-collapse, -.navbar-fixed-bottom .navbar-collapse { - max-height: 340px; -} -@media (max-device-width: 480px) and (orientation: landscape) { - .navbar-fixed-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - max-height: 200px; + .dropdown-menu-md-end { + --bs-position: end; } -} -.container > .navbar-header, -.container-fluid > .navbar-header, -.container > .navbar-collapse, -.container-fluid > .navbar-collapse { - margin-right: -15px; - margin-left: -15px; -} -@media (min-width: 768px) { - .container > .navbar-header, - .container-fluid > .navbar-header, - .container > .navbar-collapse, - .container-fluid > .navbar-collapse { - margin-right: 0; - margin-left: 0; + .dropdown-menu-md-end[data-bs-popper] { + right: 0; + left: auto; } } -.navbar-static-top { - z-index: 1000; - border-width: 0 0 1px; -} -@media (min-width: 768px) { - .navbar-static-top { - border-radius: 0; +@media (min-width: 992px) { + .dropdown-menu-lg-start { + --bs-position: start; } -} -.navbar-fixed-top, -.navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - z-index: 1030; -} -@media (min-width: 768px) { - .navbar-fixed-top, - .navbar-fixed-bottom { - border-radius: 0; + .dropdown-menu-lg-start[data-bs-popper] { + right: auto; + left: 0; } -} -.navbar-fixed-top { - top: 0; - border-width: 0 0 1px; -} -.navbar-fixed-bottom { - bottom: 0; - margin-bottom: 0; - border-width: 1px 0 0; -} -.navbar-brand { - float: left; - height: 50px; - padding: 15px 15px; - font-size: 18px; - line-height: 20px; -} -.navbar-brand:hover, -.navbar-brand:focus { - text-decoration: none; -} -.navbar-brand > img { - display: block; -} -@media (min-width: 768px) { - .navbar > .container .navbar-brand, - .navbar > .container-fluid .navbar-brand { - margin-left: -15px; + .dropdown-menu-lg-end { + --bs-position: end; } -} -.navbar-toggle { - position: relative; - float: right; - padding: 9px 10px; - margin-top: 8px; - margin-right: 15px; - margin-bottom: 8px; - background-color: transparent; - background-image: none; - border: 1px solid transparent; - border-radius: 4px; -} -.navbar-toggle:focus { - outline: 0; -} -.navbar-toggle .icon-bar { - display: block; - width: 22px; - height: 2px; - border-radius: 1px; -} -.navbar-toggle .icon-bar + .icon-bar { - margin-top: 4px; -} -@media (min-width: 768px) { - .navbar-toggle { - display: none; + .dropdown-menu-lg-end[data-bs-popper] { + right: 0; + left: auto; } } -.navbar-nav { - margin: 7.5px -15px; -} -.navbar-nav > li > a { - padding-top: 10px; - padding-bottom: 10px; - line-height: 20px; -} -@media (max-width: 767px) { - .navbar-nav .open .dropdown-menu { - position: static; - float: none; - width: auto; - margin-top: 0; - background-color: transparent; - border: 0; - -webkit-box-shadow: none; - box-shadow: none; - } - .navbar-nav .open .dropdown-menu > li > a, - .navbar-nav .open .dropdown-menu .dropdown-header { - padding: 5px 15px 5px 25px; - } - .navbar-nav .open .dropdown-menu > li > a { - line-height: 20px; - } - .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-nav .open .dropdown-menu > li > a:focus { - background-image: none; +@media (min-width: 1200px) { + .dropdown-menu-xl-start { + --bs-position: start; } -} -@media (min-width: 768px) { - .navbar-nav { - float: left; - margin: 0; + .dropdown-menu-xl-start[data-bs-popper] { + right: auto; + left: 0; } - .navbar-nav > li { - float: left; + .dropdown-menu-xl-end { + --bs-position: end; } - .navbar-nav > li > a { - padding-top: 15px; - padding-bottom: 15px; + .dropdown-menu-xl-end[data-bs-popper] { + right: 0; + left: auto; } } -.navbar-form { - padding: 10px 15px; - margin-top: 8px; - margin-right: -15px; - margin-bottom: 8px; - margin-left: -15px; - border-top: 1px solid transparent; - border-bottom: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); -} -@media (min-width: 768px) { - .navbar-form .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .navbar-form .form-control-static { - display: inline-block; - } - .navbar-form .input-group { - display: inline-table; - vertical-align: middle; - } - .navbar-form .input-group .input-group-addon, - .navbar-form .input-group .input-group-btn, - .navbar-form .input-group .form-control { - width: auto; +@media (min-width: 1400px) { + .dropdown-menu-xxl-start { + --bs-position: start; } - .navbar-form .input-group > .form-control { - width: 100%; - } - .navbar-form .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio, - .navbar-form .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio label, - .navbar-form .checkbox label { - padding-left: 0; + .dropdown-menu-xxl-start[data-bs-popper] { + right: auto; + left: 0; } - .navbar-form .radio input[type="radio"], - .navbar-form .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; + .dropdown-menu-xxl-end { + --bs-position: end; } - .navbar-form .has-feedback .form-control-feedback { - top: 0; + .dropdown-menu-xxl-end[data-bs-popper] { + right: 0; + left: auto; } } -@media (max-width: 767px) { - .navbar-form .form-group { - margin-bottom: 5px; - } - .navbar-form .form-group:last-child { - margin-bottom: 0; - } +.dropup .dropdown-menu[data-bs-popper] { + top: auto; + bottom: 100%; + margin-top: 0; + margin-bottom: var(--bs-dropdown-spacer); } -@media (min-width: 768px) { - .navbar-form { - width: auto; - padding-top: 0; - padding-bottom: 0; - margin-right: 0; - margin-left: 0; - border: 0; - -webkit-box-shadow: none; - box-shadow: none; - } +.dropup .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0; + border-right: 0.3em solid transparent; + border-bottom: 0.3em solid; + border-left: 0.3em solid transparent; +} +.dropup .dropdown-toggle:empty::after { + margin-left: 0; } -.navbar-nav > li > .dropdown-menu { + +.dropend .dropdown-menu[data-bs-popper] { + top: 0; + right: auto; + left: 100%; margin-top: 0; - border-top-left-radius: 0; - border-top-right-radius: 0; + margin-left: var(--bs-dropdown-spacer); } -.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; +.dropend .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0; + border-bottom: 0.3em solid transparent; + border-left: 0.3em solid; } -.navbar-btn { - margin-top: 8px; - margin-bottom: 8px; +.dropend .dropdown-toggle:empty::after { + margin-left: 0; } -.navbar-btn.btn-sm { - margin-top: 10px; - margin-bottom: 10px; +.dropend .dropdown-toggle::after { + vertical-align: 0; } -.navbar-btn.btn-xs { - margin-top: 14px; - margin-bottom: 14px; + +.dropstart .dropdown-menu[data-bs-popper] { + top: 0; + right: 100%; + left: auto; + margin-top: 0; + margin-right: var(--bs-dropdown-spacer); } -.navbar-text { - margin-top: 15px; - margin-bottom: 15px; +.dropstart .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; } -@media (min-width: 768px) { - .navbar-text { - float: left; - margin-right: 15px; - margin-left: 15px; - } +.dropstart .dropdown-toggle::after { + display: none; } -@media (min-width: 768px) { - .navbar-left { - float: left !important; - } - .navbar-right { - float: right !important; - margin-right: -15px; - } - .navbar-right ~ .navbar-right { - margin-right: 0; - } +.dropstart .dropdown-toggle::before { + display: inline-block; + margin-right: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0.3em solid; + border-bottom: 0.3em solid transparent; } -.navbar-default { - background-color: #f8f8f8; - border-color: #e7e7e7; +.dropstart .dropdown-toggle:empty::after { + margin-left: 0; +} +.dropstart .dropdown-toggle::before { + vertical-align: 0; } -.navbar-default .navbar-brand { - color: #777; + +.dropdown-divider { + height: 0; + margin: var(--bs-dropdown-divider-margin-y) 0; + overflow: hidden; + border-top: 1px solid var(--bs-dropdown-divider-bg); + opacity: 1; } -.navbar-default .navbar-brand:hover, -.navbar-default .navbar-brand:focus { - color: #5e5e5e; + +.dropdown-item { + display: block; + width: 100%; + padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x); + clear: both; + font-weight: 400; + color: var(--bs-dropdown-link-color); + text-align: inherit; + text-decoration: none; + white-space: nowrap; background-color: transparent; + border: 0; + border-radius: var(--bs-dropdown-item-border-radius, 0); } -.navbar-default .navbar-text { - color: #777; +.dropdown-item:hover, .dropdown-item:focus { + color: var(--bs-dropdown-link-hover-color); + background-color: var(--bs-dropdown-link-hover-bg); } -.navbar-default .navbar-nav > li > a { - color: #777; +.dropdown-item.active, .dropdown-item:active { + color: var(--bs-dropdown-link-active-color); + text-decoration: none; + background-color: var(--bs-dropdown-link-active-bg); } -.navbar-default .navbar-nav > li > a:hover, -.navbar-default .navbar-nav > li > a:focus { - color: #333; +.dropdown-item.disabled, .dropdown-item:disabled { + color: var(--bs-dropdown-link-disabled-color); + pointer-events: none; background-color: transparent; } -.navbar-default .navbar-nav > .active > a, -.navbar-default .navbar-nav > .active > a:hover, -.navbar-default .navbar-nav > .active > a:focus { - color: #555; - background-color: #e7e7e7; -} -.navbar-default .navbar-nav > .disabled > a, -.navbar-default .navbar-nav > .disabled > a:hover, -.navbar-default .navbar-nav > .disabled > a:focus { - color: #ccc; - background-color: transparent; + +.dropdown-menu.show { + display: block; } -.navbar-default .navbar-toggle { - border-color: #ddd; + +.dropdown-header { + display: block; + padding: var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x); + margin-bottom: 0; + font-size: 0.875rem; + color: var(--bs-dropdown-header-color); + white-space: nowrap; } -.navbar-default .navbar-toggle:hover, -.navbar-default .navbar-toggle:focus { - background-color: #ddd; + +.dropdown-item-text { + display: block; + padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x); + color: var(--bs-dropdown-link-color); } -.navbar-default .navbar-toggle .icon-bar { - background-color: #888; + +.dropdown-menu-dark { + --bs-dropdown-color: #dee2e6; + --bs-dropdown-bg: #343a40; + --bs-dropdown-border-color: var(--bs-border-color-translucent); + --bs-dropdown-box-shadow: ; + --bs-dropdown-link-color: #dee2e6; + --bs-dropdown-link-hover-color: #fff; + --bs-dropdown-divider-bg: var(--bs-border-color-translucent); + --bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15); + --bs-dropdown-link-active-color: #fff; + --bs-dropdown-link-active-bg: #0d6efd; + --bs-dropdown-link-disabled-color: #adb5bd; + --bs-dropdown-header-color: #adb5bd; } -.navbar-default .navbar-collapse, -.navbar-default .navbar-form { - border-color: #e7e7e7; + +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-flex; + vertical-align: middle; } -.navbar-default .navbar-nav > .open > a, -.navbar-default .navbar-nav > .open > a:hover, -.navbar-default .navbar-nav > .open > a:focus { - color: #555; - background-color: #e7e7e7; +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + flex: 1 1 auto; } -@media (max-width: 767px) { - .navbar-default .navbar-nav .open .dropdown-menu > li > a { - color: #777; - } - .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { - color: #333; - background-color: transparent; - } - .navbar-default .navbar-nav .open .dropdown-menu > .active > a, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #555; - background-color: #e7e7e7; - } - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #ccc; - background-color: transparent; - } +.btn-group > .btn-check:checked + .btn, +.btn-group > .btn-check:focus + .btn, +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn-check:checked + .btn, +.btn-group-vertical > .btn-check:focus + .btn, +.btn-group-vertical > .btn:hover, +.btn-group-vertical > .btn:focus, +.btn-group-vertical > .btn:active, +.btn-group-vertical > .btn.active { + z-index: 1; } -.navbar-default .navbar-link { - color: #777; + +.btn-toolbar { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; } -.navbar-default .navbar-link:hover { - color: #333; +.btn-toolbar .input-group { + width: auto; } -.navbar-default .btn-link { - color: #777; + +.btn-group { + border-radius: var(--bs-border-radius); } -.navbar-default .btn-link:hover, -.navbar-default .btn-link:focus { - color: #333; +.btn-group > :not(.btn-check:first-child) + .btn, +.btn-group > .btn-group:not(:first-child) { + margin-left: calc(var(--bs-border-width) * -1); } -.navbar-default .btn-link[disabled]:hover, -fieldset[disabled] .navbar-default .btn-link:hover, -.navbar-default .btn-link[disabled]:focus, -fieldset[disabled] .navbar-default .btn-link:focus { - color: #ccc; +.btn-group > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group > .btn.dropdown-toggle-split:first-child, +.btn-group > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; } -.navbar-inverse { - background-color: #222; - border-color: #080808; +.btn-group > .btn:nth-child(n+3), +.btn-group > :not(.btn-check) + .btn, +.btn-group > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; } -.navbar-inverse .navbar-brand { - color: #9d9d9d; + +.dropdown-toggle-split { + padding-right: 0.5625rem; + padding-left: 0.5625rem; } -.navbar-inverse .navbar-brand:hover, -.navbar-inverse .navbar-brand:focus { - color: #fff; - background-color: transparent; +.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after { + margin-left: 0; } -.navbar-inverse .navbar-text { - color: #9d9d9d; +.dropstart .dropdown-toggle-split::before { + margin-right: 0; } -.navbar-inverse .navbar-nav > li > a { - color: #9d9d9d; + +.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { + padding-right: 0.375rem; + padding-left: 0.375rem; } -.navbar-inverse .navbar-nav > li > a:hover, -.navbar-inverse .navbar-nav > li > a:focus { - color: #fff; - background-color: transparent; + +.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { + padding-right: 0.75rem; + padding-left: 0.75rem; } -.navbar-inverse .navbar-nav > .active > a, -.navbar-inverse .navbar-nav > .active > a:hover, -.navbar-inverse .navbar-nav > .active > a:focus { - color: #fff; - background-color: #080808; + +.btn-group-vertical { + flex-direction: column; + align-items: flex-start; + justify-content: center; } -.navbar-inverse .navbar-nav > .disabled > a, -.navbar-inverse .navbar-nav > .disabled > a:hover, -.navbar-inverse .navbar-nav > .disabled > a:focus { - color: #444; - background-color: transparent; +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group { + width: 100%; } -.navbar-inverse .navbar-toggle { - border-color: #333; +.btn-group-vertical > .btn:not(:first-child), +.btn-group-vertical > .btn-group:not(:first-child) { + margin-top: calc(var(--bs-border-width) * -1); } -.navbar-inverse .navbar-toggle:hover, -.navbar-inverse .navbar-toggle:focus { - background-color: #333; +.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group-vertical > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; } -.navbar-inverse .navbar-toggle .icon-bar { - background-color: #fff; +.btn-group-vertical > .btn ~ .btn, +.btn-group-vertical > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-top-right-radius: 0; } -.navbar-inverse .navbar-collapse, -.navbar-inverse .navbar-form { - border-color: #101010; + +.nav { + --bs-nav-link-padding-x: 1rem; + --bs-nav-link-padding-y: 0.5rem; + --bs-nav-link-font-weight: ; + --bs-nav-link-color: var(--bs-link-color); + --bs-nav-link-hover-color: var(--bs-link-hover-color); + --bs-nav-link-disabled-color: var(--bs-secondary-color); + display: flex; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none; } -.navbar-inverse .navbar-nav > .open > a, -.navbar-inverse .navbar-nav > .open > a:hover, -.navbar-inverse .navbar-nav > .open > a:focus { - color: #fff; - background-color: #080808; + +.nav-link { + display: block; + padding: var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x); + font-size: var(--bs-nav-link-font-size); + font-weight: var(--bs-nav-link-font-weight); + color: var(--bs-nav-link-color); + text-decoration: none; + background: none; + border: 0; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out; } -@media (max-width: 767px) { - .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { - border-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu .divider { - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { - color: #9d9d9d; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { - color: #fff; - background-color: transparent; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #fff; - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #444; - background-color: transparent; +@media (prefers-reduced-motion: reduce) { + .nav-link { + transition: none; } } -.navbar-inverse .navbar-link { - color: #9d9d9d; +.nav-link:hover, .nav-link:focus { + color: var(--bs-nav-link-hover-color); } -.navbar-inverse .navbar-link:hover { - color: #fff; +.nav-link:focus-visible { + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); } -.navbar-inverse .btn-link { - color: #9d9d9d; +.nav-link.disabled, .nav-link:disabled { + color: var(--bs-nav-link-disabled-color); + pointer-events: none; + cursor: default; } -.navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link:focus { - color: #fff; + +.nav-tabs { + --bs-nav-tabs-border-width: var(--bs-border-width); + --bs-nav-tabs-border-color: var(--bs-border-color); + --bs-nav-tabs-border-radius: var(--bs-border-radius); + --bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color); + --bs-nav-tabs-link-active-color: var(--bs-emphasis-color); + --bs-nav-tabs-link-active-bg: var(--bs-body-bg); + --bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg); + border-bottom: var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color); +} +.nav-tabs .nav-link { + margin-bottom: calc(-1 * var(--bs-nav-tabs-border-width)); + border: var(--bs-nav-tabs-border-width) solid transparent; + border-top-left-radius: var(--bs-nav-tabs-border-radius); + border-top-right-radius: var(--bs-nav-tabs-border-radius); +} +.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { + isolation: isolate; + border-color: var(--bs-nav-tabs-link-hover-border-color); +} +.nav-tabs .nav-link.active, +.nav-tabs .nav-item.show .nav-link { + color: var(--bs-nav-tabs-link-active-color); + background-color: var(--bs-nav-tabs-link-active-bg); + border-color: var(--bs-nav-tabs-link-active-border-color); } -.navbar-inverse .btn-link[disabled]:hover, -fieldset[disabled] .navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link[disabled]:focus, -fieldset[disabled] .navbar-inverse .btn-link:focus { - color: #444; +.nav-tabs .dropdown-menu { + margin-top: calc(-1 * var(--bs-nav-tabs-border-width)); + border-top-left-radius: 0; + border-top-right-radius: 0; } -.breadcrumb { - padding: 8px 15px; - margin-bottom: 20px; - list-style: none; - background-color: #f5f5f5; - border-radius: 4px; + +.nav-pills { + --bs-nav-pills-border-radius: var(--bs-border-radius); + --bs-nav-pills-link-active-color: #fff; + --bs-nav-pills-link-active-bg: #0d6efd; } -.breadcrumb > li { - display: inline-block; +.nav-pills .nav-link { + border-radius: var(--bs-nav-pills-border-radius); } -.breadcrumb > li + li:before { - padding: 0 5px; - color: #ccc; - content: "/\00a0"; +.nav-pills .nav-link.active, +.nav-pills .show > .nav-link { + color: var(--bs-nav-pills-link-active-color); + background-color: var(--bs-nav-pills-link-active-bg); } -.breadcrumb > .active { - color: #777; + +.nav-underline { + --bs-nav-underline-gap: 1rem; + --bs-nav-underline-border-width: 0.125rem; + --bs-nav-underline-link-active-color: var(--bs-emphasis-color); + gap: var(--bs-nav-underline-gap); } -.pagination { - display: inline-block; +.nav-underline .nav-link { + padding-right: 0; padding-left: 0; - margin: 20px 0; - border-radius: 4px; + border-bottom: var(--bs-nav-underline-border-width) solid transparent; } -.pagination > li { - display: inline; +.nav-underline .nav-link:hover, .nav-underline .nav-link:focus { + border-bottom-color: currentcolor; } -.pagination > li > a, -.pagination > li > span { - position: relative; - float: left; - padding: 6px 12px; - margin-left: -1px; - line-height: 1.42857143; - color: #337ab7; - text-decoration: none; - background-color: #fff; - border: 1px solid #ddd; +.nav-underline .nav-link.active, +.nav-underline .show > .nav-link { + font-weight: 700; + color: var(--bs-nav-underline-link-active-color); + border-bottom-color: currentcolor; } -.pagination > li:first-child > a, -.pagination > li:first-child > span { - margin-left: 0; - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; -} -.pagination > li:last-child > a, -.pagination > li:last-child > span { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} -.pagination > li > a:hover, -.pagination > li > span:hover, -.pagination > li > a:focus, -.pagination > li > span:focus { - color: #23527c; - background-color: #eee; - border-color: #ddd; -} -.pagination > .active > a, -.pagination > .active > span, -.pagination > .active > a:hover, -.pagination > .active > span:hover, -.pagination > .active > a:focus, -.pagination > .active > span:focus { - z-index: 2; - color: #fff; - cursor: default; - background-color: #337ab7; - border-color: #337ab7; -} -.pagination > .disabled > span, -.pagination > .disabled > span:hover, -.pagination > .disabled > span:focus, -.pagination > .disabled > a, -.pagination > .disabled > a:hover, -.pagination > .disabled > a:focus { - color: #777; - cursor: not-allowed; - background-color: #fff; - border-color: #ddd; -} -.pagination-lg > li > a, -.pagination-lg > li > span { - padding: 10px 16px; - font-size: 18px; -} -.pagination-lg > li:first-child > a, -.pagination-lg > li:first-child > span { - border-top-left-radius: 6px; - border-bottom-left-radius: 6px; -} -.pagination-lg > li:last-child > a, -.pagination-lg > li:last-child > span { - border-top-right-radius: 6px; - border-bottom-right-radius: 6px; -} -.pagination-sm > li > a, -.pagination-sm > li > span { - padding: 5px 10px; - font-size: 12px; -} -.pagination-sm > li:first-child > a, -.pagination-sm > li:first-child > span { - border-top-left-radius: 3px; - border-bottom-left-radius: 3px; -} -.pagination-sm > li:last-child > a, -.pagination-sm > li:last-child > span { - border-top-right-radius: 3px; - border-bottom-right-radius: 3px; -} -.pager { - padding-left: 0; - margin: 20px 0; + +.nav-fill > .nav-link, +.nav-fill .nav-item { + flex: 1 1 auto; text-align: center; - list-style: none; -} -.pager li { - display: inline; } -.pager li > a, -.pager li > span { - display: inline-block; - padding: 5px 14px; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 15px; + +.nav-justified > .nav-link, +.nav-justified .nav-item { + flex-basis: 0; + flex-grow: 1; + text-align: center; } -.pager li > a:hover, -.pager li > a:focus { - text-decoration: none; - background-color: #eee; + +.nav-fill .nav-item .nav-link, +.nav-justified .nav-item .nav-link { + width: 100%; } -.pager .next > a, -.pager .next > span { - float: right; + +.tab-content > .tab-pane { + display: none; } -.pager .previous > a, -.pager .previous > span { - float: left; +.tab-content > .active { + display: block; } -.pager .disabled > a, -.pager .disabled > a:hover, -.pager .disabled > a:focus, -.pager .disabled > span { - color: #777; - cursor: not-allowed; - background-color: #fff; + +.navbar { + --bs-navbar-padding-x: 0; + --bs-navbar-padding-y: 0.5rem; + --bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), 0.65); + --bs-navbar-hover-color: rgba(var(--bs-emphasis-color-rgb), 0.8); + --bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), 0.3); + --bs-navbar-active-color: rgba(var(--bs-emphasis-color-rgb), 1); + --bs-navbar-brand-padding-y: 0.3125rem; + --bs-navbar-brand-margin-end: 1rem; + --bs-navbar-brand-font-size: 1.25rem; + --bs-navbar-brand-color: rgba(var(--bs-emphasis-color-rgb), 1); + --bs-navbar-brand-hover-color: rgba(var(--bs-emphasis-color-rgb), 1); + --bs-navbar-nav-link-padding-x: 0.5rem; + --bs-navbar-toggler-padding-y: 0.25rem; + --bs-navbar-toggler-padding-x: 0.75rem; + --bs-navbar-toggler-font-size: 1.25rem; + --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); + --bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), 0.15); + --bs-navbar-toggler-border-radius: var(--bs-border-radius); + --bs-navbar-toggler-focus-width: 0.25rem; + --bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out; + position: relative; + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + padding: var(--bs-navbar-padding-y) var(--bs-navbar-padding-x); +} +.navbar > .container, +.navbar > .container-fluid, +.navbar > .container-sm, +.navbar > .container-md, +.navbar > .container-lg, +.navbar > .container-xl, +.navbar > .container-xxl { + display: flex; + flex-wrap: inherit; + align-items: center; + justify-content: space-between; } -.label { - display: inline; - padding: .2em .6em .3em; - font-size: 75%; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; +.navbar-brand { + padding-top: var(--bs-navbar-brand-padding-y); + padding-bottom: var(--bs-navbar-brand-padding-y); + margin-right: var(--bs-navbar-brand-margin-end); + font-size: var(--bs-navbar-brand-font-size); + color: var(--bs-navbar-brand-color); + text-decoration: none; white-space: nowrap; - vertical-align: baseline; - border-radius: .25em; } -a.label:hover, -a.label:focus { - color: #fff; - text-decoration: none; - cursor: pointer; +.navbar-brand:hover, .navbar-brand:focus { + color: var(--bs-navbar-brand-hover-color); } -.label:empty { - display: none; + +.navbar-nav { + --bs-nav-link-padding-x: 0; + --bs-nav-link-padding-y: 0.5rem; + --bs-nav-link-font-weight: ; + --bs-nav-link-color: var(--bs-navbar-color); + --bs-nav-link-hover-color: var(--bs-navbar-hover-color); + --bs-nav-link-disabled-color: var(--bs-navbar-disabled-color); + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + list-style: none; } -.btn .label { - position: relative; - top: -1px; +.navbar-nav .nav-link.active, .navbar-nav .nav-link.show { + color: var(--bs-navbar-active-color); } -.label-default { - background-color: #777; +.navbar-nav .dropdown-menu { + position: static; } -.label-default[href]:hover, -.label-default[href]:focus { - background-color: #5e5e5e; + +.navbar-text { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + color: var(--bs-navbar-color); } -.label-primary { - background-color: #337ab7; +.navbar-text a, +.navbar-text a:hover, +.navbar-text a:focus { + color: var(--bs-navbar-active-color); } -.label-primary[href]:hover, -.label-primary[href]:focus { - background-color: #286090; + +.navbar-collapse { + flex-basis: 100%; + flex-grow: 1; + align-items: center; } -.label-success { - background-color: #5cb85c; + +.navbar-toggler { + padding: var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x); + font-size: var(--bs-navbar-toggler-font-size); + line-height: 1; + color: var(--bs-navbar-color); + background-color: transparent; + border: var(--bs-border-width) solid var(--bs-navbar-toggler-border-color); + border-radius: var(--bs-navbar-toggler-border-radius); + transition: var(--bs-navbar-toggler-transition); } -.label-success[href]:hover, -.label-success[href]:focus { - background-color: #449d44; +@media (prefers-reduced-motion: reduce) { + .navbar-toggler { + transition: none; + } } -.label-info { - background-color: #5bc0de; +.navbar-toggler:hover { + text-decoration: none; } -.label-info[href]:hover, -.label-info[href]:focus { - background-color: #31b0d5; +.navbar-toggler:focus { + text-decoration: none; + outline: 0; + box-shadow: 0 0 0 var(--bs-navbar-toggler-focus-width); } -.label-warning { - background-color: #f0ad4e; + +.navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + background-image: var(--bs-navbar-toggler-icon-bg); + background-repeat: no-repeat; + background-position: center; + background-size: 100%; } -.label-warning[href]:hover, -.label-warning[href]:focus { - background-color: #ec971f; + +.navbar-nav-scroll { + max-height: var(--bs-scroll-height, 75vh); + overflow-y: auto; } -.label-danger { - background-color: #d9534f; + +@media (min-width: 576px) { + .navbar-expand-sm { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-sm .navbar-nav { + flex-direction: row; + } + .navbar-expand-sm .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-sm .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-sm .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-sm .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-sm .navbar-toggler { + display: none; + } + .navbar-expand-sm .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; + } + .navbar-expand-sm .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-sm .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } } -.label-danger[href]:hover, -.label-danger[href]:focus { - background-color: #c9302c; +@media (min-width: 768px) { + .navbar-expand-md { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-md .navbar-nav { + flex-direction: row; + } + .navbar-expand-md .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-md .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-md .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-md .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-md .navbar-toggler { + display: none; + } + .navbar-expand-md .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; + } + .navbar-expand-md .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-md .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } } -.badge { - display: inline-block; - min-width: 10px; - padding: 3px 7px; - font-size: 12px; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - background-color: #777; - border-radius: 10px; +@media (min-width: 992px) { + .navbar-expand-lg { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-lg .navbar-nav { + flex-direction: row; + } + .navbar-expand-lg .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-lg .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-lg .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-lg .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-lg .navbar-toggler { + display: none; + } + .navbar-expand-lg .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; + } + .navbar-expand-lg .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-lg .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } } -.badge:empty { - display: none; +@media (min-width: 1200px) { + .navbar-expand-xl { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-xl .navbar-nav { + flex-direction: row; + } + .navbar-expand-xl .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-xl .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-xl .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-xl .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-xl .navbar-toggler { + display: none; + } + .navbar-expand-xl .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; + } + .navbar-expand-xl .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-xl .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } } -.btn .badge { - position: relative; - top: -1px; +@media (min-width: 1400px) { + .navbar-expand-xxl { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-xxl .navbar-nav { + flex-direction: row; + } + .navbar-expand-xxl .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-xxl .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-xxl .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-xxl .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-xxl .navbar-toggler { + display: none; + } + .navbar-expand-xxl .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; + } + .navbar-expand-xxl .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-xxl .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } } -.btn-xs .badge { - top: 0; - padding: 1px 5px; +.navbar-expand { + flex-wrap: nowrap; + justify-content: flex-start; } -a.badge:hover, -a.badge:focus { - color: #fff; - text-decoration: none; - cursor: pointer; +.navbar-expand .navbar-nav { + flex-direction: row; } -.list-group-item.active > .badge, -.nav-pills > .active > a > .badge { - color: #337ab7; - background-color: #fff; +.navbar-expand .navbar-nav .dropdown-menu { + position: absolute; } -.list-group-item > .badge { - float: right; +.navbar-expand .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); } -.list-group-item > .badge + .badge { - margin-right: 5px; +.navbar-expand .navbar-nav-scroll { + overflow: visible; } -.nav-pills > li > a > .badge { - margin-left: 3px; +.navbar-expand .navbar-collapse { + display: flex !important; + flex-basis: auto; } -.jumbotron { - padding: 30px 15px; - margin-bottom: 30px; - color: inherit; - background-color: #eee; +.navbar-expand .navbar-toggler { + display: none; } -.jumbotron h1, -.jumbotron .h1 { - color: inherit; +.navbar-expand .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; +} +.navbar-expand .offcanvas .offcanvas-header { + display: none; } -.jumbotron p { - margin-bottom: 15px; - font-size: 21px; - font-weight: 200; +.navbar-expand .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; } -.jumbotron > hr { - border-top-color: #d5d5d5; + +.navbar-dark, +.navbar[data-bs-theme=dark] { + --bs-navbar-color: rgba(255, 255, 255, 0.55); + --bs-navbar-hover-color: rgba(255, 255, 255, 0.75); + --bs-navbar-disabled-color: rgba(255, 255, 255, 0.25); + --bs-navbar-active-color: #fff; + --bs-navbar-brand-color: #fff; + --bs-navbar-brand-hover-color: #fff; + --bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1); + --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); } -.container .jumbotron, -.container-fluid .jumbotron { - border-radius: 6px; + +[data-bs-theme=dark] .navbar-toggler-icon { + --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); } -.jumbotron .container { - max-width: 100%; + +.card { + --bs-card-spacer-y: 1rem; + --bs-card-spacer-x: 1rem; + --bs-card-title-spacer-y: 0.5rem; + --bs-card-title-color: ; + --bs-card-subtitle-color: ; + --bs-card-border-width: var(--bs-border-width); + --bs-card-border-color: var(--bs-border-color-translucent); + --bs-card-border-radius: var(--bs-border-radius); + --bs-card-box-shadow: ; + --bs-card-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width))); + --bs-card-cap-padding-y: 0.5rem; + --bs-card-cap-padding-x: 1rem; + --bs-card-cap-bg: rgba(var(--bs-body-color-rgb), 0.03); + --bs-card-cap-color: ; + --bs-card-height: ; + --bs-card-color: ; + --bs-card-bg: var(--bs-body-bg); + --bs-card-img-overlay-padding: 1rem; + --bs-card-group-margin: 0.75rem; + position: relative; + display: flex; + flex-direction: column; + min-width: 0; + height: var(--bs-card-height); + color: var(--bs-body-color); + word-wrap: break-word; + background-color: var(--bs-card-bg); + background-clip: border-box; + border: var(--bs-card-border-width) solid var(--bs-card-border-color); + border-radius: var(--bs-card-border-radius); } -@media screen and (min-width: 768px) { - .jumbotron { - padding: 48px 0; - } - .container .jumbotron, - .container-fluid .jumbotron { - padding-right: 60px; - padding-left: 60px; - } - .jumbotron h1, - .jumbotron .h1 { - font-size: 63px; - } +.card > hr { + margin-right: 0; + margin-left: 0; } -.thumbnail { - display: block; - padding: 4px; - margin-bottom: 20px; - line-height: 1.42857143; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 4px; - -webkit-transition: border .2s ease-in-out; - -o-transition: border .2s ease-in-out; - transition: border .2s ease-in-out; -} -.thumbnail > img, -.thumbnail a > img { - margin-right: auto; - margin-left: auto; +.card > .list-group { + border-top: inherit; + border-bottom: inherit; } -a.thumbnail:hover, -a.thumbnail:focus, -a.thumbnail.active { - border-color: #337ab7; +.card > .list-group:first-child { + border-top-width: 0; + border-top-left-radius: var(--bs-card-inner-border-radius); + border-top-right-radius: var(--bs-card-inner-border-radius); } -.thumbnail .caption { - padding: 9px; - color: #333; +.card > .list-group:last-child { + border-bottom-width: 0; + border-bottom-right-radius: var(--bs-card-inner-border-radius); + border-bottom-left-radius: var(--bs-card-inner-border-radius); } -.alert { - padding: 15px; - margin-bottom: 20px; - border: 1px solid transparent; - border-radius: 4px; +.card > .card-header + .list-group, +.card > .list-group + .card-footer { + border-top: 0; } -.alert h4 { - margin-top: 0; - color: inherit; + +.card-body { + flex: 1 1 auto; + padding: var(--bs-card-spacer-y) var(--bs-card-spacer-x); + color: var(--bs-card-color); } -.alert .alert-link { - font-weight: bold; + +.card-title { + margin-bottom: var(--bs-card-title-spacer-y); + color: var(--bs-card-title-color); } -.alert > p, -.alert > ul { + +.card-subtitle { + margin-top: calc(-0.5 * var(--bs-card-title-spacer-y)); margin-bottom: 0; + color: var(--bs-card-subtitle-color); } -.alert > p + p { - margin-top: 5px; + +.card-text:last-child { + margin-bottom: 0; } -.alert-dismissable, -.alert-dismissible { - padding-right: 35px; + +.card-link + .card-link { + margin-left: var(--bs-card-spacer-x); } -.alert-dismissable .close, -.alert-dismissible .close { - position: relative; - top: -2px; - right: -21px; - color: inherit; + +.card-header { + padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x); + margin-bottom: 0; + color: var(--bs-card-cap-color); + background-color: var(--bs-card-cap-bg); + border-bottom: var(--bs-card-border-width) solid var(--bs-card-border-color); } -.alert-success { - color: #3c763d; - background-color: #dff0d8; - border-color: #d6e9c6; +.card-header:first-child { + border-radius: var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0; } -.alert-success hr { - border-top-color: #c9e2b3; + +.card-footer { + padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x); + color: var(--bs-card-cap-color); + background-color: var(--bs-card-cap-bg); + border-top: var(--bs-card-border-width) solid var(--bs-card-border-color); } -.alert-success .alert-link { - color: #2b542c; +.card-footer:last-child { + border-radius: 0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius); } -.alert-info { - color: #31708f; - background-color: #d9edf7; - border-color: #bce8f1; + +.card-header-tabs { + margin-right: calc(-0.5 * var(--bs-card-cap-padding-x)); + margin-bottom: calc(-1 * var(--bs-card-cap-padding-y)); + margin-left: calc(-0.5 * var(--bs-card-cap-padding-x)); + border-bottom: 0; } -.alert-info hr { - border-top-color: #a6e1ec; +.card-header-tabs .nav-link.active { + background-color: var(--bs-card-bg); + border-bottom-color: var(--bs-card-bg); } -.alert-info .alert-link { - color: #245269; + +.card-header-pills { + margin-right: calc(-0.5 * var(--bs-card-cap-padding-x)); + margin-left: calc(-0.5 * var(--bs-card-cap-padding-x)); } -.alert-warning { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #faebcc; -} -.alert-warning hr { - border-top-color: #f7e1b5; + +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: var(--bs-card-img-overlay-padding); + border-radius: var(--bs-card-inner-border-radius); } -.alert-warning .alert-link { - color: #66512c; + +.card-img, +.card-img-top, +.card-img-bottom { + width: 100%; } -.alert-danger { - color: #a94442; - background-color: #f2dede; - border-color: #ebccd1; + +.card-img, +.card-img-top { + border-top-left-radius: var(--bs-card-inner-border-radius); + border-top-right-radius: var(--bs-card-inner-border-radius); } -.alert-danger hr { - border-top-color: #e4b9c0; + +.card-img, +.card-img-bottom { + border-bottom-right-radius: var(--bs-card-inner-border-radius); + border-bottom-left-radius: var(--bs-card-inner-border-radius); } -.alert-danger .alert-link { - color: #843534; + +.card-group > .card { + margin-bottom: var(--bs-card-group-margin); } -@-webkit-keyframes progress-bar-stripes { - from { - background-position: 40px 0; +@media (min-width: 576px) { + .card-group { + display: flex; + flex-flow: row wrap; } - to { - background-position: 0 0; + .card-group > .card { + flex: 1 0 0%; + margin-bottom: 0; } -} -@-o-keyframes progress-bar-stripes { - from { - background-position: 40px 0; + .card-group > .card + .card { + margin-left: 0; + border-left: 0; } - to { - background-position: 0 0; + .card-group > .card:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; } -} -@keyframes progress-bar-stripes { - from { - background-position: 40px 0; + .card-group > .card:not(:last-child) .card-img-top, + .card-group > .card:not(:last-child) .card-header { + border-top-right-radius: 0; } - to { - background-position: 0 0; + .card-group > .card:not(:last-child) .card-img-bottom, + .card-group > .card:not(:last-child) .card-footer { + border-bottom-right-radius: 0; + } + .card-group > .card:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-top, + .card-group > .card:not(:first-child) .card-header { + border-top-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-bottom, + .card-group > .card:not(:first-child) .card-footer { + border-bottom-left-radius: 0; } } -.progress { - height: 20px; - margin-bottom: 20px; - overflow: hidden; - background-color: #f5f5f5; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); -} -.progress-bar { - float: left; - width: 0; - height: 100%; - font-size: 12px; - line-height: 20px; - color: #fff; - text-align: center; - background-color: #337ab7; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); - -webkit-transition: width .6s ease; - -o-transition: width .6s ease; - transition: width .6s ease; -} -.progress-striped .progress-bar, -.progress-bar-striped { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - -webkit-background-size: 40px 40px; - background-size: 40px 40px; -} -.progress.active .progress-bar, -.progress-bar.active { - -webkit-animation: progress-bar-stripes 2s linear infinite; - -o-animation: progress-bar-stripes 2s linear infinite; - animation: progress-bar-stripes 2s linear infinite; -} -.progress-bar-success { - background-color: #5cb85c; -} -.progress-striped .progress-bar-success { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.progress-bar-info { - background-color: #5bc0de; -} -.progress-striped .progress-bar-info { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.progress-bar-warning { - background-color: #f0ad4e; -} -.progress-striped .progress-bar-warning { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.progress-bar-danger { - background-color: #d9534f; -} -.progress-striped .progress-bar-danger { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.media { - margin-top: 15px; -} -.media:first-child { - margin-top: 0; + +.accordion { + --bs-accordion-color: var(--bs-body-color); + --bs-accordion-bg: var(--bs-body-bg); + --bs-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease; + --bs-accordion-border-color: var(--bs-border-color); + --bs-accordion-border-width: var(--bs-border-width); + --bs-accordion-border-radius: var(--bs-border-radius); + --bs-accordion-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width))); + --bs-accordion-btn-padding-x: 1.25rem; + --bs-accordion-btn-padding-y: 1rem; + --bs-accordion-btn-color: var(--bs-body-color); + --bs-accordion-btn-bg: var(--bs-accordion-bg); + --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + --bs-accordion-btn-icon-width: 1.25rem; + --bs-accordion-btn-icon-transform: rotate(-180deg); + --bs-accordion-btn-icon-transition: transform 0.2s ease-in-out; + --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23052c65'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + --bs-accordion-btn-focus-border-color: #86b7fe; + --bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); + --bs-accordion-body-padding-x: 1.25rem; + --bs-accordion-body-padding-y: 1rem; + --bs-accordion-active-color: var(--bs-primary-text-emphasis); + --bs-accordion-active-bg: var(--bs-primary-bg-subtle); } -.media-right, -.media > .pull-right { - padding-left: 10px; + +.accordion-button { + position: relative; + display: flex; + align-items: center; + width: 100%; + padding: var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x); + font-size: 1rem; + color: var(--bs-accordion-btn-color); + text-align: left; + background-color: var(--bs-accordion-btn-bg); + border: 0; + border-radius: 0; + overflow-anchor: none; + transition: var(--bs-accordion-transition); } -.media-left, -.media > .pull-left { - padding-right: 10px; +@media (prefers-reduced-motion: reduce) { + .accordion-button { + transition: none; + } } -.media-left, -.media-right, -.media-body { - display: table-cell; - vertical-align: top; +.accordion-button:not(.collapsed) { + color: var(--bs-accordion-active-color); + background-color: var(--bs-accordion-active-bg); + box-shadow: inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color); } -.media-middle { - vertical-align: middle; +.accordion-button:not(.collapsed)::after { + background-image: var(--bs-accordion-btn-active-icon); + transform: var(--bs-accordion-btn-icon-transform); } -.media-bottom { - vertical-align: bottom; +.accordion-button::after { + flex-shrink: 0; + width: var(--bs-accordion-btn-icon-width); + height: var(--bs-accordion-btn-icon-width); + margin-left: auto; + content: ""; + background-image: var(--bs-accordion-btn-icon); + background-repeat: no-repeat; + background-size: var(--bs-accordion-btn-icon-width); + transition: var(--bs-accordion-btn-icon-transition); } -.media-heading { - margin-top: 0; - margin-bottom: 5px; +@media (prefers-reduced-motion: reduce) { + .accordion-button::after { + transition: none; + } } -.media-list { - padding-left: 0; - list-style: none; +.accordion-button:hover { + z-index: 2; } -.list-group { - padding-left: 0; - margin-bottom: 20px; +.accordion-button:focus { + z-index: 3; + border-color: var(--bs-accordion-btn-focus-border-color); + outline: 0; + box-shadow: var(--bs-accordion-btn-focus-box-shadow); } -.list-group-item { - position: relative; - display: block; - padding: 10px 15px; - margin-bottom: -1px; - background-color: #fff; - border: 1px solid #ddd; + +.accordion-header { + margin-bottom: 0; } -.list-group-item:first-child { - border-top-left-radius: 4px; - border-top-right-radius: 4px; + +.accordion-item { + color: var(--bs-accordion-color); + background-color: var(--bs-accordion-bg); + border: var(--bs-accordion-border-width) solid var(--bs-accordion-border-color); } -.list-group-item:last-child { - margin-bottom: 0; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; +.accordion-item:first-of-type { + border-top-left-radius: var(--bs-accordion-border-radius); + border-top-right-radius: var(--bs-accordion-border-radius); } -a.list-group-item { - color: #555; +.accordion-item:first-of-type .accordion-button { + border-top-left-radius: var(--bs-accordion-inner-border-radius); + border-top-right-radius: var(--bs-accordion-inner-border-radius); } -a.list-group-item .list-group-item-heading { - color: #333; +.accordion-item:not(:first-of-type) { + border-top: 0; } -a.list-group-item:hover, -a.list-group-item:focus { - color: #555; - text-decoration: none; - background-color: #f5f5f5; -} -.list-group-item.disabled, -.list-group-item.disabled:hover, -.list-group-item.disabled:focus { - color: #777; - cursor: not-allowed; - background-color: #eee; -} -.list-group-item.disabled .list-group-item-heading, -.list-group-item.disabled:hover .list-group-item-heading, -.list-group-item.disabled:focus .list-group-item-heading { - color: inherit; +.accordion-item:last-of-type { + border-bottom-right-radius: var(--bs-accordion-border-radius); + border-bottom-left-radius: var(--bs-accordion-border-radius); } -.list-group-item.disabled .list-group-item-text, -.list-group-item.disabled:hover .list-group-item-text, -.list-group-item.disabled:focus .list-group-item-text { - color: #777; +.accordion-item:last-of-type .accordion-button.collapsed { + border-bottom-right-radius: var(--bs-accordion-inner-border-radius); + border-bottom-left-radius: var(--bs-accordion-inner-border-radius); } -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - z-index: 2; - color: #fff; - background-color: #337ab7; - border-color: #337ab7; -} -.list-group-item.active .list-group-item-heading, -.list-group-item.active:hover .list-group-item-heading, -.list-group-item.active:focus .list-group-item-heading, -.list-group-item.active .list-group-item-heading > small, -.list-group-item.active:hover .list-group-item-heading > small, -.list-group-item.active:focus .list-group-item-heading > small, -.list-group-item.active .list-group-item-heading > .small, -.list-group-item.active:hover .list-group-item-heading > .small, -.list-group-item.active:focus .list-group-item-heading > .small { - color: inherit; +.accordion-item:last-of-type .accordion-collapse { + border-bottom-right-radius: var(--bs-accordion-border-radius); + border-bottom-left-radius: var(--bs-accordion-border-radius); } -.list-group-item.active .list-group-item-text, -.list-group-item.active:hover .list-group-item-text, -.list-group-item.active:focus .list-group-item-text { - color: #c7ddef; + +.accordion-body { + padding: var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x); } -.list-group-item-success { - color: #3c763d; - background-color: #dff0d8; + +.accordion-flush .accordion-collapse { + border-width: 0; } -a.list-group-item-success { - color: #3c763d; +.accordion-flush .accordion-item { + border-right: 0; + border-left: 0; + border-radius: 0; } -a.list-group-item-success .list-group-item-heading { - color: inherit; +.accordion-flush .accordion-item:first-child { + border-top: 0; } -a.list-group-item-success:hover, -a.list-group-item-success:focus { - color: #3c763d; - background-color: #d0e9c6; +.accordion-flush .accordion-item:last-child { + border-bottom: 0; } -a.list-group-item-success.active, -a.list-group-item-success.active:hover, -a.list-group-item-success.active:focus { - color: #fff; - background-color: #3c763d; - border-color: #3c763d; +.accordion-flush .accordion-item .accordion-button, .accordion-flush .accordion-item .accordion-button.collapsed { + border-radius: 0; } -.list-group-item-info { - color: #31708f; - background-color: #d9edf7; + +[data-bs-theme=dark] .accordion-button::after { + --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); } -a.list-group-item-info { - color: #31708f; + +.breadcrumb { + --bs-breadcrumb-padding-x: 0; + --bs-breadcrumb-padding-y: 0; + --bs-breadcrumb-margin-bottom: 1rem; + --bs-breadcrumb-bg: ; + --bs-breadcrumb-border-radius: ; + --bs-breadcrumb-divider-color: var(--bs-secondary-color); + --bs-breadcrumb-item-padding-x: 0.5rem; + --bs-breadcrumb-item-active-color: var(--bs-secondary-color); + display: flex; + flex-wrap: wrap; + padding: var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x); + margin-bottom: var(--bs-breadcrumb-margin-bottom); + font-size: var(--bs-breadcrumb-font-size); + list-style: none; + background-color: var(--bs-breadcrumb-bg); + border-radius: var(--bs-breadcrumb-border-radius); } -a.list-group-item-info .list-group-item-heading { - color: inherit; + +.breadcrumb-item + .breadcrumb-item { + padding-left: var(--bs-breadcrumb-item-padding-x); } -a.list-group-item-info:hover, -a.list-group-item-info:focus { - color: #31708f; - background-color: #c4e3f3; +.breadcrumb-item + .breadcrumb-item::before { + float: left; + padding-right: var(--bs-breadcrumb-item-padding-x); + color: var(--bs-breadcrumb-divider-color); + content: var(--bs-breadcrumb-divider, "/") /* rtl: var(--bs-breadcrumb-divider, "/") */; } -a.list-group-item-info.active, -a.list-group-item-info.active:hover, -a.list-group-item-info.active:focus { - color: #fff; - background-color: #31708f; - border-color: #31708f; +.breadcrumb-item.active { + color: var(--bs-breadcrumb-item-active-color); } -.list-group-item-warning { - color: #8a6d3b; - background-color: #fcf8e3; + +.pagination { + --bs-pagination-padding-x: 0.75rem; + --bs-pagination-padding-y: 0.375rem; + --bs-pagination-font-size: 1rem; + --bs-pagination-color: var(--bs-link-color); + --bs-pagination-bg: var(--bs-body-bg); + --bs-pagination-border-width: var(--bs-border-width); + --bs-pagination-border-color: var(--bs-border-color); + --bs-pagination-border-radius: var(--bs-border-radius); + --bs-pagination-hover-color: var(--bs-link-hover-color); + --bs-pagination-hover-bg: var(--bs-tertiary-bg); + --bs-pagination-hover-border-color: var(--bs-border-color); + --bs-pagination-focus-color: var(--bs-link-hover-color); + --bs-pagination-focus-bg: var(--bs-secondary-bg); + --bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); + --bs-pagination-active-color: #fff; + --bs-pagination-active-bg: #0d6efd; + --bs-pagination-active-border-color: #0d6efd; + --bs-pagination-disabled-color: var(--bs-secondary-color); + --bs-pagination-disabled-bg: var(--bs-secondary-bg); + --bs-pagination-disabled-border-color: var(--bs-border-color); + display: flex; + padding-left: 0; + list-style: none; } -a.list-group-item-warning { - color: #8a6d3b; + +.page-link { + position: relative; + display: block; + padding: var(--bs-pagination-padding-y) var(--bs-pagination-padding-x); + font-size: var(--bs-pagination-font-size); + color: var(--bs-pagination-color); + text-decoration: none; + background-color: var(--bs-pagination-bg); + border: var(--bs-pagination-border-width) solid var(--bs-pagination-border-color); + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } -a.list-group-item-warning .list-group-item-heading { - color: inherit; +@media (prefers-reduced-motion: reduce) { + .page-link { + transition: none; + } } -a.list-group-item-warning:hover, -a.list-group-item-warning:focus { - color: #8a6d3b; - background-color: #faf2cc; +.page-link:hover { + z-index: 2; + color: var(--bs-pagination-hover-color); + background-color: var(--bs-pagination-hover-bg); + border-color: var(--bs-pagination-hover-border-color); +} +.page-link:focus { + z-index: 3; + color: var(--bs-pagination-focus-color); + background-color: var(--bs-pagination-focus-bg); + outline: 0; + box-shadow: var(--bs-pagination-focus-box-shadow); } -a.list-group-item-warning.active, -a.list-group-item-warning.active:hover, -a.list-group-item-warning.active:focus { - color: #fff; - background-color: #8a6d3b; - border-color: #8a6d3b; +.page-link.active, .active > .page-link { + z-index: 3; + color: var(--bs-pagination-active-color); + background-color: var(--bs-pagination-active-bg); + border-color: var(--bs-pagination-active-border-color); } -.list-group-item-danger { - color: #a94442; - background-color: #f2dede; +.page-link.disabled, .disabled > .page-link { + color: var(--bs-pagination-disabled-color); + pointer-events: none; + background-color: var(--bs-pagination-disabled-bg); + border-color: var(--bs-pagination-disabled-border-color); } -a.list-group-item-danger { - color: #a94442; + +.page-item:not(:first-child) .page-link { + margin-left: calc(var(--bs-border-width) * -1); } -a.list-group-item-danger .list-group-item-heading { - color: inherit; +.page-item:first-child .page-link { + border-top-left-radius: var(--bs-pagination-border-radius); + border-bottom-left-radius: var(--bs-pagination-border-radius); } -a.list-group-item-danger:hover, -a.list-group-item-danger:focus { - color: #a94442; - background-color: #ebcccc; +.page-item:last-child .page-link { + border-top-right-radius: var(--bs-pagination-border-radius); + border-bottom-right-radius: var(--bs-pagination-border-radius); } -a.list-group-item-danger.active, -a.list-group-item-danger.active:hover, -a.list-group-item-danger.active:focus { - color: #fff; - background-color: #a94442; - border-color: #a94442; + +.pagination-lg { + --bs-pagination-padding-x: 1.5rem; + --bs-pagination-padding-y: 0.75rem; + --bs-pagination-font-size: 1.25rem; + --bs-pagination-border-radius: var(--bs-border-radius-lg); } -.list-group-item-heading { - margin-top: 0; - margin-bottom: 5px; + +.pagination-sm { + --bs-pagination-padding-x: 0.5rem; + --bs-pagination-padding-y: 0.25rem; + --bs-pagination-font-size: 0.875rem; + --bs-pagination-border-radius: var(--bs-border-radius-sm); } -.list-group-item-text { - margin-bottom: 0; - line-height: 1.3; + +.badge { + --bs-badge-padding-x: 0.65em; + --bs-badge-padding-y: 0.35em; + --bs-badge-font-size: 0.75em; + --bs-badge-font-weight: 700; + --bs-badge-color: #fff; + --bs-badge-border-radius: var(--bs-border-radius); + display: inline-block; + padding: var(--bs-badge-padding-y) var(--bs-badge-padding-x); + font-size: var(--bs-badge-font-size); + font-weight: var(--bs-badge-font-weight); + line-height: 1; + color: var(--bs-badge-color); + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: var(--bs-badge-border-radius); } -.panel { - margin-bottom: 20px; - background-color: #fff; - border: 1px solid transparent; - border-radius: 4px; - -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); - box-shadow: 0 1px 1px rgba(0, 0, 0, .05); +.badge:empty { + display: none; } -.panel-body { - padding: 15px; + +.btn .badge { + position: relative; + top: -1px; } -.panel-heading { - padding: 10px 15px; - border-bottom: 1px solid transparent; - border-top-left-radius: 3px; - border-top-right-radius: 3px; + +.alert { + --bs-alert-bg: transparent; + --bs-alert-padding-x: 1rem; + --bs-alert-padding-y: 1rem; + --bs-alert-margin-bottom: 1rem; + --bs-alert-color: inherit; + --bs-alert-border-color: transparent; + --bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color); + --bs-alert-border-radius: var(--bs-border-radius); + --bs-alert-link-color: inherit; + position: relative; + padding: var(--bs-alert-padding-y) var(--bs-alert-padding-x); + margin-bottom: var(--bs-alert-margin-bottom); + color: var(--bs-alert-color); + background-color: var(--bs-alert-bg); + border: var(--bs-alert-border); + border-radius: var(--bs-alert-border-radius); } -.panel-heading > .dropdown .dropdown-toggle { + +.alert-heading { color: inherit; } -.panel-title { - margin-top: 0; - margin-bottom: 0; - font-size: 16px; - color: inherit; + +.alert-link { + font-weight: 700; + color: var(--bs-alert-link-color); } -.panel-title > a { - color: inherit; + +.alert-dismissible { + padding-right: 3rem; } -.panel-footer { - padding: 10px 15px; - background-color: #f5f5f5; - border-top: 1px solid #ddd; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; +.alert-dismissible .btn-close { + position: absolute; + top: 0; + right: 0; + z-index: 2; + padding: 1.25rem 1rem; } -.panel > .list-group, -.panel > .panel-collapse > .list-group { - margin-bottom: 0; + +.alert-primary { + --bs-alert-color: var(--bs-primary-text-emphasis); + --bs-alert-bg: var(--bs-primary-bg-subtle); + --bs-alert-border-color: var(--bs-primary-border-subtle); + --bs-alert-link-color: var(--bs-primary-text-emphasis); } -.panel > .list-group .list-group-item, -.panel > .panel-collapse > .list-group .list-group-item { - border-width: 1px 0; - border-radius: 0; + +.alert-secondary { + --bs-alert-color: var(--bs-secondary-text-emphasis); + --bs-alert-bg: var(--bs-secondary-bg-subtle); + --bs-alert-border-color: var(--bs-secondary-border-subtle); + --bs-alert-link-color: var(--bs-secondary-text-emphasis); } -.panel > .list-group:first-child .list-group-item:first-child, -.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { - border-top: 0; - border-top-left-radius: 3px; - border-top-right-radius: 3px; + +.alert-success { + --bs-alert-color: var(--bs-success-text-emphasis); + --bs-alert-bg: var(--bs-success-bg-subtle); + --bs-alert-border-color: var(--bs-success-border-subtle); + --bs-alert-link-color: var(--bs-success-text-emphasis); } -.panel > .list-group:last-child .list-group-item:last-child, -.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { - border-bottom: 0; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; + +.alert-info { + --bs-alert-color: var(--bs-info-text-emphasis); + --bs-alert-bg: var(--bs-info-bg-subtle); + --bs-alert-border-color: var(--bs-info-border-subtle); + --bs-alert-link-color: var(--bs-info-text-emphasis); } -.panel-heading + .list-group .list-group-item:first-child { - border-top-width: 0; + +.alert-warning { + --bs-alert-color: var(--bs-warning-text-emphasis); + --bs-alert-bg: var(--bs-warning-bg-subtle); + --bs-alert-border-color: var(--bs-warning-border-subtle); + --bs-alert-link-color: var(--bs-warning-text-emphasis); } -.list-group + .panel-footer { - border-top-width: 0; + +.alert-danger { + --bs-alert-color: var(--bs-danger-text-emphasis); + --bs-alert-bg: var(--bs-danger-bg-subtle); + --bs-alert-border-color: var(--bs-danger-border-subtle); + --bs-alert-link-color: var(--bs-danger-text-emphasis); } -.panel > .table, -.panel > .table-responsive > .table, -.panel > .panel-collapse > .table { - margin-bottom: 0; + +.alert-light { + --bs-alert-color: var(--bs-light-text-emphasis); + --bs-alert-bg: var(--bs-light-bg-subtle); + --bs-alert-border-color: var(--bs-light-border-subtle); + --bs-alert-link-color: var(--bs-light-text-emphasis); } -.panel > .table caption, -.panel > .table-responsive > .table caption, -.panel > .panel-collapse > .table caption { - padding-right: 15px; - padding-left: 15px; -} -.panel > .table:first-child, -.panel > .table-responsive:first-child > .table:first-child { - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { - border-top-left-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { - border-top-right-radius: 3px; -} -.panel > .table:last-child, -.panel > .table-responsive:last-child > .table:last-child { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { - border-bottom-right-radius: 3px; -} -.panel > .panel-body + .table, -.panel > .panel-body + .table-responsive, -.panel > .table + .panel-body, -.panel > .table-responsive + .panel-body { - border-top: 1px solid #ddd; -} -.panel > .table > tbody:first-child > tr:first-child th, -.panel > .table > tbody:first-child > tr:first-child td { - border-top: 0; + +.alert-dark { + --bs-alert-color: var(--bs-dark-text-emphasis); + --bs-alert-bg: var(--bs-dark-bg-subtle); + --bs-alert-border-color: var(--bs-dark-border-subtle); + --bs-alert-link-color: var(--bs-dark-text-emphasis); } -.panel > .table-bordered, -.panel > .table-responsive > .table-bordered { - border: 0; + +@keyframes progress-bar-stripes { + 0% { + background-position-x: 1rem; + } +} +.progress, +.progress-stacked { + --bs-progress-height: 1rem; + --bs-progress-font-size: 0.75rem; + --bs-progress-bg: var(--bs-secondary-bg); + --bs-progress-border-radius: var(--bs-border-radius); + --bs-progress-box-shadow: var(--bs-box-shadow-inset); + --bs-progress-bar-color: #fff; + --bs-progress-bar-bg: #0d6efd; + --bs-progress-bar-transition: width 0.6s ease; + display: flex; + height: var(--bs-progress-height); + overflow: hidden; + font-size: var(--bs-progress-font-size); + background-color: var(--bs-progress-bg); + border-radius: var(--bs-progress-border-radius); } -.panel > .table-bordered > thead > tr > th:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, -.panel > .table-bordered > tbody > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, -.panel > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-bordered > thead > tr > td:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, -.panel > .table-bordered > tbody > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, -.panel > .table-bordered > tfoot > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; + +.progress-bar { + display: flex; + flex-direction: column; + justify-content: center; + overflow: hidden; + color: var(--bs-progress-bar-color); + text-align: center; + white-space: nowrap; + background-color: var(--bs-progress-bar-bg); + transition: var(--bs-progress-bar-transition); } -.panel > .table-bordered > thead > tr > th:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, -.panel > .table-bordered > tbody > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, -.panel > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-bordered > thead > tr > td:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, -.panel > .table-bordered > tbody > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, -.panel > .table-bordered > tfoot > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; +@media (prefers-reduced-motion: reduce) { + .progress-bar { + transition: none; + } } -.panel > .table-bordered > thead > tr:first-child > td, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, -.panel > .table-bordered > tbody > tr:first-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, -.panel > .table-bordered > thead > tr:first-child > th, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, -.panel > .table-bordered > tbody > tr:first-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { - border-bottom: 0; + +.progress-bar-striped { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: var(--bs-progress-height) var(--bs-progress-height); } -.panel > .table-bordered > tbody > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, -.panel > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-bordered > tbody > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, -.panel > .table-bordered > tfoot > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { - border-bottom: 0; + +.progress-stacked > .progress { + overflow: visible; } -.panel > .table-responsive { - margin-bottom: 0; - border: 0; + +.progress-stacked > .progress > .progress-bar { + width: 100%; +} + +.progress-bar-animated { + animation: 1s linear infinite progress-bar-stripes; } -.panel-group { - margin-bottom: 20px; +@media (prefers-reduced-motion: reduce) { + .progress-bar-animated { + animation: none; + } } -.panel-group .panel { + +.list-group { + --bs-list-group-color: var(--bs-body-color); + --bs-list-group-bg: var(--bs-body-bg); + --bs-list-group-border-color: var(--bs-border-color); + --bs-list-group-border-width: var(--bs-border-width); + --bs-list-group-border-radius: var(--bs-border-radius); + --bs-list-group-item-padding-x: 1rem; + --bs-list-group-item-padding-y: 0.5rem; + --bs-list-group-action-color: var(--bs-secondary-color); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-tertiary-bg); + --bs-list-group-action-active-color: var(--bs-body-color); + --bs-list-group-action-active-bg: var(--bs-secondary-bg); + --bs-list-group-disabled-color: var(--bs-secondary-color); + --bs-list-group-disabled-bg: var(--bs-body-bg); + --bs-list-group-active-color: #fff; + --bs-list-group-active-bg: #0d6efd; + --bs-list-group-active-border-color: #0d6efd; + display: flex; + flex-direction: column; + padding-left: 0; margin-bottom: 0; - border-radius: 4px; + border-radius: var(--bs-list-group-border-radius); } -.panel-group .panel + .panel { - margin-top: 5px; + +.list-group-numbered { + list-style-type: none; + counter-reset: section; } -.panel-group .panel-heading { - border-bottom: 0; +.list-group-numbered > .list-group-item::before { + content: counters(section, ".") ". "; + counter-increment: section; } -.panel-group .panel-heading + .panel-collapse > .panel-body, -.panel-group .panel-heading + .panel-collapse > .list-group { - border-top: 1px solid #ddd; + +.list-group-item-action { + width: 100%; + color: var(--bs-list-group-action-color); + text-align: inherit; } -.panel-group .panel-footer { - border-top: 0; +.list-group-item-action:hover, .list-group-item-action:focus { + z-index: 1; + color: var(--bs-list-group-action-hover-color); + text-decoration: none; + background-color: var(--bs-list-group-action-hover-bg); } -.panel-group .panel-footer + .panel-collapse .panel-body { - border-bottom: 1px solid #ddd; +.list-group-item-action:active { + color: var(--bs-list-group-action-active-color); + background-color: var(--bs-list-group-action-active-bg); } -.panel-default { - border-color: #ddd; + +.list-group-item { + position: relative; + display: block; + padding: var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x); + color: var(--bs-list-group-color); + text-decoration: none; + background-color: var(--bs-list-group-bg); + border: var(--bs-list-group-border-width) solid var(--bs-list-group-border-color); } -.panel-default > .panel-heading { - color: #333; - background-color: #f5f5f5; - border-color: #ddd; +.list-group-item:first-child { + border-top-left-radius: inherit; + border-top-right-radius: inherit; } -.panel-default > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #ddd; +.list-group-item:last-child { + border-bottom-right-radius: inherit; + border-bottom-left-radius: inherit; } -.panel-default > .panel-heading .badge { - color: #f5f5f5; - background-color: #333; +.list-group-item.disabled, .list-group-item:disabled { + color: var(--bs-list-group-disabled-color); + pointer-events: none; + background-color: var(--bs-list-group-disabled-bg); } -.panel-default > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #ddd; +.list-group-item.active { + z-index: 2; + color: var(--bs-list-group-active-color); + background-color: var(--bs-list-group-active-bg); + border-color: var(--bs-list-group-active-border-color); } -.panel-primary { - border-color: #337ab7; +.list-group-item + .list-group-item { + border-top-width: 0; } -.panel-primary > .panel-heading { - color: #fff; - background-color: #337ab7; - border-color: #337ab7; +.list-group-item + .list-group-item.active { + margin-top: calc(-1 * var(--bs-list-group-border-width)); + border-top-width: var(--bs-list-group-border-width); } -.panel-primary > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #337ab7; + +.list-group-horizontal { + flex-direction: row; } -.panel-primary > .panel-heading .badge { - color: #337ab7; - background-color: #fff; +.list-group-horizontal > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; } -.panel-primary > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #337ab7; +.list-group-horizontal > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; } -.panel-success { - border-color: #d6e9c6; +.list-group-horizontal > .list-group-item.active { + margin-top: 0; } -.panel-success > .panel-heading { - color: #3c763d; - background-color: #dff0d8; - border-color: #d6e9c6; +.list-group-horizontal > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; } -.panel-success > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #d6e9c6; +.list-group-horizontal > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); } -.panel-success > .panel-heading .badge { - color: #dff0d8; - background-color: #3c763d; + +@media (min-width: 576px) { + .list-group-horizontal-sm { + flex-direction: row; + } + .list-group-horizontal-sm > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-sm > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-sm > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-sm > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-sm > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } } -.panel-success > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #d6e9c6; +@media (min-width: 768px) { + .list-group-horizontal-md { + flex-direction: row; + } + .list-group-horizontal-md > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-md > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-md > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-md > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-md > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } } -.panel-info { - border-color: #bce8f1; +@media (min-width: 992px) { + .list-group-horizontal-lg { + flex-direction: row; + } + .list-group-horizontal-lg > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-lg > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-lg > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-lg > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-lg > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } } -.panel-info > .panel-heading { - color: #31708f; - background-color: #d9edf7; - border-color: #bce8f1; +@media (min-width: 1200px) { + .list-group-horizontal-xl { + flex-direction: row; + } + .list-group-horizontal-xl > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-xl > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-xl > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-xl > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-xl > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } } -.panel-info > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #bce8f1; +@media (min-width: 1400px) { + .list-group-horizontal-xxl { + flex-direction: row; + } + .list-group-horizontal-xxl > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-xxl > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-xxl > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-xxl > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-xxl > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } } -.panel-info > .panel-heading .badge { - color: #d9edf7; - background-color: #31708f; +.list-group-flush { + border-radius: 0; } -.panel-info > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #bce8f1; +.list-group-flush > .list-group-item { + border-width: 0 0 var(--bs-list-group-border-width); } -.panel-warning { - border-color: #faebcc; -} -.panel-warning > .panel-heading { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #faebcc; -} -.panel-warning > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #faebcc; +.list-group-flush > .list-group-item:last-child { + border-bottom-width: 0; } -.panel-warning > .panel-heading .badge { - color: #fcf8e3; - background-color: #8a6d3b; + +.list-group-item-primary { + --bs-list-group-color: var(--bs-primary-text-emphasis); + --bs-list-group-bg: var(--bs-primary-bg-subtle); + --bs-list-group-border-color: var(--bs-primary-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-primary-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-primary-border-subtle); + --bs-list-group-active-color: var(--bs-primary-bg-subtle); + --bs-list-group-active-bg: var(--bs-primary-text-emphasis); + --bs-list-group-active-border-color: var(--bs-primary-text-emphasis); } -.panel-warning > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #faebcc; + +.list-group-item-secondary { + --bs-list-group-color: var(--bs-secondary-text-emphasis); + --bs-list-group-bg: var(--bs-secondary-bg-subtle); + --bs-list-group-border-color: var(--bs-secondary-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-secondary-border-subtle); + --bs-list-group-active-color: var(--bs-secondary-bg-subtle); + --bs-list-group-active-bg: var(--bs-secondary-text-emphasis); + --bs-list-group-active-border-color: var(--bs-secondary-text-emphasis); } -.panel-danger { - border-color: #ebccd1; + +.list-group-item-success { + --bs-list-group-color: var(--bs-success-text-emphasis); + --bs-list-group-bg: var(--bs-success-bg-subtle); + --bs-list-group-border-color: var(--bs-success-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-success-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-success-border-subtle); + --bs-list-group-active-color: var(--bs-success-bg-subtle); + --bs-list-group-active-bg: var(--bs-success-text-emphasis); + --bs-list-group-active-border-color: var(--bs-success-text-emphasis); } -.panel-danger > .panel-heading { - color: #a94442; - background-color: #f2dede; - border-color: #ebccd1; + +.list-group-item-info { + --bs-list-group-color: var(--bs-info-text-emphasis); + --bs-list-group-bg: var(--bs-info-bg-subtle); + --bs-list-group-border-color: var(--bs-info-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-info-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-info-border-subtle); + --bs-list-group-active-color: var(--bs-info-bg-subtle); + --bs-list-group-active-bg: var(--bs-info-text-emphasis); + --bs-list-group-active-border-color: var(--bs-info-text-emphasis); } -.panel-danger > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #ebccd1; + +.list-group-item-warning { + --bs-list-group-color: var(--bs-warning-text-emphasis); + --bs-list-group-bg: var(--bs-warning-bg-subtle); + --bs-list-group-border-color: var(--bs-warning-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-warning-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-warning-border-subtle); + --bs-list-group-active-color: var(--bs-warning-bg-subtle); + --bs-list-group-active-bg: var(--bs-warning-text-emphasis); + --bs-list-group-active-border-color: var(--bs-warning-text-emphasis); } -.panel-danger > .panel-heading .badge { - color: #f2dede; - background-color: #a94442; + +.list-group-item-danger { + --bs-list-group-color: var(--bs-danger-text-emphasis); + --bs-list-group-bg: var(--bs-danger-bg-subtle); + --bs-list-group-border-color: var(--bs-danger-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-danger-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-danger-border-subtle); + --bs-list-group-active-color: var(--bs-danger-bg-subtle); + --bs-list-group-active-bg: var(--bs-danger-text-emphasis); + --bs-list-group-active-border-color: var(--bs-danger-text-emphasis); } -.panel-danger > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #ebccd1; + +.list-group-item-light { + --bs-list-group-color: var(--bs-light-text-emphasis); + --bs-list-group-bg: var(--bs-light-bg-subtle); + --bs-list-group-border-color: var(--bs-light-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-light-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-light-border-subtle); + --bs-list-group-active-color: var(--bs-light-bg-subtle); + --bs-list-group-active-bg: var(--bs-light-text-emphasis); + --bs-list-group-active-border-color: var(--bs-light-text-emphasis); } -.embed-responsive { - position: relative; - display: block; - height: 0; - padding: 0; - overflow: hidden; + +.list-group-item-dark { + --bs-list-group-color: var(--bs-dark-text-emphasis); + --bs-list-group-bg: var(--bs-dark-bg-subtle); + --bs-list-group-border-color: var(--bs-dark-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-dark-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-dark-border-subtle); + --bs-list-group-active-color: var(--bs-dark-bg-subtle); + --bs-list-group-active-bg: var(--bs-dark-text-emphasis); + --bs-list-group-active-border-color: var(--bs-dark-text-emphasis); } -.embed-responsive .embed-responsive-item, -.embed-responsive iframe, -.embed-responsive embed, -.embed-responsive object, -.embed-responsive video { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 100%; - height: 100%; + +.btn-close { + --bs-btn-close-color: #000; + --bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e"); + --bs-btn-close-opacity: 0.5; + --bs-btn-close-hover-opacity: 0.75; + --bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); + --bs-btn-close-focus-opacity: 1; + --bs-btn-close-disabled-opacity: 0.25; + --bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%); + box-sizing: content-box; + width: 1em; + height: 1em; + padding: 0.25em 0.25em; + color: var(--bs-btn-close-color); + background: transparent var(--bs-btn-close-bg) center/1em auto no-repeat; border: 0; + border-radius: 0.375rem; + opacity: var(--bs-btn-close-opacity); +} +.btn-close:hover { + color: var(--bs-btn-close-color); + text-decoration: none; + opacity: var(--bs-btn-close-hover-opacity); } -.embed-responsive.embed-responsive-16by9 { - padding-bottom: 56.25%; +.btn-close:focus { + outline: 0; + box-shadow: var(--bs-btn-close-focus-shadow); + opacity: var(--bs-btn-close-focus-opacity); } -.embed-responsive.embed-responsive-4by3 { - padding-bottom: 75%; +.btn-close:disabled, .btn-close.disabled { + pointer-events: none; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + opacity: var(--bs-btn-close-disabled-opacity); } -.well { - min-height: 20px; - padding: 19px; - margin-bottom: 20px; - background-color: #f5f5f5; - border: 1px solid #e3e3e3; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); + +.btn-close-white { + filter: var(--bs-btn-close-white-filter); } -.well blockquote { - border-color: #ddd; - border-color: rgba(0, 0, 0, .15); + +[data-bs-theme=dark] .btn-close { + filter: var(--bs-btn-close-white-filter); } -.well-lg { - padding: 24px; - border-radius: 6px; + +.toast { + --bs-toast-zindex: 1090; + --bs-toast-padding-x: 0.75rem; + --bs-toast-padding-y: 0.5rem; + --bs-toast-spacing: 1.5rem; + --bs-toast-max-width: 350px; + --bs-toast-font-size: 0.875rem; + --bs-toast-color: ; + --bs-toast-bg: rgba(var(--bs-body-bg-rgb), 0.85); + --bs-toast-border-width: var(--bs-border-width); + --bs-toast-border-color: var(--bs-border-color-translucent); + --bs-toast-border-radius: var(--bs-border-radius); + --bs-toast-box-shadow: var(--bs-box-shadow); + --bs-toast-header-color: var(--bs-secondary-color); + --bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), 0.85); + --bs-toast-header-border-color: var(--bs-border-color-translucent); + width: var(--bs-toast-max-width); + max-width: 100%; + font-size: var(--bs-toast-font-size); + color: var(--bs-toast-color); + pointer-events: auto; + background-color: var(--bs-toast-bg); + background-clip: padding-box; + border: var(--bs-toast-border-width) solid var(--bs-toast-border-color); + box-shadow: var(--bs-toast-box-shadow); + border-radius: var(--bs-toast-border-radius); +} +.toast.showing { + opacity: 0; } -.well-sm { - padding: 9px; - border-radius: 3px; +.toast:not(.show) { + display: none; } -.close { - float: right; - font-size: 21px; - font-weight: bold; - line-height: 1; - color: #000; - text-shadow: 0 1px 0 #fff; - filter: alpha(opacity=20); - opacity: .2; + +.toast-container { + --bs-toast-zindex: 1090; + position: absolute; + z-index: var(--bs-toast-zindex); + width: -webkit-max-content; + width: -moz-max-content; + width: max-content; + max-width: 100%; + pointer-events: none; } -.close:hover, -.close:focus { - color: #000; - text-decoration: none; - cursor: pointer; - filter: alpha(opacity=50); - opacity: .5; +.toast-container > :not(:last-child) { + margin-bottom: var(--bs-toast-spacing); } -button.close { - -webkit-appearance: none; - padding: 0; - cursor: pointer; - background: transparent; - border: 0; + +.toast-header { + display: flex; + align-items: center; + padding: var(--bs-toast-padding-y) var(--bs-toast-padding-x); + color: var(--bs-toast-header-color); + background-color: var(--bs-toast-header-bg); + background-clip: padding-box; + border-bottom: var(--bs-toast-border-width) solid var(--bs-toast-header-border-color); + border-top-left-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width)); + border-top-right-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width)); +} +.toast-header .btn-close { + margin-right: calc(-0.5 * var(--bs-toast-padding-x)); + margin-left: var(--bs-toast-padding-x); } -.modal-open { - overflow: hidden; + +.toast-body { + padding: var(--bs-toast-padding-x); + word-wrap: break-word; } + .modal { + --bs-modal-zindex: 1055; + --bs-modal-width: 500px; + --bs-modal-padding: 1rem; + --bs-modal-margin: 0.5rem; + --bs-modal-color: ; + --bs-modal-bg: var(--bs-body-bg); + --bs-modal-border-color: var(--bs-border-color-translucent); + --bs-modal-border-width: var(--bs-border-width); + --bs-modal-border-radius: var(--bs-border-radius-lg); + --bs-modal-box-shadow: var(--bs-box-shadow-sm); + --bs-modal-inner-border-radius: calc(var(--bs-border-radius-lg) - (var(--bs-border-width))); + --bs-modal-header-padding-x: 1rem; + --bs-modal-header-padding-y: 1rem; + --bs-modal-header-padding: 1rem 1rem; + --bs-modal-header-border-color: var(--bs-border-color); + --bs-modal-header-border-width: var(--bs-border-width); + --bs-modal-title-line-height: 1.5; + --bs-modal-footer-gap: 0.5rem; + --bs-modal-footer-bg: ; + --bs-modal-footer-border-color: var(--bs-border-color); + --bs-modal-footer-border-width: var(--bs-border-width); position: fixed; top: 0; - right: 0; - bottom: 0; left: 0; - z-index: 1040; + z-index: var(--bs-modal-zindex); display: none; - overflow: hidden; - -webkit-overflow-scrolling: touch; - outline: 0; -} -.modal.fade .modal-dialog { - -webkit-transition: -webkit-transform .3s ease-out; - -o-transition: -o-transform .3s ease-out; - transition: transform .3s ease-out; - -webkit-transform: translate(0, -25%); - -ms-transform: translate(0, -25%); - -o-transform: translate(0, -25%); - transform: translate(0, -25%); -} -.modal.in .modal-dialog { - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - -o-transform: translate(0, 0); - transform: translate(0, 0); -} -.modal-open .modal { + width: 100%; + height: 100%; overflow-x: hidden; overflow-y: auto; + outline: 0; } + .modal-dialog { position: relative; width: auto; - margin: 10px; + margin: var(--bs-modal-margin); + pointer-events: none; +} +.modal.fade .modal-dialog { + transition: transform 0.3s ease-out; + transform: translate(0, -50px); +} +@media (prefers-reduced-motion: reduce) { + .modal.fade .modal-dialog { + transition: none; + } +} +.modal.show .modal-dialog { + transform: none; +} +.modal.modal-static .modal-dialog { + transform: scale(1.02); +} + +.modal-dialog-scrollable { + height: calc(100% - var(--bs-modal-margin) * 2); +} +.modal-dialog-scrollable .modal-content { + max-height: 100%; + overflow: hidden; } +.modal-dialog-scrollable .modal-body { + overflow-y: auto; +} + +.modal-dialog-centered { + display: flex; + align-items: center; + min-height: calc(100% - var(--bs-modal-margin) * 2); +} + .modal-content { position: relative; - background-color: #fff; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #999; - border: 1px solid rgba(0, 0, 0, .2); - border-radius: 6px; + display: flex; + flex-direction: column; + width: 100%; + color: var(--bs-modal-color); + pointer-events: auto; + background-color: var(--bs-modal-bg); + background-clip: padding-box; + border: var(--bs-modal-border-width) solid var(--bs-modal-border-color); + border-radius: var(--bs-modal-border-radius); outline: 0; - -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); - box-shadow: 0 3px 9px rgba(0, 0, 0, .5); } + .modal-backdrop { - position: absolute; + --bs-backdrop-zindex: 1050; + --bs-backdrop-bg: #000; + --bs-backdrop-opacity: 0.5; + position: fixed; top: 0; - right: 0; left: 0; - background-color: #000; + z-index: var(--bs-backdrop-zindex); + width: 100vw; + height: 100vh; + background-color: var(--bs-backdrop-bg); } .modal-backdrop.fade { - filter: alpha(opacity=0); opacity: 0; } -.modal-backdrop.in { - filter: alpha(opacity=50); - opacity: .5; +.modal-backdrop.show { + opacity: var(--bs-backdrop-opacity); } + .modal-header { - min-height: 16.42857143px; - padding: 15px; - border-bottom: 1px solid #e5e5e5; -} -.modal-header .close { - margin-top: -2px; + display: flex; + flex-shrink: 0; + align-items: center; + justify-content: space-between; + padding: var(--bs-modal-header-padding); + border-bottom: var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color); + border-top-left-radius: var(--bs-modal-inner-border-radius); + border-top-right-radius: var(--bs-modal-inner-border-radius); +} +.modal-header .btn-close { + padding: calc(var(--bs-modal-header-padding-y) * 0.5) calc(var(--bs-modal-header-padding-x) * 0.5); + margin: calc(-0.5 * var(--bs-modal-header-padding-y)) calc(-0.5 * var(--bs-modal-header-padding-x)) calc(-0.5 * var(--bs-modal-header-padding-y)) auto; } + .modal-title { - margin: 0; - line-height: 1.42857143; + margin-bottom: 0; + line-height: var(--bs-modal-title-line-height); } + .modal-body { position: relative; - padding: 15px; + flex: 1 1 auto; + padding: var(--bs-modal-padding); } + .modal-footer { - padding: 15px; - text-align: right; - border-top: 1px solid #e5e5e5; + display: flex; + flex-shrink: 0; + flex-wrap: wrap; + align-items: center; + justify-content: flex-end; + padding: calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * 0.5); + background-color: var(--bs-modal-footer-bg); + border-top: var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color); + border-bottom-right-radius: var(--bs-modal-inner-border-radius); + border-bottom-left-radius: var(--bs-modal-inner-border-radius); +} +.modal-footer > * { + margin: calc(var(--bs-modal-footer-gap) * 0.5); } -.modal-footer .btn + .btn { - margin-bottom: 0; - margin-left: 5px; + +@media (min-width: 576px) { + .modal { + --bs-modal-margin: 1.75rem; + --bs-modal-box-shadow: var(--bs-box-shadow); + } + .modal-dialog { + max-width: var(--bs-modal-width); + margin-right: auto; + margin-left: auto; + } + .modal-sm { + --bs-modal-width: 300px; + } } -.modal-footer .btn-group .btn + .btn { - margin-left: -1px; +@media (min-width: 992px) { + .modal-lg, + .modal-xl { + --bs-modal-width: 800px; + } } -.modal-footer .btn-block + .btn-block { - margin-left: 0; +@media (min-width: 1200px) { + .modal-xl { + --bs-modal-width: 1140px; + } +} +.modal-fullscreen { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; +} +.modal-fullscreen .modal-content { + height: 100%; + border: 0; + border-radius: 0; +} +.modal-fullscreen .modal-header, +.modal-fullscreen .modal-footer { + border-radius: 0; +} +.modal-fullscreen .modal-body { + overflow-y: auto; +} + +@media (max-width: 575.98px) { + .modal-fullscreen-sm-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-sm-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-sm-down .modal-header, + .modal-fullscreen-sm-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-sm-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 767.98px) { + .modal-fullscreen-md-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-md-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-md-down .modal-header, + .modal-fullscreen-md-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-md-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 991.98px) { + .modal-fullscreen-lg-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-lg-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-lg-down .modal-header, + .modal-fullscreen-lg-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-lg-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 1199.98px) { + .modal-fullscreen-xl-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-xl-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-xl-down .modal-header, + .modal-fullscreen-xl-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-xl-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 1399.98px) { + .modal-fullscreen-xxl-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-xxl-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-xxl-down .modal-header, + .modal-fullscreen-xxl-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-xxl-down .modal-body { + overflow-y: auto; + } +} +.tooltip { + --bs-tooltip-zindex: 1080; + --bs-tooltip-max-width: 200px; + --bs-tooltip-padding-x: 0.5rem; + --bs-tooltip-padding-y: 0.25rem; + --bs-tooltip-margin: ; + --bs-tooltip-font-size: 0.875rem; + --bs-tooltip-color: var(--bs-body-bg); + --bs-tooltip-bg: var(--bs-emphasis-color); + --bs-tooltip-border-radius: var(--bs-border-radius); + --bs-tooltip-opacity: 0.9; + --bs-tooltip-arrow-width: 0.8rem; + --bs-tooltip-arrow-height: 0.4rem; + z-index: var(--bs-tooltip-zindex); + display: block; + margin: var(--bs-tooltip-margin); + font-family: var(--bs-font-sans-serif); + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + white-space: normal; + word-spacing: normal; + line-break: auto; + font-size: var(--bs-tooltip-font-size); + word-wrap: break-word; + opacity: 0; +} +.tooltip.show { + opacity: var(--bs-tooltip-opacity); +} +.tooltip .tooltip-arrow { + display: block; + width: var(--bs-tooltip-arrow-width); + height: var(--bs-tooltip-arrow-height); } -.modal-scrollbar-measure { +.tooltip .tooltip-arrow::before { position: absolute; - top: -9999px; - width: 50px; - height: 50px; - overflow: scroll; + content: ""; + border-color: transparent; + border-style: solid; } -@media (min-width: 768px) { - .modal-dialog { - width: 600px; - margin: 30px auto; + +.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow { + bottom: calc(-1 * var(--bs-tooltip-arrow-height)); +} +.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before { + top: -1px; + border-width: var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0; + border-top-color: var(--bs-tooltip-bg); +} + +/* rtl:begin:ignore */ +.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow { + left: calc(-1 * var(--bs-tooltip-arrow-height)); + width: var(--bs-tooltip-arrow-height); + height: var(--bs-tooltip-arrow-width); +} +.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before { + right: -1px; + border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0; + border-right-color: var(--bs-tooltip-bg); +} + +/* rtl:end:ignore */ +.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow { + top: calc(-1 * var(--bs-tooltip-arrow-height)); +} +.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before { + bottom: -1px; + border-width: 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height); + border-bottom-color: var(--bs-tooltip-bg); +} + +/* rtl:begin:ignore */ +.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow { + right: calc(-1 * var(--bs-tooltip-arrow-height)); + width: var(--bs-tooltip-arrow-height); + height: var(--bs-tooltip-arrow-width); +} +.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before { + left: -1px; + border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height); + border-left-color: var(--bs-tooltip-bg); +} + +/* rtl:end:ignore */ +.tooltip-inner { + max-width: var(--bs-tooltip-max-width); + padding: var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x); + color: var(--bs-tooltip-color); + text-align: center; + background-color: var(--bs-tooltip-bg); + border-radius: var(--bs-tooltip-border-radius); +} + +.popover { + --bs-popover-zindex: 1070; + --bs-popover-max-width: 276px; + --bs-popover-font-size: 0.875rem; + --bs-popover-bg: var(--bs-body-bg); + --bs-popover-border-width: var(--bs-border-width); + --bs-popover-border-color: var(--bs-border-color-translucent); + --bs-popover-border-radius: var(--bs-border-radius-lg); + --bs-popover-inner-border-radius: calc(var(--bs-border-radius-lg) - var(--bs-border-width)); + --bs-popover-box-shadow: var(--bs-box-shadow); + --bs-popover-header-padding-x: 1rem; + --bs-popover-header-padding-y: 0.5rem; + --bs-popover-header-font-size: 1rem; + --bs-popover-header-color: inherit; + --bs-popover-header-bg: var(--bs-secondary-bg); + --bs-popover-body-padding-x: 1rem; + --bs-popover-body-padding-y: 1rem; + --bs-popover-body-color: var(--bs-body-color); + --bs-popover-arrow-width: 1rem; + --bs-popover-arrow-height: 0.5rem; + --bs-popover-arrow-border: var(--bs-popover-border-color); + z-index: var(--bs-popover-zindex); + display: block; + max-width: var(--bs-popover-max-width); + font-family: var(--bs-font-sans-serif); + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + white-space: normal; + word-spacing: normal; + line-break: auto; + font-size: var(--bs-popover-font-size); + word-wrap: break-word; + background-color: var(--bs-popover-bg); + background-clip: padding-box; + border: var(--bs-popover-border-width) solid var(--bs-popover-border-color); + border-radius: var(--bs-popover-border-radius); +} +.popover .popover-arrow { + display: block; + width: var(--bs-popover-arrow-width); + height: var(--bs-popover-arrow-height); +} +.popover .popover-arrow::before, .popover .popover-arrow::after { + position: absolute; + display: block; + content: ""; + border-color: transparent; + border-style: solid; + border-width: 0; +} + +.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow { + bottom: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); +} +.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before, .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after { + border-width: var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0; +} +.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before { + bottom: 0; + border-top-color: var(--bs-popover-arrow-border); +} +.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after { + bottom: var(--bs-popover-border-width); + border-top-color: var(--bs-popover-bg); +} + +/* rtl:begin:ignore */ +.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow { + left: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); + width: var(--bs-popover-arrow-height); + height: var(--bs-popover-arrow-width); +} +.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before, .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after { + border-width: calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0; +} +.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before { + left: 0; + border-right-color: var(--bs-popover-arrow-border); +} +.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after { + left: var(--bs-popover-border-width); + border-right-color: var(--bs-popover-bg); +} + +/* rtl:end:ignore */ +.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow { + top: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); +} +.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before, .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after { + border-width: 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height); +} +.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before { + top: 0; + border-bottom-color: var(--bs-popover-arrow-border); +} +.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after { + top: var(--bs-popover-border-width); + border-bottom-color: var(--bs-popover-bg); +} +.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: var(--bs-popover-arrow-width); + margin-left: calc(-0.5 * var(--bs-popover-arrow-width)); + content: ""; + border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-header-bg); +} + +/* rtl:begin:ignore */ +.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow { + right: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); + width: var(--bs-popover-arrow-height); + height: var(--bs-popover-arrow-width); +} +.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before, .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after { + border-width: calc(var(--bs-popover-arrow-width) * 0.5) 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height); +} +.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before { + right: 0; + border-left-color: var(--bs-popover-arrow-border); +} +.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after { + right: var(--bs-popover-border-width); + border-left-color: var(--bs-popover-bg); +} + +/* rtl:end:ignore */ +.popover-header { + padding: var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x); + margin-bottom: 0; + font-size: var(--bs-popover-header-font-size); + color: var(--bs-popover-header-color); + background-color: var(--bs-popover-header-bg); + border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-border-color); + border-top-left-radius: var(--bs-popover-inner-border-radius); + border-top-right-radius: var(--bs-popover-inner-border-radius); +} +.popover-header:empty { + display: none; +} + +.popover-body { + padding: var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x); + color: var(--bs-popover-body-color); +} + +.carousel { + position: relative; +} + +.carousel.pointer-event { + touch-action: pan-y; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} +.carousel-inner::after { + display: block; + clear: both; + content: ""; +} + +.carousel-item { + position: relative; + display: none; + float: left; + width: 100%; + margin-right: -100%; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + transition: transform 0.6s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .carousel-item { + transition: none; + } +} + +.carousel-item.active, +.carousel-item-next, +.carousel-item-prev { + display: block; +} + +.carousel-item-next:not(.carousel-item-start), +.active.carousel-item-end { + transform: translateX(100%); +} + +.carousel-item-prev:not(.carousel-item-end), +.active.carousel-item-start { + transform: translateX(-100%); +} + +.carousel-fade .carousel-item { + opacity: 0; + transition-property: opacity; + transform: none; +} +.carousel-fade .carousel-item.active, +.carousel-fade .carousel-item-next.carousel-item-start, +.carousel-fade .carousel-item-prev.carousel-item-end { + z-index: 1; + opacity: 1; +} +.carousel-fade .active.carousel-item-start, +.carousel-fade .active.carousel-item-end { + z-index: 0; + opacity: 0; + transition: opacity 0s 0.6s; +} +@media (prefers-reduced-motion: reduce) { + .carousel-fade .active.carousel-item-start, + .carousel-fade .active.carousel-item-end { + transition: none; + } +} + +.carousel-control-prev, +.carousel-control-next { + position: absolute; + top: 0; + bottom: 0; + z-index: 1; + display: flex; + align-items: center; + justify-content: center; + width: 15%; + padding: 0; + color: #fff; + text-align: center; + background: none; + border: 0; + opacity: 0.5; + transition: opacity 0.15s ease; +} +@media (prefers-reduced-motion: reduce) { + .carousel-control-prev, + .carousel-control-next { + transition: none; + } +} +.carousel-control-prev:hover, .carousel-control-prev:focus, +.carousel-control-next:hover, +.carousel-control-next:focus { + color: #fff; + text-decoration: none; + outline: 0; + opacity: 0.9; +} + +.carousel-control-prev { + left: 0; +} + +.carousel-control-next { + right: 0; +} + +.carousel-control-prev-icon, +.carousel-control-next-icon { + display: inline-block; + width: 2rem; + height: 2rem; + background-repeat: no-repeat; + background-position: 50%; + background-size: 100% 100%; +} + +/* rtl:options: { + "autoRename": true, + "stringMap":[ { + "name" : "prev-next", + "search" : "prev", + "replace" : "next" + } ] +} */ +.carousel-control-prev-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e"); +} + +.carousel-control-next-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); +} + +.carousel-indicators { + position: absolute; + right: 0; + bottom: 0; + left: 0; + z-index: 2; + display: flex; + justify-content: center; + padding: 0; + margin-right: 15%; + margin-bottom: 1rem; + margin-left: 15%; +} +.carousel-indicators [data-bs-target] { + box-sizing: content-box; + flex: 0 1 auto; + width: 30px; + height: 3px; + padding: 0; + margin-right: 3px; + margin-left: 3px; + text-indent: -999px; + cursor: pointer; + background-color: #fff; + background-clip: padding-box; + border: 0; + border-top: 10px solid transparent; + border-bottom: 10px solid transparent; + opacity: 0.5; + transition: opacity 0.6s ease; +} +@media (prefers-reduced-motion: reduce) { + .carousel-indicators [data-bs-target] { + transition: none; + } +} +.carousel-indicators .active { + opacity: 1; +} + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 1.25rem; + left: 15%; + padding-top: 1.25rem; + padding-bottom: 1.25rem; + color: #fff; + text-align: center; +} + +.carousel-dark .carousel-control-prev-icon, +.carousel-dark .carousel-control-next-icon { + filter: invert(1) grayscale(100); +} +.carousel-dark .carousel-indicators [data-bs-target] { + background-color: #000; +} +.carousel-dark .carousel-caption { + color: #000; +} + +[data-bs-theme=dark] .carousel .carousel-control-prev-icon, +[data-bs-theme=dark] .carousel .carousel-control-next-icon, [data-bs-theme=dark].carousel .carousel-control-prev-icon, +[data-bs-theme=dark].carousel .carousel-control-next-icon { + filter: invert(1) grayscale(100); +} +[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target], [data-bs-theme=dark].carousel .carousel-indicators [data-bs-target] { + background-color: #000; +} +[data-bs-theme=dark] .carousel .carousel-caption, [data-bs-theme=dark].carousel .carousel-caption { + color: #000; +} + +.spinner-grow, +.spinner-border { + display: inline-block; + width: var(--bs-spinner-width); + height: var(--bs-spinner-height); + vertical-align: var(--bs-spinner-vertical-align); + border-radius: 50%; + animation: var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name); +} + +@keyframes spinner-border { + to { + transform: rotate(360deg) /* rtl:ignore */; + } +} +.spinner-border { + --bs-spinner-width: 2rem; + --bs-spinner-height: 2rem; + --bs-spinner-vertical-align: -0.125em; + --bs-spinner-border-width: 0.25em; + --bs-spinner-animation-speed: 0.75s; + --bs-spinner-animation-name: spinner-border; + border: var(--bs-spinner-border-width) solid currentcolor; + border-right-color: transparent; +} + +.spinner-border-sm { + --bs-spinner-width: 1rem; + --bs-spinner-height: 1rem; + --bs-spinner-border-width: 0.2em; +} + +@keyframes spinner-grow { + 0% { + transform: scale(0); + } + 50% { + opacity: 1; + transform: none; + } +} +.spinner-grow { + --bs-spinner-width: 2rem; + --bs-spinner-height: 2rem; + --bs-spinner-vertical-align: -0.125em; + --bs-spinner-animation-speed: 0.75s; + --bs-spinner-animation-name: spinner-grow; + background-color: currentcolor; + opacity: 0; +} + +.spinner-grow-sm { + --bs-spinner-width: 1rem; + --bs-spinner-height: 1rem; +} + +@media (prefers-reduced-motion: reduce) { + .spinner-border, + .spinner-grow { + --bs-spinner-animation-speed: 1.5s; + } +} +.offcanvas, .offcanvas-xxl, .offcanvas-xl, .offcanvas-lg, .offcanvas-md, .offcanvas-sm { + --bs-offcanvas-zindex: 1045; + --bs-offcanvas-width: 400px; + --bs-offcanvas-height: 30vh; + --bs-offcanvas-padding-x: 1rem; + --bs-offcanvas-padding-y: 1rem; + --bs-offcanvas-color: var(--bs-body-color); + --bs-offcanvas-bg: var(--bs-body-bg); + --bs-offcanvas-border-width: var(--bs-border-width); + --bs-offcanvas-border-color: var(--bs-border-color-translucent); + --bs-offcanvas-box-shadow: var(--bs-box-shadow-sm); + --bs-offcanvas-transition: transform 0.3s ease-in-out; + --bs-offcanvas-title-line-height: 1.5; +} + +@media (max-width: 575.98px) { + .offcanvas-sm { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: var(--bs-offcanvas-transition); + } +} +@media (max-width: 575.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-sm { + transition: none; + } +} +@media (max-width: 575.98px) { + .offcanvas-sm.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-sm.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-sm.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-sm.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-sm.showing, .offcanvas-sm.show:not(.hiding) { + transform: none; + } + .offcanvas-sm.showing, .offcanvas-sm.hiding, .offcanvas-sm.show { + visibility: visible; + } +} +@media (min-width: 576px) { + .offcanvas-sm { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-sm .offcanvas-header { + display: none; + } + .offcanvas-sm .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 767.98px) { + .offcanvas-md { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: var(--bs-offcanvas-transition); + } +} +@media (max-width: 767.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-md { + transition: none; + } +} +@media (max-width: 767.98px) { + .offcanvas-md.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-md.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-md.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-md.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-md.showing, .offcanvas-md.show:not(.hiding) { + transform: none; + } + .offcanvas-md.showing, .offcanvas-md.hiding, .offcanvas-md.show { + visibility: visible; + } +} +@media (min-width: 768px) { + .offcanvas-md { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-md .offcanvas-header { + display: none; + } + .offcanvas-md .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 991.98px) { + .offcanvas-lg { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: var(--bs-offcanvas-transition); + } +} +@media (max-width: 991.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-lg { + transition: none; + } +} +@media (max-width: 991.98px) { + .offcanvas-lg.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-lg.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-lg.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-lg.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-lg.showing, .offcanvas-lg.show:not(.hiding) { + transform: none; + } + .offcanvas-lg.showing, .offcanvas-lg.hiding, .offcanvas-lg.show { + visibility: visible; + } +} +@media (min-width: 992px) { + .offcanvas-lg { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-lg .offcanvas-header { + display: none; + } + .offcanvas-lg .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 1199.98px) { + .offcanvas-xl { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: var(--bs-offcanvas-transition); + } +} +@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-xl { + transition: none; + } +} +@media (max-width: 1199.98px) { + .offcanvas-xl.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-xl.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-xl.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-xl.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-xl.showing, .offcanvas-xl.show:not(.hiding) { + transform: none; + } + .offcanvas-xl.showing, .offcanvas-xl.hiding, .offcanvas-xl.show { + visibility: visible; + } +} +@media (min-width: 1200px) { + .offcanvas-xl { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-xl .offcanvas-header { + display: none; + } + .offcanvas-xl .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 1399.98px) { + .offcanvas-xxl { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: var(--bs-offcanvas-transition); + } +} +@media (max-width: 1399.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-xxl { + transition: none; + } +} +@media (max-width: 1399.98px) { + .offcanvas-xxl.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-xxl.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-xxl.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-xxl.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-xxl.showing, .offcanvas-xxl.show:not(.hiding) { + transform: none; + } + .offcanvas-xxl.showing, .offcanvas-xxl.hiding, .offcanvas-xxl.show { + visibility: visible; + } +} +@media (min-width: 1400px) { + .offcanvas-xxl { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-xxl .offcanvas-header { + display: none; + } + .offcanvas-xxl .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +.offcanvas { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: var(--bs-offcanvas-transition); +} +@media (prefers-reduced-motion: reduce) { + .offcanvas { + transition: none; + } +} +.offcanvas.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); +} +.offcanvas.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); +} +.offcanvas.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); +} +.offcanvas.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); +} +.offcanvas.showing, .offcanvas.show:not(.hiding) { + transform: none; +} +.offcanvas.showing, .offcanvas.hiding, .offcanvas.show { + visibility: visible; +} + +.offcanvas-backdrop { + position: fixed; + top: 0; + left: 0; + z-index: 1040; + width: 100vw; + height: 100vh; + background-color: #000; +} +.offcanvas-backdrop.fade { + opacity: 0; +} +.offcanvas-backdrop.show { + opacity: 0.5; +} + +.offcanvas-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x); +} +.offcanvas-header .btn-close { + padding: calc(var(--bs-offcanvas-padding-y) * 0.5) calc(var(--bs-offcanvas-padding-x) * 0.5); + margin-top: calc(-0.5 * var(--bs-offcanvas-padding-y)); + margin-right: calc(-0.5 * var(--bs-offcanvas-padding-x)); + margin-bottom: calc(-0.5 * var(--bs-offcanvas-padding-y)); +} + +.offcanvas-title { + margin-bottom: 0; + line-height: var(--bs-offcanvas-title-line-height); +} + +.offcanvas-body { + flex-grow: 1; + padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x); + overflow-y: auto; +} + +.placeholder { + display: inline-block; + min-height: 1em; + vertical-align: middle; + cursor: wait; + background-color: currentcolor; + opacity: 0.5; +} +.placeholder.btn::before { + display: inline-block; + content: ""; +} + +.placeholder-xs { + min-height: 0.6em; +} + +.placeholder-sm { + min-height: 0.8em; +} + +.placeholder-lg { + min-height: 1.2em; +} + +.placeholder-glow .placeholder { + animation: placeholder-glow 2s ease-in-out infinite; +} + +@keyframes placeholder-glow { + 50% { + opacity: 0.2; + } +} +.placeholder-wave { + -webkit-mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%); + mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%); + -webkit-mask-size: 200% 100%; + mask-size: 200% 100%; + animation: placeholder-wave 2s linear infinite; +} + +@keyframes placeholder-wave { + 100% { + -webkit-mask-position: -200% 0%; + mask-position: -200% 0%; + } +} +.clearfix::after { + display: block; + clear: both; + content: ""; +} + +.text-bg-primary { + color: #fff !important; + background-color: RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-secondary { + color: #fff !important; + background-color: RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-success { + color: #fff !important; + background-color: RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-info { + color: #000 !important; + background-color: RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-warning { + color: #000 !important; + background-color: RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-danger { + color: #fff !important; + background-color: RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-light { + color: #000 !important; + background-color: RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-dark { + color: #fff !important; + background-color: RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important; +} + +.link-primary { + color: RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important; +} +.link-primary:hover, .link-primary:focus { + color: RGBA(10, 88, 202, var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(10, 88, 202, var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(10, 88, 202, var(--bs-link-underline-opacity, 1)) !important; +} + +.link-secondary { + color: RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important; +} +.link-secondary:hover, .link-secondary:focus { + color: RGBA(86, 94, 100, var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(86, 94, 100, var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(86, 94, 100, var(--bs-link-underline-opacity, 1)) !important; +} + +.link-success { + color: RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important; +} +.link-success:hover, .link-success:focus { + color: RGBA(20, 108, 67, var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(20, 108, 67, var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(20, 108, 67, var(--bs-link-underline-opacity, 1)) !important; +} + +.link-info { + color: RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important; +} +.link-info:hover, .link-info:focus { + color: RGBA(61, 213, 243, var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) !important; +} + +.link-warning { + color: RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important; +} +.link-warning:hover, .link-warning:focus { + color: RGBA(255, 205, 57, var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(255, 205, 57, var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(255, 205, 57, var(--bs-link-underline-opacity, 1)) !important; +} + +.link-danger { + color: RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important; +} +.link-danger:hover, .link-danger:focus { + color: RGBA(176, 42, 55, var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(176, 42, 55, var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(176, 42, 55, var(--bs-link-underline-opacity, 1)) !important; +} + +.link-light { + color: RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important; +} +.link-light:hover, .link-light:focus { + color: RGBA(249, 250, 251, var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(249, 250, 251, var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(249, 250, 251, var(--bs-link-underline-opacity, 1)) !important; +} + +.link-dark { + color: RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important; +} +.link-dark:hover, .link-dark:focus { + color: RGBA(26, 30, 33, var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(26, 30, 33, var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(26, 30, 33, var(--bs-link-underline-opacity, 1)) !important; +} + +.link-body-emphasis { + color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important; +} +.link-body-emphasis:hover, .link-body-emphasis:focus { + color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) !important; + -webkit-text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important; + text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important; +} + +.focus-ring:focus { + outline: 0; + box-shadow: var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color); +} + +.icon-link { + display: inline-flex; + gap: 0.375rem; + align-items: center; + -webkit-text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5)); + text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5)); + text-underline-offset: 0.25em; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +.icon-link > .bi { + flex-shrink: 0; + width: 1em; + height: 1em; + fill: currentcolor; + transition: 0.2s ease-in-out transform; +} +@media (prefers-reduced-motion: reduce) { + .icon-link > .bi { + transition: none; + } +} + +.icon-link-hover:hover > .bi, .icon-link-hover:focus-visible > .bi { + transform: var(--bs-icon-link-transform, translate3d(0.25em, 0, 0)); +} + +.ratio { + position: relative; + width: 100%; +} +.ratio::before { + display: block; + padding-top: var(--bs-aspect-ratio); + content: ""; +} +.ratio > * { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.ratio-1x1 { + --bs-aspect-ratio: 100%; +} + +.ratio-4x3 { + --bs-aspect-ratio: 75%; +} + +.ratio-16x9 { + --bs-aspect-ratio: 56.25%; +} + +.ratio-21x9 { + --bs-aspect-ratio: 42.8571428571%; +} + +.fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; +} + +.fixed-bottom { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; +} + +.sticky-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; +} + +.sticky-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; +} + +@media (min-width: 576px) { + .sticky-sm-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-sm-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 768px) { + .sticky-md-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-md-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 992px) { + .sticky-lg-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-lg-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 1200px) { + .sticky-xl-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-xl-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 1400px) { + .sticky-xxl-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-xxl-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} +.hstack { + display: flex; + flex-direction: row; + align-items: center; + align-self: stretch; +} + +.vstack { + display: flex; + flex: 1 1 auto; + flex-direction: column; + align-self: stretch; +} + +.visually-hidden, +.visually-hidden-focusable:not(:focus):not(:focus-within) { + width: 1px !important; + height: 1px !important; + padding: 0 !important; + margin: -1px !important; + overflow: hidden !important; + clip: rect(0, 0, 0, 0) !important; + white-space: nowrap !important; + border: 0 !important; +} +.visually-hidden:not(caption), +.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption) { + position: absolute !important; +} + +.stretched-link::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1; + content: ""; +} + +.text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.vr { + display: inline-block; + align-self: stretch; + width: var(--bs-border-width); + min-height: 1em; + background-color: currentcolor; + opacity: 0.25; +} + +.align-baseline { + vertical-align: baseline !important; +} + +.align-top { + vertical-align: top !important; +} + +.align-middle { + vertical-align: middle !important; +} + +.align-bottom { + vertical-align: bottom !important; +} + +.align-text-bottom { + vertical-align: text-bottom !important; +} + +.align-text-top { + vertical-align: text-top !important; +} + +.float-start { + float: left !important; +} + +.float-end { + float: right !important; +} + +.float-none { + float: none !important; +} + +.object-fit-contain { + -o-object-fit: contain !important; + object-fit: contain !important; +} + +.object-fit-cover { + -o-object-fit: cover !important; + object-fit: cover !important; +} + +.object-fit-fill { + -o-object-fit: fill !important; + object-fit: fill !important; +} + +.object-fit-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; +} + +.object-fit-none { + -o-object-fit: none !important; + object-fit: none !important; +} + +.opacity-0 { + opacity: 0 !important; +} + +.opacity-25 { + opacity: 0.25 !important; +} + +.opacity-50 { + opacity: 0.5 !important; +} + +.opacity-75 { + opacity: 0.75 !important; +} + +.opacity-100 { + opacity: 1 !important; +} + +.overflow-auto { + overflow: auto !important; +} + +.overflow-hidden { + overflow: hidden !important; +} + +.overflow-visible { + overflow: visible !important; +} + +.overflow-scroll { + overflow: scroll !important; +} + +.overflow-x-auto { + overflow-x: auto !important; +} + +.overflow-x-hidden { + overflow-x: hidden !important; +} + +.overflow-x-visible { + overflow-x: visible !important; +} + +.overflow-x-scroll { + overflow-x: scroll !important; +} + +.overflow-y-auto { + overflow-y: auto !important; +} + +.overflow-y-hidden { + overflow-y: hidden !important; +} + +.overflow-y-visible { + overflow-y: visible !important; +} + +.overflow-y-scroll { + overflow-y: scroll !important; +} + +.d-inline { + display: inline !important; +} + +.d-inline-block { + display: inline-block !important; +} + +.d-block { + display: block !important; +} + +.d-grid { + display: grid !important; +} + +.d-inline-grid { + display: inline-grid !important; +} + +.d-table { + display: table !important; +} + +.d-table-row { + display: table-row !important; +} + +.d-table-cell { + display: table-cell !important; +} + +.d-flex { + display: flex !important; +} + +.d-inline-flex { + display: inline-flex !important; +} + +.d-none { + display: none !important; +} + +.shadow { + box-shadow: var(--bs-box-shadow) !important; +} + +.shadow-sm { + box-shadow: var(--bs-box-shadow-sm) !important; +} + +.shadow-lg { + box-shadow: var(--bs-box-shadow-lg) !important; +} + +.shadow-none { + box-shadow: none !important; +} + +.focus-ring-primary { + --bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity)); +} + +.focus-ring-secondary { + --bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity)); +} + +.focus-ring-success { + --bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity)); +} + +.focus-ring-info { + --bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity)); +} + +.focus-ring-warning { + --bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity)); +} + +.focus-ring-danger { + --bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity)); +} + +.focus-ring-light { + --bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity)); +} + +.focus-ring-dark { + --bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity)); +} + +.position-static { + position: static !important; +} + +.position-relative { + position: relative !important; +} + +.position-absolute { + position: absolute !important; +} + +.position-fixed { + position: fixed !important; +} + +.position-sticky { + position: -webkit-sticky !important; + position: sticky !important; +} + +.top-0 { + top: 0 !important; +} + +.top-50 { + top: 50% !important; +} + +.top-100 { + top: 100% !important; +} + +.bottom-0 { + bottom: 0 !important; +} + +.bottom-50 { + bottom: 50% !important; +} + +.bottom-100 { + bottom: 100% !important; +} + +.start-0 { + left: 0 !important; +} + +.start-50 { + left: 50% !important; +} + +.start-100 { + left: 100% !important; +} + +.end-0 { + right: 0 !important; +} + +.end-50 { + right: 50% !important; +} + +.end-100 { + right: 100% !important; +} + +.translate-middle { + transform: translate(-50%, -50%) !important; +} + +.translate-middle-x { + transform: translateX(-50%) !important; +} + +.translate-middle-y { + transform: translateY(-50%) !important; +} + +.border { + border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-0 { + border: 0 !important; +} + +.border-top { + border-top: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-top-0 { + border-top: 0 !important; +} + +.border-end { + border-right: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-end-0 { + border-right: 0 !important; +} + +.border-bottom { + border-bottom: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-bottom-0 { + border-bottom: 0 !important; +} + +.border-start { + border-left: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-start-0 { + border-left: 0 !important; +} + +.border-primary { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important; +} + +.border-secondary { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important; +} + +.border-success { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important; +} + +.border-info { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important; +} + +.border-warning { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important; +} + +.border-danger { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important; +} + +.border-light { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important; +} + +.border-dark { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important; +} + +.border-black { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important; +} + +.border-white { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important; +} + +.border-primary-subtle { + border-color: var(--bs-primary-border-subtle) !important; +} + +.border-secondary-subtle { + border-color: var(--bs-secondary-border-subtle) !important; +} + +.border-success-subtle { + border-color: var(--bs-success-border-subtle) !important; +} + +.border-info-subtle { + border-color: var(--bs-info-border-subtle) !important; +} + +.border-warning-subtle { + border-color: var(--bs-warning-border-subtle) !important; +} + +.border-danger-subtle { + border-color: var(--bs-danger-border-subtle) !important; +} + +.border-light-subtle { + border-color: var(--bs-light-border-subtle) !important; +} + +.border-dark-subtle { + border-color: var(--bs-dark-border-subtle) !important; +} + +.border-1 { + border-width: 1px !important; +} + +.border-2 { + border-width: 2px !important; +} + +.border-3 { + border-width: 3px !important; +} + +.border-4 { + border-width: 4px !important; +} + +.border-5 { + border-width: 5px !important; +} + +.border-opacity-10 { + --bs-border-opacity: 0.1; +} + +.border-opacity-25 { + --bs-border-opacity: 0.25; +} + +.border-opacity-50 { + --bs-border-opacity: 0.5; +} + +.border-opacity-75 { + --bs-border-opacity: 0.75; +} + +.border-opacity-100 { + --bs-border-opacity: 1; +} + +.w-25 { + width: 25% !important; +} + +.w-50 { + width: 50% !important; +} + +.w-75 { + width: 75% !important; +} + +.w-100 { + width: 100% !important; +} + +.w-auto { + width: auto !important; +} + +.mw-100 { + max-width: 100% !important; +} + +.vw-100 { + width: 100vw !important; +} + +.min-vw-100 { + min-width: 100vw !important; +} + +.h-25 { + height: 25% !important; +} + +.h-50 { + height: 50% !important; +} + +.h-75 { + height: 75% !important; +} + +.h-100 { + height: 100% !important; +} + +.h-auto { + height: auto !important; +} + +.mh-100 { + max-height: 100% !important; +} + +.vh-100 { + height: 100vh !important; +} + +.min-vh-100 { + min-height: 100vh !important; +} + +.flex-fill { + flex: 1 1 auto !important; +} + +.flex-row { + flex-direction: row !important; +} + +.flex-column { + flex-direction: column !important; +} + +.flex-row-reverse { + flex-direction: row-reverse !important; +} + +.flex-column-reverse { + flex-direction: column-reverse !important; +} + +.flex-grow-0 { + flex-grow: 0 !important; +} + +.flex-grow-1 { + flex-grow: 1 !important; +} + +.flex-shrink-0 { + flex-shrink: 0 !important; +} + +.flex-shrink-1 { + flex-shrink: 1 !important; +} + +.flex-wrap { + flex-wrap: wrap !important; +} + +.flex-nowrap { + flex-wrap: nowrap !important; +} + +.flex-wrap-reverse { + flex-wrap: wrap-reverse !important; +} + +.justify-content-start { + justify-content: flex-start !important; +} + +.justify-content-end { + justify-content: flex-end !important; +} + +.justify-content-center { + justify-content: center !important; +} + +.justify-content-between { + justify-content: space-between !important; +} + +.justify-content-around { + justify-content: space-around !important; +} + +.justify-content-evenly { + justify-content: space-evenly !important; +} + +.align-items-start { + align-items: flex-start !important; +} + +.align-items-end { + align-items: flex-end !important; +} + +.align-items-center { + align-items: center !important; +} + +.align-items-baseline { + align-items: baseline !important; +} + +.align-items-stretch { + align-items: stretch !important; +} + +.align-content-start { + align-content: flex-start !important; +} + +.align-content-end { + align-content: flex-end !important; +} + +.align-content-center { + align-content: center !important; +} + +.align-content-between { + align-content: space-between !important; +} + +.align-content-around { + align-content: space-around !important; +} + +.align-content-stretch { + align-content: stretch !important; +} + +.align-self-auto { + align-self: auto !important; +} + +.align-self-start { + align-self: flex-start !important; +} + +.align-self-end { + align-self: flex-end !important; +} + +.align-self-center { + align-self: center !important; +} + +.align-self-baseline { + align-self: baseline !important; +} + +.align-self-stretch { + align-self: stretch !important; +} + +.order-first { + order: -1 !important; +} + +.order-0 { + order: 0 !important; +} + +.order-1 { + order: 1 !important; +} + +.order-2 { + order: 2 !important; +} + +.order-3 { + order: 3 !important; +} + +.order-4 { + order: 4 !important; +} + +.order-5 { + order: 5 !important; +} + +.order-last { + order: 6 !important; +} + +.m-0 { + margin: 0 !important; +} + +.m-1 { + margin: 0.25rem !important; +} + +.m-2 { + margin: 0.5rem !important; +} + +.m-3 { + margin: 1rem !important; +} + +.m-4 { + margin: 1.5rem !important; +} + +.m-5 { + margin: 3rem !important; +} + +.m-auto { + margin: auto !important; +} + +.mx-0 { + margin-right: 0 !important; + margin-left: 0 !important; +} + +.mx-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; +} + +.mx-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; +} + +.mx-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; +} + +.mx-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; +} + +.mx-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; +} + +.mx-auto { + margin-right: auto !important; + margin-left: auto !important; +} + +.my-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.my-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; +} + +.my-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; +} + +.my-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; +} + +.my-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; +} + +.my-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; +} + +.my-auto { + margin-top: auto !important; + margin-bottom: auto !important; +} + +.mt-0 { + margin-top: 0 !important; +} + +.mt-1 { + margin-top: 0.25rem !important; +} + +.mt-2 { + margin-top: 0.5rem !important; +} + +.mt-3 { + margin-top: 1rem !important; +} + +.mt-4 { + margin-top: 1.5rem !important; +} + +.mt-5 { + margin-top: 3rem !important; +} + +.mt-auto { + margin-top: auto !important; +} + +.me-0 { + margin-right: 0 !important; +} + +.me-1 { + margin-right: 0.25rem !important; +} + +.me-2 { + margin-right: 0.5rem !important; +} + +.me-3 { + margin-right: 1rem !important; +} + +.me-4 { + margin-right: 1.5rem !important; +} + +.me-5 { + margin-right: 3rem !important; +} + +.me-auto { + margin-right: auto !important; +} + +.mb-0 { + margin-bottom: 0 !important; +} + +.mb-1 { + margin-bottom: 0.25rem !important; +} + +.mb-2 { + margin-bottom: 0.5rem !important; +} + +.mb-3 { + margin-bottom: 1rem !important; +} + +.mb-4 { + margin-bottom: 1.5rem !important; +} + +.mb-5 { + margin-bottom: 3rem !important; +} + +.mb-auto { + margin-bottom: auto !important; +} + +.ms-0 { + margin-left: 0 !important; +} + +.ms-1 { + margin-left: 0.25rem !important; +} + +.ms-2 { + margin-left: 0.5rem !important; +} + +.ms-3 { + margin-left: 1rem !important; +} + +.ms-4 { + margin-left: 1.5rem !important; +} + +.ms-5 { + margin-left: 3rem !important; +} + +.ms-auto { + margin-left: auto !important; +} + +.p-0 { + padding: 0 !important; +} + +.p-1 { + padding: 0.25rem !important; +} + +.p-2 { + padding: 0.5rem !important; +} + +.p-3 { + padding: 1rem !important; +} + +.p-4 { + padding: 1.5rem !important; +} + +.p-5 { + padding: 3rem !important; +} + +.px-0 { + padding-right: 0 !important; + padding-left: 0 !important; +} + +.px-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; +} + +.px-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; +} + +.px-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; +} + +.px-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; +} + +.px-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; +} + +.py-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; +} + +.py-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; +} + +.py-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; +} + +.py-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; +} + +.py-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; +} + +.py-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; +} + +.pt-0 { + padding-top: 0 !important; +} + +.pt-1 { + padding-top: 0.25rem !important; +} + +.pt-2 { + padding-top: 0.5rem !important; +} + +.pt-3 { + padding-top: 1rem !important; +} + +.pt-4 { + padding-top: 1.5rem !important; +} + +.pt-5 { + padding-top: 3rem !important; +} + +.pe-0 { + padding-right: 0 !important; +} + +.pe-1 { + padding-right: 0.25rem !important; +} + +.pe-2 { + padding-right: 0.5rem !important; +} + +.pe-3 { + padding-right: 1rem !important; +} + +.pe-4 { + padding-right: 1.5rem !important; +} + +.pe-5 { + padding-right: 3rem !important; +} + +.pb-0 { + padding-bottom: 0 !important; +} + +.pb-1 { + padding-bottom: 0.25rem !important; +} + +.pb-2 { + padding-bottom: 0.5rem !important; +} + +.pb-3 { + padding-bottom: 1rem !important; +} + +.pb-4 { + padding-bottom: 1.5rem !important; +} + +.pb-5 { + padding-bottom: 3rem !important; +} + +.ps-0 { + padding-left: 0 !important; +} + +.ps-1 { + padding-left: 0.25rem !important; +} + +.ps-2 { + padding-left: 0.5rem !important; +} + +.ps-3 { + padding-left: 1rem !important; +} + +.ps-4 { + padding-left: 1.5rem !important; +} + +.ps-5 { + padding-left: 3rem !important; +} + +.gap-0 { + gap: 0 !important; +} + +.gap-1 { + gap: 0.25rem !important; +} + +.gap-2 { + gap: 0.5rem !important; +} + +.gap-3 { + gap: 1rem !important; +} + +.gap-4 { + gap: 1.5rem !important; +} + +.gap-5 { + gap: 3rem !important; +} + +.row-gap-0 { + row-gap: 0 !important; +} + +.row-gap-1 { + row-gap: 0.25rem !important; +} + +.row-gap-2 { + row-gap: 0.5rem !important; +} + +.row-gap-3 { + row-gap: 1rem !important; +} + +.row-gap-4 { + row-gap: 1.5rem !important; +} + +.row-gap-5 { + row-gap: 3rem !important; +} + +.column-gap-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; +} + +.column-gap-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; +} + +.column-gap-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; +} + +.column-gap-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; +} + +.column-gap-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; +} + +.column-gap-5 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; +} + +.font-monospace { + font-family: var(--bs-font-monospace) !important; +} + +.fs-1 { + font-size: calc(1.375rem + 1.5vw) !important; +} + +.fs-2 { + font-size: calc(1.325rem + 0.9vw) !important; +} + +.fs-3 { + font-size: calc(1.3rem + 0.6vw) !important; +} + +.fs-4 { + font-size: calc(1.275rem + 0.3vw) !important; +} + +.fs-5 { + font-size: 1.25rem !important; +} + +.fs-6 { + font-size: 1rem !important; +} + +.fst-italic { + font-style: italic !important; +} + +.fst-normal { + font-style: normal !important; +} + +.fw-lighter { + font-weight: lighter !important; +} + +.fw-light { + font-weight: 300 !important; +} + +.fw-normal { + font-weight: 400 !important; +} + +.fw-medium { + font-weight: 500 !important; +} + +.fw-semibold { + font-weight: 600 !important; +} + +.fw-bold { + font-weight: 700 !important; +} + +.fw-bolder { + font-weight: bolder !important; +} + +.lh-1 { + line-height: 1 !important; +} + +.lh-sm { + line-height: 1.25 !important; +} + +.lh-base { + line-height: 1.5 !important; +} + +.lh-lg { + line-height: 2 !important; +} + +.text-start { + text-align: left !important; +} + +.text-end { + text-align: right !important; +} + +.text-center { + text-align: center !important; +} + +.text-decoration-none { + text-decoration: none !important; +} + +.text-decoration-underline { + text-decoration: underline !important; +} + +.text-decoration-line-through { + text-decoration: line-through !important; +} + +.text-lowercase { + text-transform: lowercase !important; +} + +.text-uppercase { + text-transform: uppercase !important; +} + +.text-capitalize { + text-transform: capitalize !important; +} + +.text-wrap { + white-space: normal !important; +} + +.text-nowrap { + white-space: nowrap !important; +} + +/* rtl:begin:remove */ +.text-break { + word-wrap: break-word !important; + word-break: break-word !important; +} + +/* rtl:end:remove */ +.text-primary { + --bs-text-opacity: 1; + color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important; +} + +.text-secondary { + --bs-text-opacity: 1; + color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important; +} + +.text-success { + --bs-text-opacity: 1; + color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important; +} + +.text-info { + --bs-text-opacity: 1; + color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important; +} + +.text-warning { + --bs-text-opacity: 1; + color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important; +} + +.text-danger { + --bs-text-opacity: 1; + color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important; +} + +.text-light { + --bs-text-opacity: 1; + color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important; +} + +.text-dark { + --bs-text-opacity: 1; + color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important; +} + +.text-black { + --bs-text-opacity: 1; + color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important; +} + +.text-white { + --bs-text-opacity: 1; + color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important; +} + +.text-body { + --bs-text-opacity: 1; + color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important; +} + +.text-muted { + --bs-text-opacity: 1; + color: var(--bs-secondary-color) !important; +} + +.text-black-50 { + --bs-text-opacity: 1; + color: rgba(0, 0, 0, 0.5) !important; +} + +.text-white-50 { + --bs-text-opacity: 1; + color: rgba(255, 255, 255, 0.5) !important; +} + +.text-body-secondary { + --bs-text-opacity: 1; + color: var(--bs-secondary-color) !important; +} + +.text-body-tertiary { + --bs-text-opacity: 1; + color: var(--bs-tertiary-color) !important; +} + +.text-body-emphasis { + --bs-text-opacity: 1; + color: var(--bs-emphasis-color) !important; +} + +.text-reset { + --bs-text-opacity: 1; + color: inherit !important; +} + +.text-opacity-25 { + --bs-text-opacity: 0.25; +} + +.text-opacity-50 { + --bs-text-opacity: 0.5; +} + +.text-opacity-75 { + --bs-text-opacity: 0.75; +} + +.text-opacity-100 { + --bs-text-opacity: 1; +} + +.text-primary-emphasis { + color: var(--bs-primary-text-emphasis) !important; +} + +.text-secondary-emphasis { + color: var(--bs-secondary-text-emphasis) !important; +} + +.text-success-emphasis { + color: var(--bs-success-text-emphasis) !important; +} + +.text-info-emphasis { + color: var(--bs-info-text-emphasis) !important; +} + +.text-warning-emphasis { + color: var(--bs-warning-text-emphasis) !important; +} + +.text-danger-emphasis { + color: var(--bs-danger-text-emphasis) !important; +} + +.text-light-emphasis { + color: var(--bs-light-text-emphasis) !important; +} + +.text-dark-emphasis { + color: var(--bs-dark-text-emphasis) !important; +} + +.link-opacity-10 { + --bs-link-opacity: 0.1; +} + +.link-opacity-10-hover:hover { + --bs-link-opacity: 0.1; +} + +.link-opacity-25 { + --bs-link-opacity: 0.25; +} + +.link-opacity-25-hover:hover { + --bs-link-opacity: 0.25; +} + +.link-opacity-50 { + --bs-link-opacity: 0.5; +} + +.link-opacity-50-hover:hover { + --bs-link-opacity: 0.5; +} + +.link-opacity-75 { + --bs-link-opacity: 0.75; +} + +.link-opacity-75-hover:hover { + --bs-link-opacity: 0.75; +} + +.link-opacity-100 { + --bs-link-opacity: 1; +} + +.link-opacity-100-hover:hover { + --bs-link-opacity: 1; +} + +.link-offset-1 { + text-underline-offset: 0.125em !important; +} + +.link-offset-1-hover:hover { + text-underline-offset: 0.125em !important; +} + +.link-offset-2 { + text-underline-offset: 0.25em !important; +} + +.link-offset-2-hover:hover { + text-underline-offset: 0.25em !important; +} + +.link-offset-3 { + text-underline-offset: 0.375em !important; +} + +.link-offset-3-hover:hover { + text-underline-offset: 0.375em !important; +} + +.link-underline-primary { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important; +} + +.link-underline-secondary { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important; +} + +.link-underline-success { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important; +} + +.link-underline-info { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important; +} + +.link-underline-warning { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important; +} + +.link-underline-danger { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important; +} + +.link-underline-light { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important; +} + +.link-underline-dark { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important; +} + +.link-underline { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important; +} + +.link-underline-opacity-0 { + --bs-link-underline-opacity: 0; +} + +.link-underline-opacity-0-hover:hover { + --bs-link-underline-opacity: 0; +} + +.link-underline-opacity-10 { + --bs-link-underline-opacity: 0.1; +} + +.link-underline-opacity-10-hover:hover { + --bs-link-underline-opacity: 0.1; +} + +.link-underline-opacity-25 { + --bs-link-underline-opacity: 0.25; +} + +.link-underline-opacity-25-hover:hover { + --bs-link-underline-opacity: 0.25; +} + +.link-underline-opacity-50 { + --bs-link-underline-opacity: 0.5; +} + +.link-underline-opacity-50-hover:hover { + --bs-link-underline-opacity: 0.5; +} + +.link-underline-opacity-75 { + --bs-link-underline-opacity: 0.75; +} + +.link-underline-opacity-75-hover:hover { + --bs-link-underline-opacity: 0.75; +} + +.link-underline-opacity-100 { + --bs-link-underline-opacity: 1; +} + +.link-underline-opacity-100-hover:hover { + --bs-link-underline-opacity: 1; +} + +.bg-primary { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-secondary { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-success { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-info { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-warning { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-danger { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-light { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-dark { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-black { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-white { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-body { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-transparent { + --bs-bg-opacity: 1; + background-color: transparent !important; +} + +.bg-body-secondary { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-body-tertiary { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-opacity-10 { + --bs-bg-opacity: 0.1; +} + +.bg-opacity-25 { + --bs-bg-opacity: 0.25; +} + +.bg-opacity-50 { + --bs-bg-opacity: 0.5; +} + +.bg-opacity-75 { + --bs-bg-opacity: 0.75; +} + +.bg-opacity-100 { + --bs-bg-opacity: 1; +} + +.bg-primary-subtle { + background-color: var(--bs-primary-bg-subtle) !important; +} + +.bg-secondary-subtle { + background-color: var(--bs-secondary-bg-subtle) !important; +} + +.bg-success-subtle { + background-color: var(--bs-success-bg-subtle) !important; +} + +.bg-info-subtle { + background-color: var(--bs-info-bg-subtle) !important; +} + +.bg-warning-subtle { + background-color: var(--bs-warning-bg-subtle) !important; +} + +.bg-danger-subtle { + background-color: var(--bs-danger-bg-subtle) !important; +} + +.bg-light-subtle { + background-color: var(--bs-light-bg-subtle) !important; +} + +.bg-dark-subtle { + background-color: var(--bs-dark-bg-subtle) !important; +} + +.bg-gradient { + background-image: var(--bs-gradient) !important; +} + +.user-select-all { + -webkit-user-select: all !important; + -moz-user-select: all !important; + user-select: all !important; +} + +.user-select-auto { + -webkit-user-select: auto !important; + -moz-user-select: auto !important; + user-select: auto !important; +} + +.user-select-none { + -webkit-user-select: none !important; + -moz-user-select: none !important; + user-select: none !important; +} + +.pe-none { + pointer-events: none !important; +} + +.pe-auto { + pointer-events: auto !important; +} + +.rounded { + border-radius: var(--bs-border-radius) !important; +} + +.rounded-0 { + border-radius: 0 !important; +} + +.rounded-1 { + border-radius: var(--bs-border-radius-sm) !important; +} + +.rounded-2 { + border-radius: var(--bs-border-radius) !important; +} + +.rounded-3 { + border-radius: var(--bs-border-radius-lg) !important; +} + +.rounded-4 { + border-radius: var(--bs-border-radius-xl) !important; +} + +.rounded-5 { + border-radius: var(--bs-border-radius-xxl) !important; +} + +.rounded-circle { + border-radius: 50% !important; +} + +.rounded-pill { + border-radius: var(--bs-border-radius-pill) !important; +} + +.rounded-top { + border-top-left-radius: var(--bs-border-radius) !important; + border-top-right-radius: var(--bs-border-radius) !important; +} + +.rounded-top-0 { + border-top-left-radius: 0 !important; + border-top-right-radius: 0 !important; +} + +.rounded-top-1 { + border-top-left-radius: var(--bs-border-radius-sm) !important; + border-top-right-radius: var(--bs-border-radius-sm) !important; +} + +.rounded-top-2 { + border-top-left-radius: var(--bs-border-radius) !important; + border-top-right-radius: var(--bs-border-radius) !important; +} + +.rounded-top-3 { + border-top-left-radius: var(--bs-border-radius-lg) !important; + border-top-right-radius: var(--bs-border-radius-lg) !important; +} + +.rounded-top-4 { + border-top-left-radius: var(--bs-border-radius-xl) !important; + border-top-right-radius: var(--bs-border-radius-xl) !important; +} + +.rounded-top-5 { + border-top-left-radius: var(--bs-border-radius-xxl) !important; + border-top-right-radius: var(--bs-border-radius-xxl) !important; +} + +.rounded-top-circle { + border-top-left-radius: 50% !important; + border-top-right-radius: 50% !important; +} + +.rounded-top-pill { + border-top-left-radius: var(--bs-border-radius-pill) !important; + border-top-right-radius: var(--bs-border-radius-pill) !important; +} + +.rounded-end { + border-top-right-radius: var(--bs-border-radius) !important; + border-bottom-right-radius: var(--bs-border-radius) !important; +} + +.rounded-end-0 { + border-top-right-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} + +.rounded-end-1 { + border-top-right-radius: var(--bs-border-radius-sm) !important; + border-bottom-right-radius: var(--bs-border-radius-sm) !important; +} + +.rounded-end-2 { + border-top-right-radius: var(--bs-border-radius) !important; + border-bottom-right-radius: var(--bs-border-radius) !important; +} + +.rounded-end-3 { + border-top-right-radius: var(--bs-border-radius-lg) !important; + border-bottom-right-radius: var(--bs-border-radius-lg) !important; +} + +.rounded-end-4 { + border-top-right-radius: var(--bs-border-radius-xl) !important; + border-bottom-right-radius: var(--bs-border-radius-xl) !important; +} + +.rounded-end-5 { + border-top-right-radius: var(--bs-border-radius-xxl) !important; + border-bottom-right-radius: var(--bs-border-radius-xxl) !important; +} + +.rounded-end-circle { + border-top-right-radius: 50% !important; + border-bottom-right-radius: 50% !important; +} + +.rounded-end-pill { + border-top-right-radius: var(--bs-border-radius-pill) !important; + border-bottom-right-radius: var(--bs-border-radius-pill) !important; +} + +.rounded-bottom { + border-bottom-right-radius: var(--bs-border-radius) !important; + border-bottom-left-radius: var(--bs-border-radius) !important; +} + +.rounded-bottom-0 { + border-bottom-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} + +.rounded-bottom-1 { + border-bottom-right-radius: var(--bs-border-radius-sm) !important; + border-bottom-left-radius: var(--bs-border-radius-sm) !important; +} + +.rounded-bottom-2 { + border-bottom-right-radius: var(--bs-border-radius) !important; + border-bottom-left-radius: var(--bs-border-radius) !important; +} + +.rounded-bottom-3 { + border-bottom-right-radius: var(--bs-border-radius-lg) !important; + border-bottom-left-radius: var(--bs-border-radius-lg) !important; +} + +.rounded-bottom-4 { + border-bottom-right-radius: var(--bs-border-radius-xl) !important; + border-bottom-left-radius: var(--bs-border-radius-xl) !important; +} + +.rounded-bottom-5 { + border-bottom-right-radius: var(--bs-border-radius-xxl) !important; + border-bottom-left-radius: var(--bs-border-radius-xxl) !important; +} + +.rounded-bottom-circle { + border-bottom-right-radius: 50% !important; + border-bottom-left-radius: 50% !important; +} + +.rounded-bottom-pill { + border-bottom-right-radius: var(--bs-border-radius-pill) !important; + border-bottom-left-radius: var(--bs-border-radius-pill) !important; +} + +.rounded-start { + border-bottom-left-radius: var(--bs-border-radius) !important; + border-top-left-radius: var(--bs-border-radius) !important; +} + +.rounded-start-0 { + border-bottom-left-radius: 0 !important; + border-top-left-radius: 0 !important; +} + +.rounded-start-1 { + border-bottom-left-radius: var(--bs-border-radius-sm) !important; + border-top-left-radius: var(--bs-border-radius-sm) !important; +} + +.rounded-start-2 { + border-bottom-left-radius: var(--bs-border-radius) !important; + border-top-left-radius: var(--bs-border-radius) !important; +} + +.rounded-start-3 { + border-bottom-left-radius: var(--bs-border-radius-lg) !important; + border-top-left-radius: var(--bs-border-radius-lg) !important; +} + +.rounded-start-4 { + border-bottom-left-radius: var(--bs-border-radius-xl) !important; + border-top-left-radius: var(--bs-border-radius-xl) !important; +} + +.rounded-start-5 { + border-bottom-left-radius: var(--bs-border-radius-xxl) !important; + border-top-left-radius: var(--bs-border-radius-xxl) !important; +} + +.rounded-start-circle { + border-bottom-left-radius: 50% !important; + border-top-left-radius: 50% !important; +} + +.rounded-start-pill { + border-bottom-left-radius: var(--bs-border-radius-pill) !important; + border-top-left-radius: var(--bs-border-radius-pill) !important; +} + +.visible { + visibility: visible !important; +} + +.invisible { + visibility: hidden !important; +} + +.z-n1 { + z-index: -1 !important; +} + +.z-0 { + z-index: 0 !important; +} + +.z-1 { + z-index: 1 !important; +} + +.z-2 { + z-index: 2 !important; +} + +.z-3 { + z-index: 3 !important; +} + +@media (min-width: 576px) { + .float-sm-start { + float: left !important; + } + .float-sm-end { + float: right !important; + } + .float-sm-none { + float: none !important; + } + .object-fit-sm-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-sm-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-sm-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-sm-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-sm-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-sm-inline { + display: inline !important; + } + .d-sm-inline-block { + display: inline-block !important; + } + .d-sm-block { + display: block !important; + } + .d-sm-grid { + display: grid !important; + } + .d-sm-inline-grid { + display: inline-grid !important; + } + .d-sm-table { + display: table !important; + } + .d-sm-table-row { + display: table-row !important; + } + .d-sm-table-cell { + display: table-cell !important; + } + .d-sm-flex { + display: flex !important; + } + .d-sm-inline-flex { + display: inline-flex !important; + } + .d-sm-none { + display: none !important; + } + .flex-sm-fill { + flex: 1 1 auto !important; + } + .flex-sm-row { + flex-direction: row !important; + } + .flex-sm-column { + flex-direction: column !important; + } + .flex-sm-row-reverse { + flex-direction: row-reverse !important; + } + .flex-sm-column-reverse { + flex-direction: column-reverse !important; + } + .flex-sm-grow-0 { + flex-grow: 0 !important; + } + .flex-sm-grow-1 { + flex-grow: 1 !important; + } + .flex-sm-shrink-0 { + flex-shrink: 0 !important; + } + .flex-sm-shrink-1 { + flex-shrink: 1 !important; + } + .flex-sm-wrap { + flex-wrap: wrap !important; + } + .flex-sm-nowrap { + flex-wrap: nowrap !important; + } + .flex-sm-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-sm-start { + justify-content: flex-start !important; + } + .justify-content-sm-end { + justify-content: flex-end !important; + } + .justify-content-sm-center { + justify-content: center !important; + } + .justify-content-sm-between { + justify-content: space-between !important; + } + .justify-content-sm-around { + justify-content: space-around !important; + } + .justify-content-sm-evenly { + justify-content: space-evenly !important; + } + .align-items-sm-start { + align-items: flex-start !important; + } + .align-items-sm-end { + align-items: flex-end !important; + } + .align-items-sm-center { + align-items: center !important; + } + .align-items-sm-baseline { + align-items: baseline !important; + } + .align-items-sm-stretch { + align-items: stretch !important; + } + .align-content-sm-start { + align-content: flex-start !important; + } + .align-content-sm-end { + align-content: flex-end !important; + } + .align-content-sm-center { + align-content: center !important; + } + .align-content-sm-between { + align-content: space-between !important; + } + .align-content-sm-around { + align-content: space-around !important; + } + .align-content-sm-stretch { + align-content: stretch !important; + } + .align-self-sm-auto { + align-self: auto !important; + } + .align-self-sm-start { + align-self: flex-start !important; + } + .align-self-sm-end { + align-self: flex-end !important; + } + .align-self-sm-center { + align-self: center !important; + } + .align-self-sm-baseline { + align-self: baseline !important; + } + .align-self-sm-stretch { + align-self: stretch !important; + } + .order-sm-first { + order: -1 !important; + } + .order-sm-0 { + order: 0 !important; + } + .order-sm-1 { + order: 1 !important; + } + .order-sm-2 { + order: 2 !important; + } + .order-sm-3 { + order: 3 !important; + } + .order-sm-4 { + order: 4 !important; + } + .order-sm-5 { + order: 5 !important; + } + .order-sm-last { + order: 6 !important; + } + .m-sm-0 { + margin: 0 !important; + } + .m-sm-1 { + margin: 0.25rem !important; + } + .m-sm-2 { + margin: 0.5rem !important; + } + .m-sm-3 { + margin: 1rem !important; + } + .m-sm-4 { + margin: 1.5rem !important; + } + .m-sm-5 { + margin: 3rem !important; + } + .m-sm-auto { + margin: auto !important; + } + .mx-sm-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-sm-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-sm-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-sm-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-sm-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-sm-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-sm-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-sm-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-sm-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-sm-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-sm-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-sm-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-sm-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-sm-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-sm-0 { + margin-top: 0 !important; + } + .mt-sm-1 { + margin-top: 0.25rem !important; + } + .mt-sm-2 { + margin-top: 0.5rem !important; + } + .mt-sm-3 { + margin-top: 1rem !important; + } + .mt-sm-4 { + margin-top: 1.5rem !important; + } + .mt-sm-5 { + margin-top: 3rem !important; + } + .mt-sm-auto { + margin-top: auto !important; + } + .me-sm-0 { + margin-right: 0 !important; + } + .me-sm-1 { + margin-right: 0.25rem !important; + } + .me-sm-2 { + margin-right: 0.5rem !important; + } + .me-sm-3 { + margin-right: 1rem !important; + } + .me-sm-4 { + margin-right: 1.5rem !important; + } + .me-sm-5 { + margin-right: 3rem !important; + } + .me-sm-auto { + margin-right: auto !important; + } + .mb-sm-0 { + margin-bottom: 0 !important; + } + .mb-sm-1 { + margin-bottom: 0.25rem !important; + } + .mb-sm-2 { + margin-bottom: 0.5rem !important; + } + .mb-sm-3 { + margin-bottom: 1rem !important; + } + .mb-sm-4 { + margin-bottom: 1.5rem !important; + } + .mb-sm-5 { + margin-bottom: 3rem !important; + } + .mb-sm-auto { + margin-bottom: auto !important; + } + .ms-sm-0 { + margin-left: 0 !important; + } + .ms-sm-1 { + margin-left: 0.25rem !important; + } + .ms-sm-2 { + margin-left: 0.5rem !important; + } + .ms-sm-3 { + margin-left: 1rem !important; + } + .ms-sm-4 { + margin-left: 1.5rem !important; + } + .ms-sm-5 { + margin-left: 3rem !important; + } + .ms-sm-auto { + margin-left: auto !important; + } + .p-sm-0 { + padding: 0 !important; + } + .p-sm-1 { + padding: 0.25rem !important; + } + .p-sm-2 { + padding: 0.5rem !important; + } + .p-sm-3 { + padding: 1rem !important; + } + .p-sm-4 { + padding: 1.5rem !important; + } + .p-sm-5 { + padding: 3rem !important; + } + .px-sm-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-sm-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-sm-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-sm-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-sm-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-sm-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-sm-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-sm-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-sm-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-sm-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-sm-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-sm-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-sm-0 { + padding-top: 0 !important; + } + .pt-sm-1 { + padding-top: 0.25rem !important; + } + .pt-sm-2 { + padding-top: 0.5rem !important; + } + .pt-sm-3 { + padding-top: 1rem !important; + } + .pt-sm-4 { + padding-top: 1.5rem !important; + } + .pt-sm-5 { + padding-top: 3rem !important; + } + .pe-sm-0 { + padding-right: 0 !important; + } + .pe-sm-1 { + padding-right: 0.25rem !important; + } + .pe-sm-2 { + padding-right: 0.5rem !important; + } + .pe-sm-3 { + padding-right: 1rem !important; + } + .pe-sm-4 { + padding-right: 1.5rem !important; + } + .pe-sm-5 { + padding-right: 3rem !important; + } + .pb-sm-0 { + padding-bottom: 0 !important; + } + .pb-sm-1 { + padding-bottom: 0.25rem !important; + } + .pb-sm-2 { + padding-bottom: 0.5rem !important; + } + .pb-sm-3 { + padding-bottom: 1rem !important; + } + .pb-sm-4 { + padding-bottom: 1.5rem !important; + } + .pb-sm-5 { + padding-bottom: 3rem !important; + } + .ps-sm-0 { + padding-left: 0 !important; + } + .ps-sm-1 { + padding-left: 0.25rem !important; + } + .ps-sm-2 { + padding-left: 0.5rem !important; + } + .ps-sm-3 { + padding-left: 1rem !important; + } + .ps-sm-4 { + padding-left: 1.5rem !important; + } + .ps-sm-5 { + padding-left: 3rem !important; + } + .gap-sm-0 { + gap: 0 !important; + } + .gap-sm-1 { + gap: 0.25rem !important; + } + .gap-sm-2 { + gap: 0.5rem !important; + } + .gap-sm-3 { + gap: 1rem !important; + } + .gap-sm-4 { + gap: 1.5rem !important; + } + .gap-sm-5 { + gap: 3rem !important; + } + .row-gap-sm-0 { + row-gap: 0 !important; + } + .row-gap-sm-1 { + row-gap: 0.25rem !important; + } + .row-gap-sm-2 { + row-gap: 0.5rem !important; + } + .row-gap-sm-3 { + row-gap: 1rem !important; + } + .row-gap-sm-4 { + row-gap: 1.5rem !important; + } + .row-gap-sm-5 { + row-gap: 3rem !important; + } + .column-gap-sm-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-sm-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-sm-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-sm-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-sm-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-sm-5 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .text-sm-start { + text-align: left !important; + } + .text-sm-end { + text-align: right !important; + } + .text-sm-center { + text-align: center !important; + } +} +@media (min-width: 768px) { + .float-md-start { + float: left !important; + } + .float-md-end { + float: right !important; + } + .float-md-none { + float: none !important; + } + .object-fit-md-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-md-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-md-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-md-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-md-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-md-inline { + display: inline !important; + } + .d-md-inline-block { + display: inline-block !important; + } + .d-md-block { + display: block !important; + } + .d-md-grid { + display: grid !important; + } + .d-md-inline-grid { + display: inline-grid !important; + } + .d-md-table { + display: table !important; + } + .d-md-table-row { + display: table-row !important; + } + .d-md-table-cell { + display: table-cell !important; + } + .d-md-flex { + display: flex !important; + } + .d-md-inline-flex { + display: inline-flex !important; + } + .d-md-none { + display: none !important; + } + .flex-md-fill { + flex: 1 1 auto !important; + } + .flex-md-row { + flex-direction: row !important; + } + .flex-md-column { + flex-direction: column !important; + } + .flex-md-row-reverse { + flex-direction: row-reverse !important; + } + .flex-md-column-reverse { + flex-direction: column-reverse !important; + } + .flex-md-grow-0 { + flex-grow: 0 !important; + } + .flex-md-grow-1 { + flex-grow: 1 !important; + } + .flex-md-shrink-0 { + flex-shrink: 0 !important; + } + .flex-md-shrink-1 { + flex-shrink: 1 !important; + } + .flex-md-wrap { + flex-wrap: wrap !important; + } + .flex-md-nowrap { + flex-wrap: nowrap !important; + } + .flex-md-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-md-start { + justify-content: flex-start !important; + } + .justify-content-md-end { + justify-content: flex-end !important; + } + .justify-content-md-center { + justify-content: center !important; + } + .justify-content-md-between { + justify-content: space-between !important; + } + .justify-content-md-around { + justify-content: space-around !important; + } + .justify-content-md-evenly { + justify-content: space-evenly !important; + } + .align-items-md-start { + align-items: flex-start !important; + } + .align-items-md-end { + align-items: flex-end !important; + } + .align-items-md-center { + align-items: center !important; + } + .align-items-md-baseline { + align-items: baseline !important; + } + .align-items-md-stretch { + align-items: stretch !important; + } + .align-content-md-start { + align-content: flex-start !important; + } + .align-content-md-end { + align-content: flex-end !important; + } + .align-content-md-center { + align-content: center !important; + } + .align-content-md-between { + align-content: space-between !important; + } + .align-content-md-around { + align-content: space-around !important; + } + .align-content-md-stretch { + align-content: stretch !important; + } + .align-self-md-auto { + align-self: auto !important; + } + .align-self-md-start { + align-self: flex-start !important; + } + .align-self-md-end { + align-self: flex-end !important; + } + .align-self-md-center { + align-self: center !important; + } + .align-self-md-baseline { + align-self: baseline !important; + } + .align-self-md-stretch { + align-self: stretch !important; + } + .order-md-first { + order: -1 !important; + } + .order-md-0 { + order: 0 !important; + } + .order-md-1 { + order: 1 !important; + } + .order-md-2 { + order: 2 !important; + } + .order-md-3 { + order: 3 !important; + } + .order-md-4 { + order: 4 !important; + } + .order-md-5 { + order: 5 !important; + } + .order-md-last { + order: 6 !important; + } + .m-md-0 { + margin: 0 !important; + } + .m-md-1 { + margin: 0.25rem !important; + } + .m-md-2 { + margin: 0.5rem !important; + } + .m-md-3 { + margin: 1rem !important; + } + .m-md-4 { + margin: 1.5rem !important; + } + .m-md-5 { + margin: 3rem !important; + } + .m-md-auto { + margin: auto !important; + } + .mx-md-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-md-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-md-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-md-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-md-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-md-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-md-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-md-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-md-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-md-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-md-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-md-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-md-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-md-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-md-0 { + margin-top: 0 !important; + } + .mt-md-1 { + margin-top: 0.25rem !important; + } + .mt-md-2 { + margin-top: 0.5rem !important; + } + .mt-md-3 { + margin-top: 1rem !important; + } + .mt-md-4 { + margin-top: 1.5rem !important; + } + .mt-md-5 { + margin-top: 3rem !important; + } + .mt-md-auto { + margin-top: auto !important; + } + .me-md-0 { + margin-right: 0 !important; + } + .me-md-1 { + margin-right: 0.25rem !important; + } + .me-md-2 { + margin-right: 0.5rem !important; + } + .me-md-3 { + margin-right: 1rem !important; + } + .me-md-4 { + margin-right: 1.5rem !important; + } + .me-md-5 { + margin-right: 3rem !important; + } + .me-md-auto { + margin-right: auto !important; + } + .mb-md-0 { + margin-bottom: 0 !important; + } + .mb-md-1 { + margin-bottom: 0.25rem !important; + } + .mb-md-2 { + margin-bottom: 0.5rem !important; + } + .mb-md-3 { + margin-bottom: 1rem !important; + } + .mb-md-4 { + margin-bottom: 1.5rem !important; + } + .mb-md-5 { + margin-bottom: 3rem !important; + } + .mb-md-auto { + margin-bottom: auto !important; + } + .ms-md-0 { + margin-left: 0 !important; + } + .ms-md-1 { + margin-left: 0.25rem !important; + } + .ms-md-2 { + margin-left: 0.5rem !important; + } + .ms-md-3 { + margin-left: 1rem !important; + } + .ms-md-4 { + margin-left: 1.5rem !important; + } + .ms-md-5 { + margin-left: 3rem !important; + } + .ms-md-auto { + margin-left: auto !important; + } + .p-md-0 { + padding: 0 !important; + } + .p-md-1 { + padding: 0.25rem !important; + } + .p-md-2 { + padding: 0.5rem !important; + } + .p-md-3 { + padding: 1rem !important; + } + .p-md-4 { + padding: 1.5rem !important; + } + .p-md-5 { + padding: 3rem !important; + } + .px-md-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-md-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-md-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-md-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-md-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-md-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-md-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-md-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-md-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-md-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-md-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-md-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-md-0 { + padding-top: 0 !important; + } + .pt-md-1 { + padding-top: 0.25rem !important; + } + .pt-md-2 { + padding-top: 0.5rem !important; + } + .pt-md-3 { + padding-top: 1rem !important; + } + .pt-md-4 { + padding-top: 1.5rem !important; + } + .pt-md-5 { + padding-top: 3rem !important; + } + .pe-md-0 { + padding-right: 0 !important; + } + .pe-md-1 { + padding-right: 0.25rem !important; + } + .pe-md-2 { + padding-right: 0.5rem !important; + } + .pe-md-3 { + padding-right: 1rem !important; + } + .pe-md-4 { + padding-right: 1.5rem !important; + } + .pe-md-5 { + padding-right: 3rem !important; + } + .pb-md-0 { + padding-bottom: 0 !important; + } + .pb-md-1 { + padding-bottom: 0.25rem !important; + } + .pb-md-2 { + padding-bottom: 0.5rem !important; + } + .pb-md-3 { + padding-bottom: 1rem !important; + } + .pb-md-4 { + padding-bottom: 1.5rem !important; + } + .pb-md-5 { + padding-bottom: 3rem !important; + } + .ps-md-0 { + padding-left: 0 !important; + } + .ps-md-1 { + padding-left: 0.25rem !important; + } + .ps-md-2 { + padding-left: 0.5rem !important; + } + .ps-md-3 { + padding-left: 1rem !important; + } + .ps-md-4 { + padding-left: 1.5rem !important; + } + .ps-md-5 { + padding-left: 3rem !important; + } + .gap-md-0 { + gap: 0 !important; + } + .gap-md-1 { + gap: 0.25rem !important; + } + .gap-md-2 { + gap: 0.5rem !important; + } + .gap-md-3 { + gap: 1rem !important; + } + .gap-md-4 { + gap: 1.5rem !important; + } + .gap-md-5 { + gap: 3rem !important; + } + .row-gap-md-0 { + row-gap: 0 !important; + } + .row-gap-md-1 { + row-gap: 0.25rem !important; + } + .row-gap-md-2 { + row-gap: 0.5rem !important; + } + .row-gap-md-3 { + row-gap: 1rem !important; + } + .row-gap-md-4 { + row-gap: 1.5rem !important; + } + .row-gap-md-5 { + row-gap: 3rem !important; + } + .column-gap-md-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-md-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-md-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-md-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-md-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-md-5 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .text-md-start { + text-align: left !important; + } + .text-md-end { + text-align: right !important; + } + .text-md-center { + text-align: center !important; + } +} +@media (min-width: 992px) { + .float-lg-start { + float: left !important; + } + .float-lg-end { + float: right !important; + } + .float-lg-none { + float: none !important; + } + .object-fit-lg-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-lg-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-lg-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-lg-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-lg-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-lg-inline { + display: inline !important; + } + .d-lg-inline-block { + display: inline-block !important; + } + .d-lg-block { + display: block !important; + } + .d-lg-grid { + display: grid !important; + } + .d-lg-inline-grid { + display: inline-grid !important; + } + .d-lg-table { + display: table !important; + } + .d-lg-table-row { + display: table-row !important; + } + .d-lg-table-cell { + display: table-cell !important; + } + .d-lg-flex { + display: flex !important; + } + .d-lg-inline-flex { + display: inline-flex !important; + } + .d-lg-none { + display: none !important; + } + .flex-lg-fill { + flex: 1 1 auto !important; + } + .flex-lg-row { + flex-direction: row !important; + } + .flex-lg-column { + flex-direction: column !important; + } + .flex-lg-row-reverse { + flex-direction: row-reverse !important; + } + .flex-lg-column-reverse { + flex-direction: column-reverse !important; + } + .flex-lg-grow-0 { + flex-grow: 0 !important; + } + .flex-lg-grow-1 { + flex-grow: 1 !important; + } + .flex-lg-shrink-0 { + flex-shrink: 0 !important; + } + .flex-lg-shrink-1 { + flex-shrink: 1 !important; + } + .flex-lg-wrap { + flex-wrap: wrap !important; + } + .flex-lg-nowrap { + flex-wrap: nowrap !important; + } + .flex-lg-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-lg-start { + justify-content: flex-start !important; + } + .justify-content-lg-end { + justify-content: flex-end !important; + } + .justify-content-lg-center { + justify-content: center !important; + } + .justify-content-lg-between { + justify-content: space-between !important; + } + .justify-content-lg-around { + justify-content: space-around !important; + } + .justify-content-lg-evenly { + justify-content: space-evenly !important; + } + .align-items-lg-start { + align-items: flex-start !important; + } + .align-items-lg-end { + align-items: flex-end !important; + } + .align-items-lg-center { + align-items: center !important; + } + .align-items-lg-baseline { + align-items: baseline !important; + } + .align-items-lg-stretch { + align-items: stretch !important; + } + .align-content-lg-start { + align-content: flex-start !important; + } + .align-content-lg-end { + align-content: flex-end !important; + } + .align-content-lg-center { + align-content: center !important; + } + .align-content-lg-between { + align-content: space-between !important; + } + .align-content-lg-around { + align-content: space-around !important; + } + .align-content-lg-stretch { + align-content: stretch !important; + } + .align-self-lg-auto { + align-self: auto !important; + } + .align-self-lg-start { + align-self: flex-start !important; + } + .align-self-lg-end { + align-self: flex-end !important; + } + .align-self-lg-center { + align-self: center !important; + } + .align-self-lg-baseline { + align-self: baseline !important; + } + .align-self-lg-stretch { + align-self: stretch !important; + } + .order-lg-first { + order: -1 !important; + } + .order-lg-0 { + order: 0 !important; + } + .order-lg-1 { + order: 1 !important; + } + .order-lg-2 { + order: 2 !important; + } + .order-lg-3 { + order: 3 !important; + } + .order-lg-4 { + order: 4 !important; + } + .order-lg-5 { + order: 5 !important; + } + .order-lg-last { + order: 6 !important; + } + .m-lg-0 { + margin: 0 !important; + } + .m-lg-1 { + margin: 0.25rem !important; + } + .m-lg-2 { + margin: 0.5rem !important; + } + .m-lg-3 { + margin: 1rem !important; + } + .m-lg-4 { + margin: 1.5rem !important; + } + .m-lg-5 { + margin: 3rem !important; + } + .m-lg-auto { + margin: auto !important; + } + .mx-lg-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-lg-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-lg-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-lg-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-lg-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-lg-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-lg-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-lg-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-lg-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-lg-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-lg-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-lg-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-lg-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-lg-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-lg-0 { + margin-top: 0 !important; + } + .mt-lg-1 { + margin-top: 0.25rem !important; + } + .mt-lg-2 { + margin-top: 0.5rem !important; + } + .mt-lg-3 { + margin-top: 1rem !important; + } + .mt-lg-4 { + margin-top: 1.5rem !important; + } + .mt-lg-5 { + margin-top: 3rem !important; + } + .mt-lg-auto { + margin-top: auto !important; + } + .me-lg-0 { + margin-right: 0 !important; + } + .me-lg-1 { + margin-right: 0.25rem !important; + } + .me-lg-2 { + margin-right: 0.5rem !important; + } + .me-lg-3 { + margin-right: 1rem !important; + } + .me-lg-4 { + margin-right: 1.5rem !important; + } + .me-lg-5 { + margin-right: 3rem !important; + } + .me-lg-auto { + margin-right: auto !important; + } + .mb-lg-0 { + margin-bottom: 0 !important; + } + .mb-lg-1 { + margin-bottom: 0.25rem !important; + } + .mb-lg-2 { + margin-bottom: 0.5rem !important; + } + .mb-lg-3 { + margin-bottom: 1rem !important; + } + .mb-lg-4 { + margin-bottom: 1.5rem !important; + } + .mb-lg-5 { + margin-bottom: 3rem !important; + } + .mb-lg-auto { + margin-bottom: auto !important; + } + .ms-lg-0 { + margin-left: 0 !important; + } + .ms-lg-1 { + margin-left: 0.25rem !important; + } + .ms-lg-2 { + margin-left: 0.5rem !important; + } + .ms-lg-3 { + margin-left: 1rem !important; + } + .ms-lg-4 { + margin-left: 1.5rem !important; + } + .ms-lg-5 { + margin-left: 3rem !important; + } + .ms-lg-auto { + margin-left: auto !important; + } + .p-lg-0 { + padding: 0 !important; + } + .p-lg-1 { + padding: 0.25rem !important; + } + .p-lg-2 { + padding: 0.5rem !important; + } + .p-lg-3 { + padding: 1rem !important; + } + .p-lg-4 { + padding: 1.5rem !important; + } + .p-lg-5 { + padding: 3rem !important; + } + .px-lg-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-lg-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-lg-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-lg-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-lg-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-lg-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-lg-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-lg-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-lg-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-lg-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-lg-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-lg-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-lg-0 { + padding-top: 0 !important; + } + .pt-lg-1 { + padding-top: 0.25rem !important; + } + .pt-lg-2 { + padding-top: 0.5rem !important; + } + .pt-lg-3 { + padding-top: 1rem !important; + } + .pt-lg-4 { + padding-top: 1.5rem !important; + } + .pt-lg-5 { + padding-top: 3rem !important; + } + .pe-lg-0 { + padding-right: 0 !important; + } + .pe-lg-1 { + padding-right: 0.25rem !important; + } + .pe-lg-2 { + padding-right: 0.5rem !important; + } + .pe-lg-3 { + padding-right: 1rem !important; + } + .pe-lg-4 { + padding-right: 1.5rem !important; + } + .pe-lg-5 { + padding-right: 3rem !important; + } + .pb-lg-0 { + padding-bottom: 0 !important; + } + .pb-lg-1 { + padding-bottom: 0.25rem !important; + } + .pb-lg-2 { + padding-bottom: 0.5rem !important; + } + .pb-lg-3 { + padding-bottom: 1rem !important; + } + .pb-lg-4 { + padding-bottom: 1.5rem !important; + } + .pb-lg-5 { + padding-bottom: 3rem !important; + } + .ps-lg-0 { + padding-left: 0 !important; + } + .ps-lg-1 { + padding-left: 0.25rem !important; + } + .ps-lg-2 { + padding-left: 0.5rem !important; + } + .ps-lg-3 { + padding-left: 1rem !important; + } + .ps-lg-4 { + padding-left: 1.5rem !important; + } + .ps-lg-5 { + padding-left: 3rem !important; + } + .gap-lg-0 { + gap: 0 !important; + } + .gap-lg-1 { + gap: 0.25rem !important; + } + .gap-lg-2 { + gap: 0.5rem !important; + } + .gap-lg-3 { + gap: 1rem !important; + } + .gap-lg-4 { + gap: 1.5rem !important; + } + .gap-lg-5 { + gap: 3rem !important; + } + .row-gap-lg-0 { + row-gap: 0 !important; + } + .row-gap-lg-1 { + row-gap: 0.25rem !important; + } + .row-gap-lg-2 { + row-gap: 0.5rem !important; + } + .row-gap-lg-3 { + row-gap: 1rem !important; + } + .row-gap-lg-4 { + row-gap: 1.5rem !important; + } + .row-gap-lg-5 { + row-gap: 3rem !important; + } + .column-gap-lg-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-lg-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-lg-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-lg-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-lg-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-lg-5 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .text-lg-start { + text-align: left !important; + } + .text-lg-end { + text-align: right !important; + } + .text-lg-center { + text-align: center !important; + } +} +@media (min-width: 1200px) { + .float-xl-start { + float: left !important; + } + .float-xl-end { + float: right !important; + } + .float-xl-none { + float: none !important; + } + .object-fit-xl-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-xl-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-xl-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-xl-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-xl-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-xl-inline { + display: inline !important; + } + .d-xl-inline-block { + display: inline-block !important; + } + .d-xl-block { + display: block !important; + } + .d-xl-grid { + display: grid !important; + } + .d-xl-inline-grid { + display: inline-grid !important; + } + .d-xl-table { + display: table !important; + } + .d-xl-table-row { + display: table-row !important; + } + .d-xl-table-cell { + display: table-cell !important; + } + .d-xl-flex { + display: flex !important; + } + .d-xl-inline-flex { + display: inline-flex !important; + } + .d-xl-none { + display: none !important; + } + .flex-xl-fill { + flex: 1 1 auto !important; + } + .flex-xl-row { + flex-direction: row !important; + } + .flex-xl-column { + flex-direction: column !important; + } + .flex-xl-row-reverse { + flex-direction: row-reverse !important; + } + .flex-xl-column-reverse { + flex-direction: column-reverse !important; + } + .flex-xl-grow-0 { + flex-grow: 0 !important; + } + .flex-xl-grow-1 { + flex-grow: 1 !important; + } + .flex-xl-shrink-0 { + flex-shrink: 0 !important; + } + .flex-xl-shrink-1 { + flex-shrink: 1 !important; + } + .flex-xl-wrap { + flex-wrap: wrap !important; + } + .flex-xl-nowrap { + flex-wrap: nowrap !important; + } + .flex-xl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-xl-start { + justify-content: flex-start !important; + } + .justify-content-xl-end { + justify-content: flex-end !important; + } + .justify-content-xl-center { + justify-content: center !important; + } + .justify-content-xl-between { + justify-content: space-between !important; + } + .justify-content-xl-around { + justify-content: space-around !important; + } + .justify-content-xl-evenly { + justify-content: space-evenly !important; + } + .align-items-xl-start { + align-items: flex-start !important; + } + .align-items-xl-end { + align-items: flex-end !important; + } + .align-items-xl-center { + align-items: center !important; + } + .align-items-xl-baseline { + align-items: baseline !important; + } + .align-items-xl-stretch { + align-items: stretch !important; + } + .align-content-xl-start { + align-content: flex-start !important; + } + .align-content-xl-end { + align-content: flex-end !important; + } + .align-content-xl-center { + align-content: center !important; + } + .align-content-xl-between { + align-content: space-between !important; + } + .align-content-xl-around { + align-content: space-around !important; + } + .align-content-xl-stretch { + align-content: stretch !important; + } + .align-self-xl-auto { + align-self: auto !important; + } + .align-self-xl-start { + align-self: flex-start !important; + } + .align-self-xl-end { + align-self: flex-end !important; + } + .align-self-xl-center { + align-self: center !important; + } + .align-self-xl-baseline { + align-self: baseline !important; + } + .align-self-xl-stretch { + align-self: stretch !important; + } + .order-xl-first { + order: -1 !important; + } + .order-xl-0 { + order: 0 !important; + } + .order-xl-1 { + order: 1 !important; + } + .order-xl-2 { + order: 2 !important; + } + .order-xl-3 { + order: 3 !important; + } + .order-xl-4 { + order: 4 !important; + } + .order-xl-5 { + order: 5 !important; + } + .order-xl-last { + order: 6 !important; + } + .m-xl-0 { + margin: 0 !important; + } + .m-xl-1 { + margin: 0.25rem !important; + } + .m-xl-2 { + margin: 0.5rem !important; + } + .m-xl-3 { + margin: 1rem !important; + } + .m-xl-4 { + margin: 1.5rem !important; + } + .m-xl-5 { + margin: 3rem !important; + } + .m-xl-auto { + margin: auto !important; + } + .mx-xl-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-xl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-xl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; } - .modal-content { - -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); - box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + .mx-xl-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; } - .modal-sm { - width: 300px; + .mx-xl-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; } -} -@media (min-width: 992px) { - .modal-lg { - width: 900px; + .mx-xl-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; } -} -.tooltip { - position: absolute; - z-index: 1070; - display: block; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 12px; - font-weight: normal; - line-height: 1.4; - visibility: visible; - filter: alpha(opacity=0); - opacity: 0; -} -.tooltip.in { - filter: alpha(opacity=90); - opacity: .9; -} -.tooltip.top { - padding: 5px 0; - margin-top: -3px; -} -.tooltip.right { - padding: 0 5px; - margin-left: 3px; -} -.tooltip.bottom { - padding: 5px 0; - margin-top: 3px; -} -.tooltip.left { - padding: 0 5px; - margin-left: -3px; -} -.tooltip-inner { - max-width: 200px; - padding: 3px 8px; - color: #fff; - text-align: center; - text-decoration: none; - background-color: #000; - border-radius: 4px; -} -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.tooltip.top .tooltip-arrow { - bottom: 0; - left: 50%; - margin-left: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.top-left .tooltip-arrow { - right: 5px; - bottom: 0; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.top-right .tooltip-arrow { - bottom: 0; - left: 5px; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -5px; - border-width: 5px 5px 5px 0; - border-right-color: #000; -} -.tooltip.left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -5px; - border-width: 5px 0 5px 5px; - border-left-color: #000; -} -.tooltip.bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.tooltip.bottom-left .tooltip-arrow { - top: 0; - right: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.tooltip.bottom-right .tooltip-arrow { - top: 0; - left: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1060; - display: none; - max-width: 276px; - padding: 1px; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - font-weight: normal; - line-height: 1.42857143; - text-align: left; - white-space: normal; - background-color: #fff; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, .2); - border-radius: 6px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2); - box-shadow: 0 5px 10px rgba(0, 0, 0, .2); -} -.popover.top { - margin-top: -10px; -} -.popover.right { - margin-left: 10px; -} -.popover.bottom { - margin-top: 10px; -} -.popover.left { - margin-left: -10px; -} -.popover-title { - padding: 8px 14px; - margin: 0; - font-size: 14px; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - border-radius: 5px 5px 0 0; -} -.popover-content { - padding: 9px 14px; -} -.popover > .arrow, -.popover > .arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.popover > .arrow { - border-width: 11px; -} -.popover > .arrow:after { - content: ""; - border-width: 10px; -} -.popover.top > .arrow { - bottom: -11px; - left: 50%; - margin-left: -11px; - border-top-color: #999; - border-top-color: rgba(0, 0, 0, .25); - border-bottom-width: 0; -} -.popover.top > .arrow:after { - bottom: 1px; - margin-left: -10px; - content: " "; - border-top-color: #fff; - border-bottom-width: 0; -} -.popover.right > .arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-right-color: #999; - border-right-color: rgba(0, 0, 0, .25); - border-left-width: 0; -} -.popover.right > .arrow:after { - bottom: -10px; - left: 1px; - content: " "; - border-right-color: #fff; - border-left-width: 0; -} -.popover.bottom > .arrow { - top: -11px; - left: 50%; - margin-left: -11px; - border-top-width: 0; - border-bottom-color: #999; - border-bottom-color: rgba(0, 0, 0, .25); -} -.popover.bottom > .arrow:after { - top: 1px; - margin-left: -10px; - content: " "; - border-top-width: 0; - border-bottom-color: #fff; -} -.popover.left > .arrow { - top: 50%; - right: -11px; - margin-top: -11px; - border-right-width: 0; - border-left-color: #999; - border-left-color: rgba(0, 0, 0, .25); -} -.popover.left > .arrow:after { - right: 1px; - bottom: -10px; - content: " "; - border-right-width: 0; - border-left-color: #fff; -} -.carousel { - position: relative; -} -.carousel-inner { - position: relative; - width: 100%; - overflow: hidden; -} -.carousel-inner > .item { - position: relative; - display: none; - -webkit-transition: .6s ease-in-out left; - -o-transition: .6s ease-in-out left; - transition: .6s ease-in-out left; -} -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - line-height: 1; -} -@media all and (transform-3d), (-webkit-transform-3d) { - .carousel-inner > .item { - -webkit-transition: -webkit-transform .6s ease-in-out; - -o-transition: -o-transform .6s ease-in-out; - transition: transform .6s ease-in-out; - - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-perspective: 1000; - perspective: 1000; + .mx-xl-auto { + margin-right: auto !important; + margin-left: auto !important; } - .carousel-inner > .item.next, - .carousel-inner > .item.active.right { - left: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); + .my-xl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; } - .carousel-inner > .item.prev, - .carousel-inner > .item.active.left { - left: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); + .my-xl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; } - .carousel-inner > .item.next.left, - .carousel-inner > .item.prev.right, - .carousel-inner > .item.active { - left: 0; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); + .my-xl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; } -} -.carousel-inner > .active, -.carousel-inner > .next, -.carousel-inner > .prev { - display: block; -} -.carousel-inner > .active { - left: 0; -} -.carousel-inner > .next, -.carousel-inner > .prev { - position: absolute; - top: 0; - width: 100%; -} -.carousel-inner > .next { - left: 100%; -} -.carousel-inner > .prev { - left: -100%; -} -.carousel-inner > .next.left, -.carousel-inner > .prev.right { - left: 0; -} -.carousel-inner > .active.left { - left: -100%; -} -.carousel-inner > .active.right { - left: 100%; -} -.carousel-control { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 15%; - font-size: 20px; - color: #fff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, .6); - filter: alpha(opacity=50); - opacity: .5; -} -.carousel-control.left { - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); - background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001))); - background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); - background-repeat: repeat-x; -} -.carousel-control.right { - right: 0; - left: auto; - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); - background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5))); - background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); - background-repeat: repeat-x; -} -.carousel-control:hover, -.carousel-control:focus { - color: #fff; - text-decoration: none; - filter: alpha(opacity=90); - outline: 0; - opacity: .9; -} -.carousel-control .icon-prev, -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-left, -.carousel-control .glyphicon-chevron-right { - position: absolute; - top: 50%; - z-index: 5; - display: inline-block; -} -.carousel-control .icon-prev, -.carousel-control .glyphicon-chevron-left { - left: 50%; - margin-left: -10px; -} -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-right { - right: 50%; - margin-right: -10px; -} -.carousel-control .icon-prev, -.carousel-control .icon-next { - width: 20px; - height: 20px; - margin-top: -10px; - font-family: serif; -} -.carousel-control .icon-prev:before { - content: '\2039'; -} -.carousel-control .icon-next:before { - content: '\203a'; -} -.carousel-indicators { - position: absolute; - bottom: 10px; - left: 50%; - z-index: 15; - width: 60%; - padding-left: 0; - margin-left: -30%; - text-align: center; - list-style: none; -} -.carousel-indicators li { - display: inline-block; - width: 10px; - height: 10px; - margin: 1px; - text-indent: -999px; - cursor: pointer; - background-color: #000 \9; - background-color: rgba(0, 0, 0, 0); - border: 1px solid #fff; - border-radius: 10px; -} -.carousel-indicators .active { - width: 12px; - height: 12px; - margin: 0; - background-color: #fff; -} -.carousel-caption { - position: absolute; - right: 15%; - bottom: 20px; - left: 15%; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: #fff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, .6); -} -.carousel-caption .btn { - text-shadow: none; -} -@media screen and (min-width: 768px) { - .carousel-control .glyphicon-chevron-left, - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-prev, - .carousel-control .icon-next { - width: 30px; - height: 30px; - margin-top: -15px; - font-size: 30px; - } - .carousel-control .glyphicon-chevron-left, - .carousel-control .icon-prev { - margin-left: -15px; - } - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-next { - margin-right: -15px; - } - .carousel-caption { - right: 20%; - left: 20%; - padding-bottom: 30px; - } - .carousel-indicators { - bottom: 20px; - } -} -.clearfix:before, -.clearfix:after, -.dl-horizontal dd:before, -.dl-horizontal dd:after, -.container:before, -.container:after, -.container-fluid:before, -.container-fluid:after, -.row:before, -.row:after, -.form-horizontal .form-group:before, -.form-horizontal .form-group:after, -.btn-toolbar:before, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:before, -.btn-group-vertical > .btn-group:after, -.nav:before, -.nav:after, -.navbar:before, -.navbar:after, -.navbar-header:before, -.navbar-header:after, -.navbar-collapse:before, -.navbar-collapse:after, -.pager:before, -.pager:after, -.panel-body:before, -.panel-body:after, -.modal-footer:before, -.modal-footer:after { - display: table; - content: " "; -} -.clearfix:after, -.dl-horizontal dd:after, -.container:after, -.container-fluid:after, -.row:after, -.form-horizontal .form-group:after, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:after, -.nav:after, -.navbar:after, -.navbar-header:after, -.navbar-collapse:after, -.pager:after, -.panel-body:after, -.modal-footer:after { - clear: both; -} -.center-block { - display: block; - margin-right: auto; - margin-left: auto; -} -.pull-right { - float: right !important; -} -.pull-left { - float: left !important; -} -.hide { - display: none !important; -} -.show { - display: block !important; -} -.invisible { - visibility: hidden; -} -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} -.hidden { - display: none !important; - visibility: hidden !important; -} -.affix { - position: fixed; -} -@-ms-viewport { - width: device-width; -} -.visible-xs, -.visible-sm, -.visible-md, -.visible-lg { - display: none !important; -} -.visible-xs-block, -.visible-xs-inline, -.visible-xs-inline-block, -.visible-sm-block, -.visible-sm-inline, -.visible-sm-inline-block, -.visible-md-block, -.visible-md-inline, -.visible-md-inline-block, -.visible-lg-block, -.visible-lg-inline, -.visible-lg-inline-block { - display: none !important; -} -@media (max-width: 767px) { - .visible-xs { - display: block !important; + .my-xl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-xl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-xl-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-xl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-xl-0 { + margin-top: 0 !important; + } + .mt-xl-1 { + margin-top: 0.25rem !important; + } + .mt-xl-2 { + margin-top: 0.5rem !important; + } + .mt-xl-3 { + margin-top: 1rem !important; + } + .mt-xl-4 { + margin-top: 1.5rem !important; + } + .mt-xl-5 { + margin-top: 3rem !important; + } + .mt-xl-auto { + margin-top: auto !important; + } + .me-xl-0 { + margin-right: 0 !important; + } + .me-xl-1 { + margin-right: 0.25rem !important; + } + .me-xl-2 { + margin-right: 0.5rem !important; + } + .me-xl-3 { + margin-right: 1rem !important; + } + .me-xl-4 { + margin-right: 1.5rem !important; + } + .me-xl-5 { + margin-right: 3rem !important; + } + .me-xl-auto { + margin-right: auto !important; + } + .mb-xl-0 { + margin-bottom: 0 !important; + } + .mb-xl-1 { + margin-bottom: 0.25rem !important; + } + .mb-xl-2 { + margin-bottom: 0.5rem !important; + } + .mb-xl-3 { + margin-bottom: 1rem !important; + } + .mb-xl-4 { + margin-bottom: 1.5rem !important; + } + .mb-xl-5 { + margin-bottom: 3rem !important; + } + .mb-xl-auto { + margin-bottom: auto !important; + } + .ms-xl-0 { + margin-left: 0 !important; + } + .ms-xl-1 { + margin-left: 0.25rem !important; + } + .ms-xl-2 { + margin-left: 0.5rem !important; + } + .ms-xl-3 { + margin-left: 1rem !important; + } + .ms-xl-4 { + margin-left: 1.5rem !important; + } + .ms-xl-5 { + margin-left: 3rem !important; + } + .ms-xl-auto { + margin-left: auto !important; + } + .p-xl-0 { + padding: 0 !important; + } + .p-xl-1 { + padding: 0.25rem !important; + } + .p-xl-2 { + padding: 0.5rem !important; + } + .p-xl-3 { + padding: 1rem !important; + } + .p-xl-4 { + padding: 1.5rem !important; + } + .p-xl-5 { + padding: 3rem !important; + } + .px-xl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-xl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-xl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-xl-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-xl-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-xl-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-xl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-xl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-xl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-xl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-xl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-xl-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-xl-0 { + padding-top: 0 !important; + } + .pt-xl-1 { + padding-top: 0.25rem !important; + } + .pt-xl-2 { + padding-top: 0.5rem !important; + } + .pt-xl-3 { + padding-top: 1rem !important; + } + .pt-xl-4 { + padding-top: 1.5rem !important; + } + .pt-xl-5 { + padding-top: 3rem !important; + } + .pe-xl-0 { + padding-right: 0 !important; } - table.visible-xs { - display: table; + .pe-xl-1 { + padding-right: 0.25rem !important; } - tr.visible-xs { - display: table-row !important; + .pe-xl-2 { + padding-right: 0.5rem !important; } - th.visible-xs, - td.visible-xs { - display: table-cell !important; + .pe-xl-3 { + padding-right: 1rem !important; } -} -@media (max-width: 767px) { - .visible-xs-block { - display: block !important; + .pe-xl-4 { + padding-right: 1.5rem !important; } -} -@media (max-width: 767px) { - .visible-xs-inline { - display: inline !important; + .pe-xl-5 { + padding-right: 3rem !important; } -} -@media (max-width: 767px) { - .visible-xs-inline-block { - display: inline-block !important; + .pb-xl-0 { + padding-bottom: 0 !important; } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm { - display: block !important; + .pb-xl-1 { + padding-bottom: 0.25rem !important; } - table.visible-sm { - display: table; + .pb-xl-2 { + padding-bottom: 0.5rem !important; } - tr.visible-sm { - display: table-row !important; + .pb-xl-3 { + padding-bottom: 1rem !important; } - th.visible-sm, - td.visible-sm { - display: table-cell !important; + .pb-xl-4 { + padding-bottom: 1.5rem !important; } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-block { - display: block !important; + .pb-xl-5 { + padding-bottom: 3rem !important; } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline { - display: inline !important; + .ps-xl-0 { + padding-left: 0 !important; } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline-block { - display: inline-block !important; + .ps-xl-1 { + padding-left: 0.25rem !important; } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md { - display: block !important; + .ps-xl-2 { + padding-left: 0.5rem !important; } - table.visible-md { - display: table; + .ps-xl-3 { + padding-left: 1rem !important; } - tr.visible-md { - display: table-row !important; + .ps-xl-4 { + padding-left: 1.5rem !important; } - th.visible-md, - td.visible-md { - display: table-cell !important; + .ps-xl-5 { + padding-left: 3rem !important; } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-block { - display: block !important; + .gap-xl-0 { + gap: 0 !important; + } + .gap-xl-1 { + gap: 0.25rem !important; + } + .gap-xl-2 { + gap: 0.5rem !important; + } + .gap-xl-3 { + gap: 1rem !important; + } + .gap-xl-4 { + gap: 1.5rem !important; + } + .gap-xl-5 { + gap: 3rem !important; + } + .row-gap-xl-0 { + row-gap: 0 !important; + } + .row-gap-xl-1 { + row-gap: 0.25rem !important; + } + .row-gap-xl-2 { + row-gap: 0.5rem !important; + } + .row-gap-xl-3 { + row-gap: 1rem !important; + } + .row-gap-xl-4 { + row-gap: 1.5rem !important; + } + .row-gap-xl-5 { + row-gap: 3rem !important; + } + .column-gap-xl-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-xl-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-xl-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-xl-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-xl-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-xl-5 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .text-xl-start { + text-align: left !important; + } + .text-xl-end { + text-align: right !important; + } + .text-xl-center { + text-align: center !important; } } -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-inline { +@media (min-width: 1400px) { + .float-xxl-start { + float: left !important; + } + .float-xxl-end { + float: right !important; + } + .float-xxl-none { + float: none !important; + } + .object-fit-xxl-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-xxl-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-xxl-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-xxl-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-xxl-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-xxl-inline { display: inline !important; } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-inline-block { + .d-xxl-inline-block { display: inline-block !important; } -} -/*@media (min-width: 1200px) { - .visible-lg { + .d-xxl-block { display: block !important; } - table.visible-lg { - display: table; + .d-xxl-grid { + display: grid !important; } - tr.visible-lg { + .d-xxl-inline-grid { + display: inline-grid !important; + } + .d-xxl-table { + display: table !important; + } + .d-xxl-table-row { display: table-row !important; } - th.visible-lg, - td.visible-lg { + .d-xxl-table-cell { display: table-cell !important; } -} -@media (min-width: 1200px) { - .visible-lg-block { - display: block !important; - } -} -@media (min-width: 1200px) { - .visible-lg-inline { - display: inline !important; + .d-xxl-flex { + display: flex !important; } -} -@media (min-width: 1200px) { - .visible-lg-inline-block { - display: inline-block !important; + .d-xxl-inline-flex { + display: inline-flex !important; } -}*/ -@media (max-width: 767px) { - .hidden-xs { + .d-xxl-none { display: none !important; } -} -@media (min-width: 768px) and (max-width: 991px) { - .hidden-sm { - display: none !important; + .flex-xxl-fill { + flex: 1 1 auto !important; } -} -@media (min-width: 992px) and (max-width: 1199px) { - .hidden-md { - display: none !important; + .flex-xxl-row { + flex-direction: row !important; } -} -/*@media (min-width: 1200px) { - .hidden-lg { - display: none !important; + .flex-xxl-column { + flex-direction: column !important; } -}*/ -.visible-print { - display: none !important; -} -@media print { - .visible-print { - display: block !important; + .flex-xxl-row-reverse { + flex-direction: row-reverse !important; } - table.visible-print { - display: table; + .flex-xxl-column-reverse { + flex-direction: column-reverse !important; } - tr.visible-print { - display: table-row !important; + .flex-xxl-grow-0 { + flex-grow: 0 !important; } - th.visible-print, - td.visible-print { - display: table-cell !important; + .flex-xxl-grow-1 { + flex-grow: 1 !important; } -} -.visible-print-block { - display: none !important; -} -@media print { - .visible-print-block { - display: block !important; + .flex-xxl-shrink-0 { + flex-shrink: 0 !important; + } + .flex-xxl-shrink-1 { + flex-shrink: 1 !important; + } + .flex-xxl-wrap { + flex-wrap: wrap !important; + } + .flex-xxl-nowrap { + flex-wrap: nowrap !important; + } + .flex-xxl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-xxl-start { + justify-content: flex-start !important; + } + .justify-content-xxl-end { + justify-content: flex-end !important; + } + .justify-content-xxl-center { + justify-content: center !important; + } + .justify-content-xxl-between { + justify-content: space-between !important; + } + .justify-content-xxl-around { + justify-content: space-around !important; + } + .justify-content-xxl-evenly { + justify-content: space-evenly !important; + } + .align-items-xxl-start { + align-items: flex-start !important; + } + .align-items-xxl-end { + align-items: flex-end !important; + } + .align-items-xxl-center { + align-items: center !important; + } + .align-items-xxl-baseline { + align-items: baseline !important; + } + .align-items-xxl-stretch { + align-items: stretch !important; + } + .align-content-xxl-start { + align-content: flex-start !important; + } + .align-content-xxl-end { + align-content: flex-end !important; + } + .align-content-xxl-center { + align-content: center !important; + } + .align-content-xxl-between { + align-content: space-between !important; + } + .align-content-xxl-around { + align-content: space-around !important; + } + .align-content-xxl-stretch { + align-content: stretch !important; + } + .align-self-xxl-auto { + align-self: auto !important; + } + .align-self-xxl-start { + align-self: flex-start !important; + } + .align-self-xxl-end { + align-self: flex-end !important; + } + .align-self-xxl-center { + align-self: center !important; + } + .align-self-xxl-baseline { + align-self: baseline !important; + } + .align-self-xxl-stretch { + align-self: stretch !important; + } + .order-xxl-first { + order: -1 !important; + } + .order-xxl-0 { + order: 0 !important; + } + .order-xxl-1 { + order: 1 !important; + } + .order-xxl-2 { + order: 2 !important; + } + .order-xxl-3 { + order: 3 !important; + } + .order-xxl-4 { + order: 4 !important; + } + .order-xxl-5 { + order: 5 !important; + } + .order-xxl-last { + order: 6 !important; + } + .m-xxl-0 { + margin: 0 !important; + } + .m-xxl-1 { + margin: 0.25rem !important; + } + .m-xxl-2 { + margin: 0.5rem !important; + } + .m-xxl-3 { + margin: 1rem !important; + } + .m-xxl-4 { + margin: 1.5rem !important; + } + .m-xxl-5 { + margin: 3rem !important; + } + .m-xxl-auto { + margin: auto !important; + } + .mx-xxl-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-xxl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-xxl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-xxl-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-xxl-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-xxl-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-xxl-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-xxl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-xxl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-xxl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-xxl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-xxl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-xxl-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-xxl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-xxl-0 { + margin-top: 0 !important; + } + .mt-xxl-1 { + margin-top: 0.25rem !important; + } + .mt-xxl-2 { + margin-top: 0.5rem !important; + } + .mt-xxl-3 { + margin-top: 1rem !important; + } + .mt-xxl-4 { + margin-top: 1.5rem !important; + } + .mt-xxl-5 { + margin-top: 3rem !important; + } + .mt-xxl-auto { + margin-top: auto !important; + } + .me-xxl-0 { + margin-right: 0 !important; + } + .me-xxl-1 { + margin-right: 0.25rem !important; + } + .me-xxl-2 { + margin-right: 0.5rem !important; + } + .me-xxl-3 { + margin-right: 1rem !important; + } + .me-xxl-4 { + margin-right: 1.5rem !important; + } + .me-xxl-5 { + margin-right: 3rem !important; + } + .me-xxl-auto { + margin-right: auto !important; + } + .mb-xxl-0 { + margin-bottom: 0 !important; + } + .mb-xxl-1 { + margin-bottom: 0.25rem !important; + } + .mb-xxl-2 { + margin-bottom: 0.5rem !important; + } + .mb-xxl-3 { + margin-bottom: 1rem !important; + } + .mb-xxl-4 { + margin-bottom: 1.5rem !important; + } + .mb-xxl-5 { + margin-bottom: 3rem !important; + } + .mb-xxl-auto { + margin-bottom: auto !important; + } + .ms-xxl-0 { + margin-left: 0 !important; + } + .ms-xxl-1 { + margin-left: 0.25rem !important; + } + .ms-xxl-2 { + margin-left: 0.5rem !important; + } + .ms-xxl-3 { + margin-left: 1rem !important; + } + .ms-xxl-4 { + margin-left: 1.5rem !important; + } + .ms-xxl-5 { + margin-left: 3rem !important; + } + .ms-xxl-auto { + margin-left: auto !important; + } + .p-xxl-0 { + padding: 0 !important; + } + .p-xxl-1 { + padding: 0.25rem !important; + } + .p-xxl-2 { + padding: 0.5rem !important; + } + .p-xxl-3 { + padding: 1rem !important; + } + .p-xxl-4 { + padding: 1.5rem !important; + } + .p-xxl-5 { + padding: 3rem !important; + } + .px-xxl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-xxl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-xxl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-xxl-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-xxl-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-xxl-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-xxl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-xxl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-xxl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-xxl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-xxl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-xxl-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-xxl-0 { + padding-top: 0 !important; + } + .pt-xxl-1 { + padding-top: 0.25rem !important; + } + .pt-xxl-2 { + padding-top: 0.5rem !important; + } + .pt-xxl-3 { + padding-top: 1rem !important; + } + .pt-xxl-4 { + padding-top: 1.5rem !important; + } + .pt-xxl-5 { + padding-top: 3rem !important; + } + .pe-xxl-0 { + padding-right: 0 !important; + } + .pe-xxl-1 { + padding-right: 0.25rem !important; + } + .pe-xxl-2 { + padding-right: 0.5rem !important; + } + .pe-xxl-3 { + padding-right: 1rem !important; + } + .pe-xxl-4 { + padding-right: 1.5rem !important; + } + .pe-xxl-5 { + padding-right: 3rem !important; + } + .pb-xxl-0 { + padding-bottom: 0 !important; + } + .pb-xxl-1 { + padding-bottom: 0.25rem !important; + } + .pb-xxl-2 { + padding-bottom: 0.5rem !important; + } + .pb-xxl-3 { + padding-bottom: 1rem !important; + } + .pb-xxl-4 { + padding-bottom: 1.5rem !important; + } + .pb-xxl-5 { + padding-bottom: 3rem !important; + } + .ps-xxl-0 { + padding-left: 0 !important; + } + .ps-xxl-1 { + padding-left: 0.25rem !important; + } + .ps-xxl-2 { + padding-left: 0.5rem !important; + } + .ps-xxl-3 { + padding-left: 1rem !important; + } + .ps-xxl-4 { + padding-left: 1.5rem !important; + } + .ps-xxl-5 { + padding-left: 3rem !important; + } + .gap-xxl-0 { + gap: 0 !important; + } + .gap-xxl-1 { + gap: 0.25rem !important; + } + .gap-xxl-2 { + gap: 0.5rem !important; + } + .gap-xxl-3 { + gap: 1rem !important; + } + .gap-xxl-4 { + gap: 1.5rem !important; + } + .gap-xxl-5 { + gap: 3rem !important; + } + .row-gap-xxl-0 { + row-gap: 0 !important; + } + .row-gap-xxl-1 { + row-gap: 0.25rem !important; + } + .row-gap-xxl-2 { + row-gap: 0.5rem !important; + } + .row-gap-xxl-3 { + row-gap: 1rem !important; + } + .row-gap-xxl-4 { + row-gap: 1.5rem !important; + } + .row-gap-xxl-5 { + row-gap: 3rem !important; + } + .column-gap-xxl-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-xxl-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-xxl-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-xxl-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-xxl-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-xxl-5 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .text-xxl-start { + text-align: left !important; + } + .text-xxl-end { + text-align: right !important; + } + .text-xxl-center { + text-align: center !important; } } -.visible-print-inline { - display: none !important; +@media (min-width: 1200px) { + .fs-1 { + font-size: 2.5rem !important; + } + .fs-2 { + font-size: 2rem !important; + } + .fs-3 { + font-size: 1.75rem !important; + } + .fs-4 { + font-size: 1.5rem !important; + } } @media print { - .visible-print-inline { + .d-print-inline { display: inline !important; } -} -.visible-print-inline-block { - display: none !important; -} -@media print { - .visible-print-inline-block { + .d-print-inline-block { display: inline-block !important; } -} -@media print { - .hidden-print { + .d-print-block { + display: block !important; + } + .d-print-grid { + display: grid !important; + } + .d-print-inline-grid { + display: inline-grid !important; + } + .d-print-table { + display: table !important; + } + .d-print-table-row { + display: table-row !important; + } + .d-print-table-cell { + display: table-cell !important; + } + .d-print-flex { + display: flex !important; + } + .d-print-inline-flex { + display: inline-flex !important; + } + .d-print-none { display: none !important; } } + +/*# sourceMappingURL=bootstrap.css.map */ \ No newline at end of file diff --git a/mamweb/static/bootstrap/fonts/glyphicons-halflings-regular.eot b/mamweb/static/bootstrap/fonts/glyphicons-halflings-regular.eot deleted file mode 100644 index 4a4ca865d67e86f961bc6e2ef00bffa4e34bb9ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20335 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

    !oRptb@n+ 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 diff --git a/mamweb/static/bootstrap/fonts/glyphicons-halflings-regular.svg b/mamweb/static/bootstrap/fonts/glyphicons-halflings-regular.svg deleted file mode 100644 index 25691af8..00000000 --- a/mamweb/static/bootstrap/fonts/glyphicons-halflings-regular.svg +++ /dev/null @@ -1,229 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/mamweb/static/bootstrap/fonts/glyphicons-halflings-regular.ttf b/mamweb/static/bootstrap/fonts/glyphicons-halflings-regular.ttf deleted file mode 100644 index 67fa00bf83801d2fa568546b982c80d27f6ef74e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41280 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

    PBK;&Wcg|NX{>QR@W3{K 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 diff --git a/mamweb/static/bootstrap/fonts/glyphicons-halflings-regular.woff b/mamweb/static/bootstrap/fonts/glyphicons-halflings-regular.woff deleted file mode 100644 index 8c54182aa5d4d1ab3c9171976b615c1dcb1dc187..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23320 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 mX4Rts e[k] + }); + } } } - - return false // explicit for ie8 ( ._.) + n.default = e; + return Object.freeze(n); } - // http://blog.alexmaccaw.com/css-transitions - $.fn.emulateTransitionEnd = function (duration) { - var called = false - var $el = this - $(this).one('bsTransitionEnd', function () { called = true }) - var callback = function () { if (!called) $($el).trigger($.support.transition.end) } - setTimeout(callback, duration) - return this - } + const Popper__namespace = /*#__PURE__*/_interopNamespaceDefault(Popper); - $(function () { - $.support.transition = transitionEnd() + /** + * -------------------------------------------------------------------------- + * Bootstrap dom/data.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ - if (!$.support.transition) return + /** + * Constants + */ - $.event.special.bsTransitionEnd = { - bindType: $.support.transition.end, - delegateType: $.support.transition.end, - handle: function (e) { - if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) + const elementMap = new Map(); + const Data = { + set(element, key, instance) { + if (!elementMap.has(element)) { + elementMap.set(element, new Map()); } - } - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: alert.js v3.3.1 - * http://getbootstrap.com/javascript/#alerts - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // ALERT CLASS DEFINITION - // ====================== - - var dismiss = '[data-dismiss="alert"]' - var Alert = function (el) { - $(el).on('click', dismiss, this.close) - } - - Alert.VERSION = '3.3.1' - - Alert.TRANSITION_DURATION = 150 - - Alert.prototype.close = function (e) { - var $this = $(this) - var selector = $this.attr('data-target') + const instanceMap = elementMap.get(element); + + // make it clear we only want one instance per element + // can be removed later when multiple key/instances are fine to be used + if (!instanceMap.has(key) && instanceMap.size !== 0) { + // eslint-disable-next-line no-console + console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`); + return; + } + instanceMap.set(key, instance); + }, + get(element, key) { + if (elementMap.has(element)) { + return elementMap.get(element).get(key) || null; + } + return null; + }, + remove(element, key) { + if (!elementMap.has(element)) { + return; + } + const instanceMap = elementMap.get(element); + instanceMap.delete(key); - if (!selector) { - selector = $this.attr('href') - selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + // free up element references if there are no instances left for an element + if (instanceMap.size === 0) { + elementMap.delete(element); + } } - - var $parent = $(selector) - - if (e) e.preventDefault() - - if (!$parent.length) { - $parent = $this.closest('.alert') + }; + + /** + * -------------------------------------------------------------------------- + * Bootstrap util/index.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + const MAX_UID = 1000000; + const MILLISECONDS_MULTIPLIER = 1000; + const TRANSITION_END = 'transitionend'; + + /** + * Properly escape IDs selectors to handle weird IDs + * @param {string} selector + * @returns {string} + */ + const parseSelector = selector => { + if (selector && window.CSS && window.CSS.escape) { + // document.querySelector needs escaping to handle IDs (html5+) containing for instance / + selector = selector.replace(/#([^\s"#']+)/g, (match, id) => `#${CSS.escape(id)}`); } + return selector; + }; - $parent.trigger(e = $.Event('close.bs.alert')) - - if (e.isDefaultPrevented()) return - - $parent.removeClass('in') - - function removeElement() { - // detach from parent, fire event then clean up data - $parent.detach().trigger('closed.bs.alert').remove() + // Shout-out Angus Croll (https://goo.gl/pxwQGp) + const toType = object => { + if (object === null || object === undefined) { + return `${object}`; + } + return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase(); + }; + + /** + * Public Util API + */ + + const getUID = prefix => { + do { + prefix += Math.floor(Math.random() * MAX_UID); + } while (document.getElementById(prefix)); + return prefix; + }; + const getTransitionDurationFromElement = element => { + if (!element) { + return 0; } - $.support.transition && $parent.hasClass('fade') ? - $parent - .one('bsTransitionEnd', removeElement) - .emulateTransitionEnd(Alert.TRANSITION_DURATION) : - removeElement() - } - - - // ALERT PLUGIN DEFINITION - // ======================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.alert') - - if (!data) $this.data('bs.alert', (data = new Alert(this))) - if (typeof option == 'string') data[option].call($this) - }) - } - - var old = $.fn.alert - - $.fn.alert = Plugin - $.fn.alert.Constructor = Alert - - - // ALERT NO CONFLICT - // ================= - - $.fn.alert.noConflict = function () { - $.fn.alert = old - return this - } - - - // ALERT DATA-API - // ============== - - $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: button.js v3.3.1 - * http://getbootstrap.com/javascript/#buttons - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // BUTTON PUBLIC CLASS DEFINITION - // ============================== - - var Button = function (element, options) { - this.$element = $(element) - this.options = $.extend({}, Button.DEFAULTS, options) - this.isLoading = false - } - - Button.VERSION = '3.3.1' - - Button.DEFAULTS = { - loadingText: 'loading...' - } - - Button.prototype.setState = function (state) { - var d = 'disabled' - var $el = this.$element - var val = $el.is('input') ? 'val' : 'html' - var data = $el.data() - - state = state + 'Text' - - if (data.resetText == null) $el.data('resetText', $el[val]()) - - // push to event loop to allow forms to submit - setTimeout($.proxy(function () { - $el[val](data[state] == null ? this.options[state] : data[state]) + // Get transition-duration of the element + let { + transitionDuration, + transitionDelay + } = window.getComputedStyle(element); + const floatTransitionDuration = Number.parseFloat(transitionDuration); + const floatTransitionDelay = Number.parseFloat(transitionDelay); + + // Return 0 if element or transition duration is not found + if (!floatTransitionDuration && !floatTransitionDelay) { + return 0; + } - if (state == 'loadingText') { - this.isLoading = true - $el.addClass(d).attr(d, d) - } else if (this.isLoading) { - this.isLoading = false - $el.removeClass(d).removeAttr(d) + // If multiple durations are defined, take the first + transitionDuration = transitionDuration.split(',')[0]; + transitionDelay = transitionDelay.split(',')[0]; + return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; + }; + const triggerTransitionEnd = element => { + element.dispatchEvent(new Event(TRANSITION_END)); + }; + const isElement = object => { + if (!object || typeof object !== 'object') { + return false; + } + if (typeof object.jquery !== 'undefined') { + object = object[0]; + } + return typeof object.nodeType !== 'undefined'; + }; + const getElement = object => { + // it's a jQuery object or a node element + if (isElement(object)) { + return object.jquery ? object[0] : object; + } + if (typeof object === 'string' && object.length > 0) { + return document.querySelector(parseSelector(object)); + } + return null; + }; + const isVisible = element => { + if (!isElement(element) || element.getClientRects().length === 0) { + return false; + } + const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'; + // Handle `details` element as its content may falsie appear visible when it is closed + const closedDetails = element.closest('details:not([open])'); + if (!closedDetails) { + return elementIsVisible; + } + if (closedDetails !== element) { + const summary = element.closest('summary'); + if (summary && summary.parentNode !== closedDetails) { + return false; } - }, this), 0) - } + if (summary === null) { + return false; + } + } + return elementIsVisible; + }; + const isDisabled = element => { + if (!element || element.nodeType !== Node.ELEMENT_NODE) { + return true; + } + if (element.classList.contains('disabled')) { + return true; + } + if (typeof element.disabled !== 'undefined') { + return element.disabled; + } + return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'; + }; + const findShadowRoot = element => { + if (!document.documentElement.attachShadow) { + return null; + } - Button.prototype.toggle = function () { - var changed = true - var $parent = this.$element.closest('[data-toggle="buttons"]') + // Can find the shadow root otherwise it'll return the document + if (typeof element.getRootNode === 'function') { + const root = element.getRootNode(); + return root instanceof ShadowRoot ? root : null; + } + if (element instanceof ShadowRoot) { + return element; + } - if ($parent.length) { - var $input = this.$element.find('input') - if ($input.prop('type') == 'radio') { - if ($input.prop('checked') && this.$element.hasClass('active')) changed = false - else $parent.find('.active').removeClass('active') + // when we don't find a shadow root + if (!element.parentNode) { + return null; + } + return findShadowRoot(element.parentNode); + }; + const noop = () => {}; + + /** + * Trick to restart an element's animation + * + * @param {HTMLElement} element + * @return void + * + * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation + */ + const reflow = element => { + element.offsetHeight; // eslint-disable-line no-unused-expressions + }; + + const getjQuery = () => { + if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) { + return window.jQuery; + } + return null; + }; + const DOMContentLoadedCallbacks = []; + const onDOMContentLoaded = callback => { + if (document.readyState === 'loading') { + // add listener on the first call when the document is in loading state + if (!DOMContentLoadedCallbacks.length) { + document.addEventListener('DOMContentLoaded', () => { + for (const callback of DOMContentLoadedCallbacks) { + callback(); + } + }); } - if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change') + DOMContentLoadedCallbacks.push(callback); } else { - this.$element.attr('aria-pressed', !this.$element.hasClass('active')) + callback(); } - - if (changed) this.$element.toggleClass('active') + }; + const isRTL = () => document.documentElement.dir === 'rtl'; + const defineJQueryPlugin = plugin => { + onDOMContentLoaded(() => { + const $ = getjQuery(); + /* istanbul ignore if */ + if ($) { + const name = plugin.NAME; + const JQUERY_NO_CONFLICT = $.fn[name]; + $.fn[name] = plugin.jQueryInterface; + $.fn[name].Constructor = plugin; + $.fn[name].noConflict = () => { + $.fn[name] = JQUERY_NO_CONFLICT; + return plugin.jQueryInterface; + }; + } + }); + }; + const execute = (possibleCallback, args = [], defaultValue = possibleCallback) => { + return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue; + }; + const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => { + if (!waitForTransition) { + execute(callback); + return; + } + const durationPadding = 5; + const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding; + let called = false; + const handler = ({ + target + }) => { + if (target !== transitionElement) { + return; + } + called = true; + transitionElement.removeEventListener(TRANSITION_END, handler); + execute(callback); + }; + transitionElement.addEventListener(TRANSITION_END, handler); + setTimeout(() => { + if (!called) { + triggerTransitionEnd(transitionElement); + } + }, emulatedDuration); + }; + + /** + * Return the previous/next element of a list. + * + * @param {array} list The list of elements + * @param activeElement The active element + * @param shouldGetNext Choose to get next or previous element + * @param isCycleAllowed + * @return {Element|elem} The proper element + */ + const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => { + const listLength = list.length; + let index = list.indexOf(activeElement); + + // if the element does not exist in the list return an element + // depending on the direction and if cycle is allowed + if (index === -1) { + return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]; + } + index += shouldGetNext ? 1 : -1; + if (isCycleAllowed) { + index = (index + listLength) % listLength; + } + return list[Math.max(0, Math.min(index, listLength - 1))]; + }; + + /** + * -------------------------------------------------------------------------- + * Bootstrap dom/event-handler.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + + /** + * Constants + */ + + const namespaceRegex = /[^.]*(?=\..*)\.|.*/; + const stripNameRegex = /\..*/; + const stripUidRegex = /::\d+$/; + const eventRegistry = {}; // Events storage + let uidEvent = 1; + const customEvents = { + mouseenter: 'mouseover', + mouseleave: 'mouseout' + }; + const nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']); + + /** + * Private methods + */ + + function makeEventUid(element, uid) { + return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++; } - - - // BUTTON PLUGIN DEFINITION - // ======================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.button') - var options = typeof option == 'object' && option - - if (!data) $this.data('bs.button', (data = new Button(this, options))) - - if (option == 'toggle') data.toggle() - else if (option) data.setState(option) - }) + function getElementEvents(element) { + const uid = makeEventUid(element); + element.uidEvent = uid; + eventRegistry[uid] = eventRegistry[uid] || {}; + return eventRegistry[uid]; } - - var old = $.fn.button - - $.fn.button = Plugin - $.fn.button.Constructor = Button - - - // BUTTON NO CONFLICT - // ================== - - $.fn.button.noConflict = function () { - $.fn.button = old - return this + function bootstrapHandler(element, fn) { + return function handler(event) { + hydrateObj(event, { + delegateTarget: element + }); + if (handler.oneOff) { + EventHandler.off(element, event.type, fn); + } + return fn.apply(element, [event]); + }; } - - - // BUTTON DATA-API - // =============== - - $(document) - .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { - var $btn = $(e.target) - if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') - Plugin.call($btn, 'toggle') - e.preventDefault() - }) - .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { - $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: carousel.js v3.3.1 - * http://getbootstrap.com/javascript/#carousel - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // CAROUSEL CLASS DEFINITION - // ========================= - - var Carousel = function (element, options) { - this.$element = $(element) - this.$indicators = this.$element.find('.carousel-indicators') - this.options = options - this.paused = - this.sliding = - this.interval = - this.$active = - this.$items = null - - this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) - - this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element - .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) - .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) + function bootstrapDelegationHandler(element, selector, fn) { + return function handler(event) { + const domElements = element.querySelectorAll(selector); + for (let { + target + } = event; target && target !== this; target = target.parentNode) { + for (const domElement of domElements) { + if (domElement !== target) { + continue; + } + hydrateObj(event, { + delegateTarget: target + }); + if (handler.oneOff) { + EventHandler.off(element, event.type, selector, fn); + } + return fn.apply(target, [event]); + } + } + }; } - - Carousel.VERSION = '3.3.1' - - Carousel.TRANSITION_DURATION = 600 - - Carousel.DEFAULTS = { - interval: 5000, - pause: 'hover', - wrap: true, - keyboard: true + function findHandler(events, callable, delegationSelector = null) { + return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector); } - - Carousel.prototype.keydown = function (e) { - if (/input|textarea/i.test(e.target.tagName)) return - switch (e.which) { - case 37: this.prev(); break - case 39: this.next(); break - default: return + function normalizeParameters(originalTypeEvent, handler, delegationFunction) { + const isDelegated = typeof handler === 'string'; + // TODO: tooltip passes `false` instead of selector, so we need to check + const callable = isDelegated ? delegationFunction : handler || delegationFunction; + let typeEvent = getTypeEvent(originalTypeEvent); + if (!nativeEvents.has(typeEvent)) { + typeEvent = originalTypeEvent; } - - e.preventDefault() + return [isDelegated, callable, typeEvent]; } - - Carousel.prototype.cycle = function (e) { - e || (this.paused = false) - - this.interval && clearInterval(this.interval) - - this.options.interval - && !this.paused - && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) - - return this - } - - Carousel.prototype.getItemIndex = function (item) { - this.$items = item.parent().children('.item') - return this.$items.index(item || this.$active) - } - - Carousel.prototype.getItemForDirection = function (direction, active) { - var delta = direction == 'prev' ? -1 : 1 - var activeIndex = this.getItemIndex(active) - var itemIndex = (activeIndex + delta) % this.$items.length - return this.$items.eq(itemIndex) - } - - Carousel.prototype.to = function (pos) { - var that = this - var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) - - if (pos > (this.$items.length - 1) || pos < 0) return - - if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" - if (activeIndex == pos) return this.pause().cycle() - - return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) + function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) { + if (typeof originalTypeEvent !== 'string' || !element) { + return; + } + let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); + + // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position + // this prevents the handler from being dispatched the same way as mouseover or mouseout does + if (originalTypeEvent in customEvents) { + const wrapFunction = fn => { + return function (event) { + if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) { + return fn.call(this, event); + } + }; + }; + callable = wrapFunction(callable); + } + const events = getElementEvents(element); + const handlers = events[typeEvent] || (events[typeEvent] = {}); + const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null); + if (previousFunction) { + previousFunction.oneOff = previousFunction.oneOff && oneOff; + return; + } + const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, '')); + const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable); + fn.delegationSelector = isDelegated ? handler : null; + fn.callable = callable; + fn.oneOff = oneOff; + fn.uidEvent = uid; + handlers[uid] = fn; + element.addEventListener(typeEvent, fn, isDelegated); } - - Carousel.prototype.pause = function (e) { - e || (this.paused = true) - - if (this.$element.find('.next, .prev').length && $.support.transition) { - this.$element.trigger($.support.transition.end) - this.cycle(true) + function removeHandler(element, events, typeEvent, handler, delegationSelector) { + const fn = findHandler(events[typeEvent], handler, delegationSelector); + if (!fn) { + return; } - - this.interval = clearInterval(this.interval) - - return this + element.removeEventListener(typeEvent, fn, Boolean(delegationSelector)); + delete events[typeEvent][fn.uidEvent]; } - - Carousel.prototype.next = function () { - if (this.sliding) return - return this.slide('next') + function removeNamespacedHandlers(element, events, typeEvent, namespace) { + const storeElementEvent = events[typeEvent] || {}; + for (const [handlerKey, event] of Object.entries(storeElementEvent)) { + if (handlerKey.includes(namespace)) { + removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); + } + } } - - Carousel.prototype.prev = function () { - if (this.sliding) return - return this.slide('prev') + function getTypeEvent(event) { + // allow to get the native events from namespaced events ('click.bs.button' --> 'click') + event = event.replace(stripNameRegex, ''); + return customEvents[event] || event; } - - Carousel.prototype.slide = function (type, next) { - var $active = this.$element.find('.item.active') - var $next = next || this.getItemForDirection(type, $active) - var isCycling = this.interval - var direction = type == 'next' ? 'left' : 'right' - var fallback = type == 'next' ? 'first' : 'last' - var that = this - - if (!$next.length) { - if (!this.options.wrap) return - $next = this.$element.find('.item')[fallback]() - } - - if ($next.hasClass('active')) return (this.sliding = false) - - var relatedTarget = $next[0] - var slideEvent = $.Event('slide.bs.carousel', { - relatedTarget: relatedTarget, - direction: direction - }) - this.$element.trigger(slideEvent) - if (slideEvent.isDefaultPrevented()) return - - this.sliding = true - - isCycling && this.pause() - - if (this.$indicators.length) { - this.$indicators.find('.active').removeClass('active') - var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) - $nextIndicator && $nextIndicator.addClass('active') - } - - var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" - if ($.support.transition && this.$element.hasClass('slide')) { - $next.addClass(type) - $next[0].offsetWidth // force reflow - $active.addClass(direction) - $next.addClass(direction) - $active - .one('bsTransitionEnd', function () { - $next.removeClass([type, direction].join(' ')).addClass('active') - $active.removeClass(['active', direction].join(' ')) - that.sliding = false - setTimeout(function () { - that.$element.trigger(slidEvent) - }, 0) - }) - .emulateTransitionEnd(Carousel.TRANSITION_DURATION) - } else { - $active.removeClass('active') - $next.addClass('active') - this.sliding = false - this.$element.trigger(slidEvent) + const EventHandler = { + on(element, event, handler, delegationFunction) { + addHandler(element, event, handler, delegationFunction, false); + }, + one(element, event, handler, delegationFunction) { + addHandler(element, event, handler, delegationFunction, true); + }, + off(element, originalTypeEvent, handler, delegationFunction) { + if (typeof originalTypeEvent !== 'string' || !element) { + return; + } + const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); + const inNamespace = typeEvent !== originalTypeEvent; + const events = getElementEvents(element); + const storeElementEvent = events[typeEvent] || {}; + const isNamespace = originalTypeEvent.startsWith('.'); + if (typeof callable !== 'undefined') { + // Simplest case: handler is passed, remove that listener ONLY. + if (!Object.keys(storeElementEvent).length) { + return; + } + removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null); + return; + } + if (isNamespace) { + for (const elementEvent of Object.keys(events)) { + removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1)); + } + } + for (const [keyHandlers, event] of Object.entries(storeElementEvent)) { + const handlerKey = keyHandlers.replace(stripUidRegex, ''); + if (!inNamespace || originalTypeEvent.includes(handlerKey)) { + removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); + } + } + }, + trigger(element, event, args) { + if (typeof event !== 'string' || !element) { + return null; + } + const $ = getjQuery(); + const typeEvent = getTypeEvent(event); + const inNamespace = event !== typeEvent; + let jQueryEvent = null; + let bubbles = true; + let nativeDispatch = true; + let defaultPrevented = false; + if (inNamespace && $) { + jQueryEvent = $.Event(event, args); + $(element).trigger(jQueryEvent); + bubbles = !jQueryEvent.isPropagationStopped(); + nativeDispatch = !jQueryEvent.isImmediatePropagationStopped(); + defaultPrevented = jQueryEvent.isDefaultPrevented(); + } + const evt = hydrateObj(new Event(event, { + bubbles, + cancelable: true + }), args); + if (defaultPrevented) { + evt.preventDefault(); + } + if (nativeDispatch) { + element.dispatchEvent(evt); + } + if (evt.defaultPrevented && jQueryEvent) { + jQueryEvent.preventDefault(); + } + return evt; } - - isCycling && this.cycle() - - return this + }; + function hydrateObj(obj, meta = {}) { + for (const [key, value] of Object.entries(meta)) { + try { + obj[key] = value; + } catch (_unused) { + Object.defineProperty(obj, key, { + configurable: true, + get() { + return value; + } + }); + } + } + return obj; } + /** + * -------------------------------------------------------------------------- + * Bootstrap dom/manipulator.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ - // CAROUSEL PLUGIN DEFINITION - // ========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.carousel') - var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) - var action = typeof option == 'string' ? option : options.slide - - if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) - if (typeof option == 'number') data.to(option) - else if (action) data[action]() - else if (options.interval) data.pause().cycle() - }) + function normalizeData(value) { + if (value === 'true') { + return true; + } + if (value === 'false') { + return false; + } + if (value === Number(value).toString()) { + return Number(value); + } + if (value === '' || value === 'null') { + return null; + } + if (typeof value !== 'string') { + return value; + } + try { + return JSON.parse(decodeURIComponent(value)); + } catch (_unused) { + return value; + } } - - var old = $.fn.carousel - - $.fn.carousel = Plugin - $.fn.carousel.Constructor = Carousel - - - // CAROUSEL NO CONFLICT - // ==================== - - $.fn.carousel.noConflict = function () { - $.fn.carousel = old - return this + function normalizeDataKey(key) { + return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`); } + const Manipulator = { + setDataAttribute(element, key, value) { + element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value); + }, + removeDataAttribute(element, key) { + element.removeAttribute(`data-bs-${normalizeDataKey(key)}`); + }, + getDataAttributes(element) { + if (!element) { + return {}; + } + const attributes = {}; + const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig')); + for (const key of bsKeys) { + let pureKey = key.replace(/^bs/, ''); + pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length); + attributes[pureKey] = normalizeData(element.dataset[key]); + } + return attributes; + }, + getDataAttribute(element, key) { + return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`)); + } + }; + /** + * -------------------------------------------------------------------------- + * Bootstrap util/config.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ - // CAROUSEL DATA-API - // ================= - - var clickHandler = function (e) { - var href - var $this = $(this) - var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 - if (!$target.hasClass('carousel')) return - var options = $.extend({}, $target.data(), $this.data()) - var slideIndex = $this.attr('data-slide-to') - if (slideIndex) options.interval = false - Plugin.call($target, options) + /** + * Class definition + */ - if (slideIndex) { - $target.data('bs.carousel').to(slideIndex) + class Config { + // Getters + static get Default() { + return {}; + } + static get DefaultType() { + return {}; + } + static get NAME() { + throw new Error('You have to implement the static method "NAME", for each component!'); + } + _getConfig(config) { + config = this._mergeConfigObj(config); + config = this._configAfterMerge(config); + this._typeCheckConfig(config); + return config; + } + _configAfterMerge(config) { + return config; + } + _mergeConfigObj(config, element) { + const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse + + return { + ...this.constructor.Default, + ...(typeof jsonConfig === 'object' ? jsonConfig : {}), + ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}), + ...(typeof config === 'object' ? config : {}) + }; + } + _typeCheckConfig(config, configTypes = this.constructor.DefaultType) { + for (const [property, expectedTypes] of Object.entries(configTypes)) { + const value = config[property]; + const valueType = isElement(value) ? 'element' : toType(value); + if (!new RegExp(expectedTypes).test(valueType)) { + throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`); + } + } } - - e.preventDefault() } - $(document) - .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) - .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) - - $(window).on('load', function () { - $('[data-ride="carousel"]').each(function () { - var $carousel = $(this) - Plugin.call($carousel, $carousel.data()) - }) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: collapse.js v3.3.1 - * http://getbootstrap.com/javascript/#collapse - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ + /** + * -------------------------------------------------------------------------- + * Bootstrap base-component.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ -+function ($) { - 'use strict'; + /** + * Constants + */ - // COLLAPSE PUBLIC CLASS DEFINITION - // ================================ + const VERSION = '5.3.2'; - var Collapse = function (element, options) { - this.$element = $(element) - this.options = $.extend({}, Collapse.DEFAULTS, options) - this.$trigger = $(this.options.trigger).filter('[href="#' + element.id + '"], [data-target="#' + element.id + '"]') - this.transitioning = null + /** + * Class definition + */ - if (this.options.parent) { - this.$parent = this.getParent() - } else { - this.addAriaAndCollapsedClass(this.$element, this.$trigger) + class BaseComponent extends Config { + constructor(element, config) { + super(); + element = getElement(element); + if (!element) { + return; + } + this._element = element; + this._config = this._getConfig(config); + Data.set(this._element, this.constructor.DATA_KEY, this); } - if (this.options.toggle) this.toggle() - } - - Collapse.VERSION = '3.3.1' - - Collapse.TRANSITION_DURATION = 350 - - Collapse.DEFAULTS = { - toggle: true, - trigger: '[data-toggle="collapse"]' - } + // Public + dispose() { + Data.remove(this._element, this.constructor.DATA_KEY); + EventHandler.off(this._element, this.constructor.EVENT_KEY); + for (const propertyName of Object.getOwnPropertyNames(this)) { + this[propertyName] = null; + } + } + _queueCallback(callback, element, isAnimated = true) { + executeAfterTransition(callback, element, isAnimated); + } + _getConfig(config) { + config = this._mergeConfigObj(config, this._element); + config = this._configAfterMerge(config); + this._typeCheckConfig(config); + return config; + } - Collapse.prototype.dimension = function () { - var hasWidth = this.$element.hasClass('width') - return hasWidth ? 'width' : 'height' + // Static + static getInstance(element) { + return Data.get(getElement(element), this.DATA_KEY); + } + static getOrCreateInstance(element, config = {}) { + return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null); + } + static get VERSION() { + return VERSION; + } + static get DATA_KEY() { + return `bs.${this.NAME}`; + } + static get EVENT_KEY() { + return `.${this.DATA_KEY}`; + } + static eventName(name) { + return `${name}${this.EVENT_KEY}`; + } } - Collapse.prototype.show = function () { - if (this.transitioning || this.$element.hasClass('in')) return - - var activesData - var actives = this.$parent && this.$parent.find('> .panel').children('.in, .collapsing') + /** + * -------------------------------------------------------------------------- + * Bootstrap dom/selector-engine.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + const getSelector = element => { + let selector = element.getAttribute('data-bs-target'); + if (!selector || selector === '#') { + let hrefAttribute = element.getAttribute('href'); + + // The only valid content that could double as a selector are IDs or classes, + // so everything starting with `#` or `.`. If a "real" URL is used as the selector, + // `document.querySelector` will rightfully complain it is invalid. + // See https://github.com/twbs/bootstrap/issues/32273 + if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) { + return null; + } - if (actives && actives.length) { - activesData = actives.data('bs.collapse') - if (activesData && activesData.transitioning) return + // Just in case some CMS puts out a full URL with the anchor appended + if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) { + hrefAttribute = `#${hrefAttribute.split('#')[1]}`; + } + selector = hrefAttribute && hrefAttribute !== '#' ? parseSelector(hrefAttribute.trim()) : null; } - - var startEvent = $.Event('show.bs.collapse') - this.$element.trigger(startEvent) - if (startEvent.isDefaultPrevented()) return - - if (actives && actives.length) { - Plugin.call(actives, 'hide') - activesData || actives.data('bs.collapse', null) + return selector; + }; + const SelectorEngine = { + find(selector, element = document.documentElement) { + return [].concat(...Element.prototype.querySelectorAll.call(element, selector)); + }, + findOne(selector, element = document.documentElement) { + return Element.prototype.querySelector.call(element, selector); + }, + children(element, selector) { + return [].concat(...element.children).filter(child => child.matches(selector)); + }, + parents(element, selector) { + const parents = []; + let ancestor = element.parentNode.closest(selector); + while (ancestor) { + parents.push(ancestor); + ancestor = ancestor.parentNode.closest(selector); + } + return parents; + }, + prev(element, selector) { + let previous = element.previousElementSibling; + while (previous) { + if (previous.matches(selector)) { + return [previous]; + } + previous = previous.previousElementSibling; + } + return []; + }, + // TODO: this is now unused; remove later along with prev() + next(element, selector) { + let next = element.nextElementSibling; + while (next) { + if (next.matches(selector)) { + return [next]; + } + next = next.nextElementSibling; + } + return []; + }, + focusableChildren(element) { + const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable="true"]'].map(selector => `${selector}:not([tabindex^="-"])`).join(','); + return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el)); + }, + getSelectorFromElement(element) { + const selector = getSelector(element); + if (selector) { + return SelectorEngine.findOne(selector) ? selector : null; + } + return null; + }, + getElementFromSelector(element) { + const selector = getSelector(element); + return selector ? SelectorEngine.findOne(selector) : null; + }, + getMultipleElementsFromSelector(element) { + const selector = getSelector(element); + return selector ? SelectorEngine.find(selector) : []; + } + }; + + /** + * -------------------------------------------------------------------------- + * Bootstrap util/component-functions.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + const enableDismissTrigger = (component, method = 'hide') => { + const clickEvent = `click.dismiss${component.EVENT_KEY}`; + const name = component.NAME; + EventHandler.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) { + if (['A', 'AREA'].includes(this.tagName)) { + event.preventDefault(); + } + if (isDisabled(this)) { + return; + } + const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`); + const instance = component.getOrCreateInstance(target); + + // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method + instance[method](); + }); + }; + + /** + * -------------------------------------------------------------------------- + * Bootstrap alert.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + + /** + * Constants + */ + + const NAME$f = 'alert'; + const DATA_KEY$a = 'bs.alert'; + const EVENT_KEY$b = `.${DATA_KEY$a}`; + const EVENT_CLOSE = `close${EVENT_KEY$b}`; + const EVENT_CLOSED = `closed${EVENT_KEY$b}`; + const CLASS_NAME_FADE$5 = 'fade'; + const CLASS_NAME_SHOW$8 = 'show'; + + /** + * Class definition + */ + + class Alert extends BaseComponent { + // Getters + static get NAME() { + return NAME$f; } - var dimension = this.dimension() - - this.$element - .removeClass('collapse') - .addClass('collapsing')[dimension](0) - .attr('aria-expanded', true) - - this.$trigger - .removeClass('collapsed') - .attr('aria-expanded', true) - - this.transitioning = 1 + // Public + close() { + const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE); + if (closeEvent.defaultPrevented) { + return; + } + this._element.classList.remove(CLASS_NAME_SHOW$8); + const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5); + this._queueCallback(() => this._destroyElement(), this._element, isAnimated); + } - var complete = function () { - this.$element - .removeClass('collapsing') - .addClass('collapse in')[dimension]('') - this.transitioning = 0 - this.$element - .trigger('shown.bs.collapse') + // Private + _destroyElement() { + this._element.remove(); + EventHandler.trigger(this._element, EVENT_CLOSED); + this.dispose(); } - if (!$.support.transition) return complete.call(this) + // Static + static jQueryInterface(config) { + return this.each(function () { + const data = Alert.getOrCreateInstance(this); + if (typeof config !== 'string') { + return; + } + if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { + throw new TypeError(`No method named "${config}"`); + } + data[config](this); + }); + } + } - var scrollSize = $.camelCase(['scroll', dimension].join('-')) + /** + * Data API implementation + */ - this.$element - .one('bsTransitionEnd', $.proxy(complete, this)) - .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]) - } + enableDismissTrigger(Alert, 'close'); - Collapse.prototype.hide = function () { - if (this.transitioning || !this.$element.hasClass('in')) return + /** + * jQuery + */ - var startEvent = $.Event('hide.bs.collapse') - this.$element.trigger(startEvent) - if (startEvent.isDefaultPrevented()) return + defineJQueryPlugin(Alert); - var dimension = this.dimension() + /** + * -------------------------------------------------------------------------- + * Bootstrap button.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ - this.$element[dimension](this.$element[dimension]())[0].offsetHeight - this.$element - .addClass('collapsing') - .removeClass('collapse in') - .attr('aria-expanded', false) + /** + * Constants + */ - this.$trigger - .addClass('collapsed') - .attr('aria-expanded', false) + const NAME$e = 'button'; + const DATA_KEY$9 = 'bs.button'; + const EVENT_KEY$a = `.${DATA_KEY$9}`; + const DATA_API_KEY$6 = '.data-api'; + const CLASS_NAME_ACTIVE$3 = 'active'; + const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="button"]'; + const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`; - this.transitioning = 1 + /** + * Class definition + */ - var complete = function () { - this.transitioning = 0 - this.$element - .removeClass('collapsing') - .addClass('collapse') - .trigger('hidden.bs.collapse') + class Button extends BaseComponent { + // Getters + static get NAME() { + return NAME$e; } - if (!$.support.transition) return complete.call(this) - - this.$element - [dimension](0) - .one('bsTransitionEnd', $.proxy(complete, this)) - .emulateTransitionEnd(Collapse.TRANSITION_DURATION) - } + // Public + toggle() { + // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method + this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3)); + } - Collapse.prototype.toggle = function () { - this[this.$element.hasClass('in') ? 'hide' : 'show']() + // Static + static jQueryInterface(config) { + return this.each(function () { + const data = Button.getOrCreateInstance(this); + if (config === 'toggle') { + data[config](); + } + }); + } } - Collapse.prototype.getParent = function () { - return $(this.options.parent) - .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') - .each($.proxy(function (i, element) { - var $element = $(element) - this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) - }, this)) - .end() - } + /** + * Data API implementation + */ + + EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => { + event.preventDefault(); + const button = event.target.closest(SELECTOR_DATA_TOGGLE$5); + const data = Button.getOrCreateInstance(button); + data.toggle(); + }); + + /** + * jQuery + */ + + defineJQueryPlugin(Button); + + /** + * -------------------------------------------------------------------------- + * Bootstrap util/swipe.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * -------------------------------------------------------------------------- + */ + + + /** + * Constants + */ + + const NAME$d = 'swipe'; + const EVENT_KEY$9 = '.bs.swipe'; + const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`; + const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`; + const EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`; + const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`; + const EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`; + const POINTER_TYPE_TOUCH = 'touch'; + const POINTER_TYPE_PEN = 'pen'; + const CLASS_NAME_POINTER_EVENT = 'pointer-event'; + const SWIPE_THRESHOLD = 40; + const Default$c = { + endCallback: null, + leftCallback: null, + rightCallback: null + }; + const DefaultType$c = { + endCallback: '(function|null)', + leftCallback: '(function|null)', + rightCallback: '(function|null)' + }; + + /** + * Class definition + */ + + class Swipe extends Config { + constructor(element, config) { + super(); + this._element = element; + if (!element || !Swipe.isSupported()) { + return; + } + this._config = this._getConfig(config); + this._deltaX = 0; + this._supportPointerEvents = Boolean(window.PointerEvent); + this._initEvents(); + } - Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { - var isOpen = $element.hasClass('in') + // Getters + static get Default() { + return Default$c; + } + static get DefaultType() { + return DefaultType$c; + } + static get NAME() { + return NAME$d; + } - $element.attr('aria-expanded', isOpen) - $trigger - .toggleClass('collapsed', !isOpen) - .attr('aria-expanded', isOpen) - } + // Public + dispose() { + EventHandler.off(this._element, EVENT_KEY$9); + } - function getTargetFromTrigger($trigger) { - var href - var target = $trigger.attr('data-target') - || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 + // Private + _start(event) { + if (!this._supportPointerEvents) { + this._deltaX = event.touches[0].clientX; + return; + } + if (this._eventIsPointerPenTouch(event)) { + this._deltaX = event.clientX; + } + } + _end(event) { + if (this._eventIsPointerPenTouch(event)) { + this._deltaX = event.clientX - this._deltaX; + } + this._handleSwipe(); + execute(this._config.endCallback); + } + _move(event) { + this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX; + } + _handleSwipe() { + const absDeltaX = Math.abs(this._deltaX); + if (absDeltaX <= SWIPE_THRESHOLD) { + return; + } + const direction = absDeltaX / this._deltaX; + this._deltaX = 0; + if (!direction) { + return; + } + execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback); + } + _initEvents() { + if (this._supportPointerEvents) { + EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event)); + EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event)); + this._element.classList.add(CLASS_NAME_POINTER_EVENT); + } else { + EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event)); + EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event)); + EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event)); + } + } + _eventIsPointerPenTouch(event) { + return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH); + } - return $(target) + // Static + static isSupported() { + return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0; + } } - - // COLLAPSE PLUGIN DEFINITION - // ========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.collapse') - var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) - - if (!data && options.toggle && option == 'show') options.toggle = false - if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.collapse - - $.fn.collapse = Plugin - $.fn.collapse.Constructor = Collapse - - - // COLLAPSE NO CONFLICT - // ==================== - - $.fn.collapse.noConflict = function () { - $.fn.collapse = old - return this - } - - - // COLLAPSE DATA-API - // ================= - - $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { - var $this = $(this) - - if (!$this.attr('data-target')) e.preventDefault() - - var $target = getTargetFromTrigger($this) - var data = $target.data('bs.collapse') - var option = data ? 'toggle' : $.extend({}, $this.data(), { trigger: this }) - - Plugin.call($target, option) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: dropdown.js v3.3.1 - * http://getbootstrap.com/javascript/#dropdowns - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // DROPDOWN CLASS DEFINITION - // ========================= - - var backdrop = '.dropdown-backdrop' - var toggle = '[data-toggle="dropdown"]' - var Dropdown = function (element) { - $(element).on('click.bs.dropdown', this.toggle) - } - - Dropdown.VERSION = '3.3.1' - - Dropdown.prototype.toggle = function (e) { - var $this = $(this) - - if ($this.is('.disabled, :disabled')) return - - var $parent = getParent($this) - var isActive = $parent.hasClass('open') - - clearMenus() - - if (!isActive) { - if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { - // if mobile we use a backdrop because click events don't delegate - $('

    diff --git a/tvorba/templates/tvorba/tematka/rozcestnik.html b/tvorba/templates/tvorba/tematka/rozcestnik.html index 605a6549..fcfba59e 100644 --- a/tvorba/templates/tvorba/tematka/rozcestnik.html +++ b/tvorba/templates/tvorba/tematka/rozcestnik.html @@ -35,7 +35,7 @@ {% if tematko.obrazek %} {{ tematko.nazev }} {% else %} {# pokud témátko nemá fotku, zobrazuje se defaultní obrázek #} - {% load static %} {{ tematko.nazev }} + {% load static %} {{ tematko.nazev }} {% endif %}
    diff --git a/tvorba/views/views_all.py b/tvorba/views/views_all.py index ac8b5477..b4bbad92 100644 --- a/tvorba/views/views_all.py +++ b/tvorba/views/views_all.py @@ -237,7 +237,7 @@ class ArchivView(generic.ListView): for i, c in enumerate(cisla): # Výchozí nastavení if c.rocnik not in urls: - urls[c.rocnik] = op.join(settings.STATIC_URL, "images", "no-picture.png") + urls[c.rocnik] = op.join(settings.STATIC_URL, "tvorba", "no-picture.png") # NOTE: tohle možná nastavuje poslední titulku if c.titulka_nahled: urls[c.rocnik] = c.titulka_nahled.url From 85c3969c50eac28758479d1dd942a322c82fc12c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Sun, 4 Aug 2024 19:21:46 +0200 Subject: [PATCH 199/225] seminar/templatetags --- .../templates/odevzdavatko/tabulka.html | 1 - seminar/templatetags/utils.py | 19 ------------------- {seminar => tvorba}/templatetags/__init__.py | 0 {seminar => tvorba}/templatetags/deadliny.py | 0 {seminar => various}/templatetags/tex.py | 0 5 files changed, 20 deletions(-) delete mode 100644 seminar/templatetags/utils.py rename {seminar => tvorba}/templatetags/__init__.py (100%) rename {seminar => tvorba}/templatetags/deadliny.py (100%) rename {seminar => various}/templatetags/tex.py (100%) diff --git a/odevzdavatko/templates/odevzdavatko/tabulka.html b/odevzdavatko/templates/odevzdavatko/tabulka.html index 7ee90ea9..cfbe0e6f 100644 --- a/odevzdavatko/templates/odevzdavatko/tabulka.html +++ b/odevzdavatko/templates/odevzdavatko/tabulka.html @@ -1,6 +1,5 @@ {% extends "base.html" %} -{% load utils %} {# Možná by mohlo být někde výš v hierarchii templatů... #} {% load barvy_reseni %} {% block content %} diff --git a/seminar/templatetags/utils.py b/seminar/templatetags/utils.py deleted file mode 100644 index ca400050..00000000 --- a/seminar/templatetags/utils.py +++ /dev/null @@ -1,19 +0,0 @@ -from django import template -from django.utils.safestring import mark_safe -from datetime import datetime, timedelta -from mamweb.settings import TIME_ZONE -import logging -register = template.Library() - -logger = logging.getLogger(__name__) - -@register.filter(name='kratke_datum', expects_localtime=True) -def kratke_datum(dt): - # None dává None, ne-datum dává False, aby se daly použít filtry typu "default". - if dt is None: - return None - if not isinstance(dt, datetime): - logger.warning(f"Špatné volání filtru {__name__}: {dt}") - return False - out = f'' - return mark_safe(out) diff --git a/seminar/templatetags/__init__.py b/tvorba/templatetags/__init__.py similarity index 100% rename from seminar/templatetags/__init__.py rename to tvorba/templatetags/__init__.py diff --git a/seminar/templatetags/deadliny.py b/tvorba/templatetags/deadliny.py similarity index 100% rename from seminar/templatetags/deadliny.py rename to tvorba/templatetags/deadliny.py diff --git a/seminar/templatetags/tex.py b/various/templatetags/tex.py similarity index 100% rename from seminar/templatetags/tex.py rename to various/templatetags/tex.py From c34716e134491b406b2ab2d28332427d14ba60d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Mon, 5 Aug 2024 11:46:38 +0200 Subject: [PATCH 200/225] seminar/utils.py --- aesop/views.py | 2 +- api/tests/test_skola_autocomplete.py | 2 +- api/urls.py | 2 +- ...-12-06-testovani_dokumentace_codereview.md | 2 +- galerie/urls.py | 2 +- korektury/urls.py | 2 +- odevzdavatko/urls.py | 4 +- odevzdavatko/utils.py | 11 + odevzdavatko/views.py | 2 +- personalni/urls.py | 2 +- personalni/utils.py | 175 +++++++- prednasky/urls.py | 2 +- seminar/models/odevzdavatko.py | 2 +- seminar/models/tvorba.py | 3 +- seminar/utils.py | 387 ------------------ sifrovacka/urls.py | 2 +- soustredeni/urls.py | 2 +- tvorba/urls.py | 2 +- tvorba/utils.py | 89 ++++ tvorba/views/views_all.py | 8 +- various/urls.py | 2 +- various/views/final.py | 95 ++++- various/views/generic.py | 29 ++ vyroci/urls.py | 2 +- vysledkovky/utils.py | 2 +- 25 files changed, 417 insertions(+), 416 deletions(-) create mode 100644 odevzdavatko/utils.py delete mode 100644 seminar/utils.py create mode 100644 tvorba/utils.py create mode 100644 various/views/generic.py diff --git a/aesop/views.py b/aesop/views.py index 5fd49cbc..1ff6c7ee 100644 --- a/aesop/views.py +++ b/aesop/views.py @@ -8,7 +8,7 @@ from django.utils.encoding import force_str from .utils import default_ovvpfile from seminar.models import Rocnik, Soustredeni from vysledkovky import utils -from seminar.utils import aktivniResitele +from tvorba.utils import aktivniResitele class ExportIndexView(generic.View): def get(self, request): diff --git a/api/tests/test_skola_autocomplete.py b/api/tests/test_skola_autocomplete.py index f69669f0..75019983 100644 --- a/api/tests/test_skola_autocomplete.py +++ b/api/tests/test_skola_autocomplete.py @@ -1,7 +1,7 @@ from django.test import TestCase, tag from django.urls import reverse import seminar.models as m -from seminar.utils import sync_skoly +from personalni.utils import sync_skoly @tag('stejny-model-na-produkci') class OrgSkolyAutocompleteTestCase(TestCase): diff --git a/api/urls.py b/api/urls.py index 9ff38424..be58d3f9 100644 --- a/api/urls.py +++ b/api/urls.py @@ -1,6 +1,6 @@ from django.urls import path from . import views -from seminar.utils import org_required +from personalni.utils import org_required urlpatterns = [ # Export škol diff --git a/docs/zapisy/2021-12-06-testovani_dokumentace_codereview.md b/docs/zapisy/2021-12-06-testovani_dokumentace_codereview.md index 224ea529..c2cfc1b5 100644 --- a/docs/zapisy/2021-12-06-testovani_dokumentace_codereview.md +++ b/docs/zapisy/2021-12-06-testovani_dokumentace_codereview.md @@ -116,7 +116,7 @@ Aktuálně: Jakýsi coding style zhruba existuje, není popsaný, šíří se li - Nesmí být striktně vynucovaný - Musel by být hodně nastavitelný - Nechceme mít kód plný `#NOQA: WTF42` -- Nejspíš vždycky bude mít false positives (`seminar.utils.roman_numerals`) i false negatives (`seminar.models.tvorba.Cislo.posli_cislo_mailem`) +- Nejspíš vždycky bude mít false positives (`tvorba.utils.roman_numerals`) i false negatives (`seminar.models.tvorba.Cislo.posli_cislo_mailem`) - Možná dobrý sluha, ale určitě špatný pán (also: špatná zkušenost ☺) - __Důsledek:__ Hrozí, že těch falešných varování bude moc, čímž to ztratí smysl úplně - Potenciálně by šlo aplikovat jen lokálně na změny? diff --git a/galerie/urls.py b/galerie/urls.py index 32824248..28b43a22 100644 --- a/galerie/urls.py +++ b/galerie/urls.py @@ -1,5 +1,5 @@ from django.urls import path -from seminar.utils import org_required +from personalni.utils import org_required from . import views urlpatterns = [ diff --git a/korektury/urls.py b/korektury/urls.py index dcd1d965..cf45ea8f 100644 --- a/korektury/urls.py +++ b/korektury/urls.py @@ -1,5 +1,5 @@ from django.urls import path -from seminar.utils import org_required +from personalni.utils import org_required from . import views urlpatterns = [ diff --git a/odevzdavatko/urls.py b/odevzdavatko/urls.py index e41b9c14..d4c2a092 100644 --- a/odevzdavatko/urls.py +++ b/odevzdavatko/urls.py @@ -1,7 +1,7 @@ from django.urls import path -from seminar.utils import org_required, resitel_required, viewMethodSwitch, \ - resitel_or_org_required +from personalni.utils import org_required, resitel_required, resitel_or_org_required +from various.views.generic import viewMethodSwitch from . import views urlpatterns = [ diff --git a/odevzdavatko/utils.py b/odevzdavatko/utils.py new file mode 100644 index 00000000..4157de4b --- /dev/null +++ b/odevzdavatko/utils.py @@ -0,0 +1,11 @@ +import decimal + + +def vzorecek_na_prepocet(body, resitelu): + """ Vzoreček na přepočet plných bodů na parciálni, když má řešení více řešitelů. """ + return body * 3 / (resitelu + 2) + + +def inverze_vzorecku_na_prepocet(body: decimal.Decimal, resitelu) -> decimal.Decimal: + """ Vzoreček na přepočet parciálních bodů na plné, když má řešení více řešitelů. """ + return round(body * (resitelu + 2) / 3, 1) diff --git a/odevzdavatko/views.py b/odevzdavatko/views.py index 9215d3f8..cbe9019e 100644 --- a/odevzdavatko/views.py +++ b/odevzdavatko/views.py @@ -20,7 +20,7 @@ import logging import seminar.models as m from . import forms as f from .forms import OdevzdavatkoTabulkaFiltrForm as FiltrForm -from seminar.utils import resi_v_rocniku +from tvorba.utils import resi_v_rocniku from various.views.pomocne import formularOKView logger = logging.getLogger(__name__) diff --git a/personalni/urls.py b/personalni/urls.py index eae46257..8abbb434 100644 --- a/personalni/urls.py +++ b/personalni/urls.py @@ -1,7 +1,7 @@ from django.urls import path from django.contrib.auth.decorators import login_required from . import views -from seminar.utils import org_required +from personalni.utils import org_required urlpatterns = [ path( diff --git a/personalni/utils.py b/personalni/utils.py index 0701d66a..4aac1e28 100644 --- a/personalni/utils.py +++ b/personalni/utils.py @@ -2,10 +2,183 @@ import seminar.models as m from various.utils import bez_diakritiky_translate import re -def normalizuj_jmeno(o: m.Osoba) -> str: +from django.contrib.auth import get_user_model +from django.contrib.auth.decorators import permission_required, user_passes_test +from django.contrib.auth.models import AnonymousUser +from django.db import transaction + +import seminar.models as m +import soustredeni.models + +from .models import Osoba, Organizator, Skola, Resitel, Prijemce + + +org_required = permission_required('auth.org') +resitel_required = permission_required('auth.resitel') + + +# inspirováno django.contrib.auth.decorators permission_required +def check_perms(user): + if user.has_perms(('auth.resitel',)): + return True + if user.has_perms(('auth.org',)): + return True + return False + + +resitel_or_org_required = user_passes_test(check_perms) + +User = get_user_model() +# Není to úplně hezké, ale budeme doufat, že to je funkční... +User.je_org = property(lambda self: self.has_perm('auth.org')) +User.je_resitel = property(lambda self: self.has_perm('auth.resitel')) +AnonymousUser.je_org = False +AnonymousUser.je_resitel = False + +def normalizuj_jmeno(o: Osoba) -> str: # FIXME: Možná není potřeba vázat na model? cele_jmeno = f'{o.jmeno} {o.prijmeni}' cele_jmeno = cele_jmeno.translate(bez_diakritiky_translate) cele_jmeno = re.sub(r'[^a-zA-Z- ]', '', cele_jmeno) return cele_jmeno + +def sync_skoly(base_url): + """Stáhne všechny školy z mamwebu na adrese a uloží je do databáze""" + from django.urls import reverse + full_url = base_url.rstrip('/') + reverse('export_skoly') + import requests + from django.core import serializers + json = requests.get(full_url, stream=True).content + for skola in serializers.deserialize('json', json): + skola.save() + +@transaction.atomic +def merge_resitele(cilovy, zdrojovy): + """Spojí dva řešitelské objekty do cílového. + + Pojmenování "zdrojový" je silně nepřiléhající, ale co už…""" + + # Postup: + # Sjednotit / upravit informace cílového řešitele + print('Upravuji data modelu') + fieldy_shoda = ['skola', 'rok_maturity', 'zasilat', 'zasilat_cislo_emailem', 'zasilat_cislo_papirove'] + + for f in fieldy_shoda: + zf = getattr(zdrojovy, f) + cf = getattr(cilovy, f) + if cf == zf: + print(f' Údaj {f} je shodný ({zf})') + else: + if zf is None: + print(f' Údaj {f} je pouze v cílovém, používám') + continue + if cf is None: + setattr(cilovy, f, zf) + cilovy.poznamka += f'\nDEBUG: Merge: doplnéný údaj {f} ze zdrojového: {zf}' + print(f" Přiřazuji {f} ze zdrojového: {zf}") + continue + # Jsou fakt různé… + # FIXME: chybí možnost na vlastní úpravu… + verdikt = input(f"\n\n Údaj {f} se u řešitele {cilovy} ({cilovy.id}) liší:\n Zdrojový: {zf}\n Cílový: {cf}\n Který použít, [z]drojový, [c]ílový? ") + verdikt = verdikt[0].casefold() + if verdikt == 'z': + setattr(cilovy, f, zf) + cilovy.poznamka += f'\nDEBUG: Merge: pro {f} použit údaj {zf} (zdrojový), nepoužit {cf} (cílový)' + elif verdikt == 'c': + cilovy.poznamka += f'\nDEBUG: Merge: pro {f} použit údaj {cf} (cílový), nepoužit {zf} (zdrojový)' + else: raise ValueError('Špatná odpověď, řešitel pravděpodobně neuložen') + # poznámku chceme nezahodit… + cilovy.poznamka += f'\nDEBUG: Merge: Původní poznámka: {zdrojovy.poznamka}' + print(f' Výsledný řešitel: {cilovy.__dict__}, ukládám') + cilovy.save() + + + # Přepojit všechny vazby ze zdrojového na cílového + print('Přepojuji vazby') + # Vazby: Škola (hotovo), Řešení_Řešitelé, Konfery_Účastníci, Soustředění_Účastníci, Osoba (vyřeší se později, nejde přepojit) + ct = m.Reseni_Resitele.objects.filter(resitele=zdrojovy).update(resitele=cilovy) + print(f' Přepojeno {ct} řešení') + ct = soustredeni.models.Konfery_Ucastnici.objects.filter(resitel=zdrojovy).update(resitel=cilovy) + print(f' Přepojeno {ct} konfer') + ct = soustredeni.models.Soustredeni_Ucastnici.objects.filter(resitel=zdrojovy).update(resitel=cilovy) + print(f' Přepojeno {ct} sousů') + + # Teď by na zdrojovém řešiteli nemělo nic viset, smazat ho, pamatujíce si jeho Osobu + zdrosoba = zdrojovy.osoba + print(f'Mažu zdrojového řešitele {zdrojovy.__dict__}') + zdrojovy.delete() + # Spojit osoby (separátní funkce). + merge_osoby(cilovy.osoba, zdrosoba) + + input("Potvrdit transakci řešitelů (^C pro zrušení) ") + +@transaction.atomic +def merge_osoby(cilova, zdrojova): + """ Spojí dvě osoby do cílové + + Nehlídá omezení typu "max 1 řešitel na osobu", to by měla hlídat databáze (OneToOneField).""" + # Sjednocení dat + print('Sjednocuji data osob') + # ID, User neřešíme, poznámku vyřešíme separátně. + fieldy = ['datum_narozeni', 'datum_registrace', 'datum_souhlasu_udaje', + 'datum_souhlasu_zasilani', 'email', 'foto', 'jmeno', 'mesto', + 'osloveni', 'prezdivka', 'prijmeni', 'psc', 'stat', 'telefon', 'ulice'] + for f in fieldy: + zf = getattr(zdrojova, f) + cf = getattr(cilova, f) + if cf == zf: + print(f' Údaj {f} je shodný ({zf})') + else: + if zf is None: + print(f' Údaj {f} je pouze v cílové, používám') + continue + if cf is None: + setattr(cilova, f, zf) + cilova.poznamka += f'\nDEBUG: Merge: doplnéný údaj {f} ze zdrojové: {zf}' + print(f" Přiřazuji {f} ze zdrojové: {zf}") + continue + # Jsou fakt různé… + # FIXME: chybí možnost na vlastní úpravu… + verdikt = input(f"\n\n Údaj {f} se u osoby {cilova} ({cilova.id}) liší:\n Zdrojový: {zf}\n Cílový: {cf}\n Který použít, [z]drojový, [c]ílový? ") + verdikt = verdikt[0].casefold() + if verdikt == 'z': + setattr(cilova, f, zf) + cilova.poznamka += f'\nDEBUG: Merge: pro {f} použit údaj {zf} (zdrojová), nepoužit {cf} (cílová)' + elif verdikt == 'c': + cilova.poznamka += f'\nDEBUG: Merge: pro {f} použit údaj {cf} (cílová), nepoužit {zf} (zdrojová)' + else: raise ValueError('Špatná odpověď, řešitel pravděpodobně neuložen') + # poznámku chceme nezahodit… + cilova.poznamka += f'\nDEBUG: Merge: Původní poznámka: {zdrojova.poznamka}' + print(f' Výsledná osoba: {cilova.__dict__}, ukládám') + cilova.save() + + # Vazby: Řešitel, User, Příjemce, Organizátor, Škola.kontaktní_osoba + print('Přepojuji vazby') + ct = Skola.objects.filter(kontaktni_osoba=zdrojova).update(kontaktni_osoba=cilova) + print(f' Přepojeno {ct} kontaktních osob') + # Ostatní vazby vyřeší OneToOneFieldy, ale někdy nemusí existovat… + ct = Resitel.objects.filter(osoba=zdrojova).update(osoba=cilova) + print(f' Přepojeno {ct} řešitelů') + ct = Prijemce.objects.filter(osoba=zdrojova).update(osoba=cilova) + print(f' Přepojeno {ct} příjemců') + ct = Organizator.objects.filter(osoba=zdrojova).update(osoba=cilova) + print(f' Přepojeno {ct} organizátorů') + # Uživatelé vedou opačným směrem, radši chceme zkontrolovat, že jsou různí ručně: + if zdrojova.user != cilova.user: + # Jeden z nich může být nenastavený… + if zdrojova.user is None: + print('Uživatel je již v cílové osobě') + elif cilova.user is None: + print('Používám uživatele zdrojové osoby') + cilova.user = zdrojova.user + # Teď nemůžeme uložit, protože kolize uživatelů. Ukládat cílovou budeme až po smazání zdrojové. + else: raise ValueError('Osoby mají obě uživatele, radši padám') + + # Uložení a mazání + print(f'Mažu zdrojovou osobu {zdrojova.__dict__}') + zdrojova.delete() + print(f'Ukládám cílovou osobu {cilova.__dict__}') + cilova.save() + + input("Potvrdit transakci osob (^C pro zrušení) ") diff --git a/prednasky/urls.py b/prednasky/urls.py index 6b455163..eecc45ad 100644 --- a/prednasky/urls.py +++ b/prednasky/urls.py @@ -1,5 +1,5 @@ from django.urls import path -from seminar.utils import org_required, resitel_or_org_required +from personalni.utils import org_required, resitel_or_org_required from . import views urlpatterns = [ diff --git a/seminar/models/odevzdavatko.py b/seminar/models/odevzdavatko.py index b0dec663..0c106df7 100644 --- a/seminar/models/odevzdavatko.py +++ b/seminar/models/odevzdavatko.py @@ -13,7 +13,7 @@ from seminar.models import tvorba as am from seminar.models import treenode as tm from seminar.models import base as bm -from seminar.utils import vzorecek_na_prepocet, inverze_vzorecku_na_prepocet +from odevzdavatko.utils import vzorecek_na_prepocet, inverze_vzorecku_na_prepocet from personalni.models import Resitel diff --git a/seminar/models/tvorba.py b/seminar/models/tvorba.py index 36157c96..c11a3861 100644 --- a/seminar/models/tvorba.py +++ b/seminar/models/tvorba.py @@ -23,7 +23,7 @@ from taggit.managers import TaggableManager from reversion import revisions as reversion -from seminar.utils import roman +from tvorba.utils import roman, aktivniResitele from treenode import treelib from unidecode import unidecode # Používám pro získání ID odkazu (ještě je to někde po někom zakomentované) @@ -31,7 +31,6 @@ from unidecode import unidecode # Používám pro získání ID odkazu (ještě from polymorphic.models import PolymorphicModel from django.core.mail import EmailMessage -from seminar.utils import aktivniResitele from personalni.models import Prijemce, Organizator diff --git a/seminar/utils.py b/seminar/utils.py deleted file mode 100644 index c826bf0b..00000000 --- a/seminar/utils.py +++ /dev/null @@ -1,387 +0,0 @@ -import datetime -import decimal - -from django.contrib.auth import get_user_model -from django.contrib.auth.decorators import permission_required, \ - user_passes_test -from django import views as DjangoViews - -from django.db import transaction - -from django.contrib.auth.models import AnonymousUser -from django.contrib.contenttypes.models import ContentType -from django.core.exceptions import ObjectDoesNotExist - -import logging - -import seminar.models as m -import treenode.treelib as t - -logger = logging.getLogger(__name__) - -org_required = permission_required('auth.org') -resitel_required = permission_required('auth.resitel') - - -# inspirováno django.contrib.auth.decorators permission_required -def check_perms(user): - if user.has_perms(('auth.resitel',)): - return True - if user.has_perms(('auth.org',)): - return True - return False - - -resitel_or_org_required = user_passes_test(check_perms) - -User = get_user_model() -# Není to úplně hezké, ale budeme doufat, že to je funkční... -User.je_org = property(lambda self: self.has_perm('auth.org')) -User.je_resitel = property(lambda self: self.has_perm('auth.resitel')) -AnonymousUser.je_org = False -AnonymousUser.je_resitel = False - - -def vzorecek_na_prepocet(body, resitelu): - """ Vzoreček na přepočet plných bodů na parciálni, když má řešení více řešitelů. """ - return body * 3 / (resitelu + 2) - - -def inverze_vzorecku_na_prepocet(body: decimal.Decimal, resitelu) -> decimal.Decimal: - """ Vzoreček na přepočet parciálních bodů na plné, když má řešení více řešitelů. """ - return round(body * (resitelu + 2) / 3, 1) - - -def histogram(seznam): - d = {} - for i in seznam: - if i not in d: - d[i] = 0 - d[i] += 1 - return d - -# Pozor: zarovnáno velmi netradičně pro přehlednost -roman_numerals = zip((1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1), - ('M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I')) - - -def roman(num): - res = "" - for i, n in roman_numerals: - res += n * (num // i) - num %= i - return res - - -def from_roman(rom): - if not rom: - return 0 - for i, n in roman_numerals: - if rom.upper().startswith(n): - return i + from_roman(rom[len(n):]) - raise Exception('Invalid roman numeral: "%s"', rom) - - -def seznam_problemu(): - """Funkce pro hledání nekonzistencí v databázi a dalších nežádoucích stavů webu/databáze. - - Nijak nesouvisí s Problémy zadanými řešitelům.""" - # FIXME: přejmenovat funkci? - # FIXME: Tak, jak je napsaná, asi spíš patří někam k views a ne do utils (?) - problemy = [] - - # Pomocna fce k formatovani problemovych hlasek - def prb(cls, msg, objs=None): - s = '%s: %s' % (cls.__name__, msg) - if objs: - s += ' [' - for o in objs: - try: - url = o.admin_url() - except: - url = None - if url: - s += '%s, ' % (url, o.pk,) - else: - s += '%s, ' % (o.pk,) - s = s[:-2] + ']' - problemy.append(s) - - # Duplicita jmen - jmena = {} - for r in m.Resitel.objects.all(): - j = r.osoba.plne_jmeno() - if j not in jmena: - jmena[j] = [] - jmena[j].append(r) - for j in jmena: - if len(jmena[j]) > 1: - prb(m.Resitel, 'Duplicitní jméno "%s"' % (j,), jmena[j]) - - # Data maturity a narození - for r in m.Resitel.objects.all(): - if not r.rok_maturity: - prb(m.Resitel, 'Neznámý rok maturity', [r]) - if r.rok_maturity and (r.rok_maturity < 1990 or r.rok_maturity > datetime.date.today().year + 10): - prb(m.Resitel, 'Podezřelé datum maturity', [r]) - if r.osoba.datum_narozeni and ( - r.osoba.datum_narozeni.year < 1970 or r.osoba.datum_narozeni.year > datetime.date.today().year - 12): - prb(m.Resitel, 'Podezřelé datum narození', [r]) -# if not r.email: -# prb(Resitel, u'Neznámý email', [r]) - - ## Kontroly konzistence databáze a TreeNodů - - # Články - for clanek in m.Clanek.objects.all(): - # získáme řešení svázané se článkem a z něj node ve stromě - reseni = clanek.reseni_set - if (reseni.count() != 1): - raise ValueError("Článek k sobě má nejedno řešení!") - r = reseni.first() - clanek_node = r.text_cely # vazba na ReseniNode z Reseni - # content type je věc pomáhající rozeznávat různé typy objektů v django-polymorphic - # protože isinstance vrátí vždy jen TreeNode - # https://django-polymorphic.readthedocs.io/en/stable/migrating.html - cislonode_ct = ContentType.objects.get_for_model(m.CisloNode) - node = clanek_node - while node is not None: - node_ct = node.polymorphic_ctype - if node_ct == cislonode_ct: # dostali jsme se k CisloNode - # zkontrolujeme, že stromové číslo odpovídá atributu - # .cislonode je opačná vazba k treenode_ptr, abychom z TreeNode dostali - # CisloNode - if clanek.cislo != node.cislonode.cislo: - prb(m.Clanek, "Číslo otištění uložené u článku nesedí s " - "číslem otištění podle struktury treenodů.", [clanek]) - break - node = t.get_parent(node) - - return problemy - - -### Generovani obalek -def resi_v_rocniku(rocnik, cislo=None): - """ Vrátí seznam řešitelů, co vyřešili nějaký problém v daném ročníku, do daného čísla. - Parametry: - rocnik (typu Rocnik) ročník, ze kterého chci řešitele, co něco odevzdali - cislo (typu Cislo) číslo, do kterého včetně se počítá, že v daném - ročníku řešitel něco poslal. - Pokud není zadané, počítají se všechna řešení z daného ročníku. - Výstup: - QuerySet objektů typu Resitel """ - - if cislo is None: - # filtrujeme pouze podle ročníku - return m.Resitel.objects.filter(rok_maturity__gte=rocnik.druhy_rok(), - reseni__hodnoceni__deadline_body__cislo__rocnik=rocnik).distinct() - else: # filtrujeme podle ročníku i čísla - return m.Resitel.objects.filter(rok_maturity__gte=rocnik.druhy_rok(), - reseni__hodnoceni__deadline_body__cislo__rocnik=rocnik, - reseni__hodnoceni__deadline_body__cislo__poradi__lte=cislo.poradi).distinct() - - -def aktivniResitele(cislo, pouze_letosni=False): - """ Vrací QuerySet aktivních řešitelů, což jsou ti, co ještě neodmaturovali - a letos něco poslali (anebo loni něco poslali, pokud jde o první tři čísla). - Parametry: - cislo (typu Cislo) číslo, o které se jedná - pouze_letosni jen řešitelé, kteří tento rok něco poslali - - """ - letos = cislo.rocnik - - # detekujeme, zda jde o první tři čísla či nikoli (tj. zda spamovat řešitele z minulého roku) - zacatek_rocniku = True - try: - if int(cislo.poradi) > 3: - zacatek_rocniku = False - except ValueError: - # if cislo.poradi != '7-8': - # raise ValueError(f'{cislo} je neplatné číslo čísla (není int a není 7-8)') - zacatek_rocniku = False - - # nehledě na číslo chceme jen řešitele, kteří letos něco odevzdali - if pouze_letosni: - zacatek_rocniku = False - - try: - loni = m.Rocnik.objects.get(rocnik=letos.rocnik - 1) - except ObjectDoesNotExist: - # Pro první ročník neexistuje ročník předchozí - zacatek_rocniku = False - - if not zacatek_rocniku: - return resi_v_rocniku(letos, cislo).filter(rok_maturity__gte=letos.druhy_rok()) - else: - # spojíme querysety s řešiteli loni a letos do daného čísla - return (resi_v_rocniku(loni) | resi_v_rocniku(letos, cislo)).distinct().filter(rok_maturity__gte=letos.druhy_rok()) - -def viewMethodSwitch(get, post): - """ - Vrátí view, který zavolá různé jiné views podle toho, kterou metodou je zavolán. - - Inspirováno https://docs.djangoproject.com/en/3.1/topics/class-based-views/mixins/#an-alternative-better-solution, jen jsem to udělal genericky. - - Parametry: - post view pro metodu POST - get view pro metodu GET - - V obou případech se míní už view jakožto funkce, takže u class-based views se už má použít .as_view() - - TODO: Podpora i pro metodu HEAD? A možná i pro FILES? - """ - - theGetView = get - thePostView = post - - class NewView(DjangoViews.View): - def get(self, request, *args, **kwargs): - return theGetView(request, *args, **kwargs) - def post(self, request, *args, **kwargs): - return thePostView(request, *args, **kwargs) - - return NewView.as_view() - - -def sync_skoly(base_url): - """Stáhne všechny školy z mamwebu na adrese a uloží je do databáze""" - from django.urls import reverse - full_url = base_url.rstrip('/') + reverse('export_skoly') - import requests - from django.core import serializers - json = requests.get(full_url, stream=True).content - for skola in serializers.deserialize('json', json): - skola.save() - -@transaction.atomic -def merge_resitele(cilovy, zdrojovy): - """Spojí dva řešitelské objekty do cílového. - - Pojmenování "zdrojový" je silně nepřiléhající, ale co už…""" - - # Postup: - # Sjednotit / upravit informace cílového řešitele - print('Upravuji data modelu') - fieldy_shoda = ['skola', 'rok_maturity', 'zasilat', 'zasilat_cislo_emailem', 'zasilat_cislo_papirove'] - - for f in fieldy_shoda: - zf = getattr(zdrojovy, f) - cf = getattr(cilovy, f) - if cf == zf: - print(f' Údaj {f} je shodný ({zf})') - else: - if zf is None: - print(f' Údaj {f} je pouze v cílovém, používám') - continue - if cf is None: - setattr(cilovy, f, zf) - cilovy.poznamka += f'\nDEBUG: Merge: doplnéný údaj {f} ze zdrojového: {zf}' - print(f" Přiřazuji {f} ze zdrojového: {zf}") - continue - # Jsou fakt různé… - # FIXME: chybí možnost na vlastní úpravu… - verdikt = input(f"\n\n Údaj {f} se u řešitele {cilovy} ({cilovy.id}) liší:\n Zdrojový: {zf}\n Cílový: {cf}\n Který použít, [z]drojový, [c]ílový? ") - verdikt = verdikt[0].casefold() - if verdikt == 'z': - setattr(cilovy, f, zf) - cilovy.poznamka += f'\nDEBUG: Merge: pro {f} použit údaj {zf} (zdrojový), nepoužit {cf} (cílový)' - elif verdikt == 'c': - cilovy.poznamka += f'\nDEBUG: Merge: pro {f} použit údaj {cf} (cílový), nepoužit {zf} (zdrojový)' - else: raise ValueError('Špatná odpověď, řešitel pravděpodobně neuložen') - # poznámku chceme nezahodit… - cilovy.poznamka += f'\nDEBUG: Merge: Původní poznámka: {zdrojovy.poznamka}' - print(f' Výsledný řešitel: {cilovy.__dict__}, ukládám') - cilovy.save() - - - # Přepojit všechny vazby ze zdrojového na cílového - print('Přepojuji vazby') - # Vazby: Škola (hotovo), Řešení_Řešitelé, Konfery_Účastníci, Soustředění_Účastníci, Osoba (vyřeší se později, nejde přepojit) - ct = m.Reseni_Resitele.objects.filter(resitele=zdrojovy).update(resitele=cilovy) - print(f' Přepojeno {ct} řešení') - ct = m.Konfery_Ucastnici.objects.filter(resitel=zdrojovy).update(resitel=cilovy) - print(f' Přepojeno {ct} konfer') - ct = m.Soustredeni_Ucastnici.objects.filter(resitel=zdrojovy).update(resitel=cilovy) - print(f' Přepojeno {ct} sousů') - - # Teď by na zdrojovém řešiteli nemělo nic viset, smazat ho, pamatujíce si jeho Osobu - zdrosoba = zdrojovy.osoba - print(f'Mažu zdrojového řešitele {zdrojovy.__dict__}') - zdrojovy.delete() - # Spojit osoby (separátní funkce). - merge_osoby(cilovy.osoba, zdrosoba) - - input("Potvrdit transakci řešitelů (^C pro zrušení) ") - -@transaction.atomic -def merge_osoby(cilova, zdrojova): - """ Spojí dvě osoby do cílové - - Nehlídá omezení typu "max 1 řešitel na osobu", to by měla hlídat databáze (OneToOneField).""" - # Sjednocení dat - print('Sjednocuji data osob') - # ID, User neřešíme, poznámku vyřešíme separátně. - fieldy = ['datum_narozeni', 'datum_registrace', 'datum_souhlasu_udaje', - 'datum_souhlasu_zasilani', 'email', 'foto', 'jmeno', 'mesto', - 'osloveni', 'prezdivka', 'prijmeni', 'psc', 'stat', 'telefon', 'ulice'] - for f in fieldy: - zf = getattr(zdrojova, f) - cf = getattr(cilova, f) - if cf == zf: - print(f' Údaj {f} je shodný ({zf})') - else: - if zf is None: - print(f' Údaj {f} je pouze v cílové, používám') - continue - if cf is None: - setattr(cilova, f, zf) - cilova.poznamka += f'\nDEBUG: Merge: doplnéný údaj {f} ze zdrojové: {zf}' - print(f" Přiřazuji {f} ze zdrojové: {zf}") - continue - # Jsou fakt různé… - # FIXME: chybí možnost na vlastní úpravu… - verdikt = input(f"\n\n Údaj {f} se u osoby {cilova} ({cilova.id}) liší:\n Zdrojový: {zf}\n Cílový: {cf}\n Který použít, [z]drojový, [c]ílový? ") - verdikt = verdikt[0].casefold() - if verdikt == 'z': - setattr(cilova, f, zf) - cilova.poznamka += f'\nDEBUG: Merge: pro {f} použit údaj {zf} (zdrojová), nepoužit {cf} (cílová)' - elif verdikt == 'c': - cilova.poznamka += f'\nDEBUG: Merge: pro {f} použit údaj {cf} (cílová), nepoužit {zf} (zdrojová)' - else: raise ValueError('Špatná odpověď, řešitel pravděpodobně neuložen') - # poznámku chceme nezahodit… - cilova.poznamka += f'\nDEBUG: Merge: Původní poznámka: {zdrojova.poznamka}' - print(f' Výsledná osoba: {cilova.__dict__}, ukládám') - cilova.save() - - # Vazby: Řešitel, User, Příjemce, Organizátor, Škola.kontaktní_osoba - print('Přepojuji vazby') - ct = m.Skola.objects.filter(kontaktni_osoba=zdrojova).update(kontaktni_osoba=cilova) - print(f' Přepojeno {ct} kontaktních osob') - # Ostatní vazby vyřeší OneToOneFieldy, ale někdy nemusí existovat… - ct = m.Resitel.objects.filter(osoba=zdrojova).update(osoba=cilova) - print(f' Přepojeno {ct} řešitelů') - ct = m.Prijemce.objects.filter(osoba=zdrojova).update(osoba=cilova) - print(f' Přepojeno {ct} příjemců') - ct = m.Organizator.objects.filter(osoba=zdrojova).update(osoba=cilova) - print(f' Přepojeno {ct} organizátorů') - # Uživatelé vedou opačným směrem, radši chceme zkontrolovat, že jsou různí ručně: - if zdrojova.user != cilova.user: - # Jeden z nich může být nenastavený… - if zdrojova.user is None: - print('Uživatel je již v cílové osobě') - elif cilova.user is None: - print('Používám uživatele zdrojové osoby') - cilova.user = zdrojova.user - # Teď nemůžeme uložit, protože kolize uživatelů. Ukládat cílovou budeme až po smazání zdrojové. - else: raise ValueError('Osoby mají obě uživatele, radši padám') - - # Uložení a mazání - print(f'Mažu zdrojovou osobu {zdrojova.__dict__}') - zdrojova.delete() - print(f'Ukládám cílovou osobu {cilova.__dict__}') - cilova.save() - - input("Potvrdit transakci osob (^C pro zrušení) ") - - diff --git a/sifrovacka/urls.py b/sifrovacka/urls.py index 85f9c4cc..1357ef27 100644 --- a/sifrovacka/urls.py +++ b/sifrovacka/urls.py @@ -1,6 +1,6 @@ from django.urls import path -from seminar.utils import org_required, resitel_or_org_required +from personalni.utils import org_required, resitel_or_org_required from .views import SifrovackaView, SifrovackaListView, NapovedaView, NapovedaListView, PreskoceniView urlpatterns = [ diff --git a/soustredeni/urls.py b/soustredeni/urls.py index 2e5a6136..92cfad18 100644 --- a/soustredeni/urls.py +++ b/soustredeni/urls.py @@ -1,6 +1,6 @@ from django.urls import path, include from . import views -from seminar.utils import org_required +from personalni.utils import org_required urlpatterns = [ path( diff --git a/tvorba/urls.py b/tvorba/urls.py index b5ebed98..e662491c 100644 --- a/tvorba/urls.py +++ b/tvorba/urls.py @@ -1,6 +1,6 @@ from django.urls import path, include, re_path from . import views -from seminar.utils import org_required +from personalni.utils import org_required urlpatterns = [ # path('aktualni/temata/', views.TemataRozcestnikView), diff --git a/tvorba/utils.py b/tvorba/utils.py new file mode 100644 index 00000000..ba0c5d5b --- /dev/null +++ b/tvorba/utils.py @@ -0,0 +1,89 @@ +from django.core.exceptions import ObjectDoesNotExist + +import personalni.models + +import seminar.models as m + + +def resi_v_rocniku(rocnik, cislo=None): + """ Vrátí seznam řešitelů, co vyřešili nějaký problém v daném ročníku, do daného čísla. + Parametry: + rocnik (typu Rocnik) ročník, ze kterého chci řešitele, co něco odevzdali + cislo (typu Cislo) číslo, do kterého včetně se počítá, že v daném + ročníku řešitel něco poslal. + Pokud není zadané, počítají se všechna řešení z daného ročníku. + Výstup: + QuerySet objektů typu Resitel """ + + if cislo is None: + # filtrujeme pouze podle ročníku + return personalni.models.Resitel.objects.filter( + rok_maturity__gte=rocnik.druhy_rok(), + reseni__hodnoceni__deadline_body__cislo__rocnik=rocnik + ).distinct() + else: # filtrujeme podle ročníku i čísla + return personalni.models.Resitel.objects.filter( + rok_maturity__gte=rocnik.druhy_rok(), + reseni__hodnoceni__deadline_body__cislo__rocnik=rocnik, + reseni__hodnoceni__deadline_body__cislo__poradi__lte=cislo.poradi + ).distinct() + + +def aktivniResitele(cislo, pouze_letosni=False): + """ Vrací QuerySet aktivních řešitelů, což jsou ti, co ještě neodmaturovali + a letos něco poslali (anebo loni něco poslali, pokud jde o první tři čísla). + Parametry: + cislo (typu Cislo) číslo, o které se jedná + pouze_letosni jen řešitelé, kteří tento rok něco poslali + + """ + letos = cislo.rocnik + + # detekujeme, zda jde o první tři čísla či nikoli (tj. zda spamovat řešitele z minulého roku) + zacatek_rocniku = True + try: + if int(cislo.poradi) > 3: + zacatek_rocniku = False + except ValueError: + # if cislo.poradi != '7-8': + # raise ValueError(f'{cislo} je neplatné číslo čísla (není int a není 7-8)') + zacatek_rocniku = False + + # nehledě na číslo chceme jen řešitele, kteří letos něco odevzdali + if pouze_letosni: + zacatek_rocniku = False + + try: + loni = m.Rocnik.objects.get(rocnik=letos.rocnik - 1) + except ObjectDoesNotExist: + # Pro první ročník neexistuje ročník předchozí + zacatek_rocniku = False + + if not zacatek_rocniku: + return resi_v_rocniku(letos, cislo).filter(rok_maturity__gte=letos.druhy_rok()) + else: + # spojíme querysety s řešiteli loni a letos do daného čísla + return (resi_v_rocniku(loni) | resi_v_rocniku(letos, cislo))\ + .distinct().filter(rok_maturity__gte=letos.druhy_rok()) + + +# Pozor: zarovnáno velmi netradičně pro přehlednost +roman_numerals = zip((1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1), # noqa + ('M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I')) # noqa + + +def roman(num): + res = "" + for i, n in roman_numerals: + res += n * (num // i) + num %= i + return res + + +def from_roman(rom): + if not rom: + return 0 + for i, n in roman_numerals: + if rom.upper().startswith(n): + return i + from_roman(rom[len(n):]) + raise Exception('Invalid roman numeral: "%s"', rom) diff --git a/tvorba/views/views_all.py b/tvorba/views/views_all.py index b4bbad92..f960aac8 100644 --- a/tvorba/views/views_all.py +++ b/tvorba/views/views_all.py @@ -15,7 +15,6 @@ from seminar.models import Problem, Cislo, Reseni, Nastaveni, Rocnik, \ Resitel, Novinky, Tema, Clanek, \ Deadline # Tohle je stare a chceme se toho zbavit. Pouzivejte s.ToCoChci #from .models import VysledkyZaCislo, VysledkyKCisluZaRocnik, VysledkyKCisluOdjakziva -from seminar import utils from treenode import treelib import treenode.templatetags as tnltt import treenode.serializers as vr @@ -32,9 +31,10 @@ import unicodedata import logging import time -from seminar.utils import aktivniResitele import personalni.views +from .. import utils + # ze starého modelu #def verejna_temata(rocnik): # """ @@ -368,7 +368,7 @@ class OdmenyView(generic.TemplateView): context = super().get_context_data(**kwargs) fromcislo = get_object_or_404(Cislo, rocnik=self.kwargs.get('frocnik'), poradi=self.kwargs.get('fcislo')) tocislo = get_object_or_404(Cislo, rocnik=self.kwargs.get('trocnik'), poradi=self.kwargs.get('tcislo')) - resitele = aktivniResitele(tocislo) + resitele = utils.aktivniResitele(tocislo) def get_diff(from_deadline: Deadline, to_deadline: Deadline): frombody = body_resitelu(resitele=resitele, jen_verejne=False, do=from_deadline) @@ -481,7 +481,7 @@ class RocnikVysledkovkaView(RocnikView): def cisloObalkyView(request, rocnik, cislo): realne_cislo = get_object_or_404(Cislo, poradi=cislo, rocnik__rocnik=rocnik) - return personalni.views.obalkyView(request, aktivniResitele(realne_cislo)) + return personalni.views.obalkyView(request, utils.aktivniResitele(realne_cislo)) diff --git a/various/urls.py b/various/urls.py index ae2d3042..a3f03ade 100644 --- a/various/urls.py +++ b/various/urls.py @@ -1,6 +1,6 @@ from django.urls import path from .views.final import TitulniStranaView, JakResitView, StavDatabazeView -from seminar.utils import org_required +from personalni.utils import org_required urlpatterns = [ path('', TitulniStranaView.as_view(), name='titulni_strana'), diff --git a/various/views/final.py b/various/views/final.py index 12a18250..de23a718 100644 --- a/various/views/final.py +++ b/various/views/final.py @@ -4,13 +4,15 @@ Stránky, které se mi nepovedlo lépe zařadit. Oproti `./pomocne.py` se tyto views používají přímo ve various a naopak importují spoustu věcí odjinud """ +import datetime +from django.contrib.contenttypes.models import ContentType from django.shortcuts import get_object_or_404, render from django.utils import timezone from django.views import generic import novinky.views -import seminar.utils +import treenode.treelib as t import tvorba.views from personalni.models import Resitel from seminar import models as m @@ -56,9 +58,94 @@ class JakResitView(generic.ListView): ### Status +def histogram(seznam): + d = {} + for i in seznam: + if i not in d: + d[i] = 0 + d[i] += 1 + return d + + +def seznam_problemu(): + """Funkce pro hledání nekonzistencí v databázi a dalších nežádoucích stavů webu/databáze. + + Nijak nesouvisí s Problémy zadanými řešitelům.""" + # FIXME: přejmenovat funkci? + problemy = [] + + # Pomocna fce k formatovani problemovych hlasek + def prb(cls, msg, objs=None): + s = '%s: %s' % (cls.__name__, msg) + if objs: + s += ' [' + for o in objs: + try: + url = o.admin_url() + except: + url = None + if url: + s += '%s, ' % (url, o.pk,) + else: + s += '%s, ' % (o.pk,) + s = s[:-2] + ']' + problemy.append(s) + + # Duplicita jmen + jmena = {} + for r in m.Resitel.objects.all(): + j = r.osoba.plne_jmeno() + if j not in jmena: + jmena[j] = [] + jmena[j].append(r) + for j in jmena: + if len(jmena[j]) > 1: + prb(m.Resitel, 'Duplicitní jméno "%s"' % (j,), jmena[j]) + + # Data maturity a narození + for r in m.Resitel.objects.all(): + if not r.rok_maturity: + prb(m.Resitel, 'Neznámý rok maturity', [r]) + if r.rok_maturity and (r.rok_maturity < 1990 or r.rok_maturity > datetime.date.today().year + 10): + prb(m.Resitel, 'Podezřelé datum maturity', [r]) + if r.osoba.datum_narozeni and ( + r.osoba.datum_narozeni.year < 1970 or r.osoba.datum_narozeni.year > datetime.date.today().year - 12): + prb(m.Resitel, 'Podezřelé datum narození', [r]) + # if not r.email: + # prb(Resitel, u'Neznámý email', [r]) + + ## Kontroly konzistence databáze a TreeNodů + + # Články + for clanek in m.Clanek.objects.all(): + # získáme řešení svázané se článkem a z něj node ve stromě + reseni = clanek.reseni_set + if (reseni.count() != 1): + raise ValueError("Článek k sobě má nejedno řešení!") + r = reseni.first() + clanek_node = r.text_cely # vazba na ReseniNode z Reseni + # content type je věc pomáhající rozeznávat různé typy objektů v django-polymorphic + # protože isinstance vrátí vždy jen TreeNode + # https://django-polymorphic.readthedocs.io/en/stable/migrating.html + cislonode_ct = ContentType.objects.get_for_model(m.CisloNode) + node = clanek_node + while node is not None: + node_ct = node.polymorphic_ctype + if node_ct == cislonode_ct: # dostali jsme se k CisloNode + # zkontrolujeme, že stromové číslo odpovídá atributu + # .cislonode je opačná vazba k treenode_ptr, abychom z TreeNode dostali + # CisloNode + if clanek.cislo != node.cislonode.cislo: + prb(m.Clanek, "Číslo otištění uložené u článku nesedí s " + "číslem otištění podle struktury treenodů.", [clanek]) + break + node = t.get_parent(node) + + return problemy + def StavDatabazeView(request): # nastaveni = Nastaveni.objects.get() - problemy = seminar.utils.seznam_problemu() + problemy = seznam_problemu() muzi = Resitel.objects.filter(osoba__osloveni=m.Osoba.OSLOVENI_MUZSKE) zeny = Resitel.objects.filter(osoba__osloveni=m.Osoba.OSLOVENI_ZENSKE) return render(request, 'various/stav_databaze.html', { @@ -68,6 +155,6 @@ def StavDatabazeView(request): 'resitele': Resitel.objects.all(), 'muzi': muzi, 'zeny': zeny, - 'jmena_muzu': seminar.utils.histogram([r.osoba.jmeno for r in muzi]), - 'jmena_zen': seminar.utils.histogram([r.osoba.jmeno for r in zeny]), + 'jmena_muzu': histogram([r.osoba.jmeno for r in muzi]), + 'jmena_zen': histogram([r.osoba.jmeno for r in zeny]), }) diff --git a/various/views/generic.py b/various/views/generic.py new file mode 100644 index 00000000..b18178fb --- /dev/null +++ b/various/views/generic.py @@ -0,0 +1,29 @@ +import django.views + + +def viewMethodSwitch(get, post): + """ + Vrátí view, který zavolá různé jiné views podle toho, kterou metodou je zavolán. + + Inspirováno https://docs.djangoproject.com/en/3.1/topics/class-based-views/mixins/#an-alternative-better-solution, jen jsem to udělal genericky. + + Parametry: + post view pro metodu POST + get view pro metodu GET + + V obou případech se míní už view jakožto funkce, takže u class-based views se už má použít .as_view() + + TODO: Podpora i pro metodu HEAD? A možná i pro FILES? + """ + + theGetView = get + thePostView = post + + class NewView(django.views.View): + def get(self, request, *args, **kwargs): + return theGetView(request, *args, **kwargs) + + def post(self, request, *args, **kwargs): + return thePostView(request, *args, **kwargs) + + return NewView.as_view() diff --git a/vyroci/urls.py b/vyroci/urls.py index 69132f45..44215a46 100644 --- a/vyroci/urls.py +++ b/vyroci/urls.py @@ -1,6 +1,6 @@ from django.urls import path -from seminar.utils import org_required +from personalni.utils import org_required from .views import VyrociView, VyrociListView urlpatterns = [ diff --git a/vysledkovky/utils.py b/vysledkovky/utils.py index 2036b9d3..7cd914f4 100644 --- a/vysledkovky/utils.py +++ b/vysledkovky/utils.py @@ -4,7 +4,7 @@ from typing import Union, Iterable # TODO: s pythonem 3.10 přepsat na '|' import seminar.models as m from django.db.models import Q, Sum -from seminar.utils import resi_v_rocniku +from tvorba.utils import resi_v_rocniku ROCNIK_ZRUSENI_TEMAT = 25 From 0b0a939de5c33110b0870e0d48942a0a9cd1230b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Fri, 2 Aug 2024 19:38:06 +0200 Subject: [PATCH 201/225] =?UTF-8?q?Odd=C4=9Blen=C3=AD=20generov=C3=A1n?= =?UTF-8?q?=C3=AD=20testdat=20k=20sous=20v=C4=9Bcem?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- seminar/testutils.py | 52 +++-------------------------------- soustredeni/testutils.py | 59 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 48 deletions(-) create mode 100644 soustredeni/testutils.py diff --git a/seminar/testutils.py b/seminar/testutils.py index be7f3677..51f3f362 100644 --- a/seminar/testutils.py +++ b/seminar/testutils.py @@ -10,13 +10,15 @@ import unidecode import logging from korektury.testutils import create_test_pdf -from seminar.models import Skola, Resitel, Rocnik, Cislo, Deadline, Problem, Reseni, PrilohaReseni, Nastaveni, Soustredeni, Soustredeni_Ucastnici, Soustredeni_Organizatori, Osoba, Organizator, Prijemce, Tema, Uloha, Konfera, TextNode, UlohaVzorakNode, RocnikNode, CisloNode, TemaVCisleNode, Text, Hodnoceni, UlohaZadaniNode, Novinky, TreeNode +from seminar.models import Skola, Resitel, Rocnik, Cislo, Deadline, Problem, Reseni, PrilohaReseni, Nastaveni, Osoba, Organizator, Prijemce, Tema, Uloha, TextNode, UlohaVzorakNode, RocnikNode, CisloNode, TemaVCisleNode, Text, Hodnoceni, UlohaZadaniNode, Novinky, TreeNode import seminar.models as m from django.contrib.flatpages.models import FlatPage from django.contrib.sites.models import Site from treenode.treelib import all_children, insert_last_child, all_children_of_type, create_node_after +from soustredeni.testutils import gen_soustredeni, gen_konfery + User = django.contrib.auth.get_user_model() zlinska = None # tohle bude speciální škola, které později dodáme kontaktní osobu @@ -352,30 +354,6 @@ def gen_ulohy_do_cisla(rnd, organizatori, resitele, rocnik_cisla, rocniky, size) return -def gen_soustredeni(rnd, resitele, organizatori): - logger.info('Generuji soustředění...') - - soustredeni = [] - for _ in range(1, 10): #FIXME Tu range si změňte jak chcete, nevím, co přesně znamená size (asi Anet?) - datum_zacatku=datetime.date(rnd.randint(2000, 2020), rnd.randint(1, 12), rnd.randint(1, 28)) - working_sous = Soustredeni.objects.create( - rocnik=Rocnik.objects.order_by('?').first(), - verejne_db=rnd.choice([True, False]), - misto=rnd.choice(['Kremrolovice', 'Indiánov', 'U zmzliny', 'Vafláreň', 'Větrník', 'Horní Rakvička', 'Dolní cheesecake']), - typ=rnd.choice(['jarni', 'podzimni', 'vikend']), - datum_zacatku=datum_zacatku, - datum_konce=datum_zacatku + datetime.timedelta(days=7)) - ucastnici = rnd.sample(resitele, min(len(resitele), 20)) - working_sous.ucastnici.set(ucastnici) - #for res in rnd.sample(resitele, min(len(resitele), 20)): - # Soustredeni_Ucastnici.objects.create(resitel=res, soutredeni=working_sous) - orgove_vyber = rnd.sample(organizatori, min(len(organizatori), 20)) - working_sous.organizatori.set(orgove_vyber) - #for org in rnd.sample(organizatori, min(len(organizatori), 20)): - # Soustredeni_Organizatori.objects.create(organizator=org, soutredeni=working_sous) - working_sous.save() - soustredeni.append(working_sous) - return soustredeni def gen_rocniky(last_rocnik, size): logger.info('Generuji ročníky (size={})...'.format(size)) @@ -390,28 +368,6 @@ def gen_rocniky(last_rocnik, size): rocniky.append(rocnik) return rocniky -def gen_konfery(size, rnd, organizatori, resitele, soustredeni): - logger.info('Generuji konfery (size={})...'.format(size)) - - konfery = [] - for _ in range(1, size): #FIXME Tu range si změňte jak chcete, nevím, co přesně znamená size (asi Anet?) - # Anet: size je parametr udávající velikost testovacích dat a dá se pomocí ní škálovat, - # kolik dat se nageneruje - konfera = Konfera.objects.create( - nazev=rnd.choice(['Pozorování', 'Zkoumání', 'Modelování', 'Počítání', 'Zkoušení']) + rnd.choice([' vlastností', ' jevů', ' charakteristik']) + rnd.choice([' vektorových prostorů', ' kinetické terorie látek', ' molekulární biologie', ' syntentických stromů']), - anotace=lorem.paragraph(), - abstrakt=lorem.paragraph(), - garant=rnd.choice(organizatori), - soustredeni=rnd.choice(soustredeni), - typ_prezentace=rnd.choice(['veletrh', 'prezentace'])) - ucastnici_sous = list(konfera.soustredeni.ucastnici.all()) - ucastnici = rnd.sample(ucastnici_sous, min(len(ucastnici_sous), rnd.randint(3, 6))) - konfera.ucastnici.set(ucastnici) - #for res in rnd.sample(ucastnici, min(len(ucastnici), rnd.randint(3, 6))): - # Konfery_Ucastnici.objects.create(resitel=res, konfera=konfera) - konfera.save() - konfery.append(konfera) - return konfery def gen_cisla(rnd, rocniky): logger.info('Generuji čísla...') @@ -881,7 +837,7 @@ def create_test_data(size = 6, rnd = None): gen_ulohy_k_tematum(rnd, rocniky, rocnik_cisla, rocnik_temata, organizatori, resitele) #generování soustředění - soustredeni = gen_soustredeni(rnd, resitele, organizatori) + soustredeni = gen_soustredeni(size, rnd, resitele, organizatori) #generování konfer konfery = gen_konfery(size, rnd, organizatori, resitele, soustredeni) diff --git a/soustredeni/testutils.py b/soustredeni/testutils.py new file mode 100644 index 00000000..12a48378 --- /dev/null +++ b/soustredeni/testutils.py @@ -0,0 +1,59 @@ +import logging +import datetime + +import lorem + +from .models import Soustredeni, Konfera +import seminar.models.tvorba as am + +logger = logging.getLogger(__name__) + + +def gen_soustredeni(size, rnd, resitele, organizatori): + logger.info('Generuji soustředění...') + + soustredeni = [] + for _ in range(1, 10): # FIXME Tu range si změňte jak chcete, nevím, co přesně znamená size (asi Anet?) + datum_zacatku = datetime.date(rnd.randint(2000, 2020), rnd.randint(1, 12), rnd.randint(1, 28)) + working_sous = Soustredeni.objects.create( + rocnik=am.Rocnik.objects.order_by('?').first(), + verejne_db=rnd.choice([True, False]), + misto=rnd.choice(['Kremrolovice', 'Indiánov', 'U zmzliny', 'Vafláreň', 'Větrník', 'Horní Rakvička', 'Dolní cheesecake']), + typ=rnd.choice(['jarni', 'podzimni', 'vikend']), + datum_zacatku=datum_zacatku, + datum_konce=datum_zacatku + datetime.timedelta(days=7)) + ucastnici = rnd.sample(resitele, min(len(resitele), 20)) + working_sous.ucastnici.set(ucastnici) + # for res in rnd.sample(resitele, min(len(resitele), 20)): + # Soustredeni_Ucastnici.objects.create(resitel=res, soutredeni=working_sous) + orgove_vyber = rnd.sample(organizatori, min(len(organizatori), 20)) + working_sous.organizatori.set(orgove_vyber) + # for org in rnd.sample(organizatori, min(len(organizatori), 20)): + # Soustredeni_Organizatori.objects.create(organizator=org, soutredeni=working_sous) + working_sous.save() + soustredeni.append(working_sous) + return soustredeni + + +def gen_konfery(size, rnd, organizatori, resitele, soustredeni): + logger.info('Generuji konfery (size={})...'.format(size)) + + konfery = [] + for _ in range(1, size): # FIXME Tu range si změňte jak chcete, nevím, co přesně znamená size (asi Anet?) + # Anet: size je parametr udávající velikost testovacích dat a dá se pomocí ní škálovat, + # kolik dat se nageneruje + konfera = Konfera.objects.create( + nazev=rnd.choice(['Pozorování', 'Zkoumání', 'Modelování', 'Počítání', 'Zkoušení']) + rnd.choice([' vlastností', ' jevů', ' charakteristik']) + rnd.choice([' vektorových prostorů', ' kinetické terorie látek', ' molekulární biologie', ' syntentických stromů']), + anotace=lorem.paragraph(), + abstrakt=lorem.paragraph(), + garant=rnd.choice(organizatori), + soustredeni=rnd.choice(soustredeni), + typ_prezentace=rnd.choice(['veletrh', 'prezentace'])) + ucastnici_sous = list(konfera.soustredeni.ucastnici.all()) + ucastnici = rnd.sample(ucastnici_sous, min(len(ucastnici_sous), rnd.randint(3, 6))) + konfera.ucastnici.set(ucastnici) + # for res in rnd.sample(ucastnici, min(len(ucastnici), rnd.randint(3, 6))): + # Konfery_Ucastnici.objects.create(resitel=res, konfera=konfera) + konfera.save() + konfery.append(konfera) + return konfery From 6a781323e0e01f4b791be44f2289c0a925c91848 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Fri, 2 Aug 2024 20:05:19 +0200 Subject: [PATCH 202/225] =?UTF-8?q?Typov=C3=A9=20anotace=20a=20dal=C5=A1?= =?UTF-8?q?=C3=AD=20detaily=20v=20generov=C3=A1n=C3=AD=20testdat=20k=20sou?= =?UTF-8?q?stredeni?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- seminar/testutils.py | 4 ++-- soustredeni/testutils.py | 22 +++++++++++++++++++--- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/seminar/testutils.py b/seminar/testutils.py index 51f3f362..b7bd61e2 100644 --- a/seminar/testutils.py +++ b/seminar/testutils.py @@ -837,10 +837,10 @@ def create_test_data(size = 6, rnd = None): gen_ulohy_k_tematum(rnd, rocniky, rocnik_cisla, rocnik_temata, organizatori, resitele) #generování soustředění - soustredeni = gen_soustredeni(size, rnd, resitele, organizatori) + soustredeni = gen_soustredeni(size, resitele, organizatori, rnd=rnd) #generování konfer - konfery = gen_konfery(size, rnd, organizatori, resitele, soustredeni) + konfery = gen_konfery(size, organizatori, resitele, soustredeni, rnd=rnd) # vytvoreni pdf ke korekturam create_test_pdf(rnd, organizatori) diff --git a/soustredeni/testutils.py b/soustredeni/testutils.py index 12a48378..51bbb135 100644 --- a/soustredeni/testutils.py +++ b/soustredeni/testutils.py @@ -1,16 +1,25 @@ import logging import datetime +import random +from typing import Sequence import lorem from .models import Soustredeni, Konfera import seminar.models.tvorba as am +import personalni.models as pm logger = logging.getLogger(__name__) -def gen_soustredeni(size, rnd, resitele, organizatori): - logger.info('Generuji soustředění...') +def gen_soustredeni( + size: int, + resitele: Sequence[pm.Resitel], + organizatori: Sequence[pm.Organizator], + rnd: random.Random = None, +) -> Sequence[Soustredeni]: + logger.info('Generuji soustředění (size={})...') + rnd = rnd or random.Random(x=42) soustredeni = [] for _ in range(1, 10): # FIXME Tu range si změňte jak chcete, nevím, co přesně znamená size (asi Anet?) @@ -35,8 +44,15 @@ def gen_soustredeni(size, rnd, resitele, organizatori): return soustredeni -def gen_konfery(size, rnd, organizatori, resitele, soustredeni): +def gen_konfery( + size: int, + organizatori: Sequence[pm.Organizator], + resitele: Sequence[pm.Resitel], + soustredeni: Sequence[Soustredeni], + rnd: random.Random = None, +) -> Sequence[Konfera]: logger.info('Generuji konfery (size={})...'.format(size)) + rnd = rnd or random.Random(x=42) konfery = [] for _ in range(1, size): # FIXME Tu range si změňte jak chcete, nevím, co přesně znamená size (asi Anet?) From bf748b55ee7145ee7e06a87e6adee40647aa41d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Fri, 2 Aug 2024 20:15:02 +0200 Subject: [PATCH 203/225] =?UTF-8?q?Odstran=C4=9Bn=20zakomentovan=C3=BD=20z?= =?UTF-8?q?byte=C4=8Dn=C4=9B=20slo=C5=BEit=C3=BD=20k=C3=B3d?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- soustredeni/testutils.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/soustredeni/testutils.py b/soustredeni/testutils.py index 51bbb135..6e406530 100644 --- a/soustredeni/testutils.py +++ b/soustredeni/testutils.py @@ -33,12 +33,8 @@ def gen_soustredeni( datum_konce=datum_zacatku + datetime.timedelta(days=7)) ucastnici = rnd.sample(resitele, min(len(resitele), 20)) working_sous.ucastnici.set(ucastnici) - # for res in rnd.sample(resitele, min(len(resitele), 20)): - # Soustredeni_Ucastnici.objects.create(resitel=res, soutredeni=working_sous) orgove_vyber = rnd.sample(organizatori, min(len(organizatori), 20)) working_sous.organizatori.set(orgove_vyber) - # for org in rnd.sample(organizatori, min(len(organizatori), 20)): - # Soustredeni_Organizatori.objects.create(organizator=org, soutredeni=working_sous) working_sous.save() soustredeni.append(working_sous) return soustredeni @@ -68,8 +64,6 @@ def gen_konfery( ucastnici_sous = list(konfera.soustredeni.ucastnici.all()) ucastnici = rnd.sample(ucastnici_sous, min(len(ucastnici_sous), rnd.randint(3, 6))) konfera.ucastnici.set(ucastnici) - # for res in rnd.sample(ucastnici, min(len(ucastnici), rnd.randint(3, 6))): - # Konfery_Ucastnici.objects.create(resitel=res, konfera=konfera) konfera.save() konfery.append(konfera) return konfery From d952ab13a5c8bbd39b1c660400c4cd6f0ba9b81c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Fri, 2 Aug 2024 20:17:31 +0200 Subject: [PATCH 204/225] =?UTF-8?q?Generov=C3=A1n=C3=AD=20konfer=20s=20kon?= =?UTF-8?q?kr=C3=A9tn=C3=ADmi=20=C5=99e=C5=A1iteli?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- seminar/testutils.py | 2 +- soustredeni/testutils.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/seminar/testutils.py b/seminar/testutils.py index b7bd61e2..18bbbe2e 100644 --- a/seminar/testutils.py +++ b/seminar/testutils.py @@ -840,7 +840,7 @@ def create_test_data(size = 6, rnd = None): soustredeni = gen_soustredeni(size, resitele, organizatori, rnd=rnd) #generování konfer - konfery = gen_konfery(size, organizatori, resitele, soustredeni, rnd=rnd) + konfery = gen_konfery(size, organizatori, soustredeni, rnd=rnd) # vytvoreni pdf ke korekturam create_test_pdf(rnd, organizatori) diff --git a/soustredeni/testutils.py b/soustredeni/testutils.py index 6e406530..52e81d1c 100644 --- a/soustredeni/testutils.py +++ b/soustredeni/testutils.py @@ -43,8 +43,8 @@ def gen_soustredeni( def gen_konfery( size: int, organizatori: Sequence[pm.Organizator], - resitele: Sequence[pm.Resitel], soustredeni: Sequence[Soustredeni], + resitele: Sequence[pm.Resitel] = None, rnd: random.Random = None, ) -> Sequence[Konfera]: logger.info('Generuji konfery (size={})...'.format(size)) @@ -61,7 +61,7 @@ def gen_konfery( garant=rnd.choice(organizatori), soustredeni=rnd.choice(soustredeni), typ_prezentace=rnd.choice(['veletrh', 'prezentace'])) - ucastnici_sous = list(konfera.soustredeni.ucastnici.all()) + ucastnici_sous = resitele if resitele else list(konfera.soustredeni.ucastnici.all()) ucastnici = rnd.sample(ucastnici_sous, min(len(ucastnici_sous), rnd.randint(3, 6))) konfera.ucastnici.set(ucastnici) konfera.save() From 348096024eb89ca1797b64c82fb88feb95714ffe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Tue, 6 Aug 2024 02:33:53 +0200 Subject: [PATCH 205/225] seminar/testutils.py --- novinky/testutils.py | 27 ++ odevzdavatko/testutils.py | 40 +++ personalni/testutils.py | 235 +++++++++++++++ {seminar => tvorba}/testutils.py | 370 +----------------------- various/management/commands/testdata.py | 4 +- various/testutils.py | 135 +++++++++ 6 files changed, 443 insertions(+), 368 deletions(-) create mode 100644 novinky/testutils.py create mode 100644 odevzdavatko/testutils.py create mode 100644 personalni/testutils.py rename {seminar => tvorba}/testutils.py (53%) create mode 100644 various/testutils.py diff --git a/novinky/testutils.py b/novinky/testutils.py new file mode 100644 index 00000000..f1ef6adc --- /dev/null +++ b/novinky/testutils.py @@ -0,0 +1,27 @@ +import logging + +from .models import Novinky + +logger = logging.getLogger(__name__) + + +def gen_novinky(rnd, organizatori): + logger.info('Generuji novinky...') + + jake = ["zábavné", "veselé", "dobrodružné", "skvělé"] + co = ["soustředění", "Fyziklání", "víkendové setkání"] + kde = ["na Šumavě", "v Praze", "u Plzně", "na Marsu"] + kdy = ["Zítra bude", "10. 10. 2020 bude", "V prosinci bude", "V létě bude"] + + for i in range(5): + text_novinky = " ".join([ + rnd.choice(kdy), rnd.choice(kde), + rnd.choice(jake), rnd.choice(co), + ]) + novinka = Novinky.objects.create( + id=i, autor=rnd.choice(organizatori), + text=(text_novinky+", těšíme se na vás!"), + zverejneno=rnd.choice([True, False]), + ) + novinka.save() + return diff --git a/odevzdavatko/testutils.py b/odevzdavatko/testutils.py new file mode 100644 index 00000000..1f382438 --- /dev/null +++ b/odevzdavatko/testutils.py @@ -0,0 +1,40 @@ +import datetime +import random + +from seminar.models.odevzdavatko import Reseni, Hodnoceni + + +def gen_reseni_ulohy(rnd, cisla, uloha, pocet_resitelu, poradi_cisla, resitele_cisla, resitele): + pocet_reseni = rnd.randint(pocet_resitelu//4, pocet_resitelu * 4) + # generujeme náhodný počet řešení vzhledem k počtu řešitelů čísla + for _ in range(pocet_reseni): + #print("Generuji {}-té řešení".format(reseni)) + if rnd.randint(1, 10) == 1: + # cca desetina řešení od více řešitelů + res_vyber = rnd.sample(resitele_cisla, rnd.randint(2, 5)) + else: + res_vyber = rnd.sample(resitele_cisla, 1) + if resitele[0] in res_vyber: # speciální řešitel, který nemá žádné body + res_vyber.remove(resitele[0]) + + # Vytvoření řešení. + if uloha.cislo_zadani.zlomovy_deadline_pro_papirove_cislo() is not None: + # combine, abychom dostali plný čas a ne jen datum + cas_doruceni = uloha.cislo_zadani.deadline_v_cisle.first().deadline - datetime.timedelta(days=random.randint(0, 40)) - datetime.timedelta(minutes=random.randint(0, 60*24)) + # astimezone, protože jinak vyhazuje warning o nenastavené TZ + res = Reseni.objects.create(forma=rnd.choice(Reseni.FORMA_CHOICES)[0], cas_doruceni=cas_doruceni.astimezone(datetime.timezone.utc)) + else: + res = Reseni.objects.create(forma=rnd.choice(Reseni.FORMA_CHOICES)[0]) + # Problém a řešitele přiřadíme později, ManyToManyField + # se nedá vyplnit v create(). + res.resitele.set(res_vyber) + res.save() + + # Vytvoření hodnocení. + hod = Hodnoceni.objects.create( + body=rnd.randint(0, uloha.max_body), + cislo_body=cisla[poradi_cisla - 1], + reseni=res, + problem=uloha + ) + return diff --git a/personalni/testutils.py b/personalni/testutils.py new file mode 100644 index 00000000..2b2d6bcc --- /dev/null +++ b/personalni/testutils.py @@ -0,0 +1,235 @@ +import datetime +import logging +import unidecode + +from django.contrib.auth.models import Permission +from django.contrib.auth.models import Group +import django.contrib.auth + +from .models import Osoba, Skola, Organizator, Resitel, Prijemce + +logger = logging.getLogger(__name__) + +User = django.contrib.auth.get_user_model() + +zlinska = None # tohle bude speciální škola, které později dodáme kontaktní osobu + + +# testuje unikátnost vygenerovaného jména +def __unikatni_jmeno(osoby, jmeno, prijmeni): + for os in osoby: + if os.jmeno == jmeno and os.prijmeni == prijmeni: + return 0 + else: + return 1 + + +def gen_osoby(rnd, size): + logger.info('Generuji osoby (size={})...'.format(size)) + + jmena_m = ['Aleš', 'Tomáš', 'Martin', 'Jakub', 'Petr', 'Lukáš', 'Cyril', 'Pavel Karel'] + jmena_f = ['Eva', 'Karolína', 'Zuzana', 'Sylvie', 'Iva', 'Jana', 'Marie', 'Marta Iva', 'Shu Shan'] + prijmeni_m = ['Novotný', 'Svoboda', 'Pecha', 'Kořen', 'Holan', 'Uhlíř', 'Chytráček', 'Pokora', 'Koch', 'Szegedy', 'Rudý', "von Neumann", "d'Este"] + prijmeni_f = ['Novotná', 'Svobodová', 'Machová', 'Zelená', 'Yu-Xin', 'Mlsná', 'Dubná', 'Mrkvová', 'Suchá', 'Lovelace', 'Holcová', 'Rui', "Nováčková Tydlitátová"] + prezdivky = ['Kaki', 'Hurdur', 'Maracuja', 'Bobbo', "", "", "", "", "", "", "", 'Riki', 'Sapa', "", '', '---', 'Koko'] + domain = ['example.com', 'dolujeme.eu', 'mff.cuni.cz', 'strcprstskrzkrk.cz', 'british.co.uk', 'splachni.to', 'haha.org'] + seznam_ulic = ['Krátká', 'Vlhká', 'Jungmanova', '17. listopadu', '4. října', 'Roztocká', 'Forstova', 'Generála Františka Janouška', 'Náměstí Války', 'Svratecké náměstí', 'Zelená lhota', 'Z Plynu', 'K Jezeru', 'U Kocourkova', 'Uštěpačná', 'Ostrorepská', 'Zubří'] + seznam_mest = ['Praha', 'Brno', 'Ostrava', 'Horní Jelení', 'Dolní Zábrdovice', 'Prdelkov', 'Stará myslivna', 'Kocourkov', 'Šalingrad', 'Medvědí hora', 'Basilej', 'Unterschiedlich', 'Old York', 'Lancastershire', 'Vóloďháza'] + + osoby = [] + # 30 je náhodná konstanta, size je použité na víc místech a + # říká, jak velká asi chceme testovací data + for i in range(30 * size): + pohlavi_idx = rnd.randint(0, 2) # 2 = nebinární + osloveni = [Osoba.OSLOVENI_MUZSKE, Osoba.OSLOVENI_ZENSKE, Osoba.OSLOVENI_ZADNE][pohlavi_idx] + jmeno = rnd.choice([jmena_m, jmena_f, jmena_m + jmena_f][pohlavi_idx]) + prijmeni = rnd.choice([prijmeni_m, prijmeni_f, prijmeni_m + prijmeni_f][pohlavi_idx]) + if pohlavi_idx == 2: logger.debug(f'Testdata: nebinární osoba: {jmeno} {prijmeni}.') + pokusy = 0 + max_pokusy = 120*size + while not __unikatni_jmeno and pokusy < max_pokusy: + # pokud jméno a příjmení není unikátní, zkoušíme generovat nová + # do daného limitu (abychom se nezacyklili do nekonečna při málo jménech a příjmeních + # ze kterých se generuje) + jmeno = rnd.choice([jmena_m, jmena_f, jmena_m + jmena_f][pohlavi_idx]) + prijmeni = rnd.choice([prijmeni_m, prijmeni_f, prijmeni_m + prijmeni_f][pohlavi_idx]) + pokusy += 1 + if pokusy >= max_pokusy: + print("Chyba, na danou velikost testovacích dat příliš málo možných jmen a příjmení") + exit() + prezdivka = rnd.choice(prezdivky) + email = "@".join([unidecode.unidecode(jmeno), rnd.choice(domain)]) + telefon = "".join([str(rnd.choice([k for k in range(10)])) for _ in range(9)]) + narozeni = datetime.date( + rnd.randint(1980, datetime.datetime.now().year), + rnd.randint(1, 12), + rnd.randint(1, 28) + ) + ulic = rnd.choice(seznam_ulic) + cp = rnd.randint(1, 99) + ulice = " ".join([ulic, str(cp)]) + mesto = rnd.choice(seznam_mest) + psc = "".join([str(rnd.choice([k for k in range(10)])) for _ in range(5)]) + + osoby.append(Osoba.objects.create( + jmeno=jmeno, prijmeni=prijmeni, + prezdivka=prezdivka, osloveni=osloveni, + email=email, telefon=telefon, + datum_narozeni=narozeni, + ulice=ulice, mesto=mesto, psc=psc, + datum_registrace=datetime.date( + rnd.randint(2019, 2029), rnd.randint(1, 12), rnd.randint(1, 28) + ) + )) + + # TODO pridat foto male a velke. Jak? + # Pavel tvrdí, že to necháme a přidáme až do adminu + + return osoby + + +def gen_skoly(): # TODO někdy to přepsat, aby jich bylo více + logger.info('Generuji školy...') + + skoly = [] + prvnizs = Skola.objects.create( + mesto='Praha', stat='CZ', psc='101 00', + ulice='Krátká 5', nazev='První ZŠ', je_zs=True, je_ss=False, + ) + skoly.append(prvnizs) + skoly.append(Skola.objects.create( + mesto='Praha', stat='CZ', psc='101 00', + ulice='Krátká 5', nazev='První SŠ', je_zs=False, je_ss=True, + )) + skoly.append(Skola.objects.create( + mesto='Praha', stat='CZ', psc='102 00', + ulice='Dlouhá 5', nazev='Druhá SŠ', je_zs=False, je_ss=True, + )) + skoly.append(Skola.objects.create( + mesto='Praha', stat='CZ', psc='103 00', + ulice='Široká 3', nazev='Třetí SŠ a ZŠ', je_zs=True, je_ss=True, + )) + skoly.append(Skola.objects.create( + mesto='Ostrava', stat='CZ', psc='700 00', + ulice='Hluboká 42', nazev='Hutní gympl', je_zs=False, je_ss=True, + )) + skoly.append(Skola.objects.create( + mesto='Humenné', stat='SK', psc='012 34', + ulice='Pltká 1', nazev='Sredná škuola', je_zs=False, je_ss=True, + )) + global zlinska + zlinska = Skola.objects.create( + mesto='Zlín', stat='CZ', psc='76001', + ulice='náměstí T.G. Masaryka 2734-9', + nazev='Gymnázium a Střední jazyková škola s právem SJZ', + kratky_nazev="GaSJŠspSJZ", je_zs=True, je_ss=True, + ) + skoly.append(zlinska) + return skoly + + +def gen_resitele(rnd, osoby, skoly): + logger.info('Generuji řešitele...') + + resitele = [] + x = 0 + resitel_perm = Permission.objects.filter(codename__exact='resitel').first() + resitel_group = Group.objects.filter(name__exact='resitel').first() + for os in osoby: + rand = rnd.randint(0, 8) + if not (rand % 8 == 0): + if not os.user: + if x: + user = User.objects.create_user( + username='r'+str(x), email=os.email, password='r', + ) + else: + user = User.objects.create_user( + username='r', email=os.email, password='r', + ) + x += 1 + os.user = user + os.save() + os.user.user_permissions.add(resitel_perm) + os.user.groups.add(resitel_group) + resitele.append(Resitel.objects.create( + osoba=os, skola=rnd.choice(skoly), + rok_maturity=os.datum_narozeni.year + rnd.randint(18, 21), + zasilat=rnd.choice(Resitel.ZASILAT_CHOICES)[0], + )) + return resitele + + +def gen_prijemci(rnd, osoby, kolik=10): + logger.info('Generuji příjemce (kolik={})...'.format(kolik)) + prijemci = [] + for i in rnd.sample(osoby, kolik): + prijemci.append(Prijemce.objects.create(osoba=i)) + + global zlinska + if zlinska is not None: + zlinska.kontaktni_osoba=rnd.choice(osoby) + zlinska.save() + + return prijemci + + +def gen_organizatori(rnd, osoby, last_rocnik): + logger.info('Generuji organizátory...') + organizatori = [] + + + seznam_konicku = ["vařím", "jezdím na kole", "řeším diferenciální rovnice", "koukám z okna", "tancuji", "programuji", "jezdím vlakem", "nedělám nic"] + seznam_oboru = ["matematiku", "matematiku", "matematiku", "fyziku", "literaturu", "informatiku", "informatiku", "běhání dokolečka"] + + x = 0 + org_perm = Permission.objects.filter(codename__exact='org').first() + org_group = Group.objects.filter(name__exact='org').first() + for os in osoby: + rand = rnd.randint(0, 8) + if rand % 8 == 0: + pusobnost = rnd.randint(1, last_rocnik) + od = datetime.datetime( + year=1993 + pusobnost, + month=rnd.randint(1, 12), + day=rnd.randint(1, 28), + tzinfo=datetime.timezone.utc, + ) + do = datetime.datetime( + year=od.year + rnd.randint(1, 6), + month=rnd.randint(1, 12), + day=rnd.randint(1, 28), + tzinfo=datetime.timezone.utc, + ) + # aktualni organizatori jeste nemaji vyplnene organizuje_do + + # popis orga + konicek1 = rnd.choice(seznam_konicku) + konicek2 = rnd.choice(seznam_konicku) + obor = rnd.choice(seznam_oboru) + popis_orga = "Ve volném čase " + konicek1 + " a také " + konicek2 + ". Studuji " + obor + " a moc mě to baví." + + if do.year > datetime.datetime.now().year: + do = None + if not os.user: + if x: + user = User.objects.create_user( + username='o'+str(x), email=os.email, password='o', + ) + else: + user = User.objects.create_user( + username='o', email=os.email, password='o', + ) + x += 1 + os.user = user + os.save() + os.user.user_permissions.add(org_perm) + os.user.groups.add(org_group) + os.user.is_staff = True + os.user.save() + organizatori.append(Organizator.objects.create( + osoba=os, + organizuje_od=od, organizuje_do=do, + strucny_popis_organizatora=popis_orga, + )) + return organizatori diff --git a/seminar/testutils.py b/tvorba/testutils.py similarity index 53% rename from seminar/testutils.py rename to tvorba/testutils.py index 18bbbe2e..18440679 100644 --- a/seminar/testutils.py +++ b/tvorba/testutils.py @@ -1,216 +1,22 @@ +# FIXME vypreparovat treenode + import datetime -from django.contrib.auth.models import Permission -from django.contrib.auth.models import Group -import random import lorem import django.contrib.auth -from django.db import transaction -import unidecode import logging -from korektury.testutils import create_test_pdf -from seminar.models import Skola, Resitel, Rocnik, Cislo, Deadline, Problem, Reseni, PrilohaReseni, Nastaveni, Osoba, Organizator, Prijemce, Tema, Uloha, TextNode, UlohaVzorakNode, RocnikNode, CisloNode, TemaVCisleNode, Text, Hodnoceni, UlohaZadaniNode, Novinky, TreeNode +from seminar.models import Rocnik, Cislo, Deadline, Problem, Tema, Uloha, TextNode, UlohaVzorakNode, RocnikNode, CisloNode, TemaVCisleNode, Text, UlohaZadaniNode import seminar.models as m -from django.contrib.flatpages.models import FlatPage -from django.contrib.sites.models import Site from treenode.treelib import all_children, insert_last_child, all_children_of_type, create_node_after -from soustredeni.testutils import gen_soustredeni, gen_konfery - - -User = django.contrib.auth.get_user_model() -zlinska = None # tohle bude speciální škola, které později dodáme kontaktní osobu +from odevzdavatko.testutils import gen_reseni_ulohy logger = logging.getLogger(__name__) -# testuje unikátnost vygenerovaného jména -def __unikatni_jmeno(osoby, jmeno, prijmeni): - for os in osoby: - if os.jmeno == jmeno and os.prijmeni == prijmeni: - return 0 - else: return 1 - -def gen_osoby(rnd, size): - logger.info('Generuji osoby (size={})...'.format(size)) - - jmena_m = ['Aleš', 'Tomáš', 'Martin', 'Jakub', 'Petr', 'Lukáš', 'Cyril', 'Pavel Karel'] - jmena_f = ['Eva', 'Karolína', 'Zuzana', 'Sylvie', 'Iva', 'Jana', 'Marie', - 'Marta Iva', 'Shu Shan'] - prijmeni_m = ['Novotný', 'Svoboda', 'Pecha', 'Kořen', 'Holan', 'Uhlíř', 'Chytráček', - 'Pokora', 'Koch', 'Szegedy', 'Rudý', "von Neumann", "d'Este"] - prijmeni_f = ['Novotná', 'Svobodová', 'Machová', 'Zelená', 'Yu-Xin', 'Mlsná', 'Dubná', - 'Mrkvová', 'Suchá', 'Lovelace', 'Holcová', 'Rui', "Nováčková Tydlitátová"] - prezdivky = ['Kaki', 'Hurdur', 'Maracuja', 'Bobbo', "", "", "", "", "", - "", "", 'Riki', 'Sapa', "", '', '---', 'Koko'] - domain = ['example.com', 'dolujeme.eu', 'mff.cuni.cz', 'strcprstskrzkrk.cz', - 'british.co.uk', 'splachni.to', 'haha.org'] - seznam_ulic = ['Krátká', 'Vlhká', 'Jungmanova', '17. listopadu', '4. října', 'Roztocká', - 'Forstova', 'Generála Františka Janouška', 'Náměstí Války', - 'Svratecké náměstí', 'Zelená lhota', 'Z Plynu', 'K Jezeru', 'U Kocourkova', - 'Uštěpačná', 'Ostrorepská', 'Zubří'] - seznam_mest = ['Praha', 'Brno', 'Ostrava', 'Horní Jelení', 'Dolní Zábrdovice', 'Prdelkov', - 'Stará myslivna', 'Kocourkov', 'Šalingrad', 'Medvědí hora', 'Basilej', - 'Unterschiedlich', 'Old York', 'Lancastershire', 'Vóloďháza'] - - osoby = [] - # 30 je náhodná konstanta, size je použité na víc místech a - # říká, jak velká asi chceme testovací data - for i in range(30 * size): - pohlavi_idx = rnd.randint(0,2) # 2 = nebinární - osloveni = [Osoba.OSLOVENI_MUZSKE, Osoba.OSLOVENI_ZENSKE, Osoba.OSLOVENI_ZADNE][pohlavi_idx] - jmeno = rnd.choice([jmena_m, jmena_f, jmena_m + jmena_f][pohlavi_idx]) - prijmeni = rnd.choice([prijmeni_m, prijmeni_f, prijmeni_m + prijmeni_f][pohlavi_idx]) - if pohlavi_idx == 2: logger.debug(f'Testdata: nebinární osoba: {jmeno} {prijmeni}.') - pokusy = 0 - max_pokusy = 120*size - while (not __unikatni_jmeno and pokusy < max_pokusy): - # pokud jméno a příjmení není unikátní, zkoušíme generovat nová - # do daného limitu (abychom se nezacyklili do nekonečna při málo jménech a příjmeních - # ze kterých se generuje) - jmeno = rnd.choice([jmena_m, jmena_f, jmena_m + jmena_f][pohlavi_idx]) - prijmeni = rnd.choice([prijmeni_m, prijmeni_f, prijmeni_m + prijmeni_f][pohlavi_idx]) - pokusy = pokusy + 1 - if pokusy >= max_pokusy: - print("Chyba, na danou velikost testovacích dat příliš málo možných" - " jmen a příjmení") - exit() - prezdivka = rnd.choice(prezdivky) - email = "@".join([unidecode.unidecode(jmeno), rnd.choice(domain)]) - telefon = "".join([str(rnd.choice([k for k in range(10)])) for i in range(9)]) - narozeni = datetime.date(rnd.randint(1980, datetime.datetime.now().year), - rnd.randint(1, 12), rnd.randint(1, 28)) - ulic = rnd.choice(seznam_ulic) - cp = rnd.randint(1, 99) - ulice = " ".join([ulic, str(cp)]) - mesto = rnd.choice(seznam_mest) - psc = "".join([str(rnd.choice([k for k in range(10)])) for i in range(5)]) - - osoby.append(Osoba.objects.create(jmeno = jmeno, prijmeni = prijmeni, - prezdivka = prezdivka, osloveni = osloveni, email = email, - telefon = telefon, datum_narozeni = narozeni, ulice = ulice, - mesto = mesto, psc = psc, - datum_registrace = datetime.date(rnd.randint(2019, 2029), - rnd.randint(1, 12), rnd.randint(1, 28)))) - #TODO pridat foto male a velke. Jak? - # Pavel tvrdí, že to necháme a přidáme až do adminu - - return osoby - - - -def gen_skoly(): #TODO někdy to přepsat, aby jich bylo více - logger.info('Generuji školy...') - - skoly = [] - prvnizs = Skola.objects.create(mesto='Praha', stat='CZ', psc='101 00', - ulice='Krátká 5', nazev='První ZŠ', je_zs=True, je_ss=False) - skoly.append(prvnizs) - skoly.append(Skola.objects.create(mesto='Praha', stat='CZ', psc='101 00', - ulice='Krátká 5', nazev='První SŠ', je_zs=False, je_ss=True)) - skoly.append(Skola.objects.create(mesto='Praha', stat='CZ', psc='102 00', - ulice='Dlouhá 5', nazev='Druhá SŠ', je_zs=False, je_ss=True)) - skoly.append(Skola.objects.create(mesto='Praha', stat='CZ', psc='103 00', - ulice='Široká 3', nazev='Třetí SŠ a ZŠ', je_zs=True, je_ss=True)) - skoly.append(Skola.objects.create(mesto='Ostrava', stat='CZ', psc='700 00', - ulice='Hluboká 42', nazev='Hutní gympl', je_zs=False, je_ss=True)) - skoly.append(Skola.objects.create(mesto='Humenné', stat='SK', psc='012 34', - ulice='Pltká 1', nazev='Sredná škuola', je_zs=False, je_ss=True)) - global zlinska - zlinska = Skola.objects.create(mesto = 'Zlín', stat='CZ', psc='76001', - ulice='náměstí T.G. Masaryka 2734-9', - nazev='Gymnázium a Střední jazyková škola s právem SJZ', - kratky_nazev="GaSJŠspSJZ", je_zs=True, je_ss=True) - skoly.append(zlinska) - return skoly - -def gen_resitele(rnd, osoby, skoly): - logger.info('Generuji řešitele...') - - resitele = [] - x = 0 - resitel_perm = Permission.objects.filter(codename__exact='resitel').first() - resitel_group = Group.objects.filter(name__exact='resitel').first() - for os in osoby: - rand = rnd.randint(0, 8) - if not (rand % 8 == 0): - if not os.user: - if x: - user = User.objects.create_user(username='r'+str(x), email=os.email, password='r') - else: - user = User.objects.create_user(username='r', email=os.email, password='r') - x += 1 - os.user = user - os.save() - os.user.user_permissions.add(resitel_perm) - os.user.groups.add(resitel_group) - resitele.append(Resitel.objects.create(osoba=os, skola=rnd.choice(skoly), - rok_maturity=os.datum_narozeni.year + rnd.randint(18, 21), - zasilat=rnd.choice(Resitel.ZASILAT_CHOICES)[0])) - return resitele - -def gen_prijemci(rnd, osoby, kolik=10): - logger.info('Generuji příjemce (kolik={})...'.format(kolik)) - prijemci = [] - for i in rnd.sample(osoby, kolik): - prijemci.append(Prijemce.objects.create(osoba=i)) - return prijemci - -def gen_organizatori(rnd, osoby, last_rocnik): - logger.info('Generuji organizátory...') - organizatori = [] +User = django.contrib.auth.get_user_model() - - seznam_konicku = ["vařím", "jezdím na kole", "řeším diferenciální rovnice", "koukám z okna", - "tancuji", "programuji", "jezdím vlakem", "nedělám nic"] - seznam_oboru = ["matematiku", "matematiku", "matematiku", "fyziku", "literaturu", - "informatiku", "informatiku", "běhání dokolečka"] - - x = 0 - org_perm = Permission.objects.filter(codename__exact='org').first() - org_group = Group.objects.filter(name__exact='org').first() - for os in osoby: - rand = rnd.randint(0, 8) - if (rand % 8 == 0): - pusobnost = rnd.randint(1, last_rocnik) - od = datetime.datetime( - year=1993 + pusobnost, - month=rnd.randint(1, 12), - day=rnd.randint(1, 28), - tzinfo=datetime.timezone.utc, - ) - do = datetime.datetime( - year=od.year + rnd.randint(1, 6), - month=rnd.randint(1, 12), - day=rnd.randint(1, 28), - tzinfo=datetime.timezone.utc, - ) - #aktualni organizatori jeste nemaji vyplnene organizuje_do - - #popis orga - konicek1 = rnd.choice(seznam_konicku) - konicek2 = rnd.choice(seznam_konicku) - obor = rnd.choice(seznam_oboru) - popis_orga = "Ve volném čase " + konicek1 + " a také " + konicek2 + ". Studuji " + obor + " a moc mě to baví." - - if do.year > datetime.datetime.now().year: - do = None - if not os.user: - if x: - user = User.objects.create_user(username='o'+str(x), email=os.email, password='o') - else: - user = User.objects.create_user(username='o', email=os.email, password='o') - x += 1 - os.user = user - os.save() - os.user.user_permissions.add(org_perm) - os.user.groups.add(org_group) - os.user.is_staff = True - os.user.save() - organizatori.append(Organizator.objects.create(osoba=os, - organizuje_od=od, organizuje_do=do, strucny_popis_organizatora = popis_orga)) - return organizatori def gen_zadani_ulohy(rnd, cisla, organizatori, pocet_oboru, poradi_cisla, poradi_problemu): @@ -282,42 +88,6 @@ def gen_vzoroveho_reseni_ulohy(rnd, organizatori, uloha, pocet_opravovatelu): uloha.save() return uloha_vzorak -def gen_reseni_ulohy(rnd, cisla, uloha, pocet_resitelu, poradi_cisla, resitele_cisla, resitele): - - pocet_reseni = rnd.randint(pocet_resitelu//4, pocet_resitelu * 4) - # generujeme náhodný počet řešení vzhledem k počtu řešitelů čísla - for _ in range(pocet_reseni): - #print("Generuji {}-té řešení".format(reseni)) - if rnd.randint(1, 10) == 1: - # cca desetina řešení od více řešitelů - res_vyber = rnd.sample(resitele_cisla, - rnd.randint(2, 5)) - else: - res_vyber = rnd.sample(resitele_cisla, 1) - if resitele[0] in res_vyber: # speciální řešitel, který nemá žádné body - res_vyber.remove(resitele[0]) - - # Vytvoření řešení. - if uloha.cislo_zadani.zlomovy_deadline_pro_papirove_cislo() is not None: - # combine, abychom dostali plný čas a ne jen datum - cas_doruceni = uloha.cislo_zadani.deadline_v_cisle.first().deadline - datetime.timedelta(days=random.randint(0, 40)) - datetime.timedelta(minutes=random.randint(0, 60*24)) - # astimezone, protože jinak vyhazuje warning o nenastavené TZ - res = Reseni.objects.create(forma=rnd.choice(Reseni.FORMA_CHOICES)[0], cas_doruceni=cas_doruceni.astimezone(datetime.timezone.utc)) - else: - res = Reseni.objects.create(forma=rnd.choice(Reseni.FORMA_CHOICES)[0]) - # Problém a řešitele přiřadíme později, ManyToManyField - # se nedá vyplnit v create(). - res.resitele.set(res_vyber) - res.save() - - # Vytvoření hodnocení. - hod = Hodnoceni.objects.create( - body=rnd.randint(0, uloha.max_body), - cislo_body=cisla[poradi_cisla - 1], - reseni=res, - problem=uloha - ) - return def gen_ulohy_do_cisla(rnd, organizatori, resitele, rocnik_cisla, rocniky, size): logger.info('Generuji úlohy do čísla (size={})...'.format(size)) @@ -658,22 +428,6 @@ def gen_ulohy_k_tematum(rnd, rocniky, rocnik_cisla, rocnik_temata, organizatori, u.save() return -def gen_novinky(rnd, organizatori): - logger.info('Generuji novinky...') - - - jake = ["zábavné", "veselé", "dobrodružné", "skvělé"] - co = ["soustředění", "Fyziklání", "víkendové setkání"] - kde = ["na Šumavě", "v Praze", "u Plzně", "na Marsu"] - kdy = ["Zítra bude", "10. 10. 2020 bude", "V prosinci bude", "V létě bude"] - - for i in range(5): - text_novinky = " ".join([rnd.choice(kdy), rnd.choice(kde), rnd.choice(jake), - rnd.choice(co)]) - novinka = Novinky.objects.create(id=i,autor=rnd.choice(organizatori), - text=(text_novinky+", těšíme se na vás!"),zverejneno=rnd.choice([True,False])) - novinka.save() - return def otec_syn(otec, syn): bratr = otec.first_child @@ -750,117 +504,3 @@ def gen_clanek(rnd, organizatori, resitele): text.save() create_child(castnode, m.TextNode, text=text) logger.info(f"Článek vygenerován (reseni={reseni.id}, treenode={reseninode.id})") - - - -@transaction.atomic -def create_test_data(size = 6, rnd = None): - logger.info('Vyrábím testovací data (size={})...'.format(size)) - - assert size >= 1 - # pevna pseudo-nahodnost - rnd = rnd or random.Random(x=42) - - # static URL stranky - # FIXME: nakopirovat sem vsechny z produkcni databaze - s = Site.objects.filter(name="example.com") - f = FlatPage.objects.create(url="/", title="Seminář M&M", - content = "

    Vítejte na stránce semináře MaM!

    ") - print(s) - f.sites.add(s[0]) - f.save() - - # users - admin = User.objects.create_superuser(username='admin', email='', password='admin') - os_admin = Osoba.objects.create( - user=admin, jmeno='admin', prijmeni='admin', - prezdivka='admin', osloveni='', email='admin@admin.admin', - telefon='123 456 789', datum_narozeni=datetime.date(2000, 1, 1), - ulice='admin', mesto='admin', psc='100 00', - datum_registrace=datetime.date(2020, 9, 6) - ) - or_admin = Organizator.objects.create( - osoba=os_admin, organizuje_od=None, organizuje_do=None, - strucny_popis_organizatora="Organizátor k uživateli Admin" - ) - - usernames = ['anet', 'bara', 'cyril', 'david', 'eva', 'filip'] - users = [] - for usr in usernames[:size]: - u = User.objects.create_user(username=usr, password=usr) - u.first_name = usr.capitalize() - u.save() - users.append(u) - print(users) - - # skoly - skoly = gen_skoly() - - # osoby - osoby = gen_osoby(rnd, size) - - # resitele a organizatori - last_rocnik = 25 - organizatori = gen_organizatori(rnd, osoby, last_rocnik) - resitele = gen_resitele(rnd, osoby, skoly) - - #generování novinek - novinky = gen_novinky(rnd, organizatori) - - # prijemci - prijemci = gen_prijemci(rnd, osoby) - - global zlinska - zlinska.kontaktni_osoba=rnd.choice(osoby) - zlinska.save() - - # rocniky - rocniky = gen_rocniky(last_rocnik, size) - - # cisla - # rocnik_cisla je pole polí čísel (typ Cislo), vnitřní pole odpovídají jednotlivým ročníkům. - rocnik_cisla = gen_cisla(rnd, rocniky) - - # generování obyčejných úloh do čísel - gen_ulohy_do_cisla(rnd, organizatori, resitele, rocnik_cisla, rocniky, size) - - # generování témat, zatím v prvních třech číslech po jednom - # FIXME: více témat - # rocnik_temata je pole polí trojic (první číslo :int, poslední číslo :int, téma:Tema), přičemž každé vnitřní pole odpovídá ročníku a FIXME: je to takhle fuj a když to někdo vidí poprvé, tak je z toho smutný, protože vůbec neví, co se děje a co má čekat. - rocnik_temata = gen_temata(rnd, rocniky, rocnik_cisla, organizatori) - - rocnik = Rocnik.objects.filter(rocnik = 23).first() - dlouhe_tema = gen_dlouhe_tema(rnd, organizatori, rocnik, "Strašně dlouhé téma", - "MFI", 8) - - # generování úloh k tématům ve všech číslech - gen_ulohy_k_tematum(rnd, rocniky, rocnik_cisla, rocnik_temata, organizatori, resitele) - - #generování soustředění - soustredeni = gen_soustredeni(size, resitele, organizatori, rnd=rnd) - - #generování konfer - konfery = gen_konfery(size, organizatori, soustredeni, rnd=rnd) - - # vytvoreni pdf ke korekturam - create_test_pdf(rnd, organizatori) - - # TODO: nastavi správně, kolik se čeho generuje, aby rozsahy přibližně odpovídaly - # FIXME: misto typu ruzne typy objektu a vnoreni do sebe (Tom nechápe, co je tímto fixme míněno) - # TODO: vytvorit temata s ruznymi vlakny - # TODO: nagenerovat starsim rocnikum pohadku - # TODO: nagenerovat články - # TODO: vecpat obrázky všude, kde to jde - # TODO: mezičíslo node - # TODO: přidat ke konferám řešení a dát je do čísel - - # Dohackované vytvoření jednoho článku - gen_clanek(rnd, organizatori, resitele) - - # TODO: přidat články včetně zařazení do struktury treenodů, - # a následně otestovat konsistency check databáze z utils.py - # pomocí stránky /stav - - # obecné nastavení semináře, musí být už přidané ročníky a čísla, jinak se nastaví divně - nastaveni = Nastaveni.objects.create( - aktualni_cislo = Cislo.objects.all()[1]) diff --git a/various/management/commands/testdata.py b/various/management/commands/testdata.py index d9ce8cfb..8f591fa5 100644 --- a/various/management/commands/testdata.py +++ b/various/management/commands/testdata.py @@ -1,13 +1,11 @@ -import datetime import os -import random from django.core.management.base import BaseCommand from django.core.management import call_command from django.conf import settings from seminar.models import Skola, Resitel, Rocnik, Cislo, Problem, Reseni, PrilohaReseni, Nastaveni -from seminar.testutils import create_test_data +from various.testutils import create_test_data import django.contrib.auth User = django.contrib.auth.get_user_model() diff --git a/various/testutils.py b/various/testutils.py new file mode 100644 index 00000000..52411ef6 --- /dev/null +++ b/various/testutils.py @@ -0,0 +1,135 @@ +import datetime +import random +import logging + +import django.contrib.auth +from django.contrib.flatpages.models import FlatPage +from django.contrib.sites.models import Site +from django.db import transaction + +from seminar.models import Rocnik, Cislo, Nastaveni, Osoba, Organizator + +from korektury.testutils import create_test_pdf +from novinky.testutils import gen_novinky +from personalni.testutils import gen_organizatori, gen_osoby, gen_prijemci, gen_resitele, gen_skoly +from soustredeni.testutils import gen_soustredeni, gen_konfery +from tvorba.testutils import gen_cisla, gen_clanek, gen_dlouhe_tema, gen_rocniky, gen_temata, gen_ulohy_do_cisla, gen_ulohy_k_tematum + +logger = logging.getLogger(__name__) + +User = django.contrib.auth.get_user_model() + + +@transaction.atomic +def create_test_data(size=6, rnd=None): + logger.info('Vyrábím testovací data (size={})...'.format(size)) + + assert size >= 1 + # pevna pseudo-nahodnost + rnd = rnd or random.Random(x=42) + + # static URL stranky + # FIXME: nakopirovat sem vsechny z produkcni databaze + s = Site.objects.filter(name="example.com") + f = FlatPage.objects.create( + url="/", title="Seminář M&M", + content="

    Vítejte na stránce semináře MaM!

    ", + ) + print(s) + f.sites.add(s[0]) + f.save() + + # users + admin = User.objects.create_superuser( + username='admin', email='', password='admin', + ) + os_admin = Osoba.objects.create( + user=admin, jmeno='admin', prijmeni='admin', + prezdivka='admin', osloveni='', email='admin@admin.admin', + telefon='123 456 789', datum_narozeni=datetime.date(2000, 1, 1), + ulice='admin', mesto='admin', psc='100 00', + datum_registrace=datetime.date(2020, 9, 6), + ) + or_admin = Organizator.objects.create( + osoba=os_admin, organizuje_od=None, organizuje_do=None, + strucny_popis_organizatora="Organizátor k uživateli Admin", + ) + + usernames = ['anet', 'bara', 'cyril', 'david', 'eva', 'filip'] + users = [] + for usr in usernames[:size]: + u = User.objects.create_user(username=usr, password=usr) + u.first_name = usr.capitalize() + u.save() + users.append(u) + print(users) + + # skoly + skoly = gen_skoly() + + # osoby + osoby = gen_osoby(rnd, size) + + # resitele a organizatori + last_rocnik = 25 + organizatori = gen_organizatori(rnd, osoby, last_rocnik) + resitele = gen_resitele(rnd, osoby, skoly) + + # generování novinek + novinky = gen_novinky(rnd, organizatori) + + # prijemci + prijemci = gen_prijemci(rnd, osoby) + + # rocniky + rocniky = gen_rocniky(last_rocnik, size) + + # cisla + # rocnik_cisla je pole polí čísel (typ Cislo), vnitřní pole odpovídají jednotlivým ročníkům. + rocnik_cisla = gen_cisla(rnd, rocniky) + + # generování obyčejných úloh do čísel + gen_ulohy_do_cisla(rnd, organizatori, resitele, rocnik_cisla, rocniky, size) + + # generování témat, zatím v prvních třech číslech po jednom + # FIXME: více témat + # rocnik_temata je pole polí trojic (první číslo :int, poslední číslo :int, téma:Tema), přičemž každé vnitřní pole odpovídá ročníku a FIXME: je to takhle fuj a když to někdo vidí poprvé, tak je z toho smutný, protože vůbec neví, co se děje a co má čekat. + rocnik_temata = gen_temata(rnd, rocniky, rocnik_cisla, organizatori) + + rocnik = Rocnik.objects.filter(rocnik=23).first() + dlouhe_tema = gen_dlouhe_tema( + rnd, organizatori, rocnik, "Strašně dlouhé téma", + "MFI", 8, + ) + + # generování úloh k tématům ve všech číslech + gen_ulohy_k_tematum(rnd, rocniky, rocnik_cisla, rocnik_temata, organizatori, resitele) + + # generování soustředění + soustredeni = gen_soustredeni(size, resitele, organizatori, rnd=rnd) + + # generování konfer + konfery = gen_konfery(size, organizatori, soustredeni, rnd=rnd) + + # vytvoreni pdf ke korekturam + create_test_pdf(rnd, organizatori) + + # TODO: nastavi správně, kolik se čeho generuje, aby rozsahy přibližně odpovídaly + # FIXME: misto typu ruzne typy objektu a vnoreni do sebe (Tom nechápe, co je tímto fixme míněno) + # TODO: vytvorit temata s ruznymi vlakny + # TODO: nagenerovat starsim rocnikum pohadku + # TODO: nagenerovat články + # TODO: vecpat obrázky všude, kde to jde + # TODO: mezičíslo node + # TODO: přidat ke konferám řešení a dát je do čísel + + # Dohackované vytvoření jednoho článku + gen_clanek(rnd, organizatori, resitele) + + # TODO: přidat články včetně zařazení do struktury treenodů, + # a následně otestovat konsistency check databáze z utils.py + # pomocí stránky /stav + + # obecné nastavení semináře, musí být už přidané ročníky a čísla, jinak se nastaví divně + nastaveni = Nastaveni.objects.create( + aktualni_cislo=Cislo.objects.all()[1]) From e250f1d5dc0e3b771acfb12d6571dcdd35e90c54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Wed, 2 Oct 2024 21:16:53 +0200 Subject: [PATCH 206/225] =?UTF-8?q?Admin=5Furl=20soust=C5=99ed=C4=9Bn?= =?UTF-8?q?=C3=AD=20(aby=20mohlo=20b=C3=BDt=20v=20login-baru)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- soustredeni/models.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/soustredeni/models.py b/soustredeni/models.py index 518b3291..f71e6736 100644 --- a/soustredeni/models.py +++ b/soustredeni/models.py @@ -77,6 +77,10 @@ class Soustredeni(SeminarModelBase): #return reverse('seminar_soustredeni', kwargs={'pk': self.id}) return reverse('seminar_seznam_soustredeni') + def admin_url(self): + model_name = self.__class__.__name__.lower() + return reverse('admin:soustredeni_{}_change'.format(model_name), args=(self.id, )) + @reversion.register(ignore_duplicates=True) class Soustredeni_Ucastnici(SeminarModelBase): From 733484b503a3c0f0a704586988f4e7e64d219f3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Wed, 2 Oct 2024 21:20:44 +0200 Subject: [PATCH 207/225] =?UTF-8?q?Export=20do=20abstrakt=C5=AF=20(soust?= =?UTF-8?q?=C5=99ed=C4=9Bn=C3=AD)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/sitetree.json | 24 +++++++++++++++++++ .../soustredeni/export_do_abstraktu.html | 17 +++++++++++++ .../soustredeni/seznam_soustredeni.html | 1 + soustredeni/urls.py | 5 ++++ soustredeni/views.py | 4 ++++ 5 files changed, 51 insertions(+) create mode 100644 soustredeni/templates/soustredeni/export_do_abstraktu.html diff --git a/data/sitetree.json b/data/sitetree.json index 29403e5a..933c628a 100644 --- a/data/sitetree.json +++ b/data/sitetree.json @@ -1079,5 +1079,29 @@ }, "model": "sitetree.treeitem", "pk": 53 + }, + { + "fields": { + "access_guest": false, + "access_loggedin": false, + "access_perm_type": 1, + "access_permissions": [], + "access_restricted": true, + "alias": null, + "description": "", + "hidden": false, + "hint": "", + "inbreadcrumbs": true, + "inmenu": true, + "insitetree": true, + "parent": 20, + "sort_order": 54, + "title": "Export do abstraktů sousu {{ soustredeni.id }}", + "tree": 1, + "url": "seminar_soustredeni_abstrakty soustredeni.id", + "urlaspattern": true + }, + "model": "sitetree.treeitem", + "pk": 54 } ] diff --git a/soustredeni/templates/soustredeni/export_do_abstraktu.html b/soustredeni/templates/soustredeni/export_do_abstraktu.html new file mode 100644 index 00000000..16de19a0 --- /dev/null +++ b/soustredeni/templates/soustredeni/export_do_abstraktu.html @@ -0,0 +1,17 @@ +{% extends "base.html" %} +{% load tex %} + +{% block nadpis1a %} + Soustředění – export do abstraktů +{% endblock %} + +{% block content %} +

    Export do abstraktů Soustředění {{ soustredeni }}

    + +{# Zde zcela záměrně chybí nějaké whitespacy, např. odřádkování a odsazení #} +
    {% for ucastnik in soustredeni.ucastnici.all %}\ucastnik{{ ucastnik|sloz }}{{ ucastnik.osoba.email|sloz }}{{ ucastnik.skola|sloz }}
    +{% endfor %}
    +{% for vedouci in soustredeni.organizatori.all %}\vedouci{{ vedouci|sloz }}{{ vedouci.osoba.email|sloz }}{TODO}
    +{% endfor %}
    + +{% endblock %} diff --git a/soustredeni/templates/soustredeni/seznam_soustredeni.html b/soustredeni/templates/soustredeni/seznam_soustredeni.html index e5f68bfc..ac33852a 100644 --- a/soustredeni/templates/soustredeni/seznam_soustredeni.html +++ b/soustredeni/templates/soustredeni/seznam_soustredeni.html @@ -40,6 +40,7 @@
    Vytvořit novou fotogalerii
    Vygenerovat obálky pro účastníky
    + Vygenerovat účastníky a vedoucí do abstraktů
    Seznam účastníků - HTML tabulka pro tisk, CSV, diff --git a/soustredeni/urls.py b/soustredeni/urls.py index 2e5a6136..6d8de5e1 100644 --- a/soustredeni/urls.py +++ b/soustredeni/urls.py @@ -33,6 +33,11 @@ urlpatterns = [ org_required(views.soustredeniObalkyView), name='seminar_soustredeni_obalky' ), + path( + 'soustredeni//abstrakty', + org_required(views.SoustredeniAbstraktyView.as_view()), + name='seminar_soustredeni_abstrakty' + ), path( 'soustredeni//fotogalerie/', include('galerie.urls') diff --git a/soustredeni/views.py b/soustredeni/views.py index f150b6b8..c7e17d24 100644 --- a/soustredeni/views.py +++ b/soustredeni/views.py @@ -99,3 +99,7 @@ def soustredeniStvrzenkyView(request, soustredeni): with open(tempdir / "stvrzenky.pdf", "rb") as pdffile: response = HttpResponse(pdffile.read(), content_type='application/pdf') return response + +class SoustredeniAbstraktyView(generic.DetailView): + model = Soustredeni + template_name = 'soustredeni/export_do_abstraktu.html' From 6ec2a10bf587b3be1f2510c543cd760aeebb8e43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Thu, 10 Oct 2024 13:23:51 +0200 Subject: [PATCH 208/225] setuptools v requirements.txt --- requirements.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 6855e0ae..8f172e2a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,7 @@ -c constraints.txt -# basic libs +setuptools # django-polymorphic má rozbité dependencies +# basic libs psycopg2 # PostgreSQL adaptér ipython # Interaktivní shell Unidecode # Přepisuje unicode do ASCII (např. soubory nebo e-maily) From e87bbe60480a205cba4c616280b6ba6073aa9907 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Sun, 13 Oct 2024 23:31:05 +0200 Subject: [PATCH 209/225] =?UTF-8?q?Sloupe=C4=8Dek=20ostatn=C3=AD=20ve=20v?= =?UTF-8?q?=C3=BDsledkovce=20(nov=C3=A1=20makra)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- seminar/templates/seminar/archiv/cislo_vysledkovka.tex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/seminar/templates/seminar/archiv/cislo_vysledkovka.tex b/seminar/templates/seminar/archiv/cislo_vysledkovka.tex index bebd5632..b8e9f248 100644 --- a/seminar/templates/seminar/archiv/cislo_vysledkovka.tex +++ b/seminar/templates/seminar/archiv/cislo_vysledkovka.tex @@ -1,6 +1,7 @@ \setlength{\tabcolsep}{3pt} +{% if vysledkovka.je_nejake_ostatni %}\vysledkovkaostatnitrue{% endif %} \begin{longtable}{|r|l|c|r|{% for p in vysledkovka.temata_a_spol %}c@{\hskip.5em}{% endfor %}{% if vysledkovka.je_nejake_ostatni %}|c@{\hskip.5em}{% endif %}|r|r|}\hline -& & & & \multicolumn{ {{ vysledkovka.temata_a_spol|length}} }{c|}{\textbf{Témata}} & & {% if vysledkovka.je_nejake_ostatni %}&{\hskip.5em}{% endif %} \\\textbf{Poř.}& \textbf{Jméno}& \textbf{R.}& \raisebox{0.7mm}{$\sum_{-1}$}& {% for p in vysledkovka.temata_a_spol %}\textbf{ {{ p.kod_v_rocniku }} }&{% endfor %}{% if vysledkovka.je_nejake_ostatni %}\textbf{Ostatní}&{% endif %}\raisebox{0.7mm}{$\sum_0$}&\raisebox{0.7mm}{$\sum_1$}\\\hline +& & & & \multicolumn{ {{ vysledkovka.temata_a_spol|length}} }{c|}{\textbf{Témata}} & & {% if vysledkovka.je_nejake_ostatni %}&{\hskip.5em}{% endif %} \\\textbf{Poř.}& \textbf{Jméno}& \textbf{R.}& \raisebox{0.7mm}{$\sum_{-1}$}& {% for p in vysledkovka.temata_a_spol %}\textbf{ {{ p.kod_v_rocniku }} }&{% endfor %}{% if vysledkovka.je_nejake_ostatni %}\textbf{O.}&{% endif %}\raisebox{0.7mm}{$\sum_0$}&\raisebox{0.7mm}{$\sum_1$}\\\hline \endhead \hline \endfoot From 9f421e9d77ed5ef7b879356a896984e10e9a5867 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Sun, 13 Oct 2024 23:38:17 +0200 Subject: [PATCH 210/225] =?UTF-8?q?Sloupe=C4=8Dek=20ostatn=C3=AD=20ve=20v?= =?UTF-8?q?=C3=BDsledkovce=20(nov=C3=A1=20makra)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- seminar/templates/seminar/archiv/cislo_vysledkovka.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/seminar/templates/seminar/archiv/cislo_vysledkovka.tex b/seminar/templates/seminar/archiv/cislo_vysledkovka.tex index b8e9f248..4c637524 100644 --- a/seminar/templates/seminar/archiv/cislo_vysledkovka.tex +++ b/seminar/templates/seminar/archiv/cislo_vysledkovka.tex @@ -1,5 +1,5 @@ \setlength{\tabcolsep}{3pt} -{% if vysledkovka.je_nejake_ostatni %}\vysledkovkaostatnitrue{% endif %} +{% if vysledkovka.je_nejake_ostatni %}\global\vysledkovkaostatnitrue{% else %}\global\vysledkovkaostatnifalse{% endif %} \begin{longtable}{|r|l|c|r|{% for p in vysledkovka.temata_a_spol %}c@{\hskip.5em}{% endfor %}{% if vysledkovka.je_nejake_ostatni %}|c@{\hskip.5em}{% endif %}|r|r|}\hline & & & & \multicolumn{ {{ vysledkovka.temata_a_spol|length}} }{c|}{\textbf{Témata}} & & {% if vysledkovka.je_nejake_ostatni %}&{\hskip.5em}{% endif %} \\\textbf{Poř.}& \textbf{Jméno}& \textbf{R.}& \raisebox{0.7mm}{$\sum_{-1}$}& {% for p in vysledkovka.temata_a_spol %}\textbf{ {{ p.kod_v_rocniku }} }&{% endfor %}{% if vysledkovka.je_nejake_ostatni %}\textbf{O.}&{% endif %}\raisebox{0.7mm}{$\sum_0$}&\raisebox{0.7mm}{$\sum_1$}\\\hline \endhead From 133c487637f34cb231bce5afdad20f58947d54e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Sun, 13 Oct 2024 23:39:47 +0200 Subject: [PATCH 211/225] =?UTF-8?q?Sloupe=C4=8Dek=20ostatn=C3=AD=20ve=20v?= =?UTF-8?q?=C3=BDsledkovce=20(nov=C3=A1=20makra)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- seminar/templates/seminar/archiv/cislo_vysledkovka.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/seminar/templates/seminar/archiv/cislo_vysledkovka.tex b/seminar/templates/seminar/archiv/cislo_vysledkovka.tex index 4c637524..de271652 100644 --- a/seminar/templates/seminar/archiv/cislo_vysledkovka.tex +++ b/seminar/templates/seminar/archiv/cislo_vysledkovka.tex @@ -1,7 +1,7 @@ \setlength{\tabcolsep}{3pt} {% if vysledkovka.je_nejake_ostatni %}\global\vysledkovkaostatnitrue{% else %}\global\vysledkovkaostatnifalse{% endif %} \begin{longtable}{|r|l|c|r|{% for p in vysledkovka.temata_a_spol %}c@{\hskip.5em}{% endfor %}{% if vysledkovka.je_nejake_ostatni %}|c@{\hskip.5em}{% endif %}|r|r|}\hline -& & & & \multicolumn{ {{ vysledkovka.temata_a_spol|length}} }{c|}{\textbf{Témata}} & & {% if vysledkovka.je_nejake_ostatni %}&{\hskip.5em}{% endif %} \\\textbf{Poř.}& \textbf{Jméno}& \textbf{R.}& \raisebox{0.7mm}{$\sum_{-1}$}& {% for p in vysledkovka.temata_a_spol %}\textbf{ {{ p.kod_v_rocniku }} }&{% endfor %}{% if vysledkovka.je_nejake_ostatni %}\textbf{O.}&{% endif %}\raisebox{0.7mm}{$\sum_0$}&\raisebox{0.7mm}{$\sum_1$}\\\hline +& & & & \multicolumn{ {{ vysledkovka.temata_a_spol|length}} }{c|}{\textbf{Témata}} & & {% if vysledkovka.je_nejake_ostatni %}&{\hskip.5em}{% endif %} \\\textbf{Poř.}& \textbf{Jméno}& \textbf{R.}& \raisebox{0.7mm}{$\sum_{-1}$}& {% for p in vysledkovka.temata_a_spol %}\textbf{ {{ p.kod_v_rocniku }} }&{% endfor %}{% if vysledkovka.je_nejake_ostatni %}\textbf{O}&{% endif %}\raisebox{0.7mm}{$\sum_0$}&\raisebox{0.7mm}{$\sum_1$}\\\hline \endhead \hline \endfoot From 592ae29d35f3446d91e625df6db90197e31a6f70 Mon Sep 17 00:00:00 2001 From: ticvac Date: Tue, 22 Oct 2024 19:05:41 +0200 Subject: [PATCH 212/225] =?UTF-8?q?ghoul=20font=20na=20posledn=C3=ADch=207?= =?UTF-8?q?=20dn=C3=AD=20=C5=99=C3=ADjna=202024?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mamweb/static/css/mamweb.css | 13 ++++++++++--- mamweb/static/fonts/ghoul/ghoul.ttf | Bin 0 -> 14968 bytes mamweb/static/fonts/ghoul/ghoulheadline.ttf | Bin 0 -> 24980 bytes mamweb/templates/base.html | 12 ++++++++++++ various/context_processors.py | 13 +++++++++++++ 5 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 mamweb/static/fonts/ghoul/ghoul.ttf create mode 100644 mamweb/static/fonts/ghoul/ghoulheadline.ttf diff --git a/mamweb/static/css/mamweb.css b/mamweb/static/css/mamweb.css index 0d699d5c..c931aee8 100644 --- a/mamweb/static/css/mamweb.css +++ b/mamweb/static/css/mamweb.css @@ -2,9 +2,16 @@ @import url("rozliseni.css"); @font-face { -font-family: 'OpenSans'; -src: url("../fonts/OpenSans/OpenSans-Regular.ttf"); -font-weight: normal; + font-family: 'OpenSans'; + src: url("../fonts/OpenSans/OpenSans-Regular.ttf"); + font-weight: normal; +} + +@font-face { + font-family: 'GhoulFace'; + src: url("../fonts/ghoul/ghoulheadline.ttf"), + url("../fonts/ghoul/ghoul.woff"); + font-weight: normal; } p { diff --git a/mamweb/static/fonts/ghoul/ghoul.ttf b/mamweb/static/fonts/ghoul/ghoul.ttf new file mode 100644 index 0000000000000000000000000000000000000000..64bab4789ae256a70f2af1ad00fc1edab5efbf27 GIT binary patch literal 14968 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 Y@QR^}vZk22sUkhC>N;K+&?x->0hVL~RsaA1 literal 0 HcmV?d00001 diff --git a/mamweb/static/fonts/ghoul/ghoulheadline.ttf b/mamweb/static/fonts/ghoul/ghoulheadline.ttf new file mode 100644 index 0000000000000000000000000000000000000000..90d4f7c126d0c67a754e622812a3b83f5929fade GIT binary patch literal 24980 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 + {% if halloween == 2024 %} + + {% endif %} + diff --git a/various/context_processors.py b/various/context_processors.py index a1e4478a..331780b1 100644 --- a/various/context_processors.py +++ b/various/context_processors.py @@ -15,6 +15,19 @@ def april(req): return {'april': today.year} return {} +def halloween(req): + if 'X-Halloween' in req.headers: + try: + year = int(req.headers['X-Halloween']) + return {'halloween': year} + except: + pass # Fall-back to regular behaviour + + import datetime + today = datetime.date.today() + if today.month == 10 and today.day >= 25: + return {'halloween': today.year} + return {} def rozliseni(request): ltp = settings.LOCAL_TEST_PROD From b491dcff7e596c1708992a6c0a3b83b923855c2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Tue, 22 Oct 2024 19:19:31 +0200 Subject: [PATCH 213/225] =?UTF-8?q?Koment=C3=A1=C5=99=20k=20kontejneru?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mamweb/static/css/layout.css | 2 +- mamweb/templates/base.html | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mamweb/static/css/layout.css b/mamweb/static/css/layout.css index 828b1d7d..abd911c1 100644 --- a/mamweb/static/css/layout.css +++ b/mamweb/static/css/layout.css @@ -8,7 +8,7 @@ } /**** KONTEJNER ****/ -div.kontejner { +div.kontejner {/* Ne container, aby se to netlouklo s bootstrapem. */ width: 970px; margin: auto; min-height: 100vh; diff --git a/mamweb/templates/base.html b/mamweb/templates/base.html index 69b533aa..7f14b378 100644 --- a/mamweb/templates/base.html +++ b/mamweb/templates/base.html @@ -55,8 +55,8 @@

    {% endif %} -
    -
    +
    {# ne container, aby se netlouklo s bootstrapem #} +
    {# ne content, aby se netlouklo s bootstrapem #}
    M&M – korespondenční seminář a časopis MFF UK
    From ffcc2e04a3c49202a9d98ed2d4a7d16a1252ee8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Tue, 22 Oct 2024 19:28:12 +0200 Subject: [PATCH 214/225] TS -> TITULNI_STRANA a AZAD -> AKTUALNI_ZADANI --- mamweb/static/css/layout.css | 18 +++++++++--------- .../seminar/titulnistrana/titulnistrana.html | 14 +++++++------- .../seminar/zadani/AktualniZadani.html | 10 +++++----- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/mamweb/static/css/layout.css b/mamweb/static/css/layout.css index abd911c1..bab8ea39 100644 --- a/mamweb/static/css/layout.css +++ b/mamweb/static/css/layout.css @@ -461,7 +461,7 @@ body.suprodweb { &:before, &:after { background: red; } } h1 { text-align: center; } - .TS_zjistit_vic{ + .TITULNI_STRANA_zjistit_vic{ text-align: center; margin-bottom: 30px; @@ -474,12 +474,12 @@ body.suprodweb { &:before, &:after { background: red; } } } } - .TS_graf { + .TITULNI_STRANA_graf { @media(max-width: 800px) { padding-top: 40px; } - .TS_graf-svg { + .TITULNI_STRANA_graf-svg { display: flex; #svg-graf { @@ -496,7 +496,7 @@ body.suprodweb { &:before, &:after { background: red; } } } } - .TS_obsah { + .TITULNI_STRANA_obsah { width: 66%; @media(max-width: 800px){ @@ -504,7 +504,7 @@ body.suprodweb { &:before, &:after { background: red; } } } } - .TS_vitej_titulka, .TS_temata_titulka { + .TITULNI_STRANA_vitej_titulka, .TITULNI_STRANA_temata_titulka { width: 49%; padding: 10px; display: table-cell; @@ -515,7 +515,7 @@ body.suprodweb { &:before, &:after { background: red; } } } } - .TS_novinky { + .TITULNI_STRANA_novinky { width: 33%; padding: 10px; @@ -540,11 +540,11 @@ div.odpocet { .stranka_aktualni_zadani { text-align: center; - #AZAD_obrazek { + #AKTUALNI_ZADADNI_obrazek { margin-top: 15px; } - div.AZAD_termin { + div.AKTUALNI_ZADANI_termin { text-align: center; font-size: large; font-weight: bold; @@ -553,7 +553,7 @@ div.odpocet { font-size: small; } - .AZAD_datum { + .AKTUALNI_ZADANI_datum { color: var(--hlavni-oranzova); margin: 0; } diff --git a/seminar/templates/seminar/titulnistrana/titulnistrana.html b/seminar/templates/seminar/titulnistrana/titulnistrana.html index d8b1e583..e9e5c16d 100644 --- a/seminar/templates/seminar/titulnistrana/titulnistrana.html +++ b/seminar/templates/seminar/titulnistrana/titulnistrana.html @@ -36,9 +36,9 @@ function sousdeadline() {
    -
    +
    -
    +

    {% block nadpis1a %} @@ -54,7 +54,7 @@ function sousdeadline() {

    -
    +

    Vyřeš to! @@ -76,13 +76,13 @@ function sousdeadline() {

    -
    +
    - -
    +
    {# Novinky #}

    Co je nového?

    diff --git a/seminar/templates/seminar/zadani/AktualniZadani.html b/seminar/templates/seminar/zadani/AktualniZadani.html index 2ebbcaa4..c463129d 100644 --- a/seminar/templates/seminar/zadani/AktualniZadani.html +++ b/seminar/templates/seminar/zadani/AktualniZadani.html @@ -14,20 +14,20 @@ {% if user.je_org and not verejne %}
    {% endif %}
    -
    +
    Termíny pro odeslání řešení {{ac.poradi}}. série:
    {% for deadline in ac.deadline_v_cisle.all %} {% if deadline.typ == deadline.TYP_SOUS or deadline.typ == deadline.TYP_PRVNI_A_SOUS %} - {{deadline.deadline.date}} pro účast na soustředění
    + {{deadline.deadline.date}} pro účast na soustředění
    {% endif %} {% if deadline.typ == deadline.TYP_PRVNI or deadline.typ == deadline.TYP_PRVNI_A_SOUS %} - {{deadline.deadline.date}} pro otištění v dalším čísle
    + {{deadline.deadline.date}} pro otištění v dalším čísle
    {% endif %} {% if deadline.typ == deadline.TYP_CISLA %} - {{deadline.deadline.date}} definitivní deadline
    + {{deadline.deadline.date}} definitivní deadline
    {% endif %} {% endfor %} @@ -35,7 +35,7 @@
    {% if ac.titulka_nahled and ac.pdf %} -
    Titulní strana {{ac.poradi}}. čísla + Titulní strana {{ac.poradi}}. čísla {% endif %} {% if ac.pdf %} From 8dca676edce92b907bece2d08fa9a9ed46bd71b8 Mon Sep 17 00:00:00 2001 From: ticvac Date: Tue, 22 Oct 2024 19:29:28 +0200 Subject: [PATCH 215/225] script presunut dolu pod april --- mamweb/templates/base.html | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/mamweb/templates/base.html b/mamweb/templates/base.html index c3fe697c..cc6a1fc4 100644 --- a/mamweb/templates/base.html +++ b/mamweb/templates/base.html @@ -35,18 +35,6 @@ {# script specifický pro stránku #} {% block script %}{% endblock %} - - {% if halloween == 2024 %} - - {% endif %} - @@ -217,6 +205,17 @@ walkText(document.body); {% endif %} + + {% if halloween == 2024 %} + + {% endif %} {% block js %}{% endblock %} From fbd5087c022fa3468ab0a1c3c03fd7a969f99be8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Tue, 22 Oct 2024 19:29:29 +0200 Subject: [PATCH 216/225] =?UTF-8?q?Zm=C4=9Bna=20version,=20aby=20po=C4=8D?= =?UTF-8?q?=C3=ADta=C4=8De=20p=C5=99ena=C4=8Detly=20CSSka?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mamweb/templates/base.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mamweb/templates/base.html b/mamweb/templates/base.html index 7f14b378..a09ac528 100644 --- a/mamweb/templates/base.html +++ b/mamweb/templates/base.html @@ -8,11 +8,11 @@ {% block custom_css %}{% endblock %} - - - - - + + + + + From 77d158a3a711b6d91ee3c36acc51fff2f7929863 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Tue, 22 Oct 2024 19:56:08 +0200 Subject: [PATCH 217/225] =?UTF-8?q?Zm=C4=9Bna=20version,=20aby=20po=C4=8D?= =?UTF-8?q?=C3=ADta=C4=8De=20p=C5=99ena=C4=8Detly=20CSSka?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mamweb/templates/base.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mamweb/templates/base.html b/mamweb/templates/base.html index a09ac528..1a4c22ab 100644 --- a/mamweb/templates/base.html +++ b/mamweb/templates/base.html @@ -8,7 +8,7 @@ {% block custom_css %}{% endblock %} - + From 227b83b70100272b4386d76ee97886cc92861ff3 Mon Sep 17 00:00:00 2001 From: ticvac Date: Tue, 22 Oct 2024 20:10:27 +0200 Subject: [PATCH 218/225] halloween do settings --- mamweb/settings_common.py | 1 + 1 file changed, 1 insertion(+) diff --git a/mamweb/settings_common.py b/mamweb/settings_common.py index f737be1e..a9b38c9a 100644 --- a/mamweb/settings_common.py +++ b/mamweb/settings_common.py @@ -87,6 +87,7 @@ TEMPLATES = [ 'header_fotky.context_processors.vzhled', 'various.context_processors.rozliseni', 'various.context_processors.april', + 'various.context_processors.halloween', ) }, }, From 8ff66cb63115b750af25da0f50122a22e4fe4ea2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Tue, 22 Oct 2024 20:15:58 +0200 Subject: [PATCH 219/225] WTF? --- various/templates/various/pracuje_se.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/various/templates/various/pracuje_se.html b/various/templates/various/pracuje_se.html index e80fea23..1a396534 100644 --- a/various/templates/various/pracuje_se.html +++ b/various/templates/various/pracuje_se.html @@ -10,7 +10,7 @@

    Na této stránce velmi intenzivně pracujeme. Za dočasnou nedostupnost se omlouváme. - Zkuste přejít na titulní stránku + Zkuste přejít na titulní stránku nebo se podívat na aktuální zadání.

    From e443ecf33d519bfd0fd7b6acf39d2c023c012ab6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Tue, 22 Oct 2024 21:23:11 +0200 Subject: [PATCH 220/225] views_all do __init__ --- tvorba/views/__init__.py | 584 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 582 insertions(+), 2 deletions(-) diff --git a/tvorba/views/__init__.py b/tvorba/views/__init__.py index 8db4424b..823ddd96 100644 --- a/tvorba/views/__init__.py +++ b/tvorba/views/__init__.py @@ -1,4 +1,584 @@ -from .views_all import * - # Dočsasné views from .docasne import * + +# Zbytek + +from django.shortcuts import get_object_or_404, render +from django.http import HttpResponse +from django.urls import reverse +from django.core.exceptions import ObjectDoesNotExist +from django.views import generic +from django.utils.translation import gettext as _ +from django.http import Http404 +from django.db.models import Q, Sum, Count +from django.views.generic.base import RedirectView +from django.core.exceptions import PermissionDenied + +import seminar.models as s +import seminar.models as m +from seminar.models import Problem, Cislo, Reseni, Nastaveni, Rocnik, \ + Resitel, Novinky, Tema, Clanek, \ + Deadline # Tohle je stare a chceme se toho zbavit. Pouzivejte s.ToCoChci +#from .models import VysledkyZaCislo, VysledkyKCisluZaRocnik, VysledkyKCisluOdjakziva +from treenode import treelib +import treenode.templatetags as tnltt +import treenode.serializers as vr +from vysledkovky.utils import body_resitelu, VysledkovkaCisla, \ + VysledkovkaRocniku, VysledkovkaDoTeXu + +from datetime import date, datetime +from itertools import groupby +from collections import OrderedDict +import os +import os.path as op +from django.conf import settings +import unicodedata +import logging +import time + +import personalni.views + +from .. import utils + +# ze starého modelu +#def verejna_temata(rocnik): +# """ +# Vrací queryset zveřejněných témat v daném ročníku. +# """ +# return Problem.objects.filter(typ=Problem.TYP_TEMA, cislo_zadani__rocnik=rocnik, cislo_zadani__verejne_db=True).order_by('kod') +# +#def temata_v_rocniku(rocnik): +# return Problem.objects.filter(typ=Problem.TYP_TEMA, rocnik=rocnik) + +logger = logging.getLogger(__name__) + +def get_problemy_k_tematu(tema): + return Problem.objects.filter(nadproblem = tema) + + +# FIXME: Pozor, níž je ještě jeden ProblemView! +#class ProblemView(generic.DetailView): +# model = s.Problem +# # Zkopírujeme template_name od TreeNodeView, protože jsme prakticky jen trošku upravený TreeNodeView +# template_name = TreeNodeView.template_name +# +# def get_context_data(self, **kwargs): +# context = super().get_context_data(**kwargs) +# user = self.request.user +# # Teď potřebujeme doplnit tnldata do kontextu. +# # Ošklivý type switch, hezčí by bylo udělat to polymorfni. FIXME. +# if False: +# # Hezčí formátování zbytku :-P +# pass +# elif isinstance(self.object, s.Clanek) or isinstance(self.object, s.Konfera): +# # Tyhle Problémy mají ŘešeníNode +# context['tnldata'] = TNLData.from_treenode(self.object.reseninode,user) +# elif isinstance(self.object, s.Uloha): +# # FIXME: Teď vždycky zobrazujeme i vzorák! Možná by bylo hezčí/lepší mít to stejně jako pro Téma: procházet jen dosažitelné z Ročníku / čísla / whatever +# tnl_zadani = TNLData.from_treenode(self.object.ulohazadaninode,user) +# tnl_vzorak = TNLData.from_treenode(self.object.ulohavzoraknode,user) +# context['tnldata'] = TNLData.from_tnldata_list([tnl_zadani, tnl_vzorak]) +# elif isinstance(self.object, s.Tema): +# rocniknode = self.object.rocnik.rocniknode +# context['tnldata'] = TNLData.filter_treenode(rocniknode, lambda x: isinstance(x, s.TemaVCisleNode)) +# else: +# raise ValueError("Obecný problém nejde zobrazit.") +# return context + + +#class AktualniZadaniView(generic.TemplateView): +# template_name = 'treenode/treenode.html' + +# TODO Co chceme vlastně zobrazovat na této stránce? Zatím je zde aktuální číslo, ale může tu být cokoli jiného... +#class AktualniZadaniView(TreeNodeView): +# def get_object(self): +# nastaveni = get_object_or_404(Nastaveni) +# return nastaveni.aktualni_cislo.cislonode +# +# def get_context_data(self,**kwargs): +# nastaveni = get_object_or_404(Nastaveni) +# context = super().get_context_data(**kwargs) +# verejne = nastaveni.aktualni_cislo.verejne() +# context['verejne'] = verejne +# return context + +def AktualniZadaniView(request): + nastaveni = get_object_or_404(Nastaveni) + verejne = nastaveni.aktualni_cislo.verejne() + return render(request, 'tvorba/zadani/AktualniZadani.html', + {'nastaveni': nastaveni, + 'verejne': verejne, + }, + ) + +def ZadaniTemataView(request): + nastaveni = get_object_or_404(Nastaveni) + verejne = nastaveni.aktualni_cislo.verejne() + akt_rocnik = nastaveni.aktualni_cislo.rocnik + temata = s.Tema.objects.filter(rocnik=akt_rocnik, stav='zadany') + return render(request, 'tvorba/tematka/rozcestnik.html', + { + 'tematka': temata, + 'verejne': verejne, + }, + ) + + +# nastaveni = get_object_or_404(Nastaveni) +# temata = verejna_temata(nastaveni.aktualni_rocnik) +# for t in temata: +# if request.user.is_staff: +# t.prispevky = t.prispevek_set.filter(problem=t) +# else: +# t.prispevky = t.prispevek_set.filter(problem=t, zverejnit=True) +# return render(request, 'tvorba/zadani/Temata.html', +# { +# 'temata': temata, +# } +# ) +# +# +# +#def TematkoView(request, rocnik, tematko): +# nastaveni = s.Nastaveni.objects.first() +# rocnik_object = s.Rocnik.objects.filter(rocnik=rocnik) +# tematko_object = s.Tema.objects.filter(rocnik=rocnik_object[0], kod=tematko) +# seznam = vytahniZLesaSeznam(tematko_object[0], nastaveni.aktualni_rocnik().rocniknode) +# for node, depth in seznam: +# if node.isinstance(node, s.KonferaNode): +# raise Exception("Not implemented yet") +# if node.isinstance(node, s.PohadkaNode): # Mohu ignorovat, má pod sebou +# pass +# +# return render(request, 'tvorba/tematka/toaletak.html', {}) +# +# +#def TemataRozcestnikView(request): +# print("=============================================") +# nastaveni = s.Nastaveni.objects.first() +# tematka_objects = s.Tema.objects.filter(rocnik=nastaveni.aktualni_rocnik()) +# tematka = [] #List tematka obsahuje pro kazde tematko object a list vsech TemaVCisleNodu - implementované pomocí slovníku +# for tematko_object in tematka_objects: +# print("AKTUALNI TEMATKO") +# print(tematko_object.id) +# odkazy = vytahniZLesaSeznam(tematko_object, nastaveni.aktualni_rocnik().rocniknode, pouze_zajimave = True) #Odkazy jsou tuply (node, depth) v listu +# print(odkazy) +# cisla = [] # List tuplů (nazev cisla, list odkazů) +# vcisle = [] +# cislo = None +# for odkaz in odkazy: +# if odkaz[1] == 0: +# if cislo != None: +# cisla.append((cislo, vcisle)) +# cislo = (odkaz[0].getOdkazStr(), odkaz[0].getOdkaz()) +# vcisle = [] +# else: +# print(odkaz[0].getOdkaz()) +# vcisle.append((odkaz[0].getOdkazStr(), odkaz[0].getOdkaz())) +# if cislo != None: +# cisla.append((cislo, vcisle)) +# +# print(cisla) +# tematka.append({ +# "kod" : tematko_object.kod, +# "nazev" : tematko_object.nazev, +# "abstrakt" : tematko_object.abstrakt, +# "obrazek": tematko_object.obrazek, +# "cisla" : cisla +# }) +# return render(request, 'tvorba/tematka/rozcestnik.html', {"tematka": tematka, "rocnik" : nastaveni.aktualni_rocnik().rocnik}) +# + +def ZadaniAktualniVysledkovkaView(request): + nastaveni = get_object_or_404(Nastaveni) + # Aktualni verejna vysledkovka + rocnik = nastaveni.aktualni_rocnik + context = {'vysledkovka': VysledkovkaRocniku(rocnik, True)} + + # kdyz neni verejna vysledkovka, tak zobraz starou + if len(context['vysledkovka'].cisla_rocniku) == 0: + try: + minuly_rocnik = Rocnik.objects.get( + rocnik=(rocnik.rocnik-1)) + rocnik = minuly_rocnik + + # Přepíšeme prázdnou výsledkovku výsledkovkou z minulého ročníku + context['vysledkovka'] = VysledkovkaRocniku(rocnik, True) + except ObjectDoesNotExist: + pass + + context['rocnik'] = rocnik + return render( + request, + 'tvorba/zadani/AktualniVysledkovka.html', + context + ) + + +### Titulni strana + +def aktualni_temata(rocnik): + """ + Vrací PolymorphicQuerySet témat v daném ročníku, ke kterým se aktuálně dá něco odevzdat. + """ + return Tema.objects.filter(rocnik=rocnik, stav='zadany').order_by('kod') + + +### Archiv + + +class ArchivView(generic.ListView): + model = Rocnik + template_name = 'tvorba/archiv/cisla.html' + + def get_context_data(self, **kwargs): + context = super(ArchivView, self).get_context_data(**kwargs) + + cisla = Cislo.objects.filter(poradi=1) + if not self.request.user.je_org: + cisla = cisla.filter(verejne_db=True) + urls ={} + + for i, c in enumerate(cisla): + # Výchozí nastavení + if c.rocnik not in urls: + urls[c.rocnik] = op.join(settings.STATIC_URL, "tvorba", "no-picture.png") + # NOTE: tohle možná nastavuje poslední titulku + if c.titulka_nahled: + urls[c.rocnik] = c.titulka_nahled.url + + context["object_list"] = urls + + return context + + + + + +class RocnikView(generic.DetailView): + model = Rocnik + template_name = 'tvorba/archiv/rocnik.html' + + # Vlastni ziskavani objektu z databaze podle (Rocnik.rocnik) + def get_object(self, queryset=None): + if queryset is None: + queryset = self.get_queryset() + + return get_object_or_404(queryset,rocnik=self.kwargs.get('rocnik')) + + def get_context_data(self, **kwargs): + context = super(RocnikView, self).get_context_data(**kwargs) + context["vysledkovka"] = VysledkovkaRocniku(context["rocnik"], True) + context["neprazdna_vysledkovka"] = len(context['vysledkovka'].cisla_rocniku) != 0 + context["vysledkovka_neverejna"] = VysledkovkaRocniku(context["rocnik"], False) + return context + +def resiteleRocnikuCsvExportView(request, rocnik): + from personalni.views import dataResiteluCsvResponse + assert request.method in ('GET', 'HEAD') + return dataResiteluCsvResponse( + utils.resi_v_rocniku( + get_object_or_404(m.Rocnik, rocnik=rocnik) + ) + ) + + +# FIXME: Pozor, výš je ještě jeden ProblemView! +#class ProblemView(generic.DetailView): +# model = Problem +# +# # Používáme funkci, protože přímo template_name neumí mít v přiřazení dost logiky. Ledaže by se to udělalo polymorfně... +# def get_template_names(self, **kwargs): +# # FIXME: Switch podle typu není hezký, ale nechtělo se mi to přepisovat celé. Správně by se tohle mělo řešit polymorfismem. +# spravne_templaty = { +# s.Uloha: "uloha", +# s.Tema: "tema", +# s.Konfera: "konfera", +# s.Clanek: "clanek", +# } +# context = super().get_context_data(**kwargs) +# return ['tvorba/archiv/problem_' + spravne_templaty[context['object'].__class__] + '.html'] +# +# def get_context_data(self, **kwargs): +# context = super().get_context_data(**kwargs) +# # Musí se používat context['object'], protože nevíme, jestli dostaneme úložku, téma, článek, .... a tyhle věci vyrábějí různé klíče. +# if not context['object'].verejne() and not self.request.user.je_org: +# raise PermissionDenied() +# if isinstance(context['object'], Clanek): +# context['reseni'] = Reseni.objects.filter(problem=context['object']).select_related('resitel').order_by('resitel__prijmeni') +# return context + + + +class CisloView(generic.DetailView): + # FIXME zobrazování témátek a vůbec, teď je tam jen odkaz na číslo v pdf + model = Cislo + template_name = 'tvorba/archiv/cislo.html' + + # Vlastni ziskavani objektu z databaze podle (Rocnik.rocnik) + def get_object(self, queryset=None): + if queryset is None: + queryset = self.get_queryset() + rocnik_arg = self.kwargs.get('rocnik') + poradi_arg = self.kwargs.get('cislo') + queryset = queryset.filter(rocnik__rocnik=rocnik_arg, poradi=poradi_arg) + + try: + obj = queryset.get() + except queryset.model.DoesNotExist: + raise Http404(_("No %(verbose_name)s found matching the query") % + {'verbose_name': queryset.model._meta.verbose_name}) + return obj + + def get_context_data(self, **kwargs): + context = super(CisloView, self).get_context_data(**kwargs) + + cislo = context['cislo'] + context['prevcislo'] = Cislo.objects.filter((Q(rocnik__lt=self.object.rocnik) | Q(poradi__lt=self.object.poradi))&Q(rocnik__lte=self.object.rocnik)).first() + + deadliny = Deadline.objects.filter(cislo=cislo).reverse() + deadliny_s_vysledkovkami = [] + + nadpisy = { + m.Deadline.TYP_CISLA: "Výsledkovka", + m.Deadline.TYP_PRVNI: "Výsledkovka do prvního deadlinu", + m.Deadline.TYP_PRVNI_A_SOUS: "Výsledkovka do prvního deadlinu a deadlinu pro účast na soustředění", + m.Deadline.TYP_SOUS: "Výsledkovka do deadlinu pro účast na soustředění", + } + + for deadline in deadliny: + if self.request.user.je_org | deadline.verejna_vysledkovka: + deadliny_s_vysledkovkami.append((deadline, nadpisy[deadline.typ], VysledkovkaCisla(cislo, not self.request.user.je_org, deadline))) + + context['deadliny_s_vysledkovkami'] = deadliny_s_vysledkovkami + return context + + +class ArchivTemataView(generic.ListView): + model = Problem + template_name = 'tvorba/archiv/temata.html' + queryset = Tema.objects.filter(stav=Problem.STAV_ZADANY).select_related('rocnik').order_by('rocnik', 'kod') + + def get_context_data(self, *args, **kwargs): + ctx = super().get_context_data(*args, **kwargs) + ctx['rocniky'] = OrderedDict() + for rocnik, temata in groupby(ctx['object_list'], lambda tema: tema.rocnik): + ctx['rocniky'][rocnik] = list(temata) + return ctx + +class OdmenyView(generic.TemplateView): + template_name = 'tvorba/archiv/odmeny.html' + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + fromcislo = get_object_or_404(Cislo, rocnik=self.kwargs.get('frocnik'), poradi=self.kwargs.get('fcislo')) + tocislo = get_object_or_404(Cislo, rocnik=self.kwargs.get('trocnik'), poradi=self.kwargs.get('tcislo')) + resitele = utils.aktivniResitele(tocislo) + + def get_diff(from_deadline: Deadline, to_deadline: Deadline): + frombody = body_resitelu(resitele=resitele, jen_verejne=False, do=from_deadline) + tobody = body_resitelu(resitele=resitele, jen_verejne=False, do=to_deadline) + outlist = [] + for resitel in resitele: + fbody = frombody.get(resitel.id, 0) + tbody = tobody.get(resitel.id, 0) + ftitul = resitel.get_titul(fbody) + ttitul = resitel.get_titul(tbody) + if ftitul != ttitul: + outlist.append({'jmeno': resitel.osoba.plne_jmeno(), 'ftitul': ftitul, 'ttitul': ttitul}) + return outlist + + def posledni_deadline_oprava(cislo: Cislo) -> Deadline: + posledni_deadline = cislo.posledni_deadline + if posledni_deadline is None: + return Deadline.objects.filter(Q(cislo__poradi__lt=cislo.poradi, cislo__rocnik=cislo.rocnik) | Q(cislo__rocnik__rocnik__lt=cislo.rocnik.rocnik)).order_by("deadline").last() + return posledni_deadline + + context["from_cislo"] = fromcislo + context["to_cislo"] = tocislo + from_deadline = posledni_deadline_oprava(fromcislo) + to_deadline = posledni_deadline_oprava(tocislo) + context["from_deadline"] = from_deadline + context["to_deadline"] = to_deadline + context["zmeny"] = get_diff(from_deadline, to_deadline) + + return context + + + + +### Generovani vysledkovky + +class CisloVysledkovkaView(CisloView): + """View vytvořené pro stránku zobrazující výsledkovku čísla v TeXu.""" + + model = Cislo + template_name = 'tvorba/archiv/cislo_vysledkovka.tex' + #content_type = 'application/x-tex; charset=UTF8' + #umozni rovnou stahnout TeXovsky dokument + content_type = 'text/plain; charset=UTF8' + #vypise na stranku textovy obsah vyTeXane vysledkovky k okopirovani + + def get_context_data(self, **kwargs): + context = super(CisloVysledkovkaView, self).get_context_data() + cislo = context['cislo'] + + cislopred = cislo.predchozi() + if cislopred is not None: + context['vysledkovka'] = VysledkovkaDoTeXu( + cislo, + od_vyjma=cislopred.zlomovy_deadline_pro_papirove_cislo(), + do_vcetne=cislo.zlomovy_deadline_pro_papirove_cislo(), + ) + else: + context['vysledkovka'] = VysledkovkaCisla( + cislo, + jen_verejne=False, + do_deadlinu=cislo.zlomovy_deadline_pro_papirove_cislo(), + ) + return context + + +# Podle předchozího +class PosledniCisloVysledkovkaView(generic.DetailView): + """View vytvořené pro zobrazení výsledkovky posledního čísla v TeXu.""" + + model = Rocnik + template_name = 'tvorba/archiv/cislo_vysledkovka.tex' + content_type = 'text/plain; charset=UTF8' + + def get_object(self, queryset=None): + if queryset is None: + queryset = self.get_queryset() + rocnik_arg = self.kwargs.get('rocnik') + queryset = queryset.filter(rocnik=rocnik_arg) + + try: + obj = queryset.get() + except queryset.model.DoesNotExist: + raise Http404(_("No %(verbose_name)s found matching the query") % + {'verbose_name': queryset.model._meta.verbose_name}) + return obj + + def get_context_data(self, **kwargs): + context = super(PosledniCisloVysledkovkaView, self).get_context_data() + rocnik = context['rocnik'] + cislo = rocnik.cisla.order_by("poradi").filter(deadline_v_cisle__isnull=False).last() + if cislo is None: + raise Http404(f"Ročník {rocnik.rocnik} nemá číslo s deadlinem.") + cislopred = cislo.predchozi() + context['vysledkovka'] = VysledkovkaDoTeXu( + cislo, + od_vyjma=cislopred.zlomovy_deadline_pro_papirove_cislo(), + do_vcetne=cislo.deadline_v_cisle.order_by("deadline").last(), + ) + return context + + +class RocnikVysledkovkaView(RocnikView): + """ View vytvořené pro stránku zobrazující výsledkovku ročníku v TeXu.""" + model = Rocnik + template_name = 'tvorba/archiv/rocnik_vysledkovka.tex' + #content_type = 'application/x-tex; charset=UTF8' + #umozni rovnou stahnout TeXovsky dokument + content_type = 'text/plain; charset=UTF8' +#vypise na stranku textovy obsah vyTeXane vysledkovky k okopirovani + +def cisloObalkyView(request, rocnik, cislo): + realne_cislo = get_object_or_404(Cislo, poradi=cislo, rocnik__rocnik=rocnik) + return personalni.views.obalkyView(request, utils.aktivniResitele(realne_cislo)) + + + +### Tituly +def TitulyViewRocnik(request, rocnik): + return TitulyView(request, rocnik, None) + + +def TitulyView(request, rocnik, cislo): + """ View pro stažení makra titulů v TeXu.""" + rocnik_obj = get_object_or_404(Rocnik, rocnik = rocnik) + resitele = Resitel.objects.filter(rok_maturity__gte = rocnik_obj.prvni_rok) + + asciijmena = [] + jmenovci = False # detekuje, zda jsou dva řešitelé jmenovci (modulo nabodeníčka), + # pokud ano, vrátí se jako true + if cislo is not None: + cislo_obj = get_object_or_404(Cislo, rocnik=rocnik_obj, poradi=cislo) + slovnik_s_body = body_resitelu(do=cislo_obj.zlomovy_deadline_pro_papirove_cislo(), jen_verejne=False) + else: + slovnik_s_body = body_resitelu(do=Deadline.objects.filter(cislo__rocnik=rocnik_obj).last(), jen_verejne=False) + + for resitel in resitele: + resitel.titul = resitel.get_titul(slovnik_s_body[resitel.id]) + jmeno = resitel.osoba.jmeno+resitel.osoba.prijmeni + # převedeme jména a příjmení řešitelů do ASCII + ascii_jmeno_bytes = unicodedata.normalize('NFKD', jmeno).encode("ascii","ignore") + # vrátí se byte string, převedeme na standardní string + ascii_jmeno_divnoznaky = str(ascii_jmeno_bytes, "utf-8", "ignore").replace(" ","") + resitel.ascii = ''.join(a for a in ascii_jmeno_divnoznaky if a.isalnum()) + if resitel.ascii not in asciijmena: + asciijmena.append(resitel.ascii) + else: + jmenovci = True + + return render(request, 'tvorba/archiv/tituly.tex', + {'resitele': resitele,'jmenovci':jmenovci},content_type="text/plain") + + +### Články +def group_by_rocnik(clanky): + ''' Vezme zadaný seznam článků a seskupí je podle ročníku. + Vrátí seznam seznamů článků ze stejného ročníku.''' + if len(clanky) == 0: + return clanky + clanky.order_by('cislo__rocnik__rocnik') + skupiny_clanku = [] + skupina = [] + + rocnik = clanky.first().cislo.rocnik.rocnik # první ročník + for clanek in clanky: + if clanek.cislo.rocnik.rocnik == rocnik: + skupina.append(clanek) + else: + skupiny_clanku.append(skupina) + skupina = [] + skupina.append(clanek) + rocnik = clanek.cislo.rocnik.rocnik + skupiny_clanku.append(skupina) + return skupiny_clanku + + +# FIXME: clanky jsou vsechny, pokud budou i neresitelske, tak se take zobrazi +# FIXME: Původně tu byl kód přímo v těle třídy, což rozbíjelo migrace. Opravil jsem, ale vůbec nevím, jestli to funguje. +class ClankyResitelView(generic.ListView): + model = Problem + template_name = 'tvorba/clanky/resitelske_clanky.html' + + # FIXME: QuerySet není pole! + def get_queryset(self): + clanky = Clanek.objects.filter(stav=Problem.STAV_VYRESENY).select_related('cislo__rocnik').order_by('-cislo__rocnik__rocnik') + queryset = [] + skupiny_clanku = group_by_rocnik(clanky) + for skupina in skupiny_clanku: + skupina.sort(key=lambda clanek: clanek.kod_v_rocniku) + for clanek in skupina: + queryset.append(clanek) + return queryset + +# FIXME: pokud chceme orgoclanky, tak nejak zavest do modelu a podle toho odkomentovat a upravit +#class ClankyOrganizatorView(generic.ListView): +# model = Problem +# template_name = 'tvorba/clanky/organizatorske_clanky.html' +# queryset = Problem.objects.filter(stav=Problem.STAV_ZADANY).select_related('cislo_zadani__rocnik').order_by('-cislo_zadani__rocnik__rocnik', 'kod') + + + + +class AktualniRocnikRedirectView(RedirectView): + permanent=False + pattern_name = 'seminar_rocnik' + + def get_redirect_url(self, *args, **kwargs): + aktualni_rocnik = m.Nastaveni.get_solo().aktualni_rocnik.rocnik + return super().get_redirect_url(rocnik=aktualni_rocnik, *args, **kwargs) From f9a28689b0e2d43024557f6238b4ae07cadd2866 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Tue, 22 Oct 2024 21:30:33 +0200 Subject: [PATCH 221/225] views_all do __init__ --- tvorba/views/views_all.py | 579 -------------------------------------- 1 file changed, 579 deletions(-) delete mode 100644 tvorba/views/views_all.py diff --git a/tvorba/views/views_all.py b/tvorba/views/views_all.py deleted file mode 100644 index f960aac8..00000000 --- a/tvorba/views/views_all.py +++ /dev/null @@ -1,579 +0,0 @@ -from django.shortcuts import get_object_or_404, render -from django.http import HttpResponse -from django.urls import reverse -from django.core.exceptions import ObjectDoesNotExist -from django.views import generic -from django.utils.translation import gettext as _ -from django.http import Http404 -from django.db.models import Q, Sum, Count -from django.views.generic.base import RedirectView -from django.core.exceptions import PermissionDenied - -import seminar.models as s -import seminar.models as m -from seminar.models import Problem, Cislo, Reseni, Nastaveni, Rocnik, \ - Resitel, Novinky, Tema, Clanek, \ - Deadline # Tohle je stare a chceme se toho zbavit. Pouzivejte s.ToCoChci -#from .models import VysledkyZaCislo, VysledkyKCisluZaRocnik, VysledkyKCisluOdjakziva -from treenode import treelib -import treenode.templatetags as tnltt -import treenode.serializers as vr -from vysledkovky.utils import body_resitelu, VysledkovkaCisla, \ - VysledkovkaRocniku, VysledkovkaDoTeXu - -from datetime import date, datetime -from itertools import groupby -from collections import OrderedDict -import os -import os.path as op -from django.conf import settings -import unicodedata -import logging -import time - -import personalni.views - -from .. import utils - -# ze starého modelu -#def verejna_temata(rocnik): -# """ -# Vrací queryset zveřejněných témat v daném ročníku. -# """ -# return Problem.objects.filter(typ=Problem.TYP_TEMA, cislo_zadani__rocnik=rocnik, cislo_zadani__verejne_db=True).order_by('kod') -# -#def temata_v_rocniku(rocnik): -# return Problem.objects.filter(typ=Problem.TYP_TEMA, rocnik=rocnik) - -logger = logging.getLogger(__name__) - -def get_problemy_k_tematu(tema): - return Problem.objects.filter(nadproblem = tema) - - -# FIXME: Pozor, níž je ještě jeden ProblemView! -#class ProblemView(generic.DetailView): -# model = s.Problem -# # Zkopírujeme template_name od TreeNodeView, protože jsme prakticky jen trošku upravený TreeNodeView -# template_name = TreeNodeView.template_name -# -# def get_context_data(self, **kwargs): -# context = super().get_context_data(**kwargs) -# user = self.request.user -# # Teď potřebujeme doplnit tnldata do kontextu. -# # Ošklivý type switch, hezčí by bylo udělat to polymorfni. FIXME. -# if False: -# # Hezčí formátování zbytku :-P -# pass -# elif isinstance(self.object, s.Clanek) or isinstance(self.object, s.Konfera): -# # Tyhle Problémy mají ŘešeníNode -# context['tnldata'] = TNLData.from_treenode(self.object.reseninode,user) -# elif isinstance(self.object, s.Uloha): -# # FIXME: Teď vždycky zobrazujeme i vzorák! Možná by bylo hezčí/lepší mít to stejně jako pro Téma: procházet jen dosažitelné z Ročníku / čísla / whatever -# tnl_zadani = TNLData.from_treenode(self.object.ulohazadaninode,user) -# tnl_vzorak = TNLData.from_treenode(self.object.ulohavzoraknode,user) -# context['tnldata'] = TNLData.from_tnldata_list([tnl_zadani, tnl_vzorak]) -# elif isinstance(self.object, s.Tema): -# rocniknode = self.object.rocnik.rocniknode -# context['tnldata'] = TNLData.filter_treenode(rocniknode, lambda x: isinstance(x, s.TemaVCisleNode)) -# else: -# raise ValueError("Obecný problém nejde zobrazit.") -# return context - - -#class AktualniZadaniView(generic.TemplateView): -# template_name = 'treenode/treenode.html' - -# TODO Co chceme vlastně zobrazovat na této stránce? Zatím je zde aktuální číslo, ale může tu být cokoli jiného... -#class AktualniZadaniView(TreeNodeView): -# def get_object(self): -# nastaveni = get_object_or_404(Nastaveni) -# return nastaveni.aktualni_cislo.cislonode -# -# def get_context_data(self,**kwargs): -# nastaveni = get_object_or_404(Nastaveni) -# context = super().get_context_data(**kwargs) -# verejne = nastaveni.aktualni_cislo.verejne() -# context['verejne'] = verejne -# return context - -def AktualniZadaniView(request): - nastaveni = get_object_or_404(Nastaveni) - verejne = nastaveni.aktualni_cislo.verejne() - return render(request, 'tvorba/zadani/AktualniZadani.html', - {'nastaveni': nastaveni, - 'verejne': verejne, - }, - ) - -def ZadaniTemataView(request): - nastaveni = get_object_or_404(Nastaveni) - verejne = nastaveni.aktualni_cislo.verejne() - akt_rocnik = nastaveni.aktualni_cislo.rocnik - temata = s.Tema.objects.filter(rocnik=akt_rocnik, stav='zadany') - return render(request, 'tvorba/tematka/rozcestnik.html', - { - 'tematka': temata, - 'verejne': verejne, - }, - ) - - -# nastaveni = get_object_or_404(Nastaveni) -# temata = verejna_temata(nastaveni.aktualni_rocnik) -# for t in temata: -# if request.user.is_staff: -# t.prispevky = t.prispevek_set.filter(problem=t) -# else: -# t.prispevky = t.prispevek_set.filter(problem=t, zverejnit=True) -# return render(request, 'tvorba/zadani/Temata.html', -# { -# 'temata': temata, -# } -# ) -# -# -# -#def TematkoView(request, rocnik, tematko): -# nastaveni = s.Nastaveni.objects.first() -# rocnik_object = s.Rocnik.objects.filter(rocnik=rocnik) -# tematko_object = s.Tema.objects.filter(rocnik=rocnik_object[0], kod=tematko) -# seznam = vytahniZLesaSeznam(tematko_object[0], nastaveni.aktualni_rocnik().rocniknode) -# for node, depth in seznam: -# if node.isinstance(node, s.KonferaNode): -# raise Exception("Not implemented yet") -# if node.isinstance(node, s.PohadkaNode): # Mohu ignorovat, má pod sebou -# pass -# -# return render(request, 'tvorba/tematka/toaletak.html', {}) -# -# -#def TemataRozcestnikView(request): -# print("=============================================") -# nastaveni = s.Nastaveni.objects.first() -# tematka_objects = s.Tema.objects.filter(rocnik=nastaveni.aktualni_rocnik()) -# tematka = [] #List tematka obsahuje pro kazde tematko object a list vsech TemaVCisleNodu - implementované pomocí slovníku -# for tematko_object in tematka_objects: -# print("AKTUALNI TEMATKO") -# print(tematko_object.id) -# odkazy = vytahniZLesaSeznam(tematko_object, nastaveni.aktualni_rocnik().rocniknode, pouze_zajimave = True) #Odkazy jsou tuply (node, depth) v listu -# print(odkazy) -# cisla = [] # List tuplů (nazev cisla, list odkazů) -# vcisle = [] -# cislo = None -# for odkaz in odkazy: -# if odkaz[1] == 0: -# if cislo != None: -# cisla.append((cislo, vcisle)) -# cislo = (odkaz[0].getOdkazStr(), odkaz[0].getOdkaz()) -# vcisle = [] -# else: -# print(odkaz[0].getOdkaz()) -# vcisle.append((odkaz[0].getOdkazStr(), odkaz[0].getOdkaz())) -# if cislo != None: -# cisla.append((cislo, vcisle)) -# -# print(cisla) -# tematka.append({ -# "kod" : tematko_object.kod, -# "nazev" : tematko_object.nazev, -# "abstrakt" : tematko_object.abstrakt, -# "obrazek": tematko_object.obrazek, -# "cisla" : cisla -# }) -# return render(request, 'tvorba/tematka/rozcestnik.html', {"tematka": tematka, "rocnik" : nastaveni.aktualni_rocnik().rocnik}) -# - -def ZadaniAktualniVysledkovkaView(request): - nastaveni = get_object_or_404(Nastaveni) - # Aktualni verejna vysledkovka - rocnik = nastaveni.aktualni_rocnik - context = {'vysledkovka': VysledkovkaRocniku(rocnik, True)} - - # kdyz neni verejna vysledkovka, tak zobraz starou - if len(context['vysledkovka'].cisla_rocniku) == 0: - try: - minuly_rocnik = Rocnik.objects.get( - rocnik=(rocnik.rocnik-1)) - rocnik = minuly_rocnik - - # Přepíšeme prázdnou výsledkovku výsledkovkou z minulého ročníku - context['vysledkovka'] = VysledkovkaRocniku(rocnik, True) - except ObjectDoesNotExist: - pass - - context['rocnik'] = rocnik - return render( - request, - 'tvorba/zadani/AktualniVysledkovka.html', - context - ) - - -### Titulni strana - -def aktualni_temata(rocnik): - """ - Vrací PolymorphicQuerySet témat v daném ročníku, ke kterým se aktuálně dá něco odevzdat. - """ - return Tema.objects.filter(rocnik=rocnik, stav='zadany').order_by('kod') - - -### Archiv - - -class ArchivView(generic.ListView): - model = Rocnik - template_name = 'tvorba/archiv/cisla.html' - - def get_context_data(self, **kwargs): - context = super(ArchivView, self).get_context_data(**kwargs) - - cisla = Cislo.objects.filter(poradi=1) - if not self.request.user.je_org: - cisla = cisla.filter(verejne_db=True) - urls ={} - - for i, c in enumerate(cisla): - # Výchozí nastavení - if c.rocnik not in urls: - urls[c.rocnik] = op.join(settings.STATIC_URL, "tvorba", "no-picture.png") - # NOTE: tohle možná nastavuje poslední titulku - if c.titulka_nahled: - urls[c.rocnik] = c.titulka_nahled.url - - context["object_list"] = urls - - return context - - - - - -class RocnikView(generic.DetailView): - model = Rocnik - template_name = 'tvorba/archiv/rocnik.html' - - # Vlastni ziskavani objektu z databaze podle (Rocnik.rocnik) - def get_object(self, queryset=None): - if queryset is None: - queryset = self.get_queryset() - - return get_object_or_404(queryset,rocnik=self.kwargs.get('rocnik')) - - def get_context_data(self, **kwargs): - context = super(RocnikView, self).get_context_data(**kwargs) - context["vysledkovka"] = VysledkovkaRocniku(context["rocnik"], True) - context["neprazdna_vysledkovka"] = len(context['vysledkovka'].cisla_rocniku) != 0 - context["vysledkovka_neverejna"] = VysledkovkaRocniku(context["rocnik"], False) - return context - -def resiteleRocnikuCsvExportView(request, rocnik): - from personalni.views import dataResiteluCsvResponse - assert request.method in ('GET', 'HEAD') - return dataResiteluCsvResponse( - utils.resi_v_rocniku( - get_object_or_404(m.Rocnik, rocnik=rocnik) - ) - ) - - -# FIXME: Pozor, výš je ještě jeden ProblemView! -#class ProblemView(generic.DetailView): -# model = Problem -# -# # Používáme funkci, protože přímo template_name neumí mít v přiřazení dost logiky. Ledaže by se to udělalo polymorfně... -# def get_template_names(self, **kwargs): -# # FIXME: Switch podle typu není hezký, ale nechtělo se mi to přepisovat celé. Správně by se tohle mělo řešit polymorfismem. -# spravne_templaty = { -# s.Uloha: "uloha", -# s.Tema: "tema", -# s.Konfera: "konfera", -# s.Clanek: "clanek", -# } -# context = super().get_context_data(**kwargs) -# return ['tvorba/archiv/problem_' + spravne_templaty[context['object'].__class__] + '.html'] -# -# def get_context_data(self, **kwargs): -# context = super().get_context_data(**kwargs) -# # Musí se používat context['object'], protože nevíme, jestli dostaneme úložku, téma, článek, .... a tyhle věci vyrábějí různé klíče. -# if not context['object'].verejne() and not self.request.user.je_org: -# raise PermissionDenied() -# if isinstance(context['object'], Clanek): -# context['reseni'] = Reseni.objects.filter(problem=context['object']).select_related('resitel').order_by('resitel__prijmeni') -# return context - - - -class CisloView(generic.DetailView): - # FIXME zobrazování témátek a vůbec, teď je tam jen odkaz na číslo v pdf - model = Cislo - template_name = 'tvorba/archiv/cislo.html' - - # Vlastni ziskavani objektu z databaze podle (Rocnik.rocnik) - def get_object(self, queryset=None): - if queryset is None: - queryset = self.get_queryset() - rocnik_arg = self.kwargs.get('rocnik') - poradi_arg = self.kwargs.get('cislo') - queryset = queryset.filter(rocnik__rocnik=rocnik_arg, poradi=poradi_arg) - - try: - obj = queryset.get() - except queryset.model.DoesNotExist: - raise Http404(_("No %(verbose_name)s found matching the query") % - {'verbose_name': queryset.model._meta.verbose_name}) - return obj - - def get_context_data(self, **kwargs): - context = super(CisloView, self).get_context_data(**kwargs) - - cislo = context['cislo'] - context['prevcislo'] = Cislo.objects.filter((Q(rocnik__lt=self.object.rocnik) | Q(poradi__lt=self.object.poradi))&Q(rocnik__lte=self.object.rocnik)).first() - - deadliny = Deadline.objects.filter(cislo=cislo).reverse() - deadliny_s_vysledkovkami = [] - - nadpisy = { - m.Deadline.TYP_CISLA: "Výsledkovka", - m.Deadline.TYP_PRVNI: "Výsledkovka do prvního deadlinu", - m.Deadline.TYP_PRVNI_A_SOUS: "Výsledkovka do prvního deadlinu a deadlinu pro účast na soustředění", - m.Deadline.TYP_SOUS: "Výsledkovka do deadlinu pro účast na soustředění", - } - - for deadline in deadliny: - if self.request.user.je_org | deadline.verejna_vysledkovka: - deadliny_s_vysledkovkami.append((deadline, nadpisy[deadline.typ], VysledkovkaCisla(cislo, not self.request.user.je_org, deadline))) - - context['deadliny_s_vysledkovkami'] = deadliny_s_vysledkovkami - return context - - -class ArchivTemataView(generic.ListView): - model = Problem - template_name = 'tvorba/archiv/temata.html' - queryset = Tema.objects.filter(stav=Problem.STAV_ZADANY).select_related('rocnik').order_by('rocnik', 'kod') - - def get_context_data(self, *args, **kwargs): - ctx = super().get_context_data(*args, **kwargs) - ctx['rocniky'] = OrderedDict() - for rocnik, temata in groupby(ctx['object_list'], lambda tema: tema.rocnik): - ctx['rocniky'][rocnik] = list(temata) - return ctx - -class OdmenyView(generic.TemplateView): - template_name = 'tvorba/archiv/odmeny.html' - - def get_context_data(self, **kwargs): - context = super().get_context_data(**kwargs) - fromcislo = get_object_or_404(Cislo, rocnik=self.kwargs.get('frocnik'), poradi=self.kwargs.get('fcislo')) - tocislo = get_object_or_404(Cislo, rocnik=self.kwargs.get('trocnik'), poradi=self.kwargs.get('tcislo')) - resitele = utils.aktivniResitele(tocislo) - - def get_diff(from_deadline: Deadline, to_deadline: Deadline): - frombody = body_resitelu(resitele=resitele, jen_verejne=False, do=from_deadline) - tobody = body_resitelu(resitele=resitele, jen_verejne=False, do=to_deadline) - outlist = [] - for resitel in resitele: - fbody = frombody.get(resitel.id, 0) - tbody = tobody.get(resitel.id, 0) - ftitul = resitel.get_titul(fbody) - ttitul = resitel.get_titul(tbody) - if ftitul != ttitul: - outlist.append({'jmeno': resitel.osoba.plne_jmeno(), 'ftitul': ftitul, 'ttitul': ttitul}) - return outlist - - def posledni_deadline_oprava(cislo: Cislo) -> Deadline: - posledni_deadline = cislo.posledni_deadline - if posledni_deadline is None: - return Deadline.objects.filter(Q(cislo__poradi__lt=cislo.poradi, cislo__rocnik=cislo.rocnik) | Q(cislo__rocnik__rocnik__lt=cislo.rocnik.rocnik)).order_by("deadline").last() - return posledni_deadline - - context["from_cislo"] = fromcislo - context["to_cislo"] = tocislo - from_deadline = posledni_deadline_oprava(fromcislo) - to_deadline = posledni_deadline_oprava(tocislo) - context["from_deadline"] = from_deadline - context["to_deadline"] = to_deadline - context["zmeny"] = get_diff(from_deadline, to_deadline) - - return context - - - - -### Generovani vysledkovky - -class CisloVysledkovkaView(CisloView): - """View vytvořené pro stránku zobrazující výsledkovku čísla v TeXu.""" - - model = Cislo - template_name = 'tvorba/archiv/cislo_vysledkovka.tex' - #content_type = 'application/x-tex; charset=UTF8' - #umozni rovnou stahnout TeXovsky dokument - content_type = 'text/plain; charset=UTF8' - #vypise na stranku textovy obsah vyTeXane vysledkovky k okopirovani - - def get_context_data(self, **kwargs): - context = super(CisloVysledkovkaView, self).get_context_data() - cislo = context['cislo'] - - cislopred = cislo.predchozi() - if cislopred is not None: - context['vysledkovka'] = VysledkovkaDoTeXu( - cislo, - od_vyjma=cislopred.zlomovy_deadline_pro_papirove_cislo(), - do_vcetne=cislo.zlomovy_deadline_pro_papirove_cislo(), - ) - else: - context['vysledkovka'] = VysledkovkaCisla( - cislo, - jen_verejne=False, - do_deadlinu=cislo.zlomovy_deadline_pro_papirove_cislo(), - ) - return context - - -# Podle předchozího -class PosledniCisloVysledkovkaView(generic.DetailView): - """View vytvořené pro zobrazení výsledkovky posledního čísla v TeXu.""" - - model = Rocnik - template_name = 'tvorba/archiv/cislo_vysledkovka.tex' - content_type = 'text/plain; charset=UTF8' - - def get_object(self, queryset=None): - if queryset is None: - queryset = self.get_queryset() - rocnik_arg = self.kwargs.get('rocnik') - queryset = queryset.filter(rocnik=rocnik_arg) - - try: - obj = queryset.get() - except queryset.model.DoesNotExist: - raise Http404(_("No %(verbose_name)s found matching the query") % - {'verbose_name': queryset.model._meta.verbose_name}) - return obj - - def get_context_data(self, **kwargs): - context = super(PosledniCisloVysledkovkaView, self).get_context_data() - rocnik = context['rocnik'] - cislo = rocnik.cisla.order_by("poradi").filter(deadline_v_cisle__isnull=False).last() - if cislo is None: - raise Http404(f"Ročník {rocnik.rocnik} nemá číslo s deadlinem.") - cislopred = cislo.predchozi() - context['vysledkovka'] = VysledkovkaDoTeXu( - cislo, - od_vyjma=cislopred.zlomovy_deadline_pro_papirove_cislo(), - do_vcetne=cislo.deadline_v_cisle.order_by("deadline").last(), - ) - return context - - -class RocnikVysledkovkaView(RocnikView): - """ View vytvořené pro stránku zobrazující výsledkovku ročníku v TeXu.""" - model = Rocnik - template_name = 'tvorba/archiv/rocnik_vysledkovka.tex' - #content_type = 'application/x-tex; charset=UTF8' - #umozni rovnou stahnout TeXovsky dokument - content_type = 'text/plain; charset=UTF8' - #vypise na stranku textovy obsah vyTeXane vysledkovky k okopirovani - -def cisloObalkyView(request, rocnik, cislo): - realne_cislo = get_object_or_404(Cislo, poradi=cislo, rocnik__rocnik=rocnik) - return personalni.views.obalkyView(request, utils.aktivniResitele(realne_cislo)) - - - -### Tituly -def TitulyViewRocnik(request, rocnik): - return TitulyView(request, rocnik, None) - - -def TitulyView(request, rocnik, cislo): - """ View pro stažení makra titulů v TeXu.""" - rocnik_obj = get_object_or_404(Rocnik, rocnik = rocnik) - resitele = Resitel.objects.filter(rok_maturity__gte = rocnik_obj.prvni_rok) - - asciijmena = [] - jmenovci = False # detekuje, zda jsou dva řešitelé jmenovci (modulo nabodeníčka), - # pokud ano, vrátí se jako true - if cislo is not None: - cislo_obj = get_object_or_404(Cislo, rocnik=rocnik_obj, poradi=cislo) - slovnik_s_body = body_resitelu(do=cislo_obj.zlomovy_deadline_pro_papirove_cislo(), jen_verejne=False) - else: - slovnik_s_body = body_resitelu(do=Deadline.objects.filter(cislo__rocnik=rocnik_obj).last(), jen_verejne=False) - - for resitel in resitele: - resitel.titul = resitel.get_titul(slovnik_s_body[resitel.id]) - jmeno = resitel.osoba.jmeno+resitel.osoba.prijmeni - # převedeme jména a příjmení řešitelů do ASCII - ascii_jmeno_bytes = unicodedata.normalize('NFKD', jmeno).encode("ascii","ignore") - # vrátí se byte string, převedeme na standardní string - ascii_jmeno_divnoznaky = str(ascii_jmeno_bytes, "utf-8", "ignore").replace(" ","") - resitel.ascii = ''.join(a for a in ascii_jmeno_divnoznaky if a.isalnum()) - if resitel.ascii not in asciijmena: - asciijmena.append(resitel.ascii) - else: - jmenovci = True - - return render(request, 'tvorba/archiv/tituly.tex', - {'resitele': resitele,'jmenovci':jmenovci},content_type="text/plain") - - -### Články -def group_by_rocnik(clanky): - ''' Vezme zadaný seznam článků a seskupí je podle ročníku. - Vrátí seznam seznamů článků ze stejného ročníku.''' - if len(clanky) == 0: - return clanky - clanky.order_by('cislo__rocnik__rocnik') - skupiny_clanku = [] - skupina = [] - - rocnik = clanky.first().cislo.rocnik.rocnik # první ročník - for clanek in clanky: - if clanek.cislo.rocnik.rocnik == rocnik: - skupina.append(clanek) - else: - skupiny_clanku.append(skupina) - skupina = [] - skupina.append(clanek) - rocnik = clanek.cislo.rocnik.rocnik - skupiny_clanku.append(skupina) - return skupiny_clanku - - -# FIXME: clanky jsou vsechny, pokud budou i neresitelske, tak se take zobrazi -# FIXME: Původně tu byl kód přímo v těle třídy, což rozbíjelo migrace. Opravil jsem, ale vůbec nevím, jestli to funguje. -class ClankyResitelView(generic.ListView): - model = Problem - template_name = 'tvorba/clanky/resitelske_clanky.html' - - # FIXME: QuerySet není pole! - def get_queryset(self): - clanky = Clanek.objects.filter(stav=Problem.STAV_VYRESENY).select_related('cislo__rocnik').order_by('-cislo__rocnik__rocnik') - queryset = [] - skupiny_clanku = group_by_rocnik(clanky) - for skupina in skupiny_clanku: - skupina.sort(key=lambda clanek: clanek.kod_v_rocniku) - for clanek in skupina: - queryset.append(clanek) - return queryset - -# FIXME: pokud chceme orgoclanky, tak nejak zavest do modelu a podle toho odkomentovat a upravit -#class ClankyOrganizatorView(generic.ListView): -# model = Problem -# template_name = 'tvorba/clanky/organizatorske_clanky.html' -# queryset = Problem.objects.filter(stav=Problem.STAV_ZADANY).select_related('cislo_zadani__rocnik').order_by('-cislo_zadani__rocnik__rocnik', 'kod') - - - - -class AktualniRocnikRedirectView(RedirectView): - permanent=False - pattern_name = 'seminar_rocnik' - - def get_redirect_url(self, *args, **kwargs): - aktualni_rocnik = m.Nastaveni.get_solo().aktualni_rocnik.rocnik - return super().get_redirect_url(rocnik=aktualni_rocnik, *args, **kwargs) From d5d55d76a9bd9fbc528a7a13920bca0adff61f83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Tue, 22 Oct 2024 21:57:01 +0200 Subject: [PATCH 222/225] =?UTF-8?q?Lep=C5=A1=C3=AD=20koment=C3=A1=C5=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- soustredeni/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/soustredeni/__init__.py b/soustredeni/__init__.py index 88d1678e..94eca4f4 100644 --- a/soustredeni/__init__.py +++ b/soustredeni/__init__.py @@ -1,3 +1,4 @@ """ -Obsahuje vše (až na přednášky a galerie) ohledně soustředění. +Obsahuje vše (až na přednášky a galerie) ohledně soustředění, +tzn. převážně informace o účastech orgů a účastníků a o tom, kdo byl na které konfeře. """ From 3db6231a77d89bb15407440376fa0052b97baa58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Tue, 22 Oct 2024 22:11:59 +0200 Subject: [PATCH 223/225] =?UTF-8?q?N=C3=A1zev=20id=20v=20url?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- soustredeni/views.py | 1 + 1 file changed, 1 insertion(+) diff --git a/soustredeni/views.py b/soustredeni/views.py index 2f296b60..67a0305f 100644 --- a/soustredeni/views.py +++ b/soustredeni/views.py @@ -105,3 +105,4 @@ def soustredeniStvrzenkyView(request, soustredeni): class SoustredeniAbstraktyView(generic.DetailView): model = Soustredeni template_name = 'soustredeni/export_do_abstraktu.html' + pk_url_kwarg = 'soustredeni' # v url bude místo defaultně požadovaného From 2ae906495dc51f53300d9a9945ac7588a095c11f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Wed, 23 Oct 2024 11:49:48 +0200 Subject: [PATCH 224/225] Opravil jsem font (aby fungovala diakritika apod.) --- mamweb/static/css/base.css | 4 ++-- mamweb/static/fonts/ghoul/ghoul.ttf | Bin 14968 -> 57984 bytes mamweb/static/fonts/ghoul/ghoulheadline.ttf | Bin 24980 -> 0 bytes 3 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 mamweb/static/fonts/ghoul/ghoulheadline.ttf diff --git a/mamweb/static/css/base.css b/mamweb/static/css/base.css index a7febafc..a4433d55 100644 --- a/mamweb/static/css/base.css +++ b/mamweb/static/css/base.css @@ -8,10 +8,10 @@ font-weight: normal; } +/* https://fontzone.net/font-details/qtghoulface-regular doplněný o diakritiku pomocí FontForge*/ @font-face { font-family: 'GhoulFace'; - src: url("../fonts/ghoul/ghoulheadline.ttf"), - url("../fonts/ghoul/ghoul.woff"); + src: url("../fonts/ghoul/ghoul.ttf"); font-weight: normal; } diff --git a/mamweb/static/fonts/ghoul/ghoul.ttf b/mamweb/static/fonts/ghoul/ghoul.ttf index 64bab4789ae256a70f2af1ad00fc1edab5efbf27..dcb13354068ccbaf4ec42a37b7ffc4e7d5c200c3 100644 GIT binary patch literal 57984 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%0AxQ%-_lIP=y(?EksHhek%Kx~P>c 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 literal 14968 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 Y@QR^}vZk22sUkhC>N;K+&?x->0hVL~RsaA1 diff --git a/mamweb/static/fonts/ghoul/ghoulheadline.ttf b/mamweb/static/fonts/ghoul/ghoulheadline.ttf deleted file mode 100644 index 90d4f7c126d0c67a754e622812a3b83f5929fade..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24980 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 Date: Wed, 23 Oct 2024 12:22:46 +0200 Subject: [PATCH 225/225] =?UTF-8?q?Novinky=20byly=20b=C5=AFhv=C3=AD=20pro?= =?UTF-8?q?=C4=8D=20BigAutoField?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- novinky/migrations/0004_alter_novinky_id.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 novinky/migrations/0004_alter_novinky_id.py diff --git a/novinky/migrations/0004_alter_novinky_id.py b/novinky/migrations/0004_alter_novinky_id.py new file mode 100644 index 00000000..a4a48490 --- /dev/null +++ b/novinky/migrations/0004_alter_novinky_id.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.16 on 2024-10-23 10:22 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('novinky', '0003_novinky_post'), + ] + + operations = [ + migrations.AlterField( + model_name='novinky', + name='id', + field=models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + ]